RFR: 8261579: AArch64: Support for weaker memory ordering in Atomic [v4]
    Aleksey Shipilev 
    shade at openjdk.java.net
       
    Mon Jun 28 14:59:07 UTC 2021
    
    
  
On Fri, 25 Jun 2021 15:02:35 GMT, Andrew Haley <aph at openjdk.org> wrote:
>> At present the Atomic operations in HotSpot only support conservative (the very strongest) and relaxed (the weakest) memory ordering.
>> We should add at least seq_cst for LSE. This patch also adds a release-only CAS, needed for Shenandoah.
>
> Andrew Haley has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Sanitize memory order for BSD CAS
Only stylistic nits. I am running the Shenandoah performance tests now.
src/hotspot/cpu/aarch64/atomic_aarch64.hpp line 52:
> 50: extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_8_seq_cst_impl;
> 51: extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_4_release_impl;
> 52: extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_8_release_impl;
Stylistic: I'd keep the ordering hierarchy here, first `release`, then `seq_cst`.
Suggestion:
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_4_release_impl;
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_8_release_impl;
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_4_seq_cst_impl;
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_8_seq_cst_impl;
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S line 122:
> 120:         cmp     w3, w1
> 121:         b.ne    1f
> 122:         stlxr    w8, w2, [x0]
Suggestion:
        stlxr   w8, w2, [x0]
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S line 134:
> 132:         cmp     x3, x1
> 133:         b.ne    1f
> 134:         stlxr    w8, x2, [x0]
Suggestion:
        stlxr   w8, x2, [x0]
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S line 143:
> 141: aarch64_atomic_cmpxchg_4_seq_cst_default_impl:
> 142:         prfm    pstl1strm, [x0]
> 143: 0:      ldaxr    w3, [x0]
Suggestion:
0:      ldaxr   w3, [x0]
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S line 146:
> 144:         cmp     w3, w1
> 145:         b.ne    1f
> 146:         stlxr    w8, w2, [x0]
Suggestion:
        stlxr   w8, w2, [x0]
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S line 155:
> 153: aarch64_atomic_cmpxchg_8_seq_cst_default_impl:
> 154:         prfm    pstl1strm, [x0]
> 155: 0:      ldaxr    x3, [x0]
Suggestion:
0:      ldaxr   x3, [x0]
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S line 158:
> 156:         cmp     x3, x1
> 157:         b.ne    1f
> 158:         stlxr    w8, x2, [x0]
Suggestion:
        stlxr   w8, x2, [x0]
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp line 157:
> 155:     stub = aarch64_atomic_cmpxchg_4_release_impl; break;
> 156:   case memory_order_seq_cst:
> 157:   case memory_order_acq_rel:
Swap to keep the strength hierarchy.
Suggestion:
  case memory_order_acq_rel:
  case memory_order_seq_cst:
src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp line 180:
> 178:     stub = aarch64_atomic_cmpxchg_8_release_impl; break;
> 179:   case memory_order_seq_cst:
> 180:   case memory_order_acq_rel:
Swap to keep strength hierarchy. 
Suggestion:
  case memory_order_acq_rel:
  case memory_order_seq_cst:
-------------
PR: https://git.openjdk.java.net/jdk/pull/4597
    
    
More information about the hotspot-dev
mailing list