46 * java/lang/invoke/TestStableBoolean$NestedStableField2 |
48 * java/lang/invoke/TestStableBoolean$NestedStableField2 |
47 * java/lang/invoke/TestStableBoolean$NestedStableField2$A |
49 * java/lang/invoke/TestStableBoolean$NestedStableField2$A |
48 * java/lang/invoke/TestStableBoolean$NestedStableField3 |
50 * java/lang/invoke/TestStableBoolean$NestedStableField3 |
49 * java/lang/invoke/TestStableBoolean$NestedStableField3$A |
51 * java/lang/invoke/TestStableBoolean$NestedStableField3$A |
50 * java/lang/invoke/TestStableBoolean$DefaultValue |
52 * java/lang/invoke/TestStableBoolean$DefaultValue |
|
53 * java/lang/invoke/TestStableBoolean$DefaultStaticValue |
51 * java/lang/invoke/TestStableBoolean$ObjectArrayLowerDim2 |
54 * java/lang/invoke/TestStableBoolean$ObjectArrayLowerDim2 |
52 * |
55 * |
53 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
56 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
54 * -XX:+UnlockDiagnosticVMOptions -XX:+FoldStableValues -XX:+UseCompressedOop |
57 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xcomp |
55 * -server -XX:-TieredCompilation -Xcomp |
58 * -server -XX:-TieredCompilation |
|
59 * -XX:+FoldStableValues |
|
60 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
|
61 * java.lang.invoke.TestStableBoolean |
|
62 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
|
63 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xcomp |
|
64 * -server -XX:-TieredCompilation |
|
65 * -XX:-FoldStableValues |
56 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
66 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
57 * java.lang.invoke.TestStableBoolean |
67 * java.lang.invoke.TestStableBoolean |
58 * |
68 * |
59 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
69 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
60 * -XX:+UnlockDiagnosticVMOptions -XX:+FoldStableValues -XX:-UseCompressedOop |
70 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xcomp |
61 * -server -XX:-TieredCompilation -Xcomp |
71 * -server -XX:+TieredCompilation -XX:TieredStopAtLevel=1 |
|
72 * -XX:+FoldStableValues |
|
73 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
|
74 * java.lang.invoke.TestStableBoolean |
|
75 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
|
76 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xcomp |
|
77 * -server -XX:+TieredCompilation -XX:TieredStopAtLevel=1 |
|
78 * -XX:-FoldStableValues |
62 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
79 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
63 * java.lang.invoke.TestStableBoolean |
80 * java.lang.invoke.TestStableBoolean |
64 * |
81 * |
65 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
82 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
66 * -XX:+UnlockDiagnosticVMOptions -XX:-FoldStableValues -XX:+UseCompressedOop |
83 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xcomp |
67 * -server -XX:-TieredCompilation -Xcomp |
84 * -client -XX:-TieredCompilation |
|
85 * -XX:+FoldStableValues |
68 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
86 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
69 * java.lang.invoke.TestStableBoolean |
87 * java.lang.invoke.TestStableBoolean |
70 * |
|
71 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
88 * @run main/othervm -Xbootclasspath/a:. -XX:+IgnoreUnrecognizedVMOptions |
72 * -XX:+UnlockDiagnosticVMOptions -XX:-FoldStableValues -XX:-UseCompressedOop |
89 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xcomp |
73 * -server -XX:-TieredCompilation -Xcomp |
90 * -client -XX:-TieredCompilation |
|
91 * -XX:-FoldStableValues |
74 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
92 * -XX:CompileOnly=::get,::get1,::get2,::get3,::get4 |
75 * java.lang.invoke.TestStableBoolean |
93 * java.lang.invoke.TestStableBoolean |
76 */ |
94 */ |
77 package java.lang.invoke; |
95 package java.lang.invoke; |
78 |
96 |
79 import com.sun.management.HotSpotDiagnosticMXBean; |
|
80 import com.sun.management.VMOption; |
|
81 import sun.management.ManagementFactoryHelper; |
|
82 import java.lang.reflect.InvocationTargetException; |
97 import java.lang.reflect.InvocationTargetException; |
83 |
98 |
84 public class TestStableBoolean { |
99 public class TestStableBoolean { |
|
100 static final boolean isStableEnabled = StableConfiguration.isStableEnabled; |
|
101 static final boolean isServerWithStable = StableConfiguration.isServerWithStable; |
|
102 |
85 public static void main(String[] args) throws Exception { |
103 public static void main(String[] args) throws Exception { |
86 System.out.println("@Stable enabled: "+isStableEnabled); |
|
87 System.out.println(); |
|
88 |
|
89 run(DefaultValue.class); |
104 run(DefaultValue.class); |
90 run(BooleanStable.class); |
105 run(BooleanStable.class); |
|
106 run(DefaultStaticValue.class); |
91 run(StaticBooleanStable.class); |
107 run(StaticBooleanStable.class); |
92 run(VolatileBooleanStable.class); |
108 run(VolatileBooleanStable.class); |
93 |
109 |
94 // @Stable arrays: Dim 1-4 |
110 // @Stable arrays: Dim 1-4 |
95 run(BooleanArrayDim1.class); |
111 run(BooleanArrayDim1.class); |
186 public static void test() throws Exception { |
217 public static void test() throws Exception { |
187 { |
218 { |
188 c.v = new boolean[1]; c.v[0] = true; boolean val1 = get(); |
219 c.v = new boolean[1]; c.v[0] = true; boolean val1 = get(); |
189 c.v[0] = false; boolean val2 = get(); |
220 c.v[0] = false; boolean val2 = get(); |
190 assertEquals(val1, true); |
221 assertEquals(val1, true); |
191 assertEquals(val2, (isStableEnabled ? true : false)); |
222 assertEquals(val2, (isServerWithStable ? true : false)); |
192 } |
223 } |
193 |
224 |
194 { |
225 { |
195 c.v = new boolean[20]; c.v[10] = true; boolean val1 = get1(); |
226 c.v = new boolean[20]; c.v[10] = true; boolean val1 = get1(); |
196 c.v[10] = false; boolean val2 = get1(); |
227 c.v[10] = false; boolean val2 = get1(); |
197 assertEquals(val1, true); |
228 assertEquals(val1, true); |
198 assertEquals(val2, (isStableEnabled ? true : false)); |
229 assertEquals(val2, (isServerWithStable ? true : false)); |
199 } |
230 } |
200 |
231 |
201 { |
232 { |
202 c.v = new boolean[1]; boolean[] val1 = get2(); |
233 c.v = new boolean[1]; boolean[] val1 = get2(); |
203 c.v = new boolean[1]; boolean[] val2 = get2(); |
234 c.v = new boolean[1]; boolean[] val2 = get2(); |
218 public static void test() throws Exception { |
249 public static void test() throws Exception { |
219 { |
250 { |
220 c.v = new boolean[1][1]; c.v[0][0] = true; boolean val1 = get(); |
251 c.v = new boolean[1][1]; c.v[0][0] = true; boolean val1 = get(); |
221 c.v[0][0] = false; boolean val2 = get(); |
252 c.v[0][0] = false; boolean val2 = get(); |
222 assertEquals(val1, true); |
253 assertEquals(val1, true); |
223 assertEquals(val2, (isStableEnabled ? true : false)); |
254 assertEquals(val2, (isServerWithStable ? true : false)); |
224 |
255 |
225 c.v = new boolean[1][1]; c.v[0][0] = false; boolean val3 = get(); |
256 c.v = new boolean[1][1]; c.v[0][0] = false; boolean val3 = get(); |
226 assertEquals(val3, (isStableEnabled ? true : false)); |
257 assertEquals(val3, (isServerWithStable ? true : false)); |
227 |
258 |
228 c.v[0] = new boolean[1]; c.v[0][0] = false; boolean val4 = get(); |
259 c.v[0] = new boolean[1]; c.v[0][0] = false; boolean val4 = get(); |
229 assertEquals(val4, (isStableEnabled ? true : false)); |
260 assertEquals(val4, (isServerWithStable ? true : false)); |
230 } |
261 } |
231 |
262 |
232 { |
263 { |
233 c.v = new boolean[1][1]; boolean[] val1 = get1(); |
264 c.v = new boolean[1][1]; boolean[] val1 = get1(); |
234 c.v[0] = new boolean[1]; boolean[] val2 = get1(); |
265 c.v[0] = new boolean[1]; boolean[] val2 = get1(); |
235 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
266 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
236 } |
267 } |
237 |
268 |
238 { |
269 { |
239 c.v = new boolean[1][1]; boolean[][] val1 = get2(); |
270 c.v = new boolean[1][1]; boolean[][] val1 = get2(); |
240 c.v = new boolean[1][1]; boolean[][] val2 = get2(); |
271 c.v = new boolean[1][1]; boolean[][] val2 = get2(); |
256 public static void test() throws Exception { |
287 public static void test() throws Exception { |
257 { |
288 { |
258 c.v = new boolean[1][1][1]; c.v[0][0][0] = true; boolean val1 = get(); |
289 c.v = new boolean[1][1][1]; c.v[0][0][0] = true; boolean val1 = get(); |
259 c.v[0][0][0] = false; boolean val2 = get(); |
290 c.v[0][0][0] = false; boolean val2 = get(); |
260 assertEquals(val1, true); |
291 assertEquals(val1, true); |
261 assertEquals(val2, (isStableEnabled ? true : false)); |
292 assertEquals(val2, (isServerWithStable ? true : false)); |
262 |
293 |
263 c.v = new boolean[1][1][1]; c.v[0][0][0] = false; boolean val3 = get(); |
294 c.v = new boolean[1][1][1]; c.v[0][0][0] = false; boolean val3 = get(); |
264 assertEquals(val3, (isStableEnabled ? true : false)); |
295 assertEquals(val3, (isServerWithStable ? true : false)); |
265 |
296 |
266 c.v[0] = new boolean[1][1]; c.v[0][0][0] = false; boolean val4 = get(); |
297 c.v[0] = new boolean[1][1]; c.v[0][0][0] = false; boolean val4 = get(); |
267 assertEquals(val4, (isStableEnabled ? true : false)); |
298 assertEquals(val4, (isServerWithStable ? true : false)); |
268 |
299 |
269 c.v[0][0] = new boolean[1]; c.v[0][0][0] = false; boolean val5 = get(); |
300 c.v[0][0] = new boolean[1]; c.v[0][0][0] = false; boolean val5 = get(); |
270 assertEquals(val5, (isStableEnabled ? true : false)); |
301 assertEquals(val5, (isServerWithStable ? true : false)); |
271 } |
302 } |
272 |
303 |
273 { |
304 { |
274 c.v = new boolean[1][1][1]; boolean[] val1 = get1(); |
305 c.v = new boolean[1][1][1]; boolean[] val1 = get1(); |
275 c.v[0][0] = new boolean[1]; boolean[] val2 = get1(); |
306 c.v[0][0] = new boolean[1]; boolean[] val2 = get1(); |
276 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
307 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
277 } |
308 } |
278 |
309 |
279 { |
310 { |
280 c.v = new boolean[1][1][1]; boolean[][] val1 = get2(); |
311 c.v = new boolean[1][1][1]; boolean[][] val1 = get2(); |
281 c.v[0] = new boolean[1][1]; boolean[][] val2 = get2(); |
312 c.v[0] = new boolean[1][1]; boolean[][] val2 = get2(); |
282 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
313 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
283 } |
314 } |
284 |
315 |
285 { |
316 { |
286 c.v = new boolean[1][1][1]; boolean[][][] val1 = get3(); |
317 c.v = new boolean[1][1][1]; boolean[][][] val1 = get3(); |
287 c.v = new boolean[1][1][1]; boolean[][][] val2 = get3(); |
318 c.v = new boolean[1][1][1]; boolean[][][] val2 = get3(); |
304 public static void test() throws Exception { |
335 public static void test() throws Exception { |
305 { |
336 { |
306 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = true; boolean val1 = get(); |
337 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = true; boolean val1 = get(); |
307 c.v[0][0][0][0] = false; boolean val2 = get(); |
338 c.v[0][0][0][0] = false; boolean val2 = get(); |
308 assertEquals(val1, true); |
339 assertEquals(val1, true); |
309 assertEquals(val2, (isStableEnabled ? true : false)); |
340 assertEquals(val2, (isServerWithStable ? true : false)); |
310 |
341 |
311 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = false; boolean val3 = get(); |
342 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = false; boolean val3 = get(); |
312 assertEquals(val3, (isStableEnabled ? true : false)); |
343 assertEquals(val3, (isServerWithStable ? true : false)); |
313 |
344 |
314 c.v[0] = new boolean[1][1][1]; c.v[0][0][0][0] = false; boolean val4 = get(); |
345 c.v[0] = new boolean[1][1][1]; c.v[0][0][0][0] = false; boolean val4 = get(); |
315 assertEquals(val4, (isStableEnabled ? true : false)); |
346 assertEquals(val4, (isServerWithStable ? true : false)); |
316 |
347 |
317 c.v[0][0] = new boolean[1][1]; c.v[0][0][0][0] = false; boolean val5 = get(); |
348 c.v[0][0] = new boolean[1][1]; c.v[0][0][0][0] = false; boolean val5 = get(); |
318 assertEquals(val5, (isStableEnabled ? true : false)); |
349 assertEquals(val5, (isServerWithStable ? true : false)); |
319 |
350 |
320 c.v[0][0][0] = new boolean[1]; c.v[0][0][0][0] = false; boolean val6 = get(); |
351 c.v[0][0][0] = new boolean[1]; c.v[0][0][0][0] = false; boolean val6 = get(); |
321 assertEquals(val6, (isStableEnabled ? true : false)); |
352 assertEquals(val6, (isServerWithStable ? true : false)); |
322 } |
353 } |
323 |
354 |
324 { |
355 { |
325 c.v = new boolean[1][1][1][1]; boolean[] val1 = get1(); |
356 c.v = new boolean[1][1][1][1]; boolean[] val1 = get1(); |
326 c.v[0][0][0] = new boolean[1]; boolean[] val2 = get1(); |
357 c.v[0][0][0] = new boolean[1]; boolean[] val2 = get1(); |
327 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
358 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
328 } |
359 } |
329 |
360 |
330 { |
361 { |
331 c.v = new boolean[1][1][1][1]; boolean[][] val1 = get2(); |
362 c.v = new boolean[1][1][1][1]; boolean[][] val1 = get2(); |
332 c.v[0][0] = new boolean[1][1]; boolean[][] val2 = get2(); |
363 c.v[0][0] = new boolean[1][1]; boolean[][] val2 = get2(); |
333 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
364 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
334 } |
365 } |
335 |
366 |
336 { |
367 { |
337 c.v = new boolean[1][1][1][1]; boolean[][][] val1 = get3(); |
368 c.v = new boolean[1][1][1][1]; boolean[][][] val1 = get3(); |
338 c.v[0] = new boolean[1][1][1]; boolean[][][] val2 = get3(); |
369 c.v[0] = new boolean[1][1][1]; boolean[][][] val2 = get3(); |
339 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
370 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
340 } |
371 } |
341 |
372 |
342 { |
373 { |
343 c.v = new boolean[1][1][1][1]; boolean[][][][] val1 = get4(); |
374 c.v = new boolean[1][1][1][1]; boolean[][][][] val1 = get4(); |
344 c.v = new boolean[1][1][1][1]; boolean[][][][] val2 = get4(); |
375 c.v = new boolean[1][1][1][1]; boolean[][][][] val2 = get4(); |