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 :
|