RFR 8201799: Build failures after JDK-8195099 (Concurrent safe-memory-reclamation mechanism)

Erik Österlund erik.osterlund at oracle.com
Mon Apr 23 10:40:35 UTC 2018


Hi Andrew,

On 2018-04-23 12:20, Andrew Haley wrote:
> On 04/18/2018 05:37 PM, Doerr, Martin wrote:
>
>> It'd be great if we could specify semantics for Atomic:add like we
>> do for Atomic::cmpchgx.
>> However, the double-fence is a very bad default from performance
>> perspective. I wonder if PPC64 is the only platform which gets hit.
> Probably not.
>
>> Would it be acceptable to set the default to
>> memory_order_acquire_release and specify memory_order_conservative
>> for the new usage? I think this would fit perfectly for PPC64, but
>> some people may not like it. One could say PPC64 is the problem, but
>> one could also say the VM code is the problem ��
> Indeed.  In as much as we use stronger memory ordering than we need in
> more than one place, the VM code is the problem.
>
>> I don't really like the straight forward fix to insert a fence with
>> #ifdef AIX.
> I agree.  It looks to me like it's sufficient if the increment of
> global_counter and the load of thread->get_rcu_counter() are
> sequentially consistent.  On at least one platform, AArch64, we can
> do that without additional fencing.

I would also like to have seq_cst available. In the Access API, I need 
MO_SEQ_CST for JMM volatile support. I would like the semantic 
requirements to go straight into Atomic, instead of doing a "if 
(support_IRIW_for_not_multiple_copy_atomic_cpu) { OrderAccess::fence(); 
}" dance in shared code, that may or may not make sense at a given 
platform (among other reasons because it enforces whether leading or 
trailing sync convention is used in shared code, rather than leave that 
decision to the platform level). Plus I have a mouse pad that says I 
love sequential consistency, although that might not be a valid argument 
to introduce this to Atomic.

Thanks,
/Erik


More information about the hotspot-dev mailing list