Mercurial > hg > truffle
comparison test/compiler/stable/TestStableBoolean.java @ 18004:ee1c924763d2
8043546: C1 optimizes @Stable instance fields with default values
Reviewed-by: kvn, jrose
author | vlivanov |
---|---|
date | Thu, 10 Jul 2014 12:04:43 -0700 |
parents | 248ff38d2950 |
children |
comparison
equal
deleted
inserted
replaced
18003:dda2ae6f9557 | 18004:ee1c924763d2 |
---|---|
24 */ | 24 */ |
25 | 25 |
26 /* | 26 /* |
27 * @test TestStableBoolean | 27 * @test TestStableBoolean |
28 * @summary tests on stable fields and arrays | 28 * @summary tests on stable fields and arrays |
29 * @library /testlibrary | 29 * @library /testlibrary /testlibrary/whitebox |
30 * @compile -XDignore.symbol.file TestStableBoolean.java | 30 * @build TestStableBoolean StableConfiguration sun.hotspot.WhiteBox |
31 * @run main ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission | |
31 * @run main ClassFileInstaller | 32 * @run main ClassFileInstaller |
33 * java/lang/invoke/StableConfiguration | |
32 * java/lang/invoke/TestStableBoolean | 34 * java/lang/invoke/TestStableBoolean |
33 * java/lang/invoke/TestStableBoolean$BooleanStable | 35 * java/lang/invoke/TestStableBoolean$BooleanStable |
34 * java/lang/invoke/TestStableBoolean$StaticBooleanStable | 36 * java/lang/invoke/TestStableBoolean$StaticBooleanStable |
35 * java/lang/invoke/TestStableBoolean$VolatileBooleanStable | 37 * java/lang/invoke/TestStableBoolean$VolatileBooleanStable |
36 * java/lang/invoke/TestStableBoolean$BooleanArrayDim1 | 38 * java/lang/invoke/TestStableBoolean$BooleanArrayDim1 |
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); |
143 } | 159 } |
144 } | 160 } |
145 | 161 |
146 /* ==================================================== */ | 162 /* ==================================================== */ |
147 | 163 |
164 static class DefaultStaticValue { | |
165 public static @Stable boolean v; | |
166 | |
167 public static final DefaultStaticValue c = new DefaultStaticValue(); | |
168 public static boolean get() { return c.v; } | |
169 public static void test() throws Exception { | |
170 boolean val1 = get(); | |
171 c.v = true; boolean val2 = get(); | |
172 assertEquals(val1, false); | |
173 assertEquals(val2, true); | |
174 } | |
175 } | |
176 | |
177 /* ==================================================== */ | |
178 | |
148 static class StaticBooleanStable { | 179 static class StaticBooleanStable { |
149 public static @Stable boolean v; | 180 public static @Stable boolean v; |
150 | 181 |
151 public static final StaticBooleanStable c = new StaticBooleanStable(); | 182 public static final StaticBooleanStable c = new StaticBooleanStable(); |
152 public static boolean get() { return c.v; } | 183 public static boolean get() { return c.v; } |
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(); |
397 | 428 |
398 { | 429 { |
399 c.v = new boolean[1][1]; c.v[0] = new boolean[0]; boolean[] val1 = get1(); | 430 c.v = new boolean[1][1]; c.v[0] = new boolean[0]; boolean[] val1 = get1(); |
400 c.v[0] = new boolean[0]; boolean[] val2 = get1(); | 431 c.v[0] = new boolean[0]; boolean[] val2 = get1(); |
401 | 432 |
402 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); | 433 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
403 } | 434 } |
404 | 435 |
405 { | 436 { |
406 c.v = new boolean[0][0]; Object[] val1 = get2(); | 437 c.v = new boolean[0][0]; Object[] val1 = get2(); |
407 c.v = new boolean[0][0]; Object[] val2 = get2(); | 438 c.v = new boolean[0][0]; Object[] val2 = get2(); |
433 | 464 |
434 { | 465 { |
435 c.v = new boolean[1][1][1]; c.v[0][0] = new boolean[0]; boolean[] val1 = get1(); | 466 c.v = new boolean[1][1][1]; c.v[0][0] = new boolean[0]; boolean[] val1 = get1(); |
436 c.v[0][0] = new boolean[0]; boolean[] val2 = get1(); | 467 c.v[0][0] = new boolean[0]; boolean[] val2 = get1(); |
437 | 468 |
438 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); | 469 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
439 } | 470 } |
440 | 471 |
441 { | 472 { |
442 c.v = new boolean[1][1][1]; c.v[0] = new boolean[0][0]; boolean[][] val1 = get2(); | 473 c.v = new boolean[1][1][1]; c.v[0] = new boolean[0][0]; boolean[][] val1 = get2(); |
443 c.v[0] = new boolean[0][0]; boolean[][] val2 = get2(); | 474 c.v[0] = new boolean[0][0]; boolean[][] val2 = get2(); |
444 | 475 |
445 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); | 476 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
446 } | 477 } |
447 | 478 |
448 { | 479 { |
449 c.v = new boolean[0][0][0]; Object[][] val1 = get3(); | 480 c.v = new boolean[0][0][0]; Object[][] val1 = get3(); |
450 c.v = new boolean[0][0][0]; Object[][] val2 = get3(); | 481 c.v = new boolean[0][0][0]; Object[][] val2 = get3(); |
575 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v; | 606 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v; |
576 elem.a = true; boolean val1 = get(); boolean val2 = get1(); | 607 elem.a = true; boolean val1 = get(); boolean val2 = get1(); |
577 elem.a = false; boolean val3 = get(); boolean val4 = get1(); | 608 elem.a = false; boolean val3 = get(); boolean val4 = get1(); |
578 | 609 |
579 assertEquals(val1, true); | 610 assertEquals(val1, true); |
580 assertEquals(val3, (isStableEnabled ? true : false)); | 611 assertEquals(val3, (isServerWithStable ? true : false)); |
581 | 612 |
582 assertEquals(val2, true); | 613 assertEquals(val2, true); |
583 assertEquals(val4, false); | 614 assertEquals(val4, false); |
584 } | 615 } |
585 } | 616 } |
609 System.out.println("FAILED"); | 640 System.out.println("FAILED"); |
610 ex.printStackTrace(System.out); | 641 ex.printStackTrace(System.out); |
611 } | 642 } |
612 } | 643 } |
613 } | 644 } |
614 | |
615 static final boolean isStableEnabled; | |
616 static { | |
617 HotSpotDiagnosticMXBean diagnostic | |
618 = ManagementFactoryHelper.getDiagnosticMXBean(); | |
619 VMOption tmp; | |
620 try { | |
621 tmp = diagnostic.getVMOption("FoldStableValues"); | |
622 } catch (IllegalArgumentException e) { | |
623 tmp = null; | |
624 } | |
625 isStableEnabled = (tmp == null ? false : Boolean.parseBoolean(tmp.getValue())); | |
626 } | |
627 } | 645 } |