hotspot/test/compiler/stable/TestStableInt.java
changeset 39422 52e7ddc77845
parent 38207 2ed792c9481d
child 40059 c2304140ed64
equal deleted inserted replaced
39421:a9652c919db8 39422:52e7ddc77845
    98         public @Stable int v;
    98         public @Stable int v;
    99 
    99 
   100         public static final DefaultValue c = new DefaultValue();
   100         public static final DefaultValue c = new DefaultValue();
   101         public static int get() { return c.v; }
   101         public static int get() { return c.v; }
   102         public static void test() throws Exception {
   102         public static void test() throws Exception {
   103             int val1 = get();
   103                      int val1 = get();
   104             c.v = 1; int val2 = get();
   104             c.v = 1; int val2 = get();
   105             assertEquals(val1, 0);
   105             assertEquals(val1, 0);
   106             assertEquals(val2, 1);
   106             assertEquals(val2, 1);
   107         }
   107         }
   108     }
   108     }
   128         public static @Stable int v;
   128         public static @Stable int v;
   129 
   129 
   130         public static final DefaultStaticValue c = new DefaultStaticValue();
   130         public static final DefaultStaticValue c = new DefaultStaticValue();
   131         public static int get() { return c.v; }
   131         public static int get() { return c.v; }
   132         public static void test() throws Exception {
   132         public static void test() throws Exception {
   133             int val1 = get();
   133                      int val1 = get();
   134             c.v = 1; int val2 = get();
   134             c.v = 1; int val2 = get();
   135             assertEquals(val1, 0);
   135             assertEquals(val1, 0);
   136             assertEquals(val2, 1);
   136             assertEquals(val2, 1);
   137         }
   137         }
   138     }
   138     }
   178         public static int get1() { return c.v[10]; }
   178         public static int get1() { return c.v[10]; }
   179         public static int[] get2() { return c.v; }
   179         public static int[] get2() { return c.v; }
   180         public static void test() throws Exception {
   180         public static void test() throws Exception {
   181             {
   181             {
   182                 c.v = new int[1]; c.v[0] = 1; int val1 = get();
   182                 c.v = new int[1]; c.v[0] = 1; int val1 = get();
   183                 c.v[0] = 2; int val2 = get();
   183                                   c.v[0] = 2; int val2 = get();
   184                 assertEquals(val1, 1);
   184                 assertEquals(val1, 1);
   185                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   185                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   186 
   186 
   187                 c.v = new int[1]; c.v[0] = 3; int val3 = get();
   187                 c.v = new int[1]; c.v[0] = 3; int val3 = get();
   188                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   188                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   189                         : 3));
   189                                                     : 3));
   190             }
   190             }
   191 
   191 
   192             {
   192             {
   193                 c.v = new int[20]; c.v[10] = 1; int val1 = get1();
   193                 c.v = new int[20]; c.v[10] = 1; int val1 = get1();
   194                 c.v[10] = 2; int val2 = get1();
   194                                    c.v[10] = 2; int val2 = get1();
   195                 assertEquals(val1, 1);
   195                 assertEquals(val1, 1);
   196                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   196                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   197 
   197 
   198                 c.v = new int[20]; c.v[10] = 3; int val3 = get1();
   198                 c.v = new int[20]; c.v[10] = 3; int val3 = get1();
   199                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   199                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   200                         : 3));
   200                                                     : 3));
   201             }
   201             }
   202 
   202 
   203             {
   203             {
   204                 c.v = new int[1]; int[] val1 = get2();
   204                 c.v = new int[1]; int[] val1 = get2();
   205                 c.v = new int[1]; int[] val2 = get2();
   205                 c.v = new int[1]; int[] val2 = get2();
   218         public static int[] get1() { return c.v[0]; }
   218         public static int[] get1() { return c.v[0]; }
   219         public static int[][] get2() { return c.v; }
   219         public static int[][] get2() { return c.v; }
   220         public static void test() throws Exception {
   220         public static void test() throws Exception {
   221             {
   221             {
   222                 c.v = new int[1][1]; c.v[0][0] = 1; int val1 = get();
   222                 c.v = new int[1][1]; c.v[0][0] = 1; int val1 = get();
   223                 c.v[0][0] = 2; int val2 = get();
   223                                      c.v[0][0] = 2; int val2 = get();
   224                 assertEquals(val1, 1);
   224                 assertEquals(val1, 1);
   225                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   225                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   226 
   226 
   227                 c.v = new int[1][1]; c.v[0][0] = 3; int val3 = get();
   227                 c.v = new int[1][1]; c.v[0][0] = 3; int val3 = get();
   228                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   228                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   229                         : 3));
   229                                                     : 3));
   230 
   230 
   231                 c.v[0] = new int[1]; c.v[0][0] = 4; int val4 = get();
   231                 c.v[0] = new int[1]; c.v[0][0] = 4; int val4 = get();
   232                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   232                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   233                         : 4));
   233                                                     : 4));
   234             }
   234             }
   235 
   235 
   236             {
   236             {
   237                 c.v = new int[1][1]; int[] val1 = get1();
   237                 c.v = new int[1][1]; int[] val1 = get1();
   238                 c.v[0] = new int[1]; int[] val2 = get1();
   238                 c.v[0] = new int[1]; int[] val2 = get1();
   258         public static int[][] get2() { return c.v[0]; }
   258         public static int[][] get2() { return c.v[0]; }
   259         public static int[][][] get3() { return c.v; }
   259         public static int[][][] get3() { return c.v; }
   260         public static void test() throws Exception {
   260         public static void test() throws Exception {
   261             {
   261             {
   262                 c.v = new int[1][1][1]; c.v[0][0][0] = 1; int val1 = get();
   262                 c.v = new int[1][1][1]; c.v[0][0][0] = 1; int val1 = get();
   263                 c.v[0][0][0] = 2; int val2 = get();
   263                                         c.v[0][0][0] = 2; int val2 = get();
   264                 assertEquals(val1, 1);
   264                 assertEquals(val1, 1);
   265                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   265                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   266 
   266 
   267                 c.v = new int[1][1][1]; c.v[0][0][0] = 3; int val3 = get();
   267                 c.v = new int[1][1][1]; c.v[0][0][0] = 3; int val3 = get();
   268                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   268                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   269                         : 3));
   269                                                     : 3));
   270 
   270 
   271                 c.v[0] = new int[1][1]; c.v[0][0][0] = 4; int val4 = get();
   271                 c.v[0] = new int[1][1]; c.v[0][0][0] = 4; int val4 = get();
   272                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   272                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   273                         : 4));
   273                                                     : 4));
   274 
   274 
   275                 c.v[0][0] = new int[1]; c.v[0][0][0] = 5; int val5 = get();
   275                 c.v[0][0] = new int[1]; c.v[0][0][0] = 5; int val5 = get();
   276                 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   276                 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   277                         : 5));
   277                                                     : 5));
   278             }
   278             }
   279 
   279 
   280             {
   280             {
   281                 c.v = new int[1][1][1]; int[] val1 = get1();
   281                 c.v = new int[1][1][1]; int[] val1 = get1();
   282                 c.v[0][0] = new int[1]; int[] val2 = get1();
   282                 c.v[0][0] = new int[1]; int[] val2 = get1();
   309         public static int[][][] get3() { return c.v[0]; }
   309         public static int[][][] get3() { return c.v[0]; }
   310         public static int[][][][] get4() { return c.v; }
   310         public static int[][][][] get4() { return c.v; }
   311         public static void test() throws Exception {
   311         public static void test() throws Exception {
   312             {
   312             {
   313                 c.v = new int[1][1][1][1]; c.v[0][0][0][0] = 1; int val1 = get();
   313                 c.v = new int[1][1][1][1]; c.v[0][0][0][0] = 1; int val1 = get();
   314                 c.v[0][0][0][0] = 2; int val2 = get();
   314                                            c.v[0][0][0][0] = 2; int val2 = get();
   315                 assertEquals(val1, 1);
   315                 assertEquals(val1, 1);
   316                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   316                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   317 
   317 
   318                 c.v = new int[1][1][1][1]; c.v[0][0][0][0] = 3; int val3 = get();
   318                 c.v = new int[1][1][1][1]; c.v[0][0][0][0] = 3; int val3 = get();
   319                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   319                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   320                         : 3));
   320                                                     : 3));
   321 
   321 
   322                 c.v[0] = new int[1][1][1]; c.v[0][0][0][0] = 4; int val4 = get();
   322                 c.v[0] = new int[1][1][1]; c.v[0][0][0][0] = 4; int val4 = get();
   323                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   323                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   324                         : 4));
   324                                                     : 4));
   325 
   325 
   326                 c.v[0][0] = new int[1][1]; c.v[0][0][0][0] = 5; int val5 = get();
   326                 c.v[0][0] = new int[1][1]; c.v[0][0][0][0] = 5; int val5 = get();
   327                 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   327                 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   328                         : 5));
   328                                                     : 5));
   329 
   329 
   330                 c.v[0][0][0] = new int[1]; c.v[0][0][0][0] = 6; int val6 = get();
   330                 c.v[0][0][0] = new int[1]; c.v[0][0][0][0] = 6; int val6 = get();
   331                 assertEquals(val6, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   331                 assertEquals(val6, (isStableEnabled ? (isStableEnabled ? 1 : 2)
   332                         : 6));
   332                                                     : 6));
   333             }
   333             }
   334 
   334 
   335             {
   335             {
   336                 c.v = new int[1][1][1][1]; int[] val1 = get1();
   336                 c.v = new int[1][1][1][1]; int[] val1 = get1();
   337                 c.v[0][0][0] = new int[1]; int[] val2 = get1();
   337                 c.v[0][0][0] = new int[1]; int[] val2 = get1();
   368         public static int[] get1() { return (int[])c.v; }
   368         public static int[] get1() { return (int[])c.v; }
   369 
   369 
   370         public static void test() throws Exception {
   370         public static void test() throws Exception {
   371             {
   371             {
   372                 c.v = new int[1]; ((int[])c.v)[0] = 1; int val1 = get();
   372                 c.v = new int[1]; ((int[])c.v)[0] = 1; int val1 = get();
   373                 ((int[])c.v)[0] = 2; int val2 = get();
   373                                   ((int[])c.v)[0] = 2; int val2 = get();
   374 
   374 
   375                 assertEquals(val1, 1);
   375                 assertEquals(val1, 1);
   376                 assertEquals(val2, 2);
   376                 assertEquals(val2, 2);
   377             }
   377             }
   378 
   378 
   395         public static Object[] get2() { return c.v; }
   395         public static Object[] get2() { return c.v; }
   396 
   396 
   397         public static void test() throws Exception {
   397         public static void test() throws Exception {
   398             {
   398             {
   399                 c.v = new int[1][1]; ((int[][])c.v)[0][0] = 1; int val1 = get();
   399                 c.v = new int[1][1]; ((int[][])c.v)[0][0] = 1; int val1 = get();
   400                 ((int[][])c.v)[0][0] = 2; int val2 = get();
   400                                      ((int[][])c.v)[0][0] = 2; int val2 = get();
   401 
   401 
   402                 assertEquals(val1, 1);
   402                 assertEquals(val1, 1);
   403                 assertEquals(val2, 2);
   403                 assertEquals(val2, 2);
   404             }
   404             }
   405 
   405 
   406             {
   406             {
   407                 c.v = new int[1][1]; c.v[0] = new int[0]; int[] val1 = get1();
   407                 c.v = new int[1][1]; c.v[0] = new int[0]; int[] val1 = get1();
   408                 c.v[0] = new int[0]; int[] val2 = get1();
   408                                      c.v[0] = new int[0]; int[] val2 = get1();
   409 
   409 
   410                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   410                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   411             }
   411             }
   412 
   412 
   413             {
   413             {
   431         public static Object[][] get3() { return c.v; }
   431         public static Object[][] get3() { return c.v; }
   432 
   432 
   433         public static void test() throws Exception {
   433         public static void test() throws Exception {
   434             {
   434             {
   435                 c.v = new int[1][1][1]; ((int[][][])c.v)[0][0][0] = 1; int val1 = get();
   435                 c.v = new int[1][1][1]; ((int[][][])c.v)[0][0][0] = 1; int val1 = get();
   436                 ((int[][][])c.v)[0][0][0] = 2; int val2 = get();
   436                                         ((int[][][])c.v)[0][0][0] = 2; int val2 = get();
   437 
   437 
   438                 assertEquals(val1, 1);
   438                 assertEquals(val1, 1);
   439                 assertEquals(val2, 2);
   439                 assertEquals(val2, 2);
   440             }
   440             }
   441 
   441 
   442             {
   442             {
   443                 c.v = new int[1][1][1]; c.v[0][0] = new int[0]; int[] val1 = get1();
   443                 c.v = new int[1][1][1]; c.v[0][0] = new int[0]; int[] val1 = get1();
   444                 c.v[0][0] = new int[0]; int[] val2 = get1();
   444                                         c.v[0][0] = new int[0]; int[] val2 = get1();
   445 
   445 
   446                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   446                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   447             }
   447             }
   448 
   448 
   449             {
   449             {
   450                 c.v = new int[1][1][1]; c.v[0] = new int[0][0]; int[][] val1 = get2();
   450                 c.v = new int[1][1][1]; c.v[0] = new int[0][0]; int[][] val1 = get2();
   451                 c.v[0] = new int[0][0]; int[][] val2 = get2();
   451                                         c.v[0] = new int[0][0]; int[][] val2 = get2();
   452 
   452 
   453                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   453                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   454             }
   454             }
   455 
   455 
   456             {
   456             {
   476         public static int get1() { return get().a; }
   476         public static int get1() { return get().a; }
   477 
   477 
   478         public static void test() throws Exception {
   478         public static void test() throws Exception {
   479             {
   479             {
   480                 c.v = new A(); c.v.a = 1; A val1 = get();
   480                 c.v = new A(); c.v.a = 1; A val1 = get();
   481                 c.v.a = 2; A val2 = get();
   481                                c.v.a = 2; A val2 = get();
   482 
   482 
   483                 assertEquals(val1.a, 2);
   483                 assertEquals(val1.a, 2);
   484                 assertEquals(val2.a, 2);
   484                 assertEquals(val2.a, 2);
   485             }
   485             }
   486 
   486 
   487             {
   487             {
   488                 c.v = new A(); c.v.a = 1; int val1 = get1();
   488                 c.v = new A(); c.v.a = 1; int val1 = get1();
   489                 c.v.a = 2; int val2 = get1();
   489                                c.v.a = 2; int val2 = get1();
   490                 c.v = new A(); c.v.a = 3; int val3 = get1();
   490                 c.v = new A(); c.v.a = 3; int val3 = get1();
   491 
   491 
   492                 assertEquals(val1, 1);
   492                 assertEquals(val1, 1);
   493                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   493                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   494                 assertEquals(val3, (isStableEnabled ? 1 : 3));
   494                 assertEquals(val3, (isStableEnabled ? 1 : 3));
   510         public static int get1() { return get().a; }
   510         public static int get1() { return get().a; }
   511 
   511 
   512         public static void test() throws Exception {
   512         public static void test() throws Exception {
   513             {
   513             {
   514                 c.v = new A(); c.v.next = new A();   c.v.next.next  = c.v;
   514                 c.v = new A(); c.v.next = new A();   c.v.next.next  = c.v;
   515                 c.v.a = 1; c.v.next.a = 1; A val1 = get();
   515                                c.v.a = 1; c.v.next.a = 1; A val1 = get();
   516                 c.v.a = 2; c.v.next.a = 2; A val2 = get();
   516                                c.v.a = 2; c.v.next.a = 2; A val2 = get();
   517 
   517 
   518                 assertEquals(val1.a, 2);
   518                 assertEquals(val1.a, 2);
   519                 assertEquals(val2.a, 2);
   519                 assertEquals(val2.a, 2);
   520             }
   520             }
   521 
   521 
   522             {
   522             {
   523                 c.v = new A(); c.v.next = c.v;
   523                 c.v = new A(); c.v.next = c.v;
   524                 c.v.a = 1; int val1 = get1();
   524                                c.v.a = 1; int val1 = get1();
   525                 c.v.a = 2; int val2 = get1();
   525                                c.v.a = 2; int val2 = get1();
   526                 c.v = new A(); c.v.next = c.v;
   526                 c.v = new A(); c.v.next = c.v;
   527                 c.v.a = 3; int val3 = get1();
   527                                c.v.a = 3; int val3 = get1();
   528 
   528 
   529                 assertEquals(val1, 1);
   529                 assertEquals(val1, 1);
   530                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   530                 assertEquals(val2, (isStableEnabled ? 1 : 2));
   531                 assertEquals(val3, (isStableEnabled ? 1 : 3));
   531                 assertEquals(val3, (isStableEnabled ? 1 : 3));
   532             }
   532             }
   548         public static int get1() { return c.v.left.left.right.left.a; }
   548         public static int get1() { return c.v.left.left.right.left.a; }
   549 
   549 
   550         public static void test() throws Exception {
   550         public static void test() throws Exception {
   551             {
   551             {
   552                 c.v = new A(); c.v.left = c.v.right = c.v;
   552                 c.v = new A(); c.v.left = c.v.right = c.v;
   553                 c.v.a = 1; int val1 = get(); int val2 = get1();
   553                                c.v.a = 1; int val1 = get(); int val2 = get1();
   554                 c.v.a = 2; int val3 = get(); int val4 = get1();
   554                                c.v.a = 2; int val3 = get(); int val4 = get1();
   555 
   555 
   556                 assertEquals(val1, 1);
   556                 assertEquals(val1, 1);
   557                 assertEquals(val3, (isStableEnabled ? 1 : 2));
   557                 assertEquals(val3, (isStableEnabled ? 1 : 2));
   558 
   558 
   559                 assertEquals(val2, 1);
   559                 assertEquals(val2, 1);
   579 
   579 
   580         public static void test() throws Exception {
   580         public static void test() throws Exception {
   581             {
   581             {
   582                 A elem = new A();
   582                 A elem = new A();
   583                 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v;
   583                 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v;
   584                 elem.a = 1; int val1 = get(); int val2 = get1();
   584                                elem.a = 1; int val1 = get(); int val2 = get1();
   585                 elem.a = 2; int val3 = get(); int val4 = get1();
   585                                elem.a = 2; int val3 = get(); int val4 = get1();
   586 
   586 
   587                 assertEquals(val1, 1);
   587                 assertEquals(val1, 1);
   588                 assertEquals(val3, (isStableEnabled ? 1 : 2));
   588                 assertEquals(val3, (isStableEnabled ? 1 : 2));
   589 
   589 
   590                 assertEquals(val2, 1);
   590                 assertEquals(val2, 1);