RFR: 8234563: Harmonize parameter order in Atomic
Robbin Ehn
robbin.ehn at oracle.com
Fri Nov 22 09:29:23 UTC 2019
Thanks again, looks good!
Much appreciated!
/Robbin
On 11/21/19 12:26 PM, Stefan Karlsson wrote:
> Hi all,
>
> I'd like to propose a restructuring of the parameter order in Atomic.
>
> https://bugs.openjdk.java.net/browse/JDK-8234563
>
> These are some of the functions used to concurrently write memory from HotSpot
> C++ code:
>
> Atomic::store(value, destination);
> OrderAccess::release_store(destination, value)
> OrderAccess::release_store_fence(destination, value)
> Atomic::add(value, destination);
> Atomic::sub(value, destination);
> Atomic::xchg(exchange_value, destination);
> Atomic::cmpxchg(exchange_value, destination, compare_value);
>
> With the proposed JDK-8234562 change, this would look like:
>
> Atomic::store(value, destination);
> Atomic::release_store(destination, value)
> Atomic::release_store_fence(destination, value)
> Atomic::add(value, destination);
> Atomic::sub(value, destination);
> Atomic::xchg(exchange_value, destination);
> Atomic::cmpxchg(exchange_value, destination, compare_value);
>
> I'd like to propose that we move the destination parameter over to the left, and
> the new value to the right. This would look like this:
>
> Atomic::store(destination, value);
> Atomic::release_store(destination, value)
> Atomic::release_store_fence(destination, value)
> Atomic::add(destination, value);
> Atomic::sub(destination, value);
> Atomic::xchg(destination, exchange_value);
> Atomic::cmpxchg(destination, compare_value, exchange_value);
>
> This would bring the Atomic API more in-line with the order for a normal store:
>
> *destination = value;
>
> I've split this up into separate patches, each dealing with a separate operation:
>
> Atomic::store:
> https://cr.openjdk.java.net/~stefank/8234563/webrev.01.01.store/
>
> Atomic::add:
> https://cr.openjdk.java.net/~stefank/8234563/webrev.01.02.add/
>
> Atomic::sub:
> https://cr.openjdk.java.net/~stefank/8234563/webrev.01.03.sub/
>
> Atomic::xchg:
> https://cr.openjdk.java.net/~stefank/8234563/webrev.01.04.xchg/
>
> Atomic::cmpxchg:
> https://cr.openjdk.java.net/~stefank/8234563/webrev.01.05.cmpxchg/
>
> All sub-patches combined:
> https://cr.openjdk.java.net/~stefank/8234563/webrev.01.all/
>
> The patches applies on-top of the patch for JDK-8234562:
> https://cr.openjdk.java.net/~stefank/8234562/webrev.01/
>
> I've tested this patch with tier1-7. I've also built fastdebug on the following
> configs: aarch64, arm32, ppc64le, s390x, shenandoah, zero, minimal, just to
> minimize any disruptions. However, this is a moving target and latest rebase of
> this has only been run on tier1.
>
> Thanks,
> StefanK
More information about the hotspot-dev
mailing list