With -UseLSE the Starvation test on Windows ARM64 timeouts close to 100% whereas this only happens on Linux ARM64 on larger machines with many cores. The issue is that C2 outputs an LDR following the CAS in LinkedTransferQueue which can execute before the STLXR breaking the Dekker protocol.
Replacing the LDR with LADR by using getAcquire solves the issue as it won't be reordered before the STLXR. This does impact the +UseLSE case as the LADR was not necessary and is slightly more expensive than LDR. But to handle this case would require larger changes to Hotspot Starvation test passes on Windows ARM64 and Linux ARM64, with no regressions on tier1 --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - With -UseLSE the Starvation test on Windows timeouts close to 100% whereas this only happens on Linux on larger machines with many cores. The issue is that the LDR following the CAS can execute before the STLXR breaking the Dekker protocol, replacing with LADR by using getAcquire the solves the issue as it won't be reordered before the STLXR. Changes: https://git.openjdk.org/jdk/pull/31465/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=31465&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8386428 Stats: 7 lines in 1 file changed: 6 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/31465.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/31465/head:pull/31465 PR: https://git.openjdk.org/jdk/pull/31465
