< prev index next >

src/hotspot/share/runtime/vm_operations.cpp

Print this page
rev 49294 : imported patch 8199813

*** 415,435 **** snapshot->set_concurrent_locks(tcl); return snapshot; } volatile bool VM_Exit::_vm_exited = false; ! Thread * VM_Exit::_shutdown_thread = NULL; int VM_Exit::set_vm_exited() { - Thread * thr_cur = Thread::current(); ! 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 --- 415,433 ---- snapshot->set_concurrent_locks(tcl); return snapshot; } 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; _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
*** 500,509 **** --- 498,512 ---- // 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 >