equal
deleted
inserted
replaced
29 #include "jvmci/jvmciRuntime.hpp" |
29 #include "jvmci/jvmciRuntime.hpp" |
30 #include "jvmci/jvmciCompilerToVM.hpp" |
30 #include "jvmci/jvmciCompilerToVM.hpp" |
31 #include "jvmci/jvmciCompiler.hpp" |
31 #include "jvmci/jvmciCompiler.hpp" |
32 #include "jvmci/jvmciJavaClasses.hpp" |
32 #include "jvmci/jvmciJavaClasses.hpp" |
33 #include "jvmci/jvmciEnv.hpp" |
33 #include "jvmci/jvmciEnv.hpp" |
|
34 #include "logging/log.hpp" |
34 #include "memory/oopFactory.hpp" |
35 #include "memory/oopFactory.hpp" |
35 #include "oops/oop.inline.hpp" |
36 #include "oops/oop.inline.hpp" |
36 #include "oops/objArrayOop.inline.hpp" |
37 #include "oops/objArrayOop.inline.hpp" |
37 #include "prims/jvm.h" |
38 #include "prims/jvm.h" |
38 #include "runtime/biasedLocking.hpp" |
39 #include "runtime/biasedLocking.hpp" |
292 // New exception handling mechanism can support inlined methods |
293 // New exception handling mechanism can support inlined methods |
293 // with exception handlers since the mappings are from PC to PC |
294 // with exception handlers since the mappings are from PC to PC |
294 |
295 |
295 // debugging support |
296 // debugging support |
296 // tracing |
297 // tracing |
297 if (TraceExceptions) { |
298 if (log_is_enabled(Info, exceptions)) { |
298 ttyLocker ttyl; |
|
299 ResourceMark rm; |
299 ResourceMark rm; |
300 tty->print_cr("Exception <%s> (" INTPTR_FORMAT ") thrown in compiled method <%s> at PC " INTPTR_FORMAT " for thread " INTPTR_FORMAT "", |
300 log_info(exceptions)("Exception <%s> (" INTPTR_FORMAT ") thrown in" |
301 exception->print_value_string(), p2i((address)exception()), nm->method()->print_value_string(), p2i(pc), p2i(thread)); |
301 " compiled method <%s> at PC " INTPTR_FORMAT |
|
302 " for thread " INTPTR_FORMAT, |
|
303 exception->print_value_string(), |
|
304 p2i((address)exception()), |
|
305 nm->method()->print_value_string(), p2i(pc), |
|
306 p2i(thread)); |
302 } |
307 } |
303 // for AbortVMOnException flag |
308 // for AbortVMOnException flag |
304 NOT_PRODUCT(Exceptions::debug_check_abort(exception)); |
309 NOT_PRODUCT(Exceptions::debug_check_abort(exception)); |
305 |
310 |
306 // Clear out the exception oop and pc since looking up an |
311 // Clear out the exception oop and pc since looking up an |
321 } |
326 } |
322 |
327 |
323 // Set flag if return address is a method handle call site. |
328 // Set flag if return address is a method handle call site. |
324 thread->set_is_method_handle_return(nm->is_method_handle_return(pc)); |
329 thread->set_is_method_handle_return(nm->is_method_handle_return(pc)); |
325 |
330 |
326 if (TraceExceptions) { |
331 if (log_is_enabled(Info, exceptions)) { |
327 ttyLocker ttyl; |
|
328 ResourceMark rm; |
332 ResourceMark rm; |
329 tty->print_cr("Thread " PTR_FORMAT " continuing at PC " PTR_FORMAT " for exception thrown at PC " PTR_FORMAT, |
333 log_info(exceptions)("Thread " PTR_FORMAT " continuing at PC " PTR_FORMAT |
330 p2i(thread), p2i(continuation), p2i(pc)); |
334 " for exception thrown at PC " PTR_FORMAT, |
|
335 p2i(thread), p2i(continuation), p2i(pc)); |
331 } |
336 } |
332 |
337 |
333 return continuation; |
338 return continuation; |
334 JRT_END |
339 JRT_END |
335 |
340 |