< prev index next >
src/share/vm/ci/ciMethod.cpp
Print this page
*** 798,808 ****
methodHandle m;
// Only do exact lookup if receiver klass has been linked. Otherwise,
// the vtable has not been setup, and the LinkResolver will fail.
if (recv->is_array_klass()
||
! InstanceKlass::cast(recv)->is_linked() && !exact_receiver->is_interface()) {
if (holder()->is_interface()) {
m = LinkResolver::resolve_interface_call_or_null(recv, link_info);
} else {
m = LinkResolver::resolve_virtual_call_or_null(recv, link_info);
}
--- 798,808 ----
methodHandle m;
// Only do exact lookup if receiver klass has been linked. Otherwise,
// the vtable has not been setup, and the LinkResolver will fail.
if (recv->is_array_klass()
||
! (InstanceKlass::cast(recv)->is_linked() && !exact_receiver->is_interface())) {
if (holder()->is_interface()) {
m = LinkResolver::resolve_interface_call_or_null(recv, link_info);
} else {
m = LinkResolver::resolve_virtual_call_or_null(recv, link_info);
}
*** 1491,1500 ****
--- 1491,1502 ----
}
rbase = 1; // skip receiver
}
break;
}
+ default:
+ break;
}
assert(target_sig->count() - rbase == linker_sig->count() - sbase - has_appendix, "argument count mismatch");
int arg_count = target_sig->count() - rbase;
for (int i = 0; i < arg_count; i++) {
if (!basic_types_match(linker_sig->type_at(sbase + i), target_sig->type_at(rbase + i))) {
< prev index next >