602 // Need to check for an unattached thread as only attached threads
603 // can acquire the lock.
604 Thread* current = Thread::current_or_null();
605 if (current != nullptr && current != _shutdown_thread) {
606 // _vm_exited is set at safepoint, and the Threads_lock is never released
607 // so we will block here until the process dies.
608 Threads_lock->lock();
609 ShouldNotReachHere();
610 }
611 }
612 }
613
614 void VM_PrintCompileQueue::doit() {
615 CompileBroker::print_compile_queues(_out);
616 }
617
618 #if INCLUDE_SERVICES
619 void VM_PrintClassHierarchy::doit() {
620 KlassHierarchy::print_class_hierarchy(_out, _print_interfaces, _print_subclasses, _classname);
621 }
622 #endif
|
602 // Need to check for an unattached thread as only attached threads
603 // can acquire the lock.
604 Thread* current = Thread::current_or_null();
605 if (current != nullptr && current != _shutdown_thread) {
606 // _vm_exited is set at safepoint, and the Threads_lock is never released
607 // so we will block here until the process dies.
608 Threads_lock->lock();
609 ShouldNotReachHere();
610 }
611 }
612 }
613
614 void VM_PrintCompileQueue::doit() {
615 CompileBroker::print_compile_queues(_out);
616 }
617
618 #if INCLUDE_SERVICES
619 void VM_PrintClassHierarchy::doit() {
620 KlassHierarchy::print_class_hierarchy(_out, _print_interfaces, _print_subclasses, _classname);
621 }
622
623 void VM_PrintClassLayout::doit() {
624 PrintClassLayout::print_class_layout(_out, _class_name);
625 }
626 #endif
|