comparison src/share/vm/runtime/sharedRuntime.cpp @ 17980:0bf37f737702

8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9 Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points. Reviewed-by: twisti, kvn
author roland
date Tue, 01 Apr 2014 09:36:49 +0200
parents 78bbf4d43a14
children 52b4284cb496 07e01043ade7
comparison
equal deleted inserted replaced
17978:ad51f24671c2 17980:0bf37f737702
783 case STACK_OVERFLOW: { 783 case STACK_OVERFLOW: {
784 // Stack overflow only occurs upon frame setup; the callee is 784 // Stack overflow only occurs upon frame setup; the callee is
785 // going to be unwound. Dispatch to a shared runtime stub 785 // going to be unwound. Dispatch to a shared runtime stub
786 // which will cause the StackOverflowError to be fabricated 786 // which will cause the StackOverflowError to be fabricated
787 // and processed. 787 // and processed.
788 // For stack overflow in deoptimization blob, cleanup thread. 788 // Stack overflow should never occur during deoptimization:
789 if (thread->deopt_mark() != NULL) { 789 // the compiled method bangs the stack by as much as the
790 Deoptimization::cleanup_deopt_info(thread, NULL); 790 // interpreter would need in case of a deoptimization. The
791 } 791 // deoptimization blob and uncommon trap blob bang the stack
792 // in a debug VM to verify the correctness of the compiled
793 // method stack banging.
794 assert(thread->deopt_mark() == NULL, "no stack overflow from deopt blob/uncommon trap");
792 Events::log_exception(thread, "StackOverflowError at " INTPTR_FORMAT, pc); 795 Events::log_exception(thread, "StackOverflowError at " INTPTR_FORMAT, pc);
793 return StubRoutines::throw_StackOverflowError_entry(); 796 return StubRoutines::throw_StackOverflowError_entry();
794 } 797 }
795 798
796 case IMPLICIT_NULL: { 799 case IMPLICIT_NULL: {