< prev index next >

src/hotspot/share/runtime/vm_operations.cpp

Print this page
rev 49294 : imported patch 8199813
rev 49295 : Move IdealGraphPrinter::clean_up() call so VM_Exit::set_shutdown_thread() can be removed.

@@ -418,16 +418,18 @@
 
 volatile bool VM_Exit::_vm_exited = false;
 Thread * volatile VM_Exit::_shutdown_thread = NULL;
 
 int VM_Exit::set_vm_exited() {
+
   Thread * thr_cur = Thread::current();
-  assert(_shutdown_thread == thr_cur, "_shutdown_thread should be current thread");
+
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
 
   int num_active = 0;
 
+  _shutdown_thread = thr_cur;
   _vm_exited = true;                                // global flag
   for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thr = jtiwh.next(); ) {
     if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
       ++num_active;
       thr->set_terminated(JavaThread::_vm_exited);  // per-thread flag

@@ -498,15 +500,10 @@
   // native==>Java/VM barriers.
   // Among 16276 JCK tests, 94% of them come here without any threads still
   // running in native; the other 6% are quiescent within 250ms (Ultra 80).
   wait_for_threads_in_native_to_block();
 
-  // 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::current());
-
   set_vm_exited();
 
   // cleanup globals resources before exiting. exit_globals() currently
   // cleans up outputStream resources and PerfMemory resources.
   exit_globals();
< prev index next >