< prev index next >
src/hotspot/share/runtime/thread.cpp
Print this page
rev 49294 : imported patch 8199813
*** 2390,2404 ****
return ret;
}
#ifdef ASSERT
! // verify the JavaThread has not yet been published in the Threads::list, and
! // hence doesn't need protection from concurrent access at this stage
void JavaThread::verify_not_published() {
! ThreadsListHandle tlh;
! assert(!tlh.includes(this), "JavaThread shouldn't have been published yet!");
}
#endif
// Slow path when the native==>VM/Java barriers detect a safepoint is in
// progress or when _suspend_flags is non-zero.
--- 2390,2406 ----
return ret;
}
#ifdef ASSERT
! // Verify the JavaThread has not yet been published in the Threads::list, and
! // hence doesn't need protection from concurrent access at this stage.
void JavaThread::verify_not_published() {
! // Cannot create a ThreadsListHandle here and check !tlh.includes(this)
! // since an unpublished JavaThread doesn't participate in the
! // Thread-SMR protocol for keeping a ThreadsList alive.
! assert(!on_thread_list(), "JavaThread shouldn't have been published yet!");
}
#endif
// Slow path when the native==>VM/Java barriers detect a safepoint is in
// progress or when _suspend_flags is non-zero.
*** 4252,4262 ****
VMThread::wait_for_vm_thread_exit();
assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint");
VMThread::destroy();
}
! // clean up ideal graph printers
#if defined(COMPILER2) && !defined(PRODUCT)
IdealGraphPrinter::clean_up();
#endif
// Now, all Java threads are gone except daemon threads. Daemon threads
--- 4254,4270 ----
VMThread::wait_for_vm_thread_exit();
assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint");
VMThread::destroy();
}
! // Remember the Thread that is shutting down the VM because it needs
! // to be immune to some of the sanity checks and policies that have
! // to happen at VM shutdown time.
! VM_Exit::set_shutdown_thread(thread);
!
! // Clean up ideal graph printers after the VMThread has started
! // the final safepoint which will block all the Compiler threads.
#if defined(COMPILER2) && !defined(PRODUCT)
IdealGraphPrinter::clean_up();
#endif
// Now, all Java threads are gone except daemon threads. Daemon threads
< prev index next >