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();