diff -r 57ad70bcf06c -r 15936b142f86 src/hotspot/share/interpreter/interpreterRuntime.cpp --- a/src/hotspot/share/interpreter/interpreterRuntime.cpp Wed Nov 13 11:27:50 2019 +0000 +++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp Wed Nov 13 08:23:23 2019 -0500 @@ -897,7 +897,7 @@ // (see also CallInfo::set_interface for details) assert(info.call_kind() == CallInfo::vtable_call || info.call_kind() == CallInfo::direct_call, ""); - methodHandle rm = info.resolved_method(); + Method* rm = info.resolved_method(); assert(rm->is_final() || info.has_vtable_index(), "should have been set already"); } else if (!info.resolved_method()->has_itable_index()) { @@ -921,25 +921,26 @@ // methods must be checked for every call. InstanceKlass* sender = pool->pool_holder(); sender = sender->is_unsafe_anonymous() ? sender->unsafe_anonymous_host() : sender; + methodHandle resolved_method(THREAD, info.resolved_method()); switch (info.call_kind()) { case CallInfo::direct_call: cp_cache_entry->set_direct_call( bytecode, - info.resolved_method(), + resolved_method, sender->is_interface()); break; case CallInfo::vtable_call: cp_cache_entry->set_vtable_call( bytecode, - info.resolved_method(), + resolved_method, info.vtable_index()); break; case CallInfo::itable_call: cp_cache_entry->set_itable_call( bytecode, info.resolved_klass(), - info.resolved_method(), + resolved_method, info.itable_index()); break; default: ShouldNotReachHere();