equal
deleted
inserted
replaced
480 thread->set_exception_pc(NULL); |
480 thread->set_exception_pc(NULL); |
481 #endif // INCLUDE_JVMCI |
481 #endif // INCLUDE_JVMCI |
482 |
482 |
483 // The fastest case first |
483 // The fastest case first |
484 CodeBlob* blob = CodeCache::find_blob(return_address); |
484 CodeBlob* blob = CodeCache::find_blob(return_address); |
485 nmethod* nm = (blob != NULL) ? blob->as_nmethod_or_null() : NULL; |
485 CompiledMethod* nm = (blob != NULL) ? blob->as_compiled_method_or_null() : NULL; |
486 if (nm != NULL) { |
486 if (nm != NULL) { |
487 // Set flag if return address is a method handle call site. |
487 // Set flag if return address is a method handle call site. |
488 thread->set_is_method_handle_return(nm->is_method_handle_return(return_address)); |
488 thread->set_is_method_handle_return(nm->is_method_handle_return(return_address)); |
489 // native nmethods don't have exception handlers |
489 // native nmethods don't have exception handlers |
490 assert(!nm->is_native_method(), "no exception handler"); |
490 assert(!nm->is_native_method(), "no exception handler"); |
503 return SharedRuntime::deopt_blob()->unpack_with_exception(); |
503 return SharedRuntime::deopt_blob()->unpack_with_exception(); |
504 } else { |
504 } else { |
505 return nm->exception_begin(); |
505 return nm->exception_begin(); |
506 } |
506 } |
507 } |
507 } |
508 |
|
509 #if INCLUDE_AOT |
|
510 if (UseAOT && blob->is_aot()) { |
|
511 // AOT Compiled code |
|
512 return AOTLoader::exception_begin(thread, blob, return_address); |
|
513 } |
|
514 #endif |
|
515 |
508 |
516 // Entry code |
509 // Entry code |
517 if (StubRoutines::returns_to_call_stub(return_address)) { |
510 if (StubRoutines::returns_to_call_stub(return_address)) { |
518 return StubRoutines::catch_exception_entry(); |
511 return StubRoutines::catch_exception_entry(); |
519 } |
512 } |