414 } |
414 } |
415 #endif |
415 #endif |
416 |
416 |
417 // tracing |
417 // tracing |
418 if (TraceExceptions) { |
418 if (TraceExceptions) { |
419 ttyLocker ttyl; |
|
420 ResourceMark rm(thread); |
419 ResourceMark rm(thread); |
421 tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", h_exception->print_value_string(), (address)h_exception()); |
420 Symbol* message = java_lang_Throwable::detail_message(h_exception()); |
|
421 ttyLocker ttyl; // Lock after getting the detail message |
|
422 if (message != NULL) { |
|
423 tty->print_cr("Exception <%s: %s> (" INTPTR_FORMAT ")", |
|
424 h_exception->print_value_string(), message->as_C_string(), |
|
425 (address)h_exception()); |
|
426 } else { |
|
427 tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", |
|
428 h_exception->print_value_string(), |
|
429 (address)h_exception()); |
|
430 } |
422 tty->print_cr(" thrown in interpreter method <%s>", h_method->print_value_string()); |
431 tty->print_cr(" thrown in interpreter method <%s>", h_method->print_value_string()); |
423 tty->print_cr(" at bci %d for thread " INTPTR_FORMAT, current_bci, thread); |
432 tty->print_cr(" at bci %d for thread " INTPTR_FORMAT, current_bci, thread); |
424 } |
433 } |
425 // Don't go paging in something which won't be used. |
434 // Don't go paging in something which won't be used. |
426 // else if (extable->length() == 0) { |
435 // else if (extable->length() == 0) { |
1077 // Implementation of SignatureHandlerLibrary |
1086 // Implementation of SignatureHandlerLibrary |
1078 |
1087 |
1079 address SignatureHandlerLibrary::set_handler_blob() { |
1088 address SignatureHandlerLibrary::set_handler_blob() { |
1080 BufferBlob* handler_blob = BufferBlob::create("native signature handlers", blob_size); |
1089 BufferBlob* handler_blob = BufferBlob::create("native signature handlers", blob_size); |
1081 if (handler_blob == NULL) { |
1090 if (handler_blob == NULL) { |
|
1091 CompileBroker::handle_full_code_cache(); |
1082 return NULL; |
1092 return NULL; |
1083 } |
1093 } |
1084 address handler = handler_blob->code_begin(); |
1094 address handler = handler_blob->code_begin(); |
1085 _handler_blob = handler_blob; |
1095 _handler_blob = handler_blob; |
1086 _handler = handler; |
1096 _handler = handler; |