--- old/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp 2014-02-20 18:41:06.444845727 +0100 +++ new/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp 2014-02-20 18:41:06.242352990 +0100 @@ -396,7 +396,14 @@ if (thread->thread_state() == _thread_in_Java) { // Throw a stack overflow exception. Guard pages will be reenabled // while unwinding the stack. - stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::STACK_OVERFLOW); + CodeBlob* cb = CodeCache::find_blob_unsafe(pc); + if (cb->is_deoptimization_stub()) { + stub = ((DeoptimizationBlob*)cb)->stack_overflow(); + } else if (cb->is_uncommon_trap_stub()) { + stub = ((UncommonTrapBlob*)cb)->stack_overflow(); + } else { + stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::STACK_OVERFLOW); + } } else { // Thread was in the vm or native code. Return and try to finish. return true;