--- old/src/share/vm/runtime/java.cpp 2015-11-11 15:14:05.084474173 -0500 +++ new/src/share/vm/runtime/java.cpp 2015-11-11 15:14:03.272371564 -0500 @@ -511,10 +511,10 @@ } void vm_exit(int code) { - Thread* thread = ThreadLocalStorage::is_initialized() ? - ThreadLocalStorage::get_thread_slow() : NULL; + Thread* thread = + ThreadLocalStorage::is_initialized() ? Thread::current_or_null() : NULL; if (thread == NULL) { - // we have serious problems -- just exit + // very early initialization failure -- just exit vm_direct_exit(code); } @@ -550,8 +550,7 @@ // Calling 'exit_globals()' will disable thread-local-storage and cause all // kinds of assertions to trigger in debug mode. if (is_init_completed()) { - Thread* thread = ThreadLocalStorage::is_initialized() ? - ThreadLocalStorage::get_thread_slow() : NULL; + Thread* thread = Thread::current_or_null(); if (thread != NULL && thread->is_Java_thread()) { // We are leaving the VM, set state to native (in case any OS exit // handlers call back to the VM) @@ -605,7 +604,7 @@ // If there are exceptions on this thread it must be cleared // first and here. Any future calls to EXCEPTION_MARK requires // that no pending exceptions exist. - Thread *THREAD = Thread::current(); + Thread *THREAD = Thread::current_or_null(); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; }