RFR: 8261649: AArch64: Optimize LSE atomics in C++ code [v3]

Aleksey Shipilev shade at openjdk.java.net
Thu Feb 18 16:56:06 UTC 2021


On Thu, 18 Feb 2021 16:52:29 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Now that we have support for LSE atomics in C++ HotSpot source, we can generate much better code for them. In particular, the sequence we generate for CMPXCHG with a full two-way barrier using two DMBs is way suboptimal.
>> 
>> This patch:
>> 
>> Moves memory barriers from the atomic_linux_aarch64 file into the stubs.
>> Rewrites the LSE versions of the stubs to be more efficient.
>> Fixes a race condition in stub generation.
>> Mostly leaves the pre-LSE stubs alone, except that I added a PRFM which according to kernel engineers improves performance.
>
> Andrew Haley has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove mistaken change.

Passer-by comments...

src/hotspot/cpu/aarch64/vm_version_aarch64.cpp line 192:

> 190:   if (_cpu == CPU_ARM && (_model == 0xd07 || _model2 == 0xd07)) _features |= CPU_STXR_PREFETCH;
> 191: 
> 192:   _features |= CPU_STXR_PREFETCH;

This looks weird. The line above it adds `CPU_STXR_PREFETCH` conditionally. Which one is correct?

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

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


More information about the hotspot-dev mailing list