472 class VM_Exit: public VM_Operation {
473 private:
474 int _exit_code;
475 static volatile bool _vm_exited;
476 static Thread * volatile _shutdown_thread;
477 static void wait_if_vm_exited();
478 public:
479 VM_Exit(int exit_code) {
480 _exit_code = exit_code;
481 }
482 static int wait_for_threads_in_native_to_block();
483 static int set_vm_exited();
484 static bool vm_exited() { return _vm_exited; }
485 static Thread * shutdown_thread() { return _shutdown_thread; }
486 static void block_if_vm_exited() {
487 if (_vm_exited) {
488 wait_if_vm_exited();
489 }
490 }
491 VMOp_Type type() const { return VMOp_Exit; }
492 void doit();
493 };
494
495 class VM_PrintCompileQueue: public VM_Operation {
496 private:
497 outputStream* _out;
498
499 public:
500 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
501 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
502 Mode evaluation_mode() const { return _safepoint; }
503 void doit();
504 };
505
506 #if INCLUDE_SERVICES
507 class VM_PrintClassHierarchy: public VM_Operation {
508 private:
509 outputStream* _out;
510 bool _print_interfaces;
511 bool _print_subclasses;
|
472 class VM_Exit: public VM_Operation {
473 private:
474 int _exit_code;
475 static volatile bool _vm_exited;
476 static Thread * volatile _shutdown_thread;
477 static void wait_if_vm_exited();
478 public:
479 VM_Exit(int exit_code) {
480 _exit_code = exit_code;
481 }
482 static int wait_for_threads_in_native_to_block();
483 static int set_vm_exited();
484 static bool vm_exited() { return _vm_exited; }
485 static Thread * shutdown_thread() { return _shutdown_thread; }
486 static void block_if_vm_exited() {
487 if (_vm_exited) {
488 wait_if_vm_exited();
489 }
490 }
491 VMOp_Type type() const { return VMOp_Exit; }
492 bool doit_prologue();
493 void doit();
494 };
495
496 class VM_PrintCompileQueue: public VM_Operation {
497 private:
498 outputStream* _out;
499
500 public:
501 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
502 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
503 Mode evaluation_mode() const { return _safepoint; }
504 void doit();
505 };
506
507 #if INCLUDE_SERVICES
508 class VM_PrintClassHierarchy: public VM_Operation {
509 private:
510 outputStream* _out;
511 bool _print_interfaces;
512 bool _print_subclasses;
|