RFR (M): 8188224: Generalize Atomic::load/store to use templates
Erik Österlund
erik.osterlund at oracle.com
Tue Oct 3 12:29:07 UTC 2017
Hi,
The time has come to generalize Atomic::load/store with templates - the
last operation to generalize in Atomic.
The design was inspired by Atomic::xchg and uses a similar mechanism to
validate the passed in arguments. It was also designed with coming
OrderAccess changes in mind. OrderAccess also contains loads and stores
that will reuse the LoadImpl and StoreImpl infrastructure in
Atomic::load/store. (the type checking for what is okay to pass in to
Atomic::load/store is very much the same for
OrderAccess::load_acquire/*store*).
One thing worth mentioning is that the bsd zero port (but notably not
the linux zero port) had a leading fence for atomic stores of jint when
#if !defined(ARM) && !defined(M68K) is true without any comment
describing why. So I took the liberty of removing it. Atomic should not
have any fencing at all - that is what OrderAccess is for. In fact
Atomic does not promise any memory ordering semantics for loads and
stores. Atomic merely provides relaxed accesses that are atomic. Worth
mentioning nevertheless in case anyone wants to keep that jint
Atomic::store fence on bsd zero !M68K && !ARM.
Bug:
https://bugs.openjdk.java.net/browse/JDK-8188224
Webrev:
http://cr.openjdk.java.net/~eosterlund/8188224/webrev.00/
Testing: JPRT, mach5 hs-tier3
Thanks,
/Erik
More information about the hotspot-dev
mailing list