[lworld] RFR: 8376059: [lworld] Fix the issues in code generation of StoreLSpecialNode [v3]

Tobias Hartmann thartmann at openjdk.org
Tue Feb 3 13:56:33 UTC 2026


On Tue, 3 Feb 2026 12:57:09 GMT, Quan Anh Mai <qamai at openjdk.org> wrote:

>> Hi,
>> 
>> Many thanks to @stefank for finding the issue and helping investigating it. This PR fixes a couple of issues:
>> 
>> - On Aarch64, `g1StoreLSpecialOneOop` does not save `mem` and `src` during the GC pre-barrier, this risks clobber these values, which may lead to crashes or memory corruption when doing the store instruction.
>> - It seems that the value passed to the post-barrier should be an uncompressed oop, this requires us to decode the narrow oop instead of simply zero-extending it.
>> - Relax the restriction on the `src` register to be an arbitrary register.
>> - Split the rule into 2 so that we can avoid cloberring an additional register on Aarch64 when the offset of the oop inside the payload is 0, it also makes the implementation a little easier to read.
>> 
>> Testing:
>> - [x] tier1-4, valhalla-comp-stress, linux-aarch64
>> - [x] tier1-4, valhalla-comp-stress, linux-aarch64, with `-XX:+StressGCM -XX:InitiatingHeapOccupancyPercent=0 -Xmn10m`
>> - [x] tier1-4, valhalla-comp-stress, linux-x64
>> - [x] tier1-4, valhalla-comp-stress, linux-x64, with `-XX:+StressGCM -XX:InitiatingHeapOccupancyPercent=0 -Xmn10m`
>> 
>> Please take a look and leave your reviews, thanks a lot.
>
> Quan Anh Mai has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix x64, add assert in StoreFlatNode::expand_atomic

Thanks, that looks good to me!

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

Marked as reviewed by thartmann (Committer).

PR Review: https://git.openjdk.org/valhalla/pull/2013#pullrequestreview-3745415034


More information about the valhalla-dev mailing list