Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/gc/shenandoah/compiler/TestClone.java
32285 views
1
/*
2
* Copyright (c) 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
* @test TestClone
26
* @summary Test clone barriers work correctly
27
* @key gc
28
*
29
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
30
* -XX:+UseShenandoahGC
31
* TestClone
32
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
33
* -XX:+UseShenandoahGC
34
* -Xint
35
* TestClone
36
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
37
* -XX:+UseShenandoahGC
38
* -XX:-TieredCompilation
39
* TestClone
40
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
41
* -XX:+UseShenandoahGC
42
* -XX:TieredStopAtLevel=1
43
* TestClone
44
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
45
* -XX:+UseShenandoahGC
46
* -XX:TieredStopAtLevel=4
47
* TestClone
48
*/
49
50
/*
51
* @test TestClone
52
* @summary Test clone barriers work correctly
53
* @key gc
54
*
55
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
56
* -XX:+UseShenandoahGC
57
* -XX:+ShenandoahVerify
58
* TestClone
59
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
60
* -XX:+UseShenandoahGC
61
* -XX:+ShenandoahVerify
62
* -Xint
63
* TestClone
64
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
65
* -XX:+UseShenandoahGC
66
* -XX:+ShenandoahVerify
67
* -XX:-TieredCompilation
68
* TestClone
69
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
70
* -XX:+UseShenandoahGC
71
* -XX:+ShenandoahVerify
72
* -XX:TieredStopAtLevel=1
73
* TestClone
74
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
75
* -XX:+UseShenandoahGC
76
* -XX:+ShenandoahVerify
77
* -XX:TieredStopAtLevel=4
78
* TestClone
79
*/
80
81
/*
82
* @test TestClone
83
* @summary Test clone barriers work correctly
84
* @key gc
85
*
86
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
87
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
88
* TestClone
89
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
90
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
91
* -Xint
92
* TestClone
93
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
94
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
95
* -XX:-TieredCompilation
96
* TestClone
97
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
98
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
99
* -XX:TieredStopAtLevel=1
100
* TestClone
101
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
102
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
103
* -XX:TieredStopAtLevel=4
104
* TestClone
105
*/
106
107
/*
108
* @test TestClone
109
* @summary Test clone barriers work correctly
110
* @key gc
111
* @requires (vm.bits == "64")
112
*
113
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
114
* -XX:-UseCompressedOops
115
* -XX:+UseShenandoahGC
116
* TestClone
117
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
118
* -XX:-UseCompressedOops
119
* -XX:+UseShenandoahGC
120
* -Xint
121
* TestClone
122
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
123
* -XX:-UseCompressedOops
124
* -XX:+UseShenandoahGC
125
* -XX:-TieredCompilation
126
* TestClone
127
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
128
* -XX:-UseCompressedOops
129
* -XX:+UseShenandoahGC
130
* -XX:TieredStopAtLevel=1
131
* TestClone
132
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
133
* -XX:-UseCompressedOops
134
* -XX:+UseShenandoahGC
135
* -XX:TieredStopAtLevel=4
136
* TestClone
137
*/
138
139
/*
140
* @test TestClone
141
* @summary Test clone barriers work correctly
142
* @key gc
143
* @requires (vm.bits == "64")
144
*
145
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
146
* -XX:-UseCompressedOops
147
* -XX:+UseShenandoahGC
148
* -XX:+ShenandoahVerify
149
* TestClone
150
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
151
* -XX:-UseCompressedOops
152
* -XX:+UseShenandoahGC
153
* -XX:+ShenandoahVerify
154
* -Xint
155
* TestClone
156
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
157
* -XX:-UseCompressedOops
158
* -XX:+UseShenandoahGC
159
* -XX:+ShenandoahVerify
160
* -XX:-TieredCompilation
161
* TestClone
162
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
163
* -XX:-UseCompressedOops
164
* -XX:+UseShenandoahGC
165
* -XX:+ShenandoahVerify
166
* -XX:TieredStopAtLevel=1
167
* TestClone
168
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
169
* -XX:-UseCompressedOops
170
* -XX:+UseShenandoahGC
171
* -XX:+ShenandoahVerify
172
* -XX:TieredStopAtLevel=4
173
* TestClone
174
*/
175
176
/*
177
* @test TestClone
178
* @summary Test clone barriers work correctly
179
* @key gc
180
* @requires (vm.bits == "64")
181
*
182
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
183
* -XX:-UseCompressedOops
184
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
185
* TestClone
186
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
187
* -XX:-UseCompressedOops
188
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
189
* -Xint
190
* TestClone
191
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
192
* -XX:-UseCompressedOops
193
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
194
* -XX:-TieredCompilation
195
* TestClone
196
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
197
* -XX:-UseCompressedOops
198
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
199
* -XX:TieredStopAtLevel=1
200
* TestClone
201
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
202
* -XX:-UseCompressedOops
203
* -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
204
* -XX:TieredStopAtLevel=4
205
* TestClone
206
*/
207
208
209
public class TestClone {
210
211
public static void main(String[] args) throws Exception {
212
for (int i = 0; i < 10000; i++) {
213
Object[] src = new Object[i];
214
for (int c = 0; c < src.length; c++) {
215
src[c] = new Object();
216
}
217
testWith(src);
218
}
219
}
220
221
static void testWith(Object[] src) {
222
Object[] dst = src.clone();
223
int srcLen = src.length;
224
int dstLen = dst.length;
225
if (srcLen != dstLen) {
226
throw new IllegalStateException("Lengths do not match: " + srcLen + " vs " + dstLen);
227
}
228
for (int c = 0; c < src.length; c++) {
229
Object s = src[c];
230
Object d = dst[c];
231
if (s != d) {
232
throw new IllegalStateException("Elements do not match at " + c + ": " + s + " vs " + d);
233
}
234
}
235
}
236
}
237
238