610 } |
610 } |
611 #endif // INCLUDE_SERVICES |
611 #endif // INCLUDE_SERVICES |
612 |
612 |
613 ThreadDumpDCmd::ThreadDumpDCmd(outputStream* output, bool heap) : |
613 ThreadDumpDCmd::ThreadDumpDCmd(outputStream* output, bool heap) : |
614 DCmdWithParser(output, heap), |
614 DCmdWithParser(output, heap), |
615 _locks("-l", "print java.util.concurrent locks", "BOOLEAN", false, "false") { |
615 _locks("-l", "print java.util.concurrent locks", "BOOLEAN", false, "false"), |
|
616 _extended("-e", "print extended thread information", "BOOLEAN", false, "false") { |
616 _dcmdparser.add_dcmd_option(&_locks); |
617 _dcmdparser.add_dcmd_option(&_locks); |
|
618 _dcmdparser.add_dcmd_option(&_extended); |
617 } |
619 } |
618 |
620 |
619 void ThreadDumpDCmd::execute(DCmdSource source, TRAPS) { |
621 void ThreadDumpDCmd::execute(DCmdSource source, TRAPS) { |
620 // thread stacks |
622 // thread stacks |
621 VM_PrintThreads op1(output(), _locks.value()); |
623 VM_PrintThreads op1(output(), _locks.value(), _extended.value()); |
622 VMThread::execute(&op1); |
624 VMThread::execute(&op1); |
623 |
625 |
624 // JNI global handles |
626 // JNI global handles |
625 VM_PrintJNI op2(output()); |
627 VM_PrintJNI op2(output()); |
626 VMThread::execute(&op2); |
628 VMThread::execute(&op2); |