RFR: Streamline+cleanup ShenandoahBarrierSetC1 and related code

Roman Kennke rkennke at redhat.com
Wed Sep 26 13:36:38 UTC 2018


This straightens our C1 story:
- Instead of doing this nasty dance of fetching the base (LIRItem),
doing our barriers, punching back the base (now as LIR_Opr), etc, do
this in the right place, that is resolve_address() where the lowering is
happening anyway.
- Similar story with xchg: we get the new_value passes as LIRItem, but
need a LIR_Opr. We used to do the storeval-barrier in assembly only for
this reason. The fix is to do the lowering ourselves (bypassing
C1_LIRGenerator::atomic_xchg() ) and do the barriers there. Nice
side-effect: we can now do the 'pre'-barrier after the xchg, as it
should be.

This gets our diff to upstream in both asm and C1 down to almost 0 (and
the rest is stuff that's gonna be fine or whitespace cleanup).

http://cr.openjdk.java.net/~rkennke/c1-bs-cleanups/webrev.00/

Test: tier3_gc_shenandoah, specjvm+C1, aarch64 build

Ok?

Roman



More information about the shenandoah-dev mailing list