< prev index next >

src/hotspot/cpu/x86/templateTable_x86.cpp

Print this page

*** 2757,2766 **** --- 2757,2776 ---- __ pop(state); __ bind(no_safepoint); } if (state == atos) { + Label not_returning_null_vt; + const Register method = rbx; + + __ testl(rax, rax); + __ jcc(Assembler::notZero, not_returning_null_vt); + __ get_method(method); + __ cmpb(Address(rbx, Method::flags_offset() + in_ByteSize(1)), Method::byte_value_for_known_not_returning_vt()); + __ jcc(Assembler::equal, not_returning_null_vt); + __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::deoptimize_caller_frame_for_vt), method); + __ bind(not_returning_null_vt); if (ValueTypesBufferMaxMemory > 0) { Label notBuffered; __ test_value_is_not_buffered(rax, rbx, notBuffered); const Register thread1 = NOT_LP64(rcx) LP64_ONLY(r15_thread);
< prev index next >