hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
changeset 2154 72a9b7284ccf
parent 2105 347008ce7984
parent 2131 98f9cef66a34
child 4013 b154310845de
equal deleted inserted replaced
2106:ec595a5e793e 2154:72a9b7284ccf
  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);