773 case STACK_OVERFLOW: { |
773 case STACK_OVERFLOW: { |
774 // Stack overflow only occurs upon frame setup; the callee is |
774 // Stack overflow only occurs upon frame setup; the callee is |
775 // going to be unwound. Dispatch to a shared runtime stub |
775 // going to be unwound. Dispatch to a shared runtime stub |
776 // which will cause the StackOverflowError to be fabricated |
776 // which will cause the StackOverflowError to be fabricated |
777 // and processed. |
777 // and processed. |
778 // For stack overflow in deoptimization blob, cleanup thread. |
778 // Stack overflow should never occur during deoptimization: |
779 if (thread->deopt_mark() != NULL) { |
779 // the compiled method bangs the stack by as much as the |
780 Deoptimization::cleanup_deopt_info(thread, NULL); |
780 // interpreter would need in case of a deoptimization. The |
781 } |
781 // deoptimization blob and uncommon trap blob bang the stack |
|
782 // in a debug VM to verify the correctness of the compiled |
|
783 // method stack banging. |
|
784 assert(thread->deopt_mark() == NULL, "no stack overflow from deopt blob/uncommon trap"); |
782 Events::log_exception(thread, "StackOverflowError at " INTPTR_FORMAT, pc); |
785 Events::log_exception(thread, "StackOverflowError at " INTPTR_FORMAT, pc); |
783 return StubRoutines::throw_StackOverflowError_entry(); |
786 return StubRoutines::throw_StackOverflowError_entry(); |
784 } |
787 } |
785 |
788 |
786 case IMPLICIT_NULL: { |
789 case IMPLICIT_NULL: { |