src/share/vm/interpreter/interpreter.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8026328 Cdiff src/share/vm/interpreter/interpreter.cpp

src/share/vm/interpreter/interpreter.cpp

Print this page

        

*** 327,345 **** //------------------------------------------------------------------------------------------------------------------------ // Deoptimization support ! // If deoptimization happens, this function returns the point of next bytecode to continue execution address AbstractInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) { assert(method->contains(bcp), "just checkin'"); Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); assert(!Interpreter::bytecode_should_reexecute(code), "should not reexecute"); ! int bci = method->bci_from(bcp); ! int length = -1; // initial value for debugging // compute continuation length ! length = Bytecodes::length_at(method, bcp); // compute result type BasicType type = T_ILLEGAL; switch (code) { case Bytecodes::_invokevirtual : --- 327,351 ---- //------------------------------------------------------------------------------------------------------------------------ // Deoptimization support ! /** ! * If a deoptimization happens, this function returns the point of next bytecode to continue execution. ! */ address AbstractInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) { assert(method->contains(bcp), "just checkin'"); + + // Get the original and rewritten bytecode. Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); assert(!Interpreter::bytecode_should_reexecute(code), "should not reexecute"); ! ! const int bci = method->bci_from(bcp); ! // compute continuation length ! const int length = Bytecodes::length_at(method, bcp); ! // compute result type BasicType type = T_ILLEGAL; switch (code) { case Bytecodes::_invokevirtual :
*** 391,401 **** // return entry point for computed continuation state & bytecode length return is_top_frame ? Interpreter::deopt_entry (as_TosState(type), length) ! : Interpreter::return_entry(as_TosState(type), length); } // If deoptimization happens, this function returns the point where the interpreter reexecutes // the bytecode. // Note: Bytecodes::_athrow is a special case in that it does not return --- 397,407 ---- // return entry point for computed continuation state & bytecode length return is_top_frame ? Interpreter::deopt_entry (as_TosState(type), length) ! : Interpreter::return_entry(as_TosState(type), length, code); } // If deoptimization happens, this function returns the point where the interpreter reexecutes // the bytecode. // Note: Bytecodes::_athrow is a special case in that it does not return
src/share/vm/interpreter/interpreter.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File