RFR: 8273380: ARM32: Default to {ldrexd, strexd} in StubRoutines::atomic_{load|store}_long

Aleksey Shipilev shade at openjdk.java.net
Mon Sep 6 11:35:59 UTC 2021


Current ARM32 is one of few remaining uses of `os::is_MP`, the rest is removed by JDK-8188764. There are some interesting bugs in OS/libc that might give incorrect `os::is_MP` sometimes, e.g. in containers. Instead of risking it, we can default to {ldrexd,strexd} for ARMv7 (which always have them), and leave the `os::is_MP` path for ARMv6 (for which this is the only remaining way to load the 64-bit long). 

@mychris, you might want to take a look and do light performance testing for it?

Additional testing:
 - [x] Linux ARM32 cross-compiled build completes

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

Commit messages:
 - First attempt

Changes: https://git.openjdk.java.net/jdk/pull/5379/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5379&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8273380
  Stats: 18 lines in 1 file changed: 10 ins; 6 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5379.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5379/head:pull/5379

PR: https://git.openjdk.java.net/jdk/pull/5379


More information about the hotspot-compiler-dev mailing list