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