diff options
author | cfang <none@none> | 2009-07-31 17:12:33 -0700 |
---|---|---|
committer | cfang <none@none> | 2009-07-31 17:12:33 -0700 |
commit | 75461d045b0701090b9e0d3c77e5784c6f7f70f6 (patch) | |
tree | 237c92bf08214fd6aaec9ad1a4004ff072a1b2fe /src/share/vm/interpreter/templateInterpreter.hpp | |
parent | c99523898df7f76db1c6a26b29616a42fe12f6ae (diff) |
6833129: specjvm98 fails with NullPointerException in the compiler with -XX:DeoptimizeALot
Summary: developed a reexecute logic for the interpreter to reexecute the bytecode when deopt happens
Reviewed-by: kvn, never, jrose, twisti
Diffstat (limited to 'src/share/vm/interpreter/templateInterpreter.hpp')
-rw-r--r-- | src/share/vm/interpreter/templateInterpreter.hpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/share/vm/interpreter/templateInterpreter.hpp b/src/share/vm/interpreter/templateInterpreter.hpp index 2c78e31fc..7de665b88 100644 --- a/src/share/vm/interpreter/templateInterpreter.hpp +++ b/src/share/vm/interpreter/templateInterpreter.hpp @@ -171,11 +171,15 @@ class TemplateInterpreter: public AbstractInterpreter { static void ignore_safepoints(); // ignores safepoints // Deoptimization support - static address continuation_for(methodOop method, - address bcp, - int callee_parameters, - bool is_top_frame, - bool& use_next_mdp); + // Compute the entry address for continuation after + static address deopt_continue_after_entry(methodOop method, + address bcp, + int callee_parameters, + bool is_top_frame); + // Deoptimization should reexecute this bytecode + static bool bytecode_should_reexecute(Bytecodes::Code code); + // Compute the address for reexecution + static address deopt_reexecute_entry(methodOop method, address bcp); #include "incls/_templateInterpreter_pd.hpp.incl" |