< prev index next >

src/hotspot/cpu/x86/interp_masm_x86.cpp

Print this page
rev 47571 : Add Thread Local handshakes and thread local polling
rev 47576 : [mq]: Interpreter-Poll-7

*** 808,818 **** dispatch_next(state, step); } void InterpreterMacroAssembler::dispatch_base(TosState state, address* table, ! bool verifyoop) { verify_FPU(1, state); if (VerifyActivationFrameSize) { Label L; mov(rcx, rbp); subptr(rcx, rsp); --- 808,819 ---- dispatch_next(state, step); } void InterpreterMacroAssembler::dispatch_base(TosState state, address* table, ! bool verifyoop, ! bool generate_poll) { verify_FPU(1, state); if (VerifyActivationFrameSize) { Label L; mov(rcx, rbp); subptr(rcx, rsp);
*** 829,839 **** } #ifdef _LP64 Label no_safepoint, dispatch; address* const safepoint_table = Interpreter::safept_table(state); ! if (SafepointMechanism::uses_thread_local_poll() && table != safepoint_table) { NOT_PRODUCT(block_comment("Thread-local Safepoint poll")); testb(Address(r15_thread, Thread::polling_page_offset()), SafepointMechanism::poll_bit()); jccb(Assembler::zero, no_safepoint); --- 830,840 ---- } #ifdef _LP64 Label no_safepoint, dispatch; address* const safepoint_table = Interpreter::safept_table(state); ! if (SafepointMechanism::uses_thread_local_poll() && table != safepoint_table && generate_poll) { NOT_PRODUCT(block_comment("Thread-local Safepoint poll")); testb(Address(r15_thread, Thread::polling_page_offset()), SafepointMechanism::poll_bit()); jccb(Assembler::zero, no_safepoint);
*** 852,863 **** ArrayAddress dispatch(tbl, index); jump(dispatch); #endif // _LP64 } ! void InterpreterMacroAssembler::dispatch_only(TosState state) { ! dispatch_base(state, Interpreter::dispatch_table(state)); } void InterpreterMacroAssembler::dispatch_only_normal(TosState state) { dispatch_base(state, Interpreter::normal_table(state)); } --- 853,864 ---- ArrayAddress dispatch(tbl, index); jump(dispatch); #endif // _LP64 } ! void InterpreterMacroAssembler::dispatch_only(TosState state, bool generate_poll) { ! dispatch_base(state, Interpreter::dispatch_table(state), true, generate_poll); } void InterpreterMacroAssembler::dispatch_only_normal(TosState state) { dispatch_base(state, Interpreter::normal_table(state)); }
*** 865,880 **** void InterpreterMacroAssembler::dispatch_only_noverify(TosState state) { dispatch_base(state, Interpreter::normal_table(state), false); } ! void InterpreterMacroAssembler::dispatch_next(TosState state, int step) { // load next bytecode (load before advancing _bcp_register to prevent AGI) load_unsigned_byte(rbx, Address(_bcp_register, step)); // advance _bcp_register increment(_bcp_register, step); ! dispatch_base(state, Interpreter::dispatch_table(state)); } void InterpreterMacroAssembler::dispatch_via(TosState state, address* table) { // load current bytecode load_unsigned_byte(rbx, Address(_bcp_register, 0)); --- 866,881 ---- void InterpreterMacroAssembler::dispatch_only_noverify(TosState state) { dispatch_base(state, Interpreter::normal_table(state), false); } ! void InterpreterMacroAssembler::dispatch_next(TosState state, int step, bool generate_poll) { // load next bytecode (load before advancing _bcp_register to prevent AGI) load_unsigned_byte(rbx, Address(_bcp_register, step)); // advance _bcp_register increment(_bcp_register, step); ! dispatch_base(state, Interpreter::dispatch_table(state), true, generate_poll); } void InterpreterMacroAssembler::dispatch_via(TosState state, address* table) { // load current bytecode load_unsigned_byte(rbx, Address(_bcp_register, 0));
< prev index next >