--- old/src/hotspot/cpu/sparc/interp_masm_sparc.cpp 2017-10-24 16:40:14.604988531 +0200 +++ new/src/hotspot/cpu/sparc/interp_masm_sparc.cpp 2017-10-24 16:40:14.358980446 +0200 @@ -96,12 +96,11 @@ else delayed()->nop(); } - -void InterpreterMacroAssembler::dispatch_next(TosState state, int bcp_incr) { +void InterpreterMacroAssembler::dispatch_next(TosState state, int bcp_incr, bool generate_poll) { // %%%% consider branching to a single shared dispatch stub (for each bcp_incr) assert_not_delayed(); ldub( Lbcp, bcp_incr, Lbyte_code); // load next bytecode - dispatch_Lbyte_code(state, Interpreter::dispatch_table(state), bcp_incr); + dispatch_Lbyte_code(state, Interpreter::dispatch_table(state), bcp_incr, true, generate_poll); } @@ -262,7 +261,7 @@ // common code to dispatch and dispatch_only // dispatch value in Lbyte_code and increment Lbcp -void InterpreterMacroAssembler::dispatch_Lbyte_code(TosState state, address* table, int bcp_incr, bool verify) { +void InterpreterMacroAssembler::dispatch_Lbyte_code(TosState state, address* table, int bcp_incr, bool verify, bool generate_poll) { verify_FPU(1, state); // %%%%% maybe implement +VerifyActivationFrameSize here //verify_thread(); //too slow; we will just verify on method entry & exit @@ -271,7 +270,7 @@ AddressLiteral tbl(table); Label dispatch; - if (SafepointMechanism::uses_thread_local_poll()) { + if (SafepointMechanism::uses_thread_local_poll() && generate_poll) { AddressLiteral sfpt_tbl(Interpreter::safept_table(state)); Label no_safepoint;