< prev index next >

src/hotspot/share/runtime/sharedRuntime.cpp

Print this page

        

*** 1368,1377 **** --- 1368,1387 ---- // make sure caller is not getting deoptimized // and removed before we are done with it. // CLEANUP - with lazy deopt shouldn't need this lock nmethodLocker caller_lock(caller_nm); + if (!is_virtual && !is_optimized) { + SimpleScopeDesc ssd(caller_nm, caller_frame.pc()); + Bytecode bc(ssd.method(), ssd.method()->bcp_from(ssd.bci())); + // Substituability test implementation piggy backs on static call resolution + if (bc.code() == Bytecodes::_if_acmpeq || bc.code() == Bytecodes::_if_acmpne) { + SystemDictionary::ValueBootstrapMethods_klass()->initialize(CHECK_NULL); + return SystemDictionary::ValueBootstrapMethods_klass()->find_method(vmSymbols::isSubstitutable_name(), vmSymbols::object_object_boolean_signature()); + } + } + // determine call info & receiver // note: a) receiver is NULL for static calls // b) an exception is thrown if receiver is NULL for non-static calls CallInfo call_info; Bytecodes::Code invoke_code = Bytecodes::_illegal;
< prev index next >