--- a/src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp Fri Nov 17 20:56:14 2017 +0300
+++ b/src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp Tue Nov 21 09:04:42 2017 -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;
}