434 class VM_Exit: public VM_Operation {
435 private:
436 int _exit_code;
437 static volatile bool _vm_exited;
438 static Thread * volatile _shutdown_thread;
439 static void wait_if_vm_exited();
440 public:
441 VM_Exit(int exit_code) {
442 _exit_code = exit_code;
443 }
444 static int wait_for_threads_in_native_to_block();
445 static int set_vm_exited();
446 static bool vm_exited() { return _vm_exited; }
447 static Thread * shutdown_thread() { return _shutdown_thread; }
448 static void block_if_vm_exited() {
449 if (_vm_exited) {
450 wait_if_vm_exited();
451 }
452 }
453 VMOp_Type type() const { return VMOp_Exit; }
454 void doit();
455 };
456
457 class VM_PrintCompileQueue: public VM_Operation {
458 private:
459 outputStream* _out;
460
461 public:
462 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
463 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
464 void doit();
465 };
466
467 #if INCLUDE_SERVICES
468 class VM_PrintClassHierarchy: public VM_Operation {
469 private:
470 outputStream* _out;
471 bool _print_interfaces;
472 bool _print_subclasses;
473 char* _classname;
|
434 class VM_Exit: public VM_Operation {
435 private:
436 int _exit_code;
437 static volatile bool _vm_exited;
438 static Thread * volatile _shutdown_thread;
439 static void wait_if_vm_exited();
440 public:
441 VM_Exit(int exit_code) {
442 _exit_code = exit_code;
443 }
444 static int wait_for_threads_in_native_to_block();
445 static int set_vm_exited();
446 static bool vm_exited() { return _vm_exited; }
447 static Thread * shutdown_thread() { return _shutdown_thread; }
448 static void block_if_vm_exited() {
449 if (_vm_exited) {
450 wait_if_vm_exited();
451 }
452 }
453 VMOp_Type type() const { return VMOp_Exit; }
454 bool doit_prologue();
455 void doit();
456 };
457
458 class VM_PrintCompileQueue: public VM_Operation {
459 private:
460 outputStream* _out;
461
462 public:
463 VM_PrintCompileQueue(outputStream* st) : _out(st) {}
464 VMOp_Type type() const { return VMOp_PrintCompileQueue; }
465 void doit();
466 };
467
468 #if INCLUDE_SERVICES
469 class VM_PrintClassHierarchy: public VM_Operation {
470 private:
471 outputStream* _out;
472 bool _print_interfaces;
473 bool _print_subclasses;
474 char* _classname;
|