hotspot/src/share/vm/runtime/sharedRuntime.cpp
changeset 24018 77b156916bab
parent 23873 dc33274a6248
child 24023 965f85aeb674
equal deleted inserted replaced
24016:2927072ed5fb 24018:77b156916bab
   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: {