--- old/src/hotspot/cpu/x86/interp_masm_x86.cpp 2017-10-24 16:40:17.440081700 +0200 +++ new/src/hotspot/cpu/x86/interp_masm_x86.cpp 2017-10-24 16:40:17.190073484 +0200 @@ -810,7 +810,8 @@ void InterpreterMacroAssembler::dispatch_base(TosState state, address* table, - bool verifyoop) { + bool verifyoop, + bool generate_poll) { verify_FPU(1, state); if (VerifyActivationFrameSize) { Label L; @@ -831,7 +832,7 @@ Label no_safepoint, dispatch; address* const safepoint_table = Interpreter::safept_table(state); - if (SafepointMechanism::uses_thread_local_poll() && table != safepoint_table) { + 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()); @@ -854,8 +855,8 @@ #endif // _LP64 } -void InterpreterMacroAssembler::dispatch_only(TosState state) { - dispatch_base(state, Interpreter::dispatch_table(state)); +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) { @@ -867,12 +868,12 @@ } -void InterpreterMacroAssembler::dispatch_next(TosState state, int step) { +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)); + dispatch_base(state, Interpreter::dispatch_table(state), true, generate_poll); } void InterpreterMacroAssembler::dispatch_via(TosState state, address* table) {