src/share/vm/runtime/vframeArray.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6518907 Sdiff src/share/vm/runtime

src/share/vm/runtime/vframeArray.cpp

Print this page




 216         pc = Interpreter::remove_activation_preserving_args_entry();
 217 #else
 218         // Do an uncommon trap type entry. c++ interpreter will know
 219         // to pop frame and preserve the args
 220         pc = Interpreter::deopt_entry(vtos, 0);
 221         use_next_mdp = false;
 222 #endif
 223       } else {
 224         // Reexecute invoke in top frame
 225         pc = Interpreter::deopt_entry(vtos, 0);
 226         use_next_mdp = false;
 227         popframe_preserved_args_size_in_bytes = in_bytes(thread->popframe_preserved_args_size());
 228         // Note: the PopFrame-related extension of the expression stack size is done in
 229         // Deoptimization::fetch_unroll_info_helper
 230         popframe_preserved_args_size_in_words = in_words(thread->popframe_preserved_args_size_in_words());
 231       }
 232     } else if (JvmtiExport::can_force_early_return() && state != NULL && state->is_earlyret_pending()) {
 233       // Force early return from top frame after deoptimization
 234 #ifndef CC_INTERP
 235       pc = Interpreter::remove_activation_early_entry(state->earlyret_tos());
 236 #else
 237      // TBD: Need to implement ForceEarlyReturn for CC_INTERP (ia64)
 238 #endif
 239     } else {
 240       // Possibly override the previous pc computation of the top (youngest) frame
 241       switch (exec_mode) {
 242       case Deoptimization::Unpack_deopt:
 243         // use what we've got
 244         break;
 245       case Deoptimization::Unpack_exception:
 246         // exception is pending
 247         pc = SharedRuntime::raw_exception_handler_for_return_address(thread, pc);
 248         // [phh] We're going to end up in some handler or other, so it doesn't
 249         // matter what mdp we point to.  See exception_handler_for_exception()
 250         // in interpreterRuntime.cpp.
 251         break;
 252       case Deoptimization::Unpack_uncommon_trap:
 253       case Deoptimization::Unpack_reexecute:
 254         // redo last byte code
 255         pc  = Interpreter::deopt_entry(vtos, 0);
 256         use_next_mdp = false;
 257         break;




 216         pc = Interpreter::remove_activation_preserving_args_entry();
 217 #else
 218         // Do an uncommon trap type entry. c++ interpreter will know
 219         // to pop frame and preserve the args
 220         pc = Interpreter::deopt_entry(vtos, 0);
 221         use_next_mdp = false;
 222 #endif
 223       } else {
 224         // Reexecute invoke in top frame
 225         pc = Interpreter::deopt_entry(vtos, 0);
 226         use_next_mdp = false;
 227         popframe_preserved_args_size_in_bytes = in_bytes(thread->popframe_preserved_args_size());
 228         // Note: the PopFrame-related extension of the expression stack size is done in
 229         // Deoptimization::fetch_unroll_info_helper
 230         popframe_preserved_args_size_in_words = in_words(thread->popframe_preserved_args_size_in_words());
 231       }
 232     } else if (JvmtiExport::can_force_early_return() && state != NULL && state->is_earlyret_pending()) {
 233       // Force early return from top frame after deoptimization
 234 #ifndef CC_INTERP
 235       pc = Interpreter::remove_activation_early_entry(state->earlyret_tos());


 236 #endif
 237     } else {
 238       // Possibly override the previous pc computation of the top (youngest) frame
 239       switch (exec_mode) {
 240       case Deoptimization::Unpack_deopt:
 241         // use what we've got
 242         break;
 243       case Deoptimization::Unpack_exception:
 244         // exception is pending
 245         pc = SharedRuntime::raw_exception_handler_for_return_address(thread, pc);
 246         // [phh] We're going to end up in some handler or other, so it doesn't
 247         // matter what mdp we point to.  See exception_handler_for_exception()
 248         // in interpreterRuntime.cpp.
 249         break;
 250       case Deoptimization::Unpack_uncommon_trap:
 251       case Deoptimization::Unpack_reexecute:
 252         // redo last byte code
 253         pc  = Interpreter::deopt_entry(vtos, 0);
 254         use_next_mdp = false;
 255         break;


src/share/vm/runtime/vframeArray.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File