Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/gc/shenandoah/options/TestLoopMiningArguments.java
41155 views
1
/*
2
* Copyright (c) 2017, 2019, Red Hat, Inc. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*
23
*/
24
25
/*
26
* @test TestLoopMiningArguments
27
* @summary Test that loop mining arguments are sane
28
* @requires vm.gc.Shenandoah
29
* @requires vm.flavor == "server"
30
* @library /test/lib
31
* @run driver TestLoopMiningArguments
32
*/
33
34
import java.util.*;
35
36
import jdk.test.lib.Asserts;
37
import jdk.test.lib.process.ProcessTools;
38
import jdk.test.lib.process.OutputAnalyzer;
39
40
public class TestLoopMiningArguments {
41
42
public static void testWith(String msg, boolean cls, int iters, String... args) throws Exception {
43
String[] cmds = Arrays.copyOf(args, args.length + 3);
44
cmds[args.length] = "-Xmx128m";
45
cmds[args.length + 1] = "-XX:+PrintFlagsFinal";
46
cmds[args.length + 2] = "-version";
47
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(cmds);
48
OutputAnalyzer output = new OutputAnalyzer(pb.start());
49
output.shouldHaveExitValue(0);
50
output.shouldContain("UseCountedLoopSafepoints");
51
output.shouldContain("LoopStripMiningIter");
52
53
Asserts.assertEQ(output.firstMatch("(.+?) UseCountedLoopSafepoints.+?= (.+?) (.+?)", 2), Boolean.toString(cls), msg + ", but got wrong CLS");
54
Asserts.assertEQ(output.firstMatch("(.+?) LoopStripMiningIter.+?= (.+?) (.+?)", 2), String.valueOf(iters), msg + ", but got wrong LSM");
55
}
56
57
public static void main(String[] args) throws Exception {
58
testWith("Shenandoah should have CLS and LSM enabled",
59
true, 1000,
60
"-XX:+UnlockExperimentalVMOptions",
61
"-XX:+UseShenandoahGC"
62
);
63
64
testWith("Shenandoah with +CLS should set LSM = 1",
65
true, 1,
66
"-XX:+UnlockExperimentalVMOptions",
67
"-XX:+UseShenandoahGC",
68
"-XX:+UseCountedLoopSafepoints"
69
);
70
71
testWith("Shenandoah GC with +CLS should not override LSM>1",
72
true, 10,
73
"-XX:+UnlockExperimentalVMOptions",
74
"-XX:+UseShenandoahGC",
75
"-XX:LoopStripMiningIter=10",
76
"-XX:+UseCountedLoopSafepoints"
77
);
78
79
testWith("Shenandoah GC with +CLS should not override LSM=1",
80
true, 1,
81
"-XX:+UnlockExperimentalVMOptions",
82
"-XX:+UseShenandoahGC",
83
"-XX:LoopStripMiningIter=1",
84
"-XX:+UseCountedLoopSafepoints"
85
);
86
87
testWith("Shenandoah GC with +CLS should override LSM=0 to 1",
88
true, 1,
89
"-XX:+UnlockExperimentalVMOptions",
90
"-XX:+UseShenandoahGC",
91
"-XX:LoopStripMiningIter=0",
92
"-XX:+UseCountedLoopSafepoints"
93
);
94
95
testWith("Shenandoah GC with -CLS should set LSM = 0",
96
false, 0,
97
"-XX:+UnlockExperimentalVMOptions",
98
"-XX:+UseShenandoahGC",
99
"-XX:-UseCountedLoopSafepoints"
100
);
101
102
testWith("Shenandoah GC with -CLS should override LSM to 0",
103
false, 0,
104
"-XX:+UnlockExperimentalVMOptions",
105
"-XX:+UseShenandoahGC",
106
"-XX:LoopStripMiningIter=10",
107
"-XX:-UseCountedLoopSafepoints"
108
);
109
}
110
111
}
112
113