Mercurial > hg > truffle
comparison src/share/vm/runtime/reflection.cpp @ 12264:b2e698d2276c
8014013: CallInfo structure no longer accurately reports the result of a LinkResolver operation
Summary: Enhance method resolution and resulting data structures, plus some refactoring.
Reviewed-by: twisti, acorn, jrose
author | drchase |
---|---|
date | Fri, 13 Sep 2013 22:38:02 -0400 |
parents | c1bd7b5bdc70 |
children | cdf20166ec45 |
comparison
equal
deleted
inserted
replaced
12261:2c98370f2611 | 12264:b2e698d2276c |
---|---|
950 } else { | 950 } else { |
951 method = resolve_interface_call(klass, reflected_method, target_klass, receiver, CHECK_(NULL)); | 951 method = resolve_interface_call(klass, reflected_method, target_klass, receiver, CHECK_(NULL)); |
952 } | 952 } |
953 } else { | 953 } else { |
954 // if the method can be overridden, we resolve using the vtable index. | 954 // if the method can be overridden, we resolve using the vtable index. |
955 int index = reflected_method->vtable_index(); | 955 assert(!reflected_method->has_itable_index(), ""); |
956 int index = reflected_method->vtable_index(); | |
956 method = reflected_method; | 957 method = reflected_method; |
957 if (index != Method::nonvirtual_vtable_index) { | 958 if (index != Method::nonvirtual_vtable_index) { |
958 // target_klass might be an arrayKlassOop but all vtables start at | 959 // target_klass might be an arrayKlassOop but all vtables start at |
959 // the same place. The cast is to avoid virtual call and assertion. | 960 // the same place. The cast is to avoid virtual call and assertion. |
960 InstanceKlass* inst = (InstanceKlass*)target_klass(); | 961 InstanceKlass* inst = (InstanceKlass*)target_klass(); |