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 proposedJDK-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 order for a normal store:
*destination = value;
and to me and many others are a more natural parameter order.
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
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 order for a normal store:
*destination = value;
and to me and many others are a more natural parameter order.
- is blocked by
-
JDK-8234562 Move OrderAccess::release_store*/load_acquire to Atomic
-
- Resolved
-
-
JDK-8234736 Harmonize parameter order in Atomic - store
-
- Resolved
-
-
JDK-8234737 Harmonize parameter order in Atomic - add
-
- Resolved
-
-
JDK-8234738 Harmonize parameter order in Atomic - sub
-
- Resolved
-
-
JDK-8234739 Harmonize parameter order in Atomic - xchg
-
- Resolved
-
-
JDK-8234740 Harmonize parameter order in Atomic - cmpxchg
-
- Resolved
-
- relates to
-
JDK-8234798 Build failure after atomic changes in JDK-8234563
-
- Resolved
-
(1 is blocked by, 1 relates to)