AArch64 gen_continuation_enter

dean.long at oracle.com dean.long at oracle.com
Wed Aug 24 18:01:16 UTC 2022


leave() restores rfp and lr.

On 8/24/22 9:09 AM, Andrew Haley wrote:
> I'm looking at this in gen_continuation_enter:
> 
>        __ call_VM_leaf(CAST_FROM_FN_PTR(address, 
> SharedRuntime::exception_handler_for_return_address), rthread, c_rarg1);
> 
>        // see OptoRuntime::generate_exception_blob: r0 -- exception oop, 
> r3 -- exception pc
> 
>        __ mov(r1, r0); // the exception handler
>        __ mov(r0, r19); // restore return value contaning the exception oop
>        __ verify_oop(r0);
> 
>        __ leave();
>        __ mov(r3, lr);
>        __ br(r1); // the exception handler
> 
> This read from LR looks wrong. Nothing defines LR at this point: as far 
> as I
> can see it probably contains the address of the instruction after the 
> call to
> SharedRuntime::exception_handler_for_return_address, but the platform ABI
> doesn't require that.
> 


More information about the loom-dev mailing list