equal
deleted
inserted
replaced
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); |