RFR: 8365147: AArch64: Replace DMB + LD + DMB with LDAR for C1 volatile field loads [v4]

Samuel Chee duke at openjdk.org
Wed Nov 19 12:47:18 UTC 2025


> Replaces the DMB ISH + LD + DMB ISHLD sequence with LDAR for volatile field loads - for example, AtomicLong::get.
> 
> This is valid, as originally the DMBs were necessary due to the case described here - https://bugs.openjdk.org/browse/JDK-8179954. As in the rare case where the LD can be reordered with an LDAR or STLR from the C2 implementation for stores and loads, these DMBs are required.
> However, acquire/release operations use a sequentially consistent model which does not allow reordering between them. Hence, the LD can be replaced with an LDAR to disallow reordering with a STLR/LDAR and the first DMB can be removed.
> 
> The LDAR has acquire semantics, so it's impossible for memory accesses after to be reordered before; the DMB ISHLD is not required. Therefore, a singular LDAR is sufficient.

Samuel Chee has updated the pull request incrementally with one additional commit since the last revision:

  Rename load_generic -> load_relaxed

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/26748/files
  - new: https://git.openjdk.org/jdk/pull/26748/files/88b8a2d3..15b6bf35

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=26748&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26748&range=02-03

  Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/26748.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26748/head:pull/26748

PR: https://git.openjdk.org/jdk/pull/26748


More information about the hotspot-dev mailing list