> 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).
Mat Carter has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision: - Add non-LSE variant regression tests - Need the derived class to also use the new accessor - Merge branch 'master' into macarte/nolse - Use getVolatile instead of getAcquire - 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: - all: https://git.openjdk.org/jdk/pull/31465/files - new: https://git.openjdk.org/jdk/pull/31465/files/536861f4..c47f08e0 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=31465&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=31465&range=01-02 Stats: 778759 lines in 9114 files changed: 495066 ins; 228559 del; 55134 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
