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