1.1 --- a/src/share/vm/interpreter/interpreter.cpp Wed Oct 23 19:22:28 2013 +0000 1.2 +++ b/src/share/vm/interpreter/interpreter.cpp Thu Oct 24 16:23:07 2013 -0700 1.3 @@ -329,15 +329,21 @@ 1.4 //------------------------------------------------------------------------------------------------------------------------ 1.5 // Deoptimization support 1.6 1.7 -// If deoptimization happens, this function returns the point of next bytecode to continue execution 1.8 +/** 1.9 + * If a deoptimization happens, this function returns the point of next bytecode to continue execution. 1.10 + */ 1.11 address AbstractInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) { 1.12 assert(method->contains(bcp), "just checkin'"); 1.13 - Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); 1.14 + 1.15 + // Get the original and rewritten bytecode. 1.16 + Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); 1.17 assert(!Interpreter::bytecode_should_reexecute(code), "should not reexecute"); 1.18 - int bci = method->bci_from(bcp); 1.19 - int length = -1; // initial value for debugging 1.20 + 1.21 + const int bci = method->bci_from(bcp); 1.22 + 1.23 // compute continuation length 1.24 - length = Bytecodes::length_at(method, bcp); 1.25 + const int length = Bytecodes::length_at(method, bcp); 1.26 + 1.27 // compute result type 1.28 BasicType type = T_ILLEGAL; 1.29 1.30 @@ -393,7 +399,7 @@ 1.31 return 1.32 is_top_frame 1.33 ? Interpreter::deopt_entry (as_TosState(type), length) 1.34 - : Interpreter::return_entry(as_TosState(type), length); 1.35 + : Interpreter::return_entry(as_TosState(type), length, code); 1.36 } 1.37 1.38 // If deoptimization happens, this function returns the point where the interpreter reexecutes