549 HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); |
549 HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); |
550 } |
550 } |
551 |
551 |
552 void vm_direct_exit(int code) { |
552 void vm_direct_exit(int code) { |
553 notify_vm_shutdown(); |
553 notify_vm_shutdown(); |
|
554 os::wait_for_keypress_at_exit(); |
554 ::exit(code); |
555 ::exit(code); |
555 } |
556 } |
556 |
557 |
557 void vm_perform_shutdown_actions() { |
558 void vm_perform_shutdown_actions() { |
558 // Warning: do not call 'exit_globals()' here. All threads are still running. |
559 // Warning: do not call 'exit_globals()' here. All threads are still running. |
575 } |
576 } |
576 |
577 |
577 void vm_shutdown() |
578 void vm_shutdown() |
578 { |
579 { |
579 vm_perform_shutdown_actions(); |
580 vm_perform_shutdown_actions(); |
|
581 os::wait_for_keypress_at_exit(); |
580 os::shutdown(); |
582 os::shutdown(); |
581 } |
583 } |
582 |
584 |
583 void vm_abort(bool dump_core) { |
585 void vm_abort(bool dump_core) { |
584 vm_perform_shutdown_actions(); |
586 vm_perform_shutdown_actions(); |
|
587 os::wait_for_keypress_at_exit(); |
585 os::abort(dump_core); |
588 os::abort(dump_core); |
586 ShouldNotReachHere(); |
589 ShouldNotReachHere(); |
587 } |
590 } |
588 |
591 |
589 void vm_notify_during_shutdown(const char* error, const char* message) { |
592 void vm_notify_during_shutdown(const char* error, const char* message) { |