On Fri, 20 Feb 2026 08:54:25 GMT, Marc Chevalier <[email protected]> wrote:

>> Right, `f` is a compiled frame. So before this change, `caller.sp()` was 
>> always set to `f.sp() + f.cb()->frame_size()`, even when `f` was an extended 
>> frame. The reason for this is that we needed to keep a reference to the 
>> saved `rbp/rfp` in `f`, because we might needed to patch it later (we need 
>> to thaw the callee first before patching the caller's saved `rbp/rfp`). But 
>> now, the saved `rbp/rfp` is stored together with the saved return pc. So 
>> `caller.sp()` is set to point to `f`'s actual caller `sp`. The difference 
>> between `caller.sp()` and `f.sp()` should then be the real size of `f` 
>> (stored in `fsize` for extended frames).
>
> Riiiight, the `frame_size` is just the part with the locals (and sp_inc...), 
> it doesn't include the extension space? Is it a method we could add to 
> `frame`, to return frame_size, plus possibly, the extension space? Just a 
> random idea, feel free to ignore.

I see there is a `frame_size()` method already in frame class (very few users). 
Maybe it should be fixed, since for this extended frames it's not returning the 
real size of the frame. Then we could use it here (and possibly in some other 
places). So I think it might be a good idea for future cleanups.

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2085#discussion_r2841865251

Reply via email to