RFR: 8285301: C2: assert(!requires_atomic_access) failed: can't ensure atomicity

Tobias Hartmann thartmann at openjdk.java.net
Wed Apr 27 10:32:59 UTC 2022


We hit asserts in `BarrierSetC2::load_at_resolved` and `BarrierSetC2::store_at_resolved` when running with `-XX:+AlwaysAtomicAccesses` because the corresponding code paths have not been implemented yet. Although the assert triggers on all platforms, it only affects long and double accesses on 32-bit systems (everything else is atomic anyway).

I moved the `requires_atomic_access` logic into `LoadNode::make` and `StoreNode::make` and refactored related code.

I noticed that `LoadNode::convert_to_reinterpret_load` and `StoreNode::convert_to_reinterpret_store` did not properly check for `requires_atomic_access` and fixed that as well.

I'm currently running all tests with `-XX:+AlwaysAtomicAccesses`.

Thanks,
Tobias

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

Commit messages:
 - 8285301: C2: assert(\!requires_atomic_access) failed: can't ensure atomicity

Changes: https://git.openjdk.java.net/jdk/pull/8422/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8422&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8285301
  Stats: 194 lines in 11 files changed: 54 ins; 79 del; 61 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8422.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8422/head:pull/8422

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


More information about the hotspot-dev mailing list