712 bool must_throw = false, bool keep_exact_action = false) { |
712 bool must_throw = false, bool keep_exact_action = false) { |
713 uncommon_trap(Deoptimization::make_trap_request(reason, action), |
713 uncommon_trap(Deoptimization::make_trap_request(reason, action), |
714 klass, reason_string, must_throw, keep_exact_action); |
714 klass, reason_string, must_throw, keep_exact_action); |
715 } |
715 } |
716 |
716 |
|
717 // Bail out to the interpreter and keep exact action (avoid switching to Action_none). |
|
718 void uncommon_trap_exact(Deoptimization::DeoptReason reason, |
|
719 Deoptimization::DeoptAction action, |
|
720 ciKlass* klass = NULL, const char* reason_string = NULL, |
|
721 bool must_throw = false) { |
|
722 uncommon_trap(Deoptimization::make_trap_request(reason, action), |
|
723 klass, reason_string, must_throw, /*keep_exact_action=*/true); |
|
724 } |
|
725 |
717 // SP when bytecode needs to be reexecuted. |
726 // SP when bytecode needs to be reexecuted. |
718 virtual int reexecute_sp() { return sp(); } |
727 virtual int reexecute_sp() { return sp(); } |
719 |
728 |
720 // Report if there were too many traps at the current method and bci. |
729 // Report if there were too many traps at the current method and bci. |
721 // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded. |
730 // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded. |