hotspot/test/compiler/stable/TestStableBoolean.java
changeset 36604 e9c073b0c19e
parent 35099 982950884444
child 36616 5172e3dd60f2
equal deleted inserted replaced
36603:0bc3ad031d60 36604:e9c073b0c19e
    85 import jdk.internal.vm.annotation.Stable;
    85 import jdk.internal.vm.annotation.Stable;
    86 
    86 
    87 import java.lang.reflect.InvocationTargetException;
    87 import java.lang.reflect.InvocationTargetException;
    88 
    88 
    89 public class TestStableBoolean {
    89 public class TestStableBoolean {
    90     static final boolean isStableEnabled    = StableConfiguration.isStableEnabled;
    90     static final boolean isStableEnabled = StableConfiguration.isStableEnabled;
    91     static final boolean isServerWithStable = StableConfiguration.isServerWithStable;
       
    92 
    91 
    93     public static void main(String[] args) throws Exception {
    92     public static void main(String[] args) throws Exception {
    94         run(DefaultValue.class);
    93         run(DefaultValue.class);
    95         run(BooleanStable.class);
    94         run(BooleanStable.class);
    96         run(DefaultStaticValue.class);
    95         run(DefaultStaticValue.class);
   207         public static void test() throws Exception {
   206         public static void test() throws Exception {
   208             {
   207             {
   209                 c.v = new boolean[1]; c.v[0] = true;  boolean val1 = get();
   208                 c.v = new boolean[1]; c.v[0] = true;  boolean val1 = get();
   210                                       c.v[0] = false; boolean val2 = get();
   209                                       c.v[0] = false; boolean val2 = get();
   211                 assertEquals(val1, true);
   210                 assertEquals(val1, true);
   212                 assertEquals(val2, (isServerWithStable ? true : false));
   211                 assertEquals(val2, (isStableEnabled ? true : false));
   213             }
   212             }
   214 
   213 
   215             {
   214             {
   216                 c.v = new boolean[20]; c.v[10] = true;  boolean val1 = get1();
   215                 c.v = new boolean[20]; c.v[10] = true;  boolean val1 = get1();
   217                                        c.v[10] = false; boolean val2 = get1();
   216                                        c.v[10] = false; boolean val2 = get1();
   218                 assertEquals(val1, true);
   217                 assertEquals(val1, true);
   219                 assertEquals(val2, (isServerWithStable ? true : false));
   218                 assertEquals(val2, (isStableEnabled ? true : false));
   220             }
   219             }
   221 
   220 
   222             {
   221             {
   223                 c.v = new boolean[1]; boolean[] val1 = get2();
   222                 c.v = new boolean[1]; boolean[] val1 = get2();
   224                 c.v = new boolean[1]; boolean[] val2 = get2();
   223                 c.v = new boolean[1]; boolean[] val2 = get2();
   239         public static void test() throws Exception {
   238         public static void test() throws Exception {
   240             {
   239             {
   241                 c.v = new boolean[1][1]; c.v[0][0] = true;  boolean val1 = get();
   240                 c.v = new boolean[1][1]; c.v[0][0] = true;  boolean val1 = get();
   242                                          c.v[0][0] = false; boolean val2 = get();
   241                                          c.v[0][0] = false; boolean val2 = get();
   243                 assertEquals(val1, true);
   242                 assertEquals(val1, true);
   244                 assertEquals(val2, (isServerWithStable ? true : false));
   243                 assertEquals(val2, (isStableEnabled ? true : false));
   245 
   244 
   246                 c.v = new boolean[1][1]; c.v[0][0] = false; boolean val3 = get();
   245                 c.v = new boolean[1][1]; c.v[0][0] = false; boolean val3 = get();
   247                 assertEquals(val3, (isServerWithStable ? true : false));
   246                 assertEquals(val3, (isStableEnabled ? true : false));
   248 
   247 
   249                 c.v[0] = new boolean[1]; c.v[0][0] = false; boolean val4 = get();
   248                 c.v[0] = new boolean[1]; c.v[0][0] = false; boolean val4 = get();
   250                 assertEquals(val4, (isServerWithStable ? true : false));
   249                 assertEquals(val4, (isStableEnabled ? true : false));
   251             }
   250             }
   252 
   251 
   253             {
   252             {
   254                 c.v = new boolean[1][1]; boolean[] val1 = get1();
   253                 c.v = new boolean[1][1]; boolean[] val1 = get1();
   255                 c.v[0] = new boolean[1]; boolean[] val2 = get1();
   254                 c.v[0] = new boolean[1]; boolean[] val2 = get1();
   256                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   255                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   257             }
   256             }
   258 
   257 
   259             {
   258             {
   260                 c.v = new boolean[1][1]; boolean[][] val1 = get2();
   259                 c.v = new boolean[1][1]; boolean[][] val1 = get2();
   261                 c.v = new boolean[1][1]; boolean[][] val2 = get2();
   260                 c.v = new boolean[1][1]; boolean[][] val2 = get2();
   277         public static void test() throws Exception {
   276         public static void test() throws Exception {
   278             {
   277             {
   279                 c.v = new boolean[1][1][1]; c.v[0][0][0] = true;  boolean val1 = get();
   278                 c.v = new boolean[1][1][1]; c.v[0][0][0] = true;  boolean val1 = get();
   280                                             c.v[0][0][0] = false; boolean val2 = get();
   279                                             c.v[0][0][0] = false; boolean val2 = get();
   281                 assertEquals(val1, true);
   280                 assertEquals(val1, true);
   282                 assertEquals(val2, (isServerWithStable ? true : false));
   281                 assertEquals(val2, (isStableEnabled ? true : false));
   283 
   282 
   284                 c.v = new boolean[1][1][1]; c.v[0][0][0] = false; boolean val3 = get();
   283                 c.v = new boolean[1][1][1]; c.v[0][0][0] = false; boolean val3 = get();
   285                 assertEquals(val3, (isServerWithStable ? true : false));
   284                 assertEquals(val3, (isStableEnabled ? true : false));
   286 
   285 
   287                 c.v[0] = new boolean[1][1]; c.v[0][0][0] = false; boolean val4 = get();
   286                 c.v[0] = new boolean[1][1]; c.v[0][0][0] = false; boolean val4 = get();
   288                 assertEquals(val4, (isServerWithStable ? true : false));
   287                 assertEquals(val4, (isStableEnabled ? true : false));
   289 
   288 
   290                 c.v[0][0] = new boolean[1]; c.v[0][0][0] = false; boolean val5 = get();
   289                 c.v[0][0] = new boolean[1]; c.v[0][0][0] = false; boolean val5 = get();
   291                 assertEquals(val5, (isServerWithStable ? true : false));
   290                 assertEquals(val5, (isStableEnabled ? true : false));
   292             }
   291             }
   293 
   292 
   294             {
   293             {
   295                 c.v = new boolean[1][1][1]; boolean[] val1 = get1();
   294                 c.v = new boolean[1][1][1]; boolean[] val1 = get1();
   296                 c.v[0][0] = new boolean[1]; boolean[] val2 = get1();
   295                 c.v[0][0] = new boolean[1]; boolean[] val2 = get1();
   297                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   296                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   298             }
   297             }
   299 
   298 
   300             {
   299             {
   301                 c.v = new boolean[1][1][1]; boolean[][] val1 = get2();
   300                 c.v = new boolean[1][1][1]; boolean[][] val1 = get2();
   302                 c.v[0] = new boolean[1][1]; boolean[][] val2 = get2();
   301                 c.v[0] = new boolean[1][1]; boolean[][] val2 = get2();
   303                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   302                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   304             }
   303             }
   305 
   304 
   306             {
   305             {
   307                 c.v = new boolean[1][1][1]; boolean[][][] val1 = get3();
   306                 c.v = new boolean[1][1][1]; boolean[][][] val1 = get3();
   308                 c.v = new boolean[1][1][1]; boolean[][][] val2 = get3();
   307                 c.v = new boolean[1][1][1]; boolean[][][] val2 = get3();
   325         public static void test() throws Exception {
   324         public static void test() throws Exception {
   326             {
   325             {
   327                 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = true;  boolean val1 = get();
   326                 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = true;  boolean val1 = get();
   328                                                c.v[0][0][0][0] = false; boolean val2 = get();
   327                                                c.v[0][0][0][0] = false; boolean val2 = get();
   329                 assertEquals(val1, true);
   328                 assertEquals(val1, true);
   330                 assertEquals(val2, (isServerWithStable ? true : false));
   329                 assertEquals(val2, (isStableEnabled ? true : false));
   331 
   330 
   332                 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = false; boolean val3 = get();
   331                 c.v = new boolean[1][1][1][1]; c.v[0][0][0][0] = false; boolean val3 = get();
   333                 assertEquals(val3, (isServerWithStable ? true : false));
   332                 assertEquals(val3, (isStableEnabled ? true : false));
   334 
   333 
   335                 c.v[0] = new boolean[1][1][1]; c.v[0][0][0][0] = false; boolean val4 = get();
   334                 c.v[0] = new boolean[1][1][1]; c.v[0][0][0][0] = false; boolean val4 = get();
   336                 assertEquals(val4, (isServerWithStable ? true : false));
   335                 assertEquals(val4, (isStableEnabled ? true : false));
   337 
   336 
   338                 c.v[0][0] = new boolean[1][1]; c.v[0][0][0][0] = false; boolean val5 = get();
   337                 c.v[0][0] = new boolean[1][1]; c.v[0][0][0][0] = false; boolean val5 = get();
   339                 assertEquals(val5, (isServerWithStable ? true : false));
   338                 assertEquals(val5, (isStableEnabled ? true : false));
   340 
   339 
   341                 c.v[0][0][0] = new boolean[1]; c.v[0][0][0][0] = false; boolean val6 = get();
   340                 c.v[0][0][0] = new boolean[1]; c.v[0][0][0][0] = false; boolean val6 = get();
   342                 assertEquals(val6, (isServerWithStable ? true : false));
   341                 assertEquals(val6, (isStableEnabled ? true : false));
   343             }
   342             }
   344 
   343 
   345             {
   344             {
   346                 c.v = new boolean[1][1][1][1]; boolean[] val1 = get1();
   345                 c.v = new boolean[1][1][1][1]; boolean[] val1 = get1();
   347                 c.v[0][0][0] = new boolean[1]; boolean[] val2 = get1();
   346                 c.v[0][0][0] = new boolean[1]; boolean[] val2 = get1();
   348                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   347                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   349             }
   348             }
   350 
   349 
   351             {
   350             {
   352                 c.v = new boolean[1][1][1][1]; boolean[][] val1 = get2();
   351                 c.v = new boolean[1][1][1][1]; boolean[][] val1 = get2();
   353                 c.v[0][0] = new boolean[1][1]; boolean[][] val2 = get2();
   352                 c.v[0][0] = new boolean[1][1]; boolean[][] val2 = get2();
   354                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   353                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   355             }
   354             }
   356 
   355 
   357             {
   356             {
   358                 c.v = new boolean[1][1][1][1]; boolean[][][] val1 = get3();
   357                 c.v = new boolean[1][1][1][1]; boolean[][][] val1 = get3();
   359                 c.v[0] = new boolean[1][1][1]; boolean[][][] val2 = get3();
   358                 c.v[0] = new boolean[1][1][1]; boolean[][][] val2 = get3();
   360                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   359                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   361             }
   360             }
   362 
   361 
   363             {
   362             {
   364                 c.v = new boolean[1][1][1][1]; boolean[][][][] val1 = get4();
   363                 c.v = new boolean[1][1][1][1]; boolean[][][][] val1 = get4();
   365                 c.v = new boolean[1][1][1][1]; boolean[][][][] val2 = get4();
   364                 c.v = new boolean[1][1][1][1]; boolean[][][][] val2 = get4();
   418 
   417 
   419             {
   418             {
   420                 c.v = new boolean[1][1]; c.v[0] = new boolean[0]; boolean[] val1 = get1();
   419                 c.v = new boolean[1][1]; c.v[0] = new boolean[0]; boolean[] val1 = get1();
   421                                          c.v[0] = new boolean[0]; boolean[] val2 = get1();
   420                                          c.v[0] = new boolean[0]; boolean[] val2 = get1();
   422 
   421 
   423                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   422                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   424             }
   423             }
   425 
   424 
   426             {
   425             {
   427                 c.v = new boolean[0][0]; Object[] val1 = get2();
   426                 c.v = new boolean[0][0]; Object[] val1 = get2();
   428                 c.v = new boolean[0][0]; Object[] val2 = get2();
   427                 c.v = new boolean[0][0]; Object[] val2 = get2();
   454 
   453 
   455             {
   454             {
   456                 c.v = new boolean[1][1][1]; c.v[0][0] = new boolean[0]; boolean[] val1 = get1();
   455                 c.v = new boolean[1][1][1]; c.v[0][0] = new boolean[0]; boolean[] val1 = get1();
   457                                             c.v[0][0] = new boolean[0]; boolean[] val2 = get1();
   456                                             c.v[0][0] = new boolean[0]; boolean[] val2 = get1();
   458 
   457 
   459                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   458                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   460             }
   459             }
   461 
   460 
   462             {
   461             {
   463                 c.v = new boolean[1][1][1]; c.v[0] = new boolean[0][0]; boolean[][] val1 = get2();
   462                 c.v = new boolean[1][1][1]; c.v[0] = new boolean[0][0]; boolean[][] val1 = get2();
   464                                             c.v[0] = new boolean[0][0]; boolean[][] val2 = get2();
   463                                             c.v[0] = new boolean[0][0]; boolean[][] val2 = get2();
   465 
   464 
   466                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   465                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   467             }
   466             }
   468 
   467 
   469             {
   468             {
   470                 c.v = new boolean[0][0][0]; Object[][] val1 = get3();
   469                 c.v = new boolean[0][0][0]; Object[][] val1 = get3();
   471                 c.v = new boolean[0][0][0]; Object[][] val2 = get3();
   470                 c.v = new boolean[0][0][0]; Object[][] val2 = get3();
   596                 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v;
   595                 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v;
   597                                elem.a = true;  boolean val1 = get(); boolean val2 = get1();
   596                                elem.a = true;  boolean val1 = get(); boolean val2 = get1();
   598                                elem.a = false; boolean val3 = get(); boolean val4 = get1();
   597                                elem.a = false; boolean val3 = get(); boolean val4 = get1();
   599 
   598 
   600                 assertEquals(val1, true);
   599                 assertEquals(val1, true);
   601                 assertEquals(val3, (isServerWithStable ? true : false));
   600                 assertEquals(val3, (isStableEnabled ? true : false));
   602 
   601 
   603                 assertEquals(val2, true);
   602                 assertEquals(val2, true);
   604                 assertEquals(val4, false);
   603                 assertEquals(val4, false);
   605             }
   604             }
   606         }
   605         }