404 void doit();
405 };
406
407 class DeadlockCycle;
408 class VM_FindDeadlocks: public VM_Operation {
409 private:
410 bool _concurrent_locks;
411 DeadlockCycle* _deadlocks;
412 outputStream* _out;
413 ThreadsListSetter _setter; // Helper to set hazard ptr in the originating thread
414 // which protects the JavaThreads in _deadlocks.
415
416 public:
417 VM_FindDeadlocks(bool concurrent_locks) : _concurrent_locks(concurrent_locks), _out(NULL), _deadlocks(NULL), _setter() {};
418 VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _out(st), _deadlocks(NULL) {};
419 ~VM_FindDeadlocks();
420
421 DeadlockCycle* result() { return _deadlocks; };
422 VMOp_Type type() const { return VMOp_FindDeadlocks; }
423 void doit();
424 bool doit_prologue();
425 };
426
427 class ThreadDumpResult;
428 class ThreadSnapshot;
429 class ThreadConcurrentLocks;
430
431 class VM_ThreadDump : public VM_Operation {
432 private:
433 ThreadDumpResult* _result;
434 int _num_threads;
435 GrowableArray<instanceHandle>* _threads;
436 int _max_depth;
437 bool _with_locked_monitors;
438 bool _with_locked_synchronizers;
439
440 ThreadSnapshot* snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl);
441
442 public:
443 VM_ThreadDump(ThreadDumpResult* result,
444 int max_depth, // -1 indicates entire stack
|
404 void doit();
405 };
406
407 class DeadlockCycle;
408 class VM_FindDeadlocks: public VM_Operation {
409 private:
410 bool _concurrent_locks;
411 DeadlockCycle* _deadlocks;
412 outputStream* _out;
413 ThreadsListSetter _setter; // Helper to set hazard ptr in the originating thread
414 // which protects the JavaThreads in _deadlocks.
415
416 public:
417 VM_FindDeadlocks(bool concurrent_locks) : _concurrent_locks(concurrent_locks), _out(NULL), _deadlocks(NULL), _setter() {};
418 VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _out(st), _deadlocks(NULL) {};
419 ~VM_FindDeadlocks();
420
421 DeadlockCycle* result() { return _deadlocks; };
422 VMOp_Type type() const { return VMOp_FindDeadlocks; }
423 void doit();
424 };
425
426 class ThreadDumpResult;
427 class ThreadSnapshot;
428 class ThreadConcurrentLocks;
429
430 class VM_ThreadDump : public VM_Operation {
431 private:
432 ThreadDumpResult* _result;
433 int _num_threads;
434 GrowableArray<instanceHandle>* _threads;
435 int _max_depth;
436 bool _with_locked_monitors;
437 bool _with_locked_synchronizers;
438
439 ThreadSnapshot* snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl);
440
441 public:
442 VM_ThreadDump(ThreadDumpResult* result,
443 int max_depth, // -1 indicates entire stack
|