436 } |
436 } |
437 #endif |
437 #endif |
438 |
438 |
439 // Verify that there is really a valid exception in RAX. |
439 // Verify that there is really a valid exception in RAX. |
440 __ verify_oop(exception_oop); |
440 __ verify_oop(exception_oop); |
441 |
|
442 // Restore SP from BP if the exception PC is a MethodHandle call site. |
|
443 __ cmpl(Address(thread, JavaThread::is_method_handle_return_offset()), 0); |
|
444 __ cmovptr(Assembler::notEqual, rsp, rbp); |
|
445 |
441 |
446 // continue at exception handler (return address removed) |
442 // continue at exception handler (return address removed) |
447 // rax: exception |
443 // rax: exception |
448 // rbx: exception handler |
444 // rbx: exception handler |
449 // rdx: throwing pc |
445 // rdx: throwing pc |