--- a/src/hotspot/share/interpreter/interpreterRuntime.cpp Sun Feb 10 09:10:42 2019 +0100
+++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp Fri Mar 01 08:14:29 2019 -0500
@@ -920,23 +920,19 @@
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: {
- // 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;
-
+ case CallInfo::direct_call:
cp_cache_entry->set_direct_call(
bytecode,
info.resolved_method(),
- sender->is_interface(),
- pool_holder);
+ sender->is_interface());
break;
- }
case CallInfo::vtable_call:
cp_cache_entry->set_vtable_call(
bytecode,