< prev index next >

src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp

Print this page
rev 8300 : 8079564: Use FP register as proper frame pointer in JIT compiled code on aarch64
Summary: Add support for PreserveFramePointer for debug/profile
Reviewed-by: duke

*** 441,462 **** case handle_exception_id: // Restore the registers that were saved at the beginning. restore_live_registers(sasm, id != handle_exception_nofpu_id); break; case handle_exception_from_callee_id: ! // Pop the return address since we are possibly changing SP (restoring from BP). __ leave(); - - // Restore SP from FP if the exception PC is a method handle call site. - { - Label nope; - __ ldrw(rscratch1, Address(rthread, JavaThread::is_method_handle_return_offset())); - __ cbzw(rscratch1, nope); - __ mov(sp, rfp); - __ bind(nope); - } - __ ret(lr); // jump to exception handler break; default: ShouldNotReachHere(); } --- 441,452 ---- case handle_exception_id: // Restore the registers that were saved at the beginning. restore_live_registers(sasm, id != handle_exception_nofpu_id); break; case handle_exception_from_callee_id: ! // Pop the return address. __ leave(); __ ret(lr); // jump to exception handler break; default: ShouldNotReachHere(); }
*** 512,529 **** __ ldp(lr, exception_oop, Address(__ post(sp, 2 * wordSize))); __ mov(r3, lr); __ verify_not_null_oop(exception_oop); - { - Label foo; - __ ldrw(rscratch1, Address(rthread, JavaThread::is_method_handle_return_offset())); - __ cbzw(rscratch1, foo); - __ mov(sp, rfp); - __ bind(foo); - } - // continue at exception handler (return address removed) // note: do *not* remove arguments when unwinding the // activation since the caller assumes having // all arguments on the stack when entering the // runtime to determine the exception handler --- 502,511 ----
< prev index next >