1 /*
2 * Copyright (c) 2017, 2018, Red Hat, Inc. All rights reserved.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
36 import jdk.test.lib.process.ProcessTools;
37 import jdk.test.lib.process.OutputAnalyzer;
38
39 public class TestLoopMiningArguments {
40
41 public static void testWith(String msg, boolean cls, int iters, String... args) throws Exception {
42 String[] cmds = Arrays.copyOf(args, args.length + 2);
43 cmds[args.length] = "-XX:+PrintFlagsFinal";
44 cmds[args.length + 1] = "-version";
45 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(cmds);
46 OutputAnalyzer output = new OutputAnalyzer(pb.start());
47 output.shouldHaveExitValue(0);
48 output.shouldContain("UseCountedLoopSafepoints");
49 output.shouldContain("LoopStripMiningIter");
50
51 Asserts.assertEQ(output.firstMatch("(.+?) UseCountedLoopSafepoints.+?= (.+?) (.+?)", 2), Boolean.toString(cls), msg + ", but got wrong CLS");
52 Asserts.assertEQ(output.firstMatch("(.+?) LoopStripMiningIter.+?= (.+?) (.+?)", 2), String.valueOf(iters), msg + ", but got wrong LSM");
53 }
54
55 public static void main(String[] args) throws Exception {
56 testDefaultGC();
57 testShenandoah();
58 }
59
60 public static void testDefaultGC() throws Exception {
61 testWith("Default GC should have CLS enabled, LSM = 1000",
62 true, 1000);
63
64 testWith("Default GC with +CLS should set LSM = 1",
65 true, 1,
66 "-XX:+UseCountedLoopSafepoints"
67 );
68
69 testWith("Default GC with +CLS should not override LSM>1",
70 true, 10,
71 "-XX:LoopStripMiningIter=10",
72 "-XX:+UseCountedLoopSafepoints"
73 );
74
75 testWith("Default GC with +CLS should not override LSM=1",
76 true, 1,
77 "-XX:LoopStripMiningIter=1",
78 "-XX:+UseCountedLoopSafepoints"
79 );
80
81 testWith("Default GC with +CLS should override LSM=0 to 1",
82 true, 1,
83 "-XX:LoopStripMiningIter=0",
84 "-XX:+UseCountedLoopSafepoints"
85 );
86
87 testWith("Default GC with -CLS should set LSM = 0",
88 false, 0,
89 "-XX:-UseCountedLoopSafepoints"
90 );
91
92 testWith("Default GC with -CLS should override LSM to 0",
93 false, 0,
94 "-XX:LoopStripMiningIter=10",
95 "-XX:-UseCountedLoopSafepoints"
96 );
97 }
98
99 public static void testShenandoah() throws Exception {
100 testWith("Shenandoah should have CLS and LSM enabled",
101 true, 1000,
102 "-XX:+UnlockExperimentalVMOptions",
103 "-XX:+UseShenandoahGC"
104 );
105
106 testWith("Shenandoah with +CLS should set LSM = 1",
107 true, 1,
108 "-XX:+UnlockExperimentalVMOptions",
109 "-XX:+UseShenandoahGC",
110 "-XX:+UseCountedLoopSafepoints"
111 );
112
113 testWith("Shenandoah GC with +CLS should not override LSM>1",
114 true, 10,
115 "-XX:+UnlockExperimentalVMOptions",
116 "-XX:+UseShenandoahGC",
117 "-XX:LoopStripMiningIter=10",
118 "-XX:+UseCountedLoopSafepoints"
119 );
|
1 /*
2 * Copyright (c) 2017, 2019, Red Hat, Inc. All rights reserved.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
36 import jdk.test.lib.process.ProcessTools;
37 import jdk.test.lib.process.OutputAnalyzer;
38
39 public class TestLoopMiningArguments {
40
41 public static void testWith(String msg, boolean cls, int iters, String... args) throws Exception {
42 String[] cmds = Arrays.copyOf(args, args.length + 2);
43 cmds[args.length] = "-XX:+PrintFlagsFinal";
44 cmds[args.length + 1] = "-version";
45 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(cmds);
46 OutputAnalyzer output = new OutputAnalyzer(pb.start());
47 output.shouldHaveExitValue(0);
48 output.shouldContain("UseCountedLoopSafepoints");
49 output.shouldContain("LoopStripMiningIter");
50
51 Asserts.assertEQ(output.firstMatch("(.+?) UseCountedLoopSafepoints.+?= (.+?) (.+?)", 2), Boolean.toString(cls), msg + ", but got wrong CLS");
52 Asserts.assertEQ(output.firstMatch("(.+?) LoopStripMiningIter.+?= (.+?) (.+?)", 2), String.valueOf(iters), msg + ", but got wrong LSM");
53 }
54
55 public static void main(String[] args) throws Exception {
56 testWith("Shenandoah should have CLS and LSM enabled",
57 true, 1000,
58 "-XX:+UnlockExperimentalVMOptions",
59 "-XX:+UseShenandoahGC"
60 );
61
62 testWith("Shenandoah with +CLS should set LSM = 1",
63 true, 1,
64 "-XX:+UnlockExperimentalVMOptions",
65 "-XX:+UseShenandoahGC",
66 "-XX:+UseCountedLoopSafepoints"
67 );
68
69 testWith("Shenandoah GC with +CLS should not override LSM>1",
70 true, 10,
71 "-XX:+UnlockExperimentalVMOptions",
72 "-XX:+UseShenandoahGC",
73 "-XX:LoopStripMiningIter=10",
74 "-XX:+UseCountedLoopSafepoints"
75 );
|