378 void doit();
379 };
380
381 class VM_PrintMetadata : public VM_Operation {
382 private:
383 outputStream* _out;
384 size_t _scale;
385 public:
386 VM_PrintMetadata(outputStream* out, size_t scale) : _out(out), _scale(scale) {};
387
388 VMOp_Type type() const { return VMOp_PrintMetadata; }
389 void doit();
390 };
391
392 class DeadlockCycle;
393 class VM_FindDeadlocks: public VM_Operation {
394 private:
395 bool _concurrent_locks;
396 DeadlockCycle* _deadlocks;
397 outputStream* _out;
398
399 public:
400 VM_FindDeadlocks(bool concurrent_locks) : _concurrent_locks(concurrent_locks), _out(NULL), _deadlocks(NULL) {};
401 VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _out(st), _deadlocks(NULL) {};
402 ~VM_FindDeadlocks();
403
404 DeadlockCycle* result() { return _deadlocks; };
405 VMOp_Type type() const { return VMOp_FindDeadlocks; }
406 void doit();
407 bool doit_prologue();
408 };
409
410 class ThreadDumpResult;
411 class ThreadSnapshot;
412 class ThreadConcurrentLocks;
413
414 class VM_ThreadDump : public VM_Operation {
415 private:
416 ThreadDumpResult* _result;
417 int _num_threads;
418 GrowableArray<instanceHandle>* _threads;
419 int _max_depth;
420 bool _with_locked_monitors;
|
378 void doit();
379 };
380
381 class VM_PrintMetadata : public VM_Operation {
382 private:
383 outputStream* _out;
384 size_t _scale;
385 public:
386 VM_PrintMetadata(outputStream* out, size_t scale) : _out(out), _scale(scale) {};
387
388 VMOp_Type type() const { return VMOp_PrintMetadata; }
389 void doit();
390 };
391
392 class DeadlockCycle;
393 class VM_FindDeadlocks: public VM_Operation {
394 private:
395 bool _concurrent_locks;
396 DeadlockCycle* _deadlocks;
397 outputStream* _out;
398 ThreadsListSetter _setter; // Helper to set hazard ptr in the originating thread
399 // which protects the JavaThreads in _deadlocks.
400
401 public:
402 VM_FindDeadlocks(bool concurrent_locks) : _concurrent_locks(concurrent_locks), _out(NULL), _deadlocks(NULL), _setter() {};
403 VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _out(st), _deadlocks(NULL) {};
404 ~VM_FindDeadlocks();
405
406 DeadlockCycle* result() { return _deadlocks; };
407 VMOp_Type type() const { return VMOp_FindDeadlocks; }
408 void doit();
409 bool doit_prologue();
410 };
411
412 class ThreadDumpResult;
413 class ThreadSnapshot;
414 class ThreadConcurrentLocks;
415
416 class VM_ThreadDump : public VM_Operation {
417 private:
418 ThreadDumpResult* _result;
419 int _num_threads;
420 GrowableArray<instanceHandle>* _threads;
421 int _max_depth;
422 bool _with_locked_monitors;
|