Mercurial > hg > truffle
comparison src/share/vm/utilities/exceptions.cpp @ 12039:3cce976666d9
Merge hs25-b46
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 10 Oct 2013 14:20:04 +0200 |
parents | 291ffc492eb6 6e04c193845f |
children | d8041d695d19 |
comparison
equal
deleted
inserted
replaced
11958:a0f5be106e67 | 12039:3cce976666d9 |
---|---|
123 Handle h_exception = Handle(thread, exception); | 123 Handle h_exception = Handle(thread, exception); |
124 _throw(thread, file, line, h_exception); | 124 _throw(thread, file, line, h_exception); |
125 } | 125 } |
126 | 126 |
127 void Exceptions::_throw(Thread* thread, const char* file, int line, Handle h_exception, const char* message) { | 127 void Exceptions::_throw(Thread* thread, const char* file, int line, Handle h_exception, const char* message) { |
128 ResourceMark rm; | |
128 assert(h_exception() != NULL, "exception should not be NULL"); | 129 assert(h_exception() != NULL, "exception should not be NULL"); |
129 | 130 |
130 // tracing (do this up front - so it works during boot strapping) | 131 // tracing (do this up front - so it works during boot strapping) |
131 if (TraceExceptions) { | 132 if (TraceExceptions) { |
132 ttyLocker ttyl; | 133 ttyLocker ttyl; |
133 ResourceMark rm; | 134 tty->print_cr("Exception <%s%s%s> (" INTPTR_FORMAT ") \n" |
134 tty->print_cr("Exception <%s>%s%s (" INTPTR_FORMAT " ) \n" | |
135 "thrown [%s, line %d]\nfor thread " INTPTR_FORMAT, | 135 "thrown [%s, line %d]\nfor thread " INTPTR_FORMAT, |
136 h_exception->print_value_string(), | 136 h_exception->print_value_string(), |
137 message ? ": " : "", message ? message : "", | 137 message ? ": " : "", message ? message : "", |
138 (address)h_exception(), file, line, thread); | 138 (address)h_exception(), file, line, thread); |
139 } | 139 } |
140 // for AbortVMOnException flag | 140 // for AbortVMOnException flag |
141 NOT_PRODUCT(Exceptions::debug_check_abort(h_exception, message)); | 141 NOT_PRODUCT(Exceptions::debug_check_abort(h_exception, message)); |
142 | 142 |
143 // Check for special boot-strapping/vm-thread handling | 143 // Check for special boot-strapping/vm-thread handling |
144 if (special_exception(thread, file, line, h_exception)) return; | 144 if (special_exception(thread, file, line, h_exception)) { |
145 return; | |
146 } | |
145 | 147 |
146 assert(h_exception->is_a(SystemDictionary::Throwable_klass()), "exception is not a subclass of java/lang/Throwable"); | 148 assert(h_exception->is_a(SystemDictionary::Throwable_klass()), "exception is not a subclass of java/lang/Throwable"); |
147 | 149 |
148 // set the pending exception | 150 // set the pending exception |
149 thread->set_pending_exception(h_exception(), file, line); | 151 thread->set_pending_exception(h_exception(), file, line); |
150 | 152 |
151 // vm log | 153 // vm log |
152 Events::log_exception(thread, "Threw " INTPTR_FORMAT " at %s:%d", (address)h_exception(), file, line); | 154 Events::log_exception(thread, "Exception <%s%s%s> (" INTPTR_FORMAT ") thrown at [%s, line %d]", |
155 h_exception->print_value_string(), message ? ": " : "", message ? message : "", | |
156 (address)h_exception(), file, line); | |
153 } | 157 } |
154 | 158 |
155 | 159 |
156 void Exceptions::_throw_msg(Thread* thread, const char* file, int line, Symbol* name, const char* message, | 160 void Exceptions::_throw_msg(Thread* thread, const char* file, int line, Symbol* name, const char* message, |
157 Handle h_loader, Handle h_protection_domain) { | 161 Handle h_loader, Handle h_protection_domain) { |