int VM_Exit::set_vm_exited() { Thread * thr_cur = ThreadLocalStorage::get_thread_slow(); assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already"); int num_active = 0; _shutdown_thread = thr_cur; _vm_exited = true; // global flag for(JavaThread *thr = Threads::first(); thr != NULL; thr = thr->next()) if (thr!=thr_cur && thr->thread_state() == _thread_in_native) { ++num_active; thr->set_terminated(JavaThread::_vm_exited); // per-thread flag } return num_active; }
int VM_Exit::set_vm_exited() { CodeCacheExtensions::complete_step(CodeCacheExtensionsSteps::LastStep); 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(JavaThread *thr = Threads::first(); thr != NULL; thr = thr->next()) if (thr!=thr_cur && thr->thread_state() == _thread_in_native) { ++num_active; thr->set_terminated(JavaThread::_vm_exited); // per-thread flag } return num_active; }