> On AArch64 it is sometimes convenient to have LSE atomics right from the > start. Currently they are enabled after feature detection and RR reverse > debugger works incorrectly. > > New build configuration feature 'hardlse' is added. If it is enabled for > aarch64 type of build, then statically compiled stubs replace the initial > pessimistic implementation and dynamically generated replacements (when LSE > support is detected). The feature works for builds of all debug levels. > > New file atomic_linux_aarch64_lse.S is derived from atomic_linux_aarch64.S > and inherits its copyright. This alternative static implementation > corresponds to the dynamically generated code. > > Note, this configuration part is necessary but not sufficient to fully avoid > strex instructions for practical purposes. Other parts are: > > * Run on the OS built without strex family instructions. E.g. Amazon Linux > 2022. > * Compile with outline atomics enabled and the configuration flag enabled. > E.g. configure with > --with-extra-cflags='-march=armv8.3-a+crc+crypto -moutline-atomics' > --with-extra-cxxflags='-march=armv8.3-a+crc+crypto -moutline-atomics' > --with-extra-ldflags='-Wl,--allow-multiple-definition' > --with-jvm-features=hardlse > > Testing: tier1, tier2 on linux-aarch64 release builds with feature off and > feature on.
Dmitry Chuyko has updated the pull request incrementally with two additional commits since the last revision: - Use LSE in linux-aarch64 asm code if __ARM_FEATURE_ATOMICS is on - Revert "hardlse feature" This reverts commit c5da85d3282bb995f69639f8f592cc94560916c5. ------------- Changes: - all: https://git.openjdk.java.net/jdk/pull/8779/files - new: https://git.openjdk.java.net/jdk/pull/8779/files/87b3cbb9..1287cce3 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=8779&range=01 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=8779&range=00-01 Stats: 277 lines in 6 files changed: 74 ins; 190 del; 13 mod Patch: https://git.openjdk.java.net/jdk/pull/8779.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/8779/head:pull/8779 PR: https://git.openjdk.java.net/jdk/pull/8779