< 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 >