src/share/vm/interpreter/interpreter.cpp

changeset 6039
bd3237e0e18d
parent 5353
b800986664f4
child 6680
78bbf4d43a14
     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

mercurial