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