src/share/vm/interpreter/bytecodeInterpreter.cpp

changeset 1040
98cb887364d3
parent 955
52a431267315
child 1063
7bb995fbd3c0
equal deleted inserted replaced
1039:ec59443af135 1040:98cb887364d3
2640 if (istate->prev() == NULL) { 2640 if (istate->prev() == NULL) {
2641 // We must be returning to a deoptimized frame (because popframe only happens between 2641 // We must be returning to a deoptimized frame (because popframe only happens between
2642 // two interpreted frames). We need to save the current arguments in C heap so that 2642 // two interpreted frames). We need to save the current arguments in C heap so that
2643 // the deoptimized frame when it restarts can copy the arguments to its expression 2643 // the deoptimized frame when it restarts can copy the arguments to its expression
2644 // stack and re-execute the call. We also have to notify deoptimization that this 2644 // stack and re-execute the call. We also have to notify deoptimization that this
2645 // has occured and to pick the preerved args copy them to the deoptimized frame's 2645 // has occurred and to pick the preserved args copy them to the deoptimized frame's
2646 // java expression stack. Yuck. 2646 // java expression stack. Yuck.
2647 // 2647 //
2648 THREAD->popframe_preserve_args(in_ByteSize(METHOD->size_of_parameters() * wordSize), 2648 THREAD->popframe_preserve_args(in_ByteSize(METHOD->size_of_parameters() * wordSize),
2649 LOCALS_SLOT(METHOD->size_of_parameters() - 1)); 2649 LOCALS_SLOT(METHOD->size_of_parameters() - 1));
2650 THREAD->set_popframe_condition_bit(JavaThread::popframe_force_deopt_reexecution_bit); 2650 THREAD->set_popframe_condition_bit(JavaThread::popframe_force_deopt_reexecution_bit);

mercurial