< prev index next >

src/hotspot/cpu/sparc/templateTable_sparc.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

*** 1894,1903 **** --- 1894,1915 ---- void TemplateTable::_return(TosState state) { transition(state, state); assert(_desc->calls_vm(), "inconsistent calls_vm information"); + if (SafepointMechanism::uses_thread_local_poll()) { + Label no_safepoint; + __ ldx(Address(G2_thread, Thread::polling_page_offset()), G3_scratch, 0); + __ btst(SafepointMechanism::poll_bit(), G3_scratch); + __ br(Assembler::zero, false, Assembler::pt, no_safepoint); + __ delayed()->nop(); + __ push(state); //? + __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)); + __ pop(state); //? + __ bind(no_safepoint); + } + if (_desc->bytecode() == Bytecodes::_return_register_finalizer) { assert(state == vtos, "only valid state"); __ mov(G0, G3_scratch); __ access_local_ptr(G3_scratch, Otos_i); __ load_klass(Otos_i, O2);
< prev index next >