src/share/vm/interpreter/interpreter.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/interpreter

src/share/vm/interpreter/interpreter.cpp

Print this page




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




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


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