RFR: AArch64 remaining CAS-obj impls
Roman Kennke
rkennke at redhat.com
Thu Nov 17 10:07:33 UTC 2016
I found one more bug in my implementation. For compareAndExchangeN, we
need to restore the uncompressed old-value into the result register
before leaving.
http://cr.openjdk.java.net/~rkennke/aarch64-cas/webrev.01/
Ok now?
Roman
Am Mittwoch, den 16.11.2016, 18:50 +0100 schrieb Roman Kennke:
> AArch64 was lacking weak-cas-obj and compare-and-exchange-obj for
> Shenandoah. This patch implements the various intrinsics for those.
> All
> reuse the existing Shenandoah retry loop, with some little
> extensions:
>
> - weak now short-circuits if the store-exclusive fails
> - exchange gets the old value
>
> The implementation is done as closely as possible to the other
> cmpxchg() implementations in MacroAssembler.
>
> The patch also:
>
> - removes setting of res. This is not necessary if we are careful the
> condition codes are right when we get to 'done'. intrinsics that need
> it, use cset later to set the target register.
> - Changes bool to enum operand_size to distinguish between narrow and
> ordinary oops, just like the other cmpxchg.
>
> Tests: jcstress
>
> Ok to push?
>
> http://cr.openjdk.java.net/~rkennke/aarch64-cas/webrev.00/
>
> Roman
More information about the shenandoah-dev
mailing list