< prev index next >

src/share/vm/interpreter/interpreter.cpp

Print this page




 442 
 443     default:
 444       type = Bytecodes::result_type(code);
 445       break;
 446   }
 447 
 448   // return entry point for computed continuation state & bytecode length
 449   return
 450     is_top_frame
 451     ? Interpreter::deopt_entry (as_TosState(type), length)
 452     : Interpreter::return_entry(as_TosState(type), length, code);
 453 }
 454 
 455 // If deoptimization happens, this function returns the point where the interpreter reexecutes
 456 // the bytecode.
 457 // Note: Bytecodes::_athrow is a special case in that it does not return
 458 //       Interpreter::deopt_entry(vtos, 0) like others
 459 address AbstractInterpreter::deopt_reexecute_entry(Method* method, address bcp) {
 460   assert(method->contains(bcp), "just checkin'");
 461   Bytecodes::Code code   = Bytecodes::java_code_at(method, bcp);
 462 #ifdef COMPILER1
 463   if(code == Bytecodes::_athrow ) {
 464     return Interpreter::rethrow_exception_entry();
 465   }
 466 #endif /* COMPILER1 */
 467   return Interpreter::deopt_entry(vtos, 0);
 468 }
 469 
 470 // If deoptimization happens, the interpreter should reexecute these bytecodes.
 471 // This function mainly helps the compilers to set up the reexecute bit.
 472 bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) {
 473   switch (code) {
 474     case Bytecodes::_lookupswitch:
 475     case Bytecodes::_tableswitch:
 476     case Bytecodes::_fast_binaryswitch:
 477     case Bytecodes::_fast_linearswitch:
 478     // recompute condtional expression folded into _if<cond>
 479     case Bytecodes::_lcmp      :
 480     case Bytecodes::_fcmpl     :
 481     case Bytecodes::_fcmpg     :
 482     case Bytecodes::_dcmpl     :
 483     case Bytecodes::_dcmpg     :
 484     case Bytecodes::_ifnull    :
 485     case Bytecodes::_ifnonnull :
 486     case Bytecodes::_goto      :




 442 
 443     default:
 444       type = Bytecodes::result_type(code);
 445       break;
 446   }
 447 
 448   // return entry point for computed continuation state & bytecode length
 449   return
 450     is_top_frame
 451     ? Interpreter::deopt_entry (as_TosState(type), length)
 452     : Interpreter::return_entry(as_TosState(type), length, code);
 453 }
 454 
 455 // If deoptimization happens, this function returns the point where the interpreter reexecutes
 456 // the bytecode.
 457 // Note: Bytecodes::_athrow is a special case in that it does not return
 458 //       Interpreter::deopt_entry(vtos, 0) like others
 459 address AbstractInterpreter::deopt_reexecute_entry(Method* method, address bcp) {
 460   assert(method->contains(bcp), "just checkin'");
 461   Bytecodes::Code code   = Bytecodes::java_code_at(method, bcp);
 462 #if defined(COMPILER1) || INCLUDE_JVMCI
 463   if(code == Bytecodes::_athrow ) {
 464     return Interpreter::rethrow_exception_entry();
 465   }
 466 #endif /* COMPILER1 || INCLUDE_JVMCI */
 467   return Interpreter::deopt_entry(vtos, 0);
 468 }
 469 
 470 // If deoptimization happens, the interpreter should reexecute these bytecodes.
 471 // This function mainly helps the compilers to set up the reexecute bit.
 472 bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) {
 473   switch (code) {
 474     case Bytecodes::_lookupswitch:
 475     case Bytecodes::_tableswitch:
 476     case Bytecodes::_fast_binaryswitch:
 477     case Bytecodes::_fast_linearswitch:
 478     // recompute condtional expression folded into _if<cond>
 479     case Bytecodes::_lcmp      :
 480     case Bytecodes::_fcmpl     :
 481     case Bytecodes::_fcmpg     :
 482     case Bytecodes::_dcmpl     :
 483     case Bytecodes::_dcmpg     :
 484     case Bytecodes::_ifnull    :
 485     case Bytecodes::_ifnonnull :
 486     case Bytecodes::_goto      :


< prev index next >