RFR: Some more AArch64 CAS/CAE fixes

Roman Kennke rkennke at redhat.com
Thu Nov 17 20:11:39 UTC 2016


This patches fixes some more issues with the CAS/CAE instrinsics in
AArch64/Shenandoah:
- It makes consistent use of operands with or without NoSp: NoSp for
operands that are changed, and no NoSp for read-only operands.
- It fixes the operand 'types' in several places: P for regular oops,
and N for narrow oops. There's been some other types in use, e.g. L.
- The store check is moved into
MacroAssembler::cmpxchg_oop_shenandoah() and also implemented for
narrow oops.
- compareAndExchange instructions must use TEMP_DEF for their result
operand, otherwise it can probably clash with the address operand and
result in SEGV, see here:

http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2016-Novemb
er/024932.html

- I added comments that describe the various bool args at every call
site of cmpxchg_oop_shenandoah().

- I clarified the code in cmpxchg_oop_shenandoah() a little bit by
introducing local bools is_narrow and is_cae

Ok to go?

http://cr.openjdk.java.net/~rkennke/aarch64-cas/webrev.02/

Roman


More information about the shenandoah-dev mailing list