--- old/src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp 2017-11-11 10:42:45.087060054 -0800 +++ new/src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp 2017-11-11 10:42:44.771045910 -0800 @@ -694,7 +694,7 @@ return entry; } -address TemplateInterpreterGenerator::generate_deopt_entry_for(TosState state, int step) { +address TemplateInterpreterGenerator::generate_deopt_entry_for(TosState state, int step, address continuation) { address entry = __ pc(); // If state != vtos, we're returning from a native method, which put it's result // into the result register. So move the value out of the return register back @@ -721,7 +721,11 @@ __ check_and_forward_exception(R11_scratch1, R12_scratch2); // Start executing bytecodes. - __ dispatch_next(state, step); + if (continuation == NULL) { + __ dispatch_next(state, step); + } else { + __ jump_to_entry(continuation, R11_scratch1); + } return entry; }