< prev index next >

src/hotspot/cpu/x86/templateTable_x86.cpp

Print this page
rev 47594 : imported patch Interpreter-Poll-7
rev 47595 : imported patch Interpreter-Poll-Wide_Ret-8
rev 47597 : imported patch Interpreter-Poll-Switch-10
rev 47598 : imported patch Interpreter-Poll-Ret-11

*** 2543,2552 **** --- 2543,2566 ---- } void TemplateTable::_return(TosState state) { transition(state, state); + #ifdef _LP64 + if (SafepointMechanism::uses_thread_local_poll()) { + Label no_safepoint; + NOT_PRODUCT(__ block_comment("Thread-local Safepoint poll")); + __ testb(Address(r15_thread, Thread::polling_page_offset()), SafepointMechanism::poll_bit()); + __ jcc(Assembler::zero, no_safepoint); + __ push(state); + __ call_VM(noreg, CAST_FROM_FN_PTR(address, + InterpreterRuntime::at_safepoint)); + __ pop(state); + __ bind(no_safepoint); + } + #endif + assert(_desc->calls_vm(), "inconsistent calls_vm information"); // call in remove_activation if (_desc->bytecode() == Bytecodes::_return_register_finalizer) { assert(state == vtos, "only valid state");
< prev index next >