27 * @requires vm.gc.Shenandoah
28 * @library /test/lib
29 * @run driver TestWrongBarrierDisable
30 */
31
32 import java.util.*;
33
34 import jdk.test.lib.process.ProcessTools;
35 import jdk.test.lib.process.OutputAnalyzer;
36
37 public class TestWrongBarrierDisable {
38
39 public static void main(String[] args) throws Exception {
40 String[] concurrent = {
41 "ShenandoahLoadRefBarrier",
42 "ShenandoahSATBBarrier",
43 "ShenandoahCASBarrier",
44 "ShenandoahCloneBarrier",
45 "ShenandoahStackWatermarkBarrier",
46 };
47 String[] iu = {
48 "ShenandoahLoadRefBarrier",
49 "ShenandoahIUBarrier",
50 "ShenandoahCASBarrier",
51 "ShenandoahCloneBarrier",
52 "ShenandoahStackWatermarkBarrier",
53 };
54
55 shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive", concurrent);
56 shouldFailAll("-XX:ShenandoahGCHeuristics=static", concurrent);
57 shouldFailAll("-XX:ShenandoahGCHeuristics=compact", concurrent);
58 shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
59 shouldFailAll("-XX:ShenandoahGCMode=iu", iu);
60 shouldPassAll("-XX:ShenandoahGCMode=passive", concurrent);
61 shouldPassAll("-XX:ShenandoahGCMode=passive", iu);
62 }
63
64 private static void shouldFailAll(String h, String[] barriers) throws Exception {
65 for (String b : barriers) {
66 OutputAnalyzer output = ProcessTools.executeLimitedTestJava(
67 "-Xmx128m",
68 "-XX:+UnlockDiagnosticVMOptions",
69 "-XX:+UnlockExperimentalVMOptions",
70 "-XX:+UseShenandoahGC",
71 h,
72 "-XX:-" + b,
73 "-version"
74 );
75 output.shouldNotHaveExitValue(0);
76 output.shouldContain("GC mode needs ");
77 output.shouldContain("to work correctly");
78 }
79 }
80
81 private static void shouldPassAll(String h, String[] barriers) throws Exception {
|
27 * @requires vm.gc.Shenandoah
28 * @library /test/lib
29 * @run driver TestWrongBarrierDisable
30 */
31
32 import java.util.*;
33
34 import jdk.test.lib.process.ProcessTools;
35 import jdk.test.lib.process.OutputAnalyzer;
36
37 public class TestWrongBarrierDisable {
38
39 public static void main(String[] args) throws Exception {
40 String[] concurrent = {
41 "ShenandoahLoadRefBarrier",
42 "ShenandoahSATBBarrier",
43 "ShenandoahCASBarrier",
44 "ShenandoahCloneBarrier",
45 "ShenandoahStackWatermarkBarrier",
46 };
47
48 String[] generational = {
49 "ShenandoahCardBarrier"
50 };
51
52 shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive", concurrent);
53 shouldFailAll("-XX:ShenandoahGCHeuristics=static", concurrent);
54 shouldFailAll("-XX:ShenandoahGCHeuristics=compact", concurrent);
55 shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
56 shouldPassAll("-XX:ShenandoahGCMode=passive", concurrent);
57 shouldPassAll("-XX:ShenandoahGCMode=passive", generational);
58 shouldPassAll("-XX:ShenandoahGCMode=satb", generational);
59 shouldFailAll("-XX:ShenandoahGCMode=generational", generational);
60 }
61
62 private static void shouldFailAll(String h, String[] barriers) throws Exception {
63 for (String b : barriers) {
64 OutputAnalyzer output = ProcessTools.executeLimitedTestJava(
65 "-Xmx128m",
66 "-XX:+UnlockDiagnosticVMOptions",
67 "-XX:+UnlockExperimentalVMOptions",
68 "-XX:+UseShenandoahGC",
69 h,
70 "-XX:-" + b,
71 "-version"
72 );
73 output.shouldNotHaveExitValue(0);
74 output.shouldContain("GC mode needs ");
75 output.shouldContain("to work correctly");
76 }
77 }
78
79 private static void shouldPassAll(String h, String[] barriers) throws Exception {
|