hotspot/test/compiler/stable/TestStableObject.java
changeset 36604 e9c073b0c19e
parent 35099 982950884444
child 36616 5172e3dd60f2
equal deleted inserted replaced
36603:0bc3ad031d60 36604:e9c073b0c19e
    87 
    87 
    88 import java.lang.reflect.InvocationTargetException;
    88 import java.lang.reflect.InvocationTargetException;
    89 
    89 
    90 public class TestStableObject {
    90 public class TestStableObject {
    91     static final boolean isStableEnabled    = StableConfiguration.isStableEnabled;
    91     static final boolean isStableEnabled    = StableConfiguration.isStableEnabled;
    92     static final boolean isServerWithStable = StableConfiguration.isServerWithStable;
       
    93 
    92 
    94     public static void main(String[] args) throws Exception {
    93     public static void main(String[] args) throws Exception {
    95         run(DefaultValue.class);
    94         run(DefaultValue.class);
    96         run(ObjectStable.class);
    95         run(ObjectStable.class);
    97         run(DefaultStaticValue.class);
    96         run(DefaultStaticValue.class);
   210         public static void test() throws Exception {
   209         public static void test() throws Exception {
   211             {
   210             {
   212                 c.v = new Object[1]; c.v[0] = Values.A; Object val1 = get();
   211                 c.v = new Object[1]; c.v[0] = Values.A; Object val1 = get();
   213                                      c.v[0] = Values.B; Object val2 = get();
   212                                      c.v[0] = Values.B; Object val2 = get();
   214                 assertEquals(val1, Values.A);
   213                 assertEquals(val1, Values.A);
   215                 assertEquals(val2, (isServerWithStable ? Values.A : Values.B));
   214                 assertEquals(val2, (isStableEnabled ? Values.A : Values.B));
   216 
   215 
   217                 c.v = new Object[1]; c.v[0] = Values.C; Object val3 = get();
   216                 c.v = new Object[1]; c.v[0] = Values.C; Object val3 = get();
   218                 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   217                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   219                                                     : Values.C));
   218                                                     : Values.C));
   220             }
   219             }
   221 
   220 
   222             {
   221             {
   223                 c.v = new Object[20]; c.v[10] = Values.A; Object val1 = get1();
   222                 c.v = new Object[20]; c.v[10] = Values.A; Object val1 = get1();
   224                                       c.v[10] = Values.B; Object val2 = get1();
   223                                       c.v[10] = Values.B; Object val2 = get1();
   225                 assertEquals(val1, Values.A);
   224                 assertEquals(val1, Values.A);
   226                 assertEquals(val2, (isServerWithStable ? Values.A : Values.B));
   225                 assertEquals(val2, (isStableEnabled ? Values.A : Values.B));
   227 
   226 
   228                 c.v = new Object[20]; c.v[10] = Values.C; Object val3 = get1();
   227                 c.v = new Object[20]; c.v[10] = Values.C; Object val3 = get1();
   229                 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   228                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   230                                                     : Values.C));
   229                                                     : Values.C));
   231             }
   230             }
   232 
   231 
   233             {
   232             {
   234                 c.v = new Object[1]; Object[] val1 = get2();
   233                 c.v = new Object[1]; Object[] val1 = get2();
   250         public static void test() throws Exception {
   249         public static void test() throws Exception {
   251             {
   250             {
   252                 c.v = new Object[1][1]; c.v[0][0] = Values.A; Object val1 = get();
   251                 c.v = new Object[1][1]; c.v[0][0] = Values.A; Object val1 = get();
   253                                         c.v[0][0] = Values.B; Object val2 = get();
   252                                         c.v[0][0] = Values.B; Object val2 = get();
   254                 assertEquals(val1, Values.A);
   253                 assertEquals(val1, Values.A);
   255                 assertEquals(val2, (isServerWithStable ? Values.A : Values.B));
   254                 assertEquals(val2, (isStableEnabled ? Values.A : Values.B));
   256 
   255 
   257                 c.v = new Object[1][1]; c.v[0][0] = Values.C; Object val3 = get();
   256                 c.v = new Object[1][1]; c.v[0][0] = Values.C; Object val3 = get();
   258                 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   257                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   259                                                     : Values.C));
   258                                                     : Values.C));
   260 
   259 
   261                 c.v[0] = new Object[1]; c.v[0][0] = Values.D; Object val4 = get();
   260                 c.v[0] = new Object[1]; c.v[0][0] = Values.D; Object val4 = get();
   262                 assertEquals(val4, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   261                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   263                                                     : Values.D));
   262                                                     : Values.D));
   264             }
   263             }
   265 
   264 
   266             {
   265             {
   267                 c.v = new Object[1][1]; Object[] val1 = get1();
   266                 c.v = new Object[1][1]; Object[] val1 = get1();
   268                 c.v[0] = new Object[1]; Object[] val2 = get1();
   267                 c.v[0] = new Object[1]; Object[] val2 = get1();
   269                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   268                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   270             }
   269             }
   271 
   270 
   272             {
   271             {
   273                 c.v = new Object[1][1]; Object[][] val1 = get2();
   272                 c.v = new Object[1][1]; Object[][] val1 = get2();
   274                 c.v = new Object[1][1]; Object[][] val2 = get2();
   273                 c.v = new Object[1][1]; Object[][] val2 = get2();
   290         public static void test() throws Exception {
   289         public static void test() throws Exception {
   291             {
   290             {
   292                 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.A; Object val1 = get();
   291                 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.A; Object val1 = get();
   293                                            c.v[0][0][0] = Values.B; Object val2 = get();
   292                                            c.v[0][0][0] = Values.B; Object val2 = get();
   294                 assertEquals(val1, Values.A);
   293                 assertEquals(val1, Values.A);
   295                 assertEquals(val2, (isServerWithStable ? Values.A : Values.B));
   294                 assertEquals(val2, (isStableEnabled ? Values.A : Values.B));
   296 
   295 
   297                 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.C; Object val3 = get();
   296                 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.C; Object val3 = get();
   298                 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   297                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   299                                                     : Values.C));
   298                                                     : Values.C));
   300 
   299 
   301                 c.v[0] = new Object[1][1]; c.v[0][0][0] = Values.D; Object val4 = get();
   300                 c.v[0] = new Object[1][1]; c.v[0][0][0] = Values.D; Object val4 = get();
   302                 assertEquals(val4, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   301                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   303                                                     : Values.D));
   302                                                     : Values.D));
   304 
   303 
   305                 c.v[0][0] = new Object[1]; c.v[0][0][0] = Values.E; Object val5 = get();
   304                 c.v[0][0] = new Object[1]; c.v[0][0][0] = Values.E; Object val5 = get();
   306                 assertEquals(val5, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   305                 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   307                                                     : Values.E));
   306                                                     : Values.E));
   308             }
   307             }
   309 
   308 
   310             {
   309             {
   311                 c.v = new Object[1][1][1]; Object[] val1 = get1();
   310                 c.v = new Object[1][1][1]; Object[] val1 = get1();
   312                 c.v[0][0] = new Object[1]; Object[] val2 = get1();
   311                 c.v[0][0] = new Object[1]; Object[] val2 = get1();
   313                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   312                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   314             }
   313             }
   315 
   314 
   316             {
   315             {
   317                 c.v = new Object[1][1][1]; Object[][] val1 = get2();
   316                 c.v = new Object[1][1][1]; Object[][] val1 = get2();
   318                 c.v[0] = new Object[1][1]; Object[][] val2 = get2();
   317                 c.v[0] = new Object[1][1]; Object[][] val2 = get2();
   319                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   318                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   320             }
   319             }
   321 
   320 
   322             {
   321             {
   323                 c.v = new Object[1][1][1]; Object[][][] val1 = get3();
   322                 c.v = new Object[1][1][1]; Object[][][] val1 = get3();
   324                 c.v = new Object[1][1][1]; Object[][][] val2 = get3();
   323                 c.v = new Object[1][1][1]; Object[][][] val2 = get3();
   341         public static void test() throws Exception {
   340         public static void test() throws Exception {
   342             {
   341             {
   343                 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.A; Object val1 = get();
   342                 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.A; Object val1 = get();
   344                                               c.v[0][0][0][0] = Values.B; Object val2 = get();
   343                                               c.v[0][0][0][0] = Values.B; Object val2 = get();
   345                 assertEquals(val1, Values.A);
   344                 assertEquals(val1, Values.A);
   346                 assertEquals(val2, (isServerWithStable ? Values.A : Values.B));
   345                 assertEquals(val2, (isStableEnabled ? Values.A : Values.B));
   347 
   346 
   348                 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.C; Object val3 = get();
   347                 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.C; Object val3 = get();
   349                 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   348                 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   350                                                     : Values.C));
   349                                                     : Values.C));
   351 
   350 
   352                 c.v[0] = new Object[1][1][1]; c.v[0][0][0][0] = Values.D; Object val4 = get();
   351                 c.v[0] = new Object[1][1][1]; c.v[0][0][0][0] = Values.D; Object val4 = get();
   353                 assertEquals(val4, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   352                 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   354                                                     : Values.D));
   353                                                     : Values.D));
   355 
   354 
   356                 c.v[0][0] = new Object[1][1]; c.v[0][0][0][0] = Values.E; Object val5 = get();
   355                 c.v[0][0] = new Object[1][1]; c.v[0][0][0][0] = Values.E; Object val5 = get();
   357                 assertEquals(val5, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   356                 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   358                                                     : Values.E));
   357                                                     : Values.E));
   359 
   358 
   360                 c.v[0][0][0] = new Object[1]; c.v[0][0][0][0] = Values.F; Object val6 = get();
   359                 c.v[0][0][0] = new Object[1]; c.v[0][0][0][0] = Values.F; Object val6 = get();
   361                 assertEquals(val6, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B)
   360                 assertEquals(val6, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B)
   362                                                     : Values.F));
   361                                                     : Values.F));
   363             }
   362             }
   364 
   363 
   365             {
   364             {
   366                 c.v = new Object[1][1][1][1]; Object[] val1 = get1();
   365                 c.v = new Object[1][1][1][1]; Object[] val1 = get1();
   367                 c.v[0][0][0] = new Object[1]; Object[] val2 = get1();
   366                 c.v[0][0][0] = new Object[1]; Object[] val2 = get1();
   368                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   367                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   369             }
   368             }
   370 
   369 
   371             {
   370             {
   372                 c.v = new Object[1][1][1][1]; Object[][] val1 = get2();
   371                 c.v = new Object[1][1][1][1]; Object[][] val1 = get2();
   373                 c.v[0][0] = new Object[1][1]; Object[][] val2 = get2();
   372                 c.v[0][0] = new Object[1][1]; Object[][] val2 = get2();
   374                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   373                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   375             }
   374             }
   376 
   375 
   377             {
   376             {
   378                 c.v = new Object[1][1][1][1]; Object[][][] val1 = get3();
   377                 c.v = new Object[1][1][1][1]; Object[][][] val1 = get3();
   379                 c.v[0] = new Object[1][1][1]; Object[][][] val2 = get3();
   378                 c.v[0] = new Object[1][1][1]; Object[][][] val2 = get3();
   380                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   379                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   381             }
   380             }
   382 
   381 
   383             {
   382             {
   384                 c.v = new Object[1][1][1][1]; Object[][][][] val1 = get4();
   383                 c.v = new Object[1][1][1][1]; Object[][][][] val1 = get4();
   385                 c.v = new Object[1][1][1][1]; Object[][][][] val2 = get4();
   384                 c.v = new Object[1][1][1][1]; Object[][][][] val2 = get4();
   435 
   434 
   436             {
   435             {
   437                 c.v = new Object[1][1]; c.v[0] = new Object[0]; Object[] val1 = get1();
   436                 c.v = new Object[1][1]; c.v[0] = new Object[0]; Object[] val1 = get1();
   438                                      c.v[0] = new Object[0]; Object[] val2 = get1();
   437                                      c.v[0] = new Object[0]; Object[] val2 = get1();
   439 
   438 
   440                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   439                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   441             }
   440             }
   442 
   441 
   443             {
   442             {
   444                 c.v = new Object[0][0]; Object[] val1 = get2();
   443                 c.v = new Object[0][0]; Object[] val1 = get2();
   445                 c.v = new Object[0][0]; Object[] val2 = get2();
   444                 c.v = new Object[0][0]; Object[] val2 = get2();
   471 
   470 
   472             {
   471             {
   473                 c.v = new Object[1][1][1]; c.v[0][0] = new Object[0]; Object[] val1 = get1();
   472                 c.v = new Object[1][1][1]; c.v[0][0] = new Object[0]; Object[] val1 = get1();
   474                                            c.v[0][0] = new Object[0]; Object[] val2 = get1();
   473                                            c.v[0][0] = new Object[0]; Object[] val2 = get1();
   475 
   474 
   476                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   475                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   477             }
   476             }
   478 
   477 
   479             {
   478             {
   480                 c.v = new Object[1][1][1]; c.v[0] = new Object[0][0]; Object[][] val1 = get2();
   479                 c.v = new Object[1][1][1]; c.v[0] = new Object[0][0]; Object[][] val1 = get2();
   481                                            c.v[0] = new Object[0][0]; Object[][] val2 = get2();
   480                                            c.v[0] = new Object[0][0]; Object[][] val2 = get2();
   482 
   481 
   483                 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2)));
   482                 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2)));
   484             }
   483             }
   485 
   484 
   486             {
   485             {
   487                 c.v = new Object[0][0][0]; Object[][] val1 = get3();
   486                 c.v = new Object[0][0][0]; Object[][] val1 = get3();
   488                 c.v = new Object[0][0][0]; Object[][] val2 = get3();
   487                 c.v = new Object[0][0][0]; Object[][] val2 = get3();
   613                 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v;
   612                 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v;
   614                                elem.a = Values.A; Object val1 = get(); Object val2 = get1();
   613                                elem.a = Values.A; Object val1 = get(); Object val2 = get1();
   615                                elem.a = Values.B; Object val3 = get(); Object val4 = get1();
   614                                elem.a = Values.B; Object val3 = get(); Object val4 = get1();
   616 
   615 
   617                 assertEquals(val1, Values.A);
   616                 assertEquals(val1, Values.A);
   618                 assertEquals(val3, (isServerWithStable ? Values.A : Values.B));
   617                 assertEquals(val3, (isStableEnabled ? Values.A : Values.B));
   619 
   618 
   620                 assertEquals(val2, Values.A);
   619                 assertEquals(val2, Values.A);
   621                 assertEquals(val4, Values.B);
   620                 assertEquals(val4, Values.B);
   622             }
   621             }
   623         }
   622         }