[aarch64-port-dev ] RFR: aarch64: minor improvements of atomic operations
Andrew Haley
aph at redhat.com
Mon Nov 11 16:36:38 UTC 2019
On 11/11/19 3:05 PM, Andrew Haley wrote:
> And finally, is there any operation in HotSpot that actually requires
> such strong memory semantics? Probably not, but no-one has ever been
> brave enough to say so.
Here's a place where it really does matter.
void ShenandoahPacer::restart_with(size_t non_taxable_bytes, double tax_rate) {
size_t initial = (size_t)(non_taxable_bytes * tax_rate) >> LogHeapWordSize;
STATIC_ASSERT(sizeof(size_t) <= sizeof(intptr_t));
Atomic::xchg((intptr_t)initial, &_budget);
Atomic::store(tax_rate, &_tax_rate);
Atomic::inc(&_epoch);
Note: the xchg is conservative, the store is plain. The xchg value should be
visible before the store.
--
Andrew Haley (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
https://keybase.io/andrewhaley
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
More information about the aarch64-port-dev
mailing list