< prev index next >
src/share/vm/classfile/javaClasses.cpp
Print this page
*** 1491,1512 ****
void java_lang_Throwable::clear_stacktrace(oop throwable) {
set_stacktrace(throwable, NULL);
}
- void java_lang_Throwable::print(oop throwable, outputStream* st) {
- ResourceMark rm;
- Klass* k = throwable->klass();
- assert(k != NULL, "just checking");
- st->print("%s", k->external_name());
- oop msg = message(throwable);
- if (msg != NULL) {
- st->print(": %s", java_lang_String::as_utf8_string(msg));
- }
- }
-
-
void java_lang_Throwable::print(Handle throwable, outputStream* st) {
ResourceMark rm;
Klass* k = throwable->klass();
assert(k != NULL, "just checking");
st->print("%s", k->external_name());
--- 1491,1500 ----
*** 1731,1746 ****
const char* java_lang_Throwable::no_stack_trace_message() {
return "\t<<no stack trace available>>";
}
! // Currently used only for exceptions occurring during startup
! void java_lang_Throwable::print_stack_trace(oop throwable, outputStream* st) {
! Thread *THREAD = Thread::current();
! Handle h_throwable(THREAD, throwable);
! while (h_throwable.not_null()) {
! objArrayHandle result (THREAD, objArrayOop(backtrace(h_throwable())));
if (result.is_null()) {
st->print_raw_cr(no_stack_trace_message());
return;
}
--- 1719,1737 ----
const char* java_lang_Throwable::no_stack_trace_message() {
return "\t<<no stack trace available>>";
}
! void java_lang_Throwable::print_stack_trace(Handle throwable, outputStream* st) {
! // First, print the message.
! print(throwable, st);
! st->cr();
!
! // Now print the stack trace.
! Thread* THREAD = Thread::current();
! while (throwable.not_null()) {
! objArrayHandle result (THREAD, objArrayOop(backtrace(throwable())));
if (result.is_null()) {
st->print_raw_cr(no_stack_trace_message());
return;
}
*** 1768,1791 ****
handle_cause:
{
EXCEPTION_MARK;
JavaValue cause(T_OBJECT);
JavaCalls::call_virtual(&cause,
! h_throwable,
! KlassHandle(THREAD, h_throwable->klass()),
vmSymbols::getCause_name(),
vmSymbols::void_throwable_signature(),
THREAD);
// Ignore any exceptions. we are in the middle of exception handling. Same as classic VM.
if (HAS_PENDING_EXCEPTION) {
CLEAR_PENDING_EXCEPTION;
! h_throwable = Handle();
} else {
! h_throwable = Handle(THREAD, (oop) cause.get_jobject());
! if (h_throwable.not_null()) {
st->print("Caused by: ");
! print(h_throwable, st);
st->cr();
}
}
}
}
--- 1759,1782 ----
handle_cause:
{
EXCEPTION_MARK;
JavaValue cause(T_OBJECT);
JavaCalls::call_virtual(&cause,
! throwable,
! KlassHandle(THREAD, throwable->klass()),
vmSymbols::getCause_name(),
vmSymbols::void_throwable_signature(),
THREAD);
// Ignore any exceptions. we are in the middle of exception handling. Same as classic VM.
if (HAS_PENDING_EXCEPTION) {
CLEAR_PENDING_EXCEPTION;
! throwable = Handle();
} else {
! throwable = Handle(THREAD, (oop) cause.get_jobject());
! if (throwable.not_null()) {
st->print("Caused by: ");
! print(throwable, st);
st->cr();
}
}
}
}
< prev index next >