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

Reply via email to