On Tue, 3 Feb 2026 12:57:09 GMT, Quan Anh Mai <[email protected]> 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 a lot for your approval! ------------- PR Comment: https://git.openjdk.org/valhalla/pull/2013#issuecomment-3841817553
