484 class VM_Exit: public VM_Operation {
485 private:
486 int _exit_code;
487 static volatile bool _vm_exited;
488 static Thread * volatile _shutdown_thread;
489 static void wait_if_vm_exited();
490 public:
491 VM_Exit(int exit_code) {
492 _exit_code = exit_code;
493 }
494 static int wait_for_threads_in_native_to_block();
495 static int set_vm_exited();
496 static bool vm_exited() { return _vm_exited; }
497 static Thread * shutdown_thread() { return _shutdown_thread; }
498 static void block_if_vm_exited() {
499 if (_vm_exited) {
500 wait_if_vm_exited();
501 }
502 }
503 VMOp_Type type() const { return VMOp_Exit; }
504 void doit();
505 };
506
507 class VM_PrintCompileQueue: public VM_Operation {
508 private:
509 outputStream* _out;
510
511 public:
512 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
513 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
514 Mode evaluation_mode() const { return _safepoint; }
515 void doit();
516 };
517
518 #if INCLUDE_SERVICES
519 class VM_PrintClassHierarchy: public VM_Operation {
520 private:
521 outputStream* _out;
522 bool _print_interfaces;
523 bool _print_subclasses;
|
484 class VM_Exit: public VM_Operation {
485 private:
486 int _exit_code;
487 static volatile bool _vm_exited;
488 static Thread * volatile _shutdown_thread;
489 static void wait_if_vm_exited();
490 public:
491 VM_Exit(int exit_code) {
492 _exit_code = exit_code;
493 }
494 static int wait_for_threads_in_native_to_block();
495 static int set_vm_exited();
496 static bool vm_exited() { return _vm_exited; }
497 static Thread * shutdown_thread() { return _shutdown_thread; }
498 static void block_if_vm_exited() {
499 if (_vm_exited) {
500 wait_if_vm_exited();
501 }
502 }
503 VMOp_Type type() const { return VMOp_Exit; }
504 bool doit_prologue();
505 void doit();
506 };
507
508 class VM_PrintCompileQueue: public VM_Operation {
509 private:
510 outputStream* _out;
511
512 public:
513 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
514 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
515 Mode evaluation_mode() const { return _safepoint; }
516 void doit();
517 };
518
519 #if INCLUDE_SERVICES
520 class VM_PrintClassHierarchy: public VM_Operation {
521 private:
522 outputStream* _out;
523 bool _print_interfaces;
524 bool _print_subclasses;
|