equal
deleted
inserted
replaced
685 # undef BEGIN |
685 # undef BEGIN |
686 # undef STEP |
686 # undef STEP |
687 # undef END |
687 # undef END |
688 } |
688 } |
689 |
689 |
|
690 VMError* volatile VMError::first_error = NULL; |
|
691 volatile jlong VMError::first_error_tid = -1; |
690 |
692 |
691 void VMError::report_and_die() { |
693 void VMError::report_and_die() { |
692 // Don't allocate large buffer on stack |
694 // Don't allocate large buffer on stack |
693 static char buffer[O_BUFLEN]; |
695 static char buffer[O_BUFLEN]; |
694 |
|
695 // First error, and its thread id. We must be able to handle native thread, |
|
696 // so use thread id instead of Thread* to identify thread. |
|
697 static VMError* first_error; |
|
698 static jlong first_error_tid; |
|
699 |
696 |
700 // An error could happen before tty is initialized or after it has been |
697 // An error could happen before tty is initialized or after it has been |
701 // destroyed. Here we use a very simple unbuffered fdStream for printing. |
698 // destroyed. Here we use a very simple unbuffered fdStream for printing. |
702 // Only out.print_raw() and out.print_raw_cr() should be used, as other |
699 // Only out.print_raw() and out.print_raw_cr() should be used, as other |
703 // printing methods need to allocate large buffer on stack. To format a |
700 // printing methods need to allocate large buffer on stack. To format a |