On Mon, 28 Oct 2024 17:31:45 GMT, Patricio Chilano Mateo 
<pchilanom...@openjdk.org> wrote:

>> src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp line 188:
>> 
>>> 186:   // Avoid using a leave instruction when this frame may
>>> 187:   // have been frozen, since the current value of rfp
>>> 188:   // restored from the stub would be invalid. We still
>> 
>> It sounds like freeze/thaw isn't preserving FP, even though it is a 
>> callee-saved register according to the ABI.  If the stubs tried to modify FP 
>> (or any other callee-saved register) and use that value after the native 
>> call, wouldn't that be a problem?
>> Do we actually need FP set by the enter() prologue for stubs?  If we can 
>> walk compiled frames based on SP and frame size, it seems like we should be 
>> able to do the same for stubs.  We could consider making stub 
>> prologue/epilogue look the same as compiled frames, then this FP issue goes 
>> away.
>
>>It sounds like freeze/thaw isn't preserving FP, even though it is a 
>>callee-saved register according to the ABI. If the stubs tried to modify FP 
>>(or any other callee-saved register) and use that value after the native 
>>call, wouldn't that be a problem?
>>
> Yes, that would be a problem. We can't use callee saved registers in the stub 
> after the call. I guess we could add some debug code that trashes all those 
> registers right when we come back from the call. Or maybe just adding a 
> comment there is enough.

> Do we actually need FP set by the enter() prologue for stubs? If we can walk 
> compiled frames based on SP and frame size, it seems like we should be able 
> to do the same for stubs. We could consider making stub prologue/epilogue 
> look the same as compiled frames, then this FP issue goes away.
>
I think we need it for the pending exception case. I see we use rfp to get the 
exception pc.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21565#discussion_r1819474263

Reply via email to