--- old/test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java 2020-01-17 17:09:03.511134149 +0100 +++ new/test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java 2020-01-17 17:09:03.407134155 +0100 @@ -39,7 +39,9 @@ * CMS, * CMSCondMark, * Serial, - * Parallel} + * Parallel, + * Shenandoah, + * ShenandoahTraversal} */ @@ -100,6 +102,18 @@ procArgs[argcount - 3] = "-XX:+UseConcMarkSweepGC"; procArgs[argcount - 2] = "-XX:+UseCondCardMark"; break; + case "Shenandoah": + argcount = 8; + procArgs = new String[argcount]; + procArgs[argcount - 2] = "-XX:+UseShenandoahGC"; + break; + case "ShenandoahTraversal": + argcount = 10; + procArgs = new String[argcount]; + procArgs[argcount - 4] = "-XX:+UseShenandoahGC"; + procArgs[argcount - 3] = "-XX:+UnlockExperimentalVMOptions"; + procArgs[argcount - 2] = "-XX:ShenandoahGCMode=traversal"; + break; default: throw new RuntimeException("unexpected test type " + testType); } @@ -355,6 +369,17 @@ "ret" }; break; + case "Shenandoah": + case "ShenandoahTraversal": + // Shenandoah generates normal object graphs for + // volatile stores + matches = new String[] { + "membar_release (elided)", + "stlrw", + "membar_volatile (elided)", + "ret" + }; + break; } } else { switch (testType) { @@ -418,6 +443,20 @@ "ret" }; break; + + case "Shenandoah": + case "ShenandoahTraversal": + // Shenandoah generates normal object graphs for + // volatile stores + matches = new String[] { + "membar_release", + "dmb ish", + "strw", + "membar_volatile", + "dmb ish", + "ret" + }; + break; } } @@ -520,6 +559,17 @@ "ret" }; break; + case "Shenandoah": + case "ShenandoahTraversal": + // For volatile CAS, Shenanodoah generates normal + // graphs with a shenandoah-specific cmpxchg + matches = new String[] { + "membar_release (elided)", + "cmpxchgw_acq_shenandoah", + "membar_acquire (elided)", + "ret" + }; + break; } } else { switch (testType) { @@ -762,6 +812,19 @@ "membar_acquire", "dmb ish", "ret" + }; + break; + case "Shenandoah": + case "ShenandoahTraversal": + // For volatile CAS, Shenanodoah generates normal + // graphs with a shenandoah-specific cmpxchg + matches = new String[] { + "membar_release", + "dmb ish", + "cmpxchgw_shenandoah", + "membar_acquire", + "dmb ish", + "ret" }; break; }