< prev index next >
src/hotspot/share/interpreter/interpreterRuntime.cpp
Print this page
*** 918,944 ****
} else {
assert(info.call_kind() == CallInfo::direct_call ||
info.call_kind() == CallInfo::vtable_call, "");
}
#endif
-
- switch (info.call_kind()) {
- case CallInfo::direct_call: {
// Get sender or sender's unsafe_anonymous_host, and only set cpCache entry to resolved if
// it is not an interface. The receiver for invokespecial calls within interface
// methods must be checked for every call.
! InstanceKlass* pool_holder = pool->pool_holder();
! InstanceKlass* sender = pool_holder->is_unsafe_anonymous() ?
! pool_holder->unsafe_anonymous_host() : pool_holder;
cp_cache_entry->set_direct_call(
bytecode,
info.resolved_method(),
! sender->is_interface(),
! pool_holder);
break;
- }
case CallInfo::vtable_call:
cp_cache_entry->set_vtable_call(
bytecode,
info.resolved_method(),
info.vtable_index());
--- 918,940 ----
} else {
assert(info.call_kind() == CallInfo::direct_call ||
info.call_kind() == CallInfo::vtable_call, "");
}
#endif
// Get sender or sender's unsafe_anonymous_host, and only set cpCache entry to resolved if
// it is not an interface. The receiver for invokespecial calls within interface
// methods must be checked for every call.
! InstanceKlass* sender = pool->pool_holder();
! sender = sender->is_unsafe_anonymous() ? sender->unsafe_anonymous_host() : sender;
+ switch (info.call_kind()) {
+ case CallInfo::direct_call:
cp_cache_entry->set_direct_call(
bytecode,
info.resolved_method(),
! sender->is_interface());
break;
case CallInfo::vtable_call:
cp_cache_entry->set_vtable_call(
bytecode,
info.resolved_method(),
info.vtable_index());
< prev index next >