450
451 VMOp_Type type() const { return VMOp_ThreadDump; }
452 void doit();
453 bool doit_prologue();
454 void doit_epilogue();
455 };
456
457
458 class VM_Exit: public VM_Operation {
459 private:
460 int _exit_code;
461 static volatile bool _vm_exited;
462 static Thread * volatile _shutdown_thread;
463 static void wait_if_vm_exited();
464 public:
465 VM_Exit(int exit_code) {
466 _exit_code = exit_code;
467 }
468 static int wait_for_threads_in_native_to_block();
469 static int set_vm_exited();
470 static void set_shutdown_thread(Thread *t) { _shutdown_thread = t; }
471 static Thread * shutdown_thread() { return _shutdown_thread; }
472 static bool vm_exited() { return _vm_exited; }
473 static void block_if_vm_exited() {
474 if (_vm_exited) {
475 wait_if_vm_exited();
476 }
477 }
478 VMOp_Type type() const { return VMOp_Exit; }
479 void doit();
480 };
481
482 class VM_PrintCompileQueue: public VM_Operation {
483 private:
484 outputStream* _out;
485
486 public:
487 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
488 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
489 Mode evaluation_mode() const { return _safepoint; }
490 void doit();
491 };
492
|
450
451 VMOp_Type type() const { return VMOp_ThreadDump; }
452 void doit();
453 bool doit_prologue();
454 void doit_epilogue();
455 };
456
457
458 class VM_Exit: public VM_Operation {
459 private:
460 int _exit_code;
461 static volatile bool _vm_exited;
462 static Thread * volatile _shutdown_thread;
463 static void wait_if_vm_exited();
464 public:
465 VM_Exit(int exit_code) {
466 _exit_code = exit_code;
467 }
468 static int wait_for_threads_in_native_to_block();
469 static int set_vm_exited();
470 static bool vm_exited() { return _vm_exited; }
471 static Thread * shutdown_thread() { return _shutdown_thread; }
472 static void block_if_vm_exited() {
473 if (_vm_exited) {
474 wait_if_vm_exited();
475 }
476 }
477 VMOp_Type type() const { return VMOp_Exit; }
478 void doit();
479 };
480
481 class VM_PrintCompileQueue: public VM_Operation {
482 private:
483 outputStream* _out;
484
485 public:
486 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
487 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
488 Mode evaluation_mode() const { return _safepoint; }
489 void doit();
490 };
491
|