jdk/test/java/lang/invoke/VarHandles/VarHandleTestAccessString.java
changeset 37719 add11bc0e6e2
parent 37668 34a002e5168a
child 38328 40435a469d25
child 38358 cb99c6d2af1b
equal deleted inserted replaced
37718:79b158dae903 37719:add11bc0e6e2
   102         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
   102         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
   103         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
   103         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
   104         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
   104         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
   105         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
   105         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
   106         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
   106         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
       
   107         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_VOLATILE));
   107         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_ACQUIRE));
   108         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_ACQUIRE));
   108         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
   109         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
   109         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
   110         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
   110 
   111 
   111         assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
   112         assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
   433             assertEquals(r, true, "weakCompareAndSetRelease String");
   434             assertEquals(r, true, "weakCompareAndSetRelease String");
   434             String x = (String) vh.get(recv);
   435             String x = (String) vh.get(recv);
   435             assertEquals(x, "bar", "weakCompareAndSetRelease String");
   436             assertEquals(x, "bar", "weakCompareAndSetRelease String");
   436         }
   437         }
   437 
   438 
       
   439         {
       
   440             boolean r = vh.weakCompareAndSetVolatile(recv, "bar", "foo");
       
   441             assertEquals(r, true, "weakCompareAndSetVolatile String");
       
   442             String x = (String) vh.get(recv);
       
   443             assertEquals(x, "foo", "weakCompareAndSetVolatile String value");
       
   444         }
       
   445 
   438         // Compare set and get
   446         // Compare set and get
   439         {
   447         {
   440             String o = (String) vh.getAndSet(recv, "foo");
   448             String o = (String) vh.getAndSet(recv, "bar");
   441             assertEquals(o, "bar", "getAndSet String");
   449             assertEquals(o, "foo", "getAndSet String");
   442             String x = (String) vh.get(recv);
   450             String x = (String) vh.get(recv);
   443             assertEquals(x, "foo", "getAndSet String value");
   451             assertEquals(x, "bar", "getAndSet String value");
   444         }
   452         }
   445 
   453 
   446     }
   454     }
   447 
   455 
   448     static void testInstanceFieldUnsupported(VarHandleTestAccessString recv, VarHandle vh) {
   456     static void testInstanceFieldUnsupported(VarHandleTestAccessString recv, VarHandle vh) {
   559             String x = (String) vh.get();
   567             String x = (String) vh.get();
   560             assertEquals(x, "foo", "weakCompareAndSetAcquire String");
   568             assertEquals(x, "foo", "weakCompareAndSetAcquire String");
   561         }
   569         }
   562 
   570 
   563         {
   571         {
   564             boolean r = (boolean) vh.weakCompareAndSetRelease( "foo", "bar");
   572             boolean r = (boolean) vh.weakCompareAndSetRelease("foo", "bar");
   565             assertEquals(r, true, "weakCompareAndSetRelease String");
   573             assertEquals(r, true, "weakCompareAndSetRelease String");
   566             String x = (String) vh.get();
   574             String x = (String) vh.get();
   567             assertEquals(x, "bar", "weakCompareAndSetRelease String");
   575             assertEquals(x, "bar", "weakCompareAndSetRelease String");
   568         }
   576         }
   569 
   577 
       
   578         {
       
   579             boolean r = (boolean) vh.weakCompareAndSetVolatile("bar", "foo");
       
   580             assertEquals(r, true, "weakCompareAndSetVolatile String");
       
   581             String x = (String) vh.get();
       
   582             assertEquals(x, "foo", "weakCompareAndSetVolatile String value");
       
   583         }
       
   584 
   570         // Compare set and get
   585         // Compare set and get
   571         {
   586         {
   572             String o = (String) vh.getAndSet( "foo");
   587             String o = (String) vh.getAndSet( "bar");
   573             assertEquals(o, "bar", "getAndSet String");
   588             assertEquals(o, "foo", "getAndSet String");
   574             String x = (String) vh.get();
   589             String x = (String) vh.get();
   575             assertEquals(x, "foo", "getAndSet String value");
   590             assertEquals(x, "bar", "getAndSet String value");
   576         }
   591         }
   577 
   592 
   578     }
   593     }
   579 
   594 
   580     static void testStaticFieldUnsupported(VarHandle vh) {
   595     static void testStaticFieldUnsupported(VarHandle vh) {
   700                 assertEquals(r, true, "weakCompareAndSetRelease String");
   715                 assertEquals(r, true, "weakCompareAndSetRelease String");
   701                 String x = (String) vh.get(array, i);
   716                 String x = (String) vh.get(array, i);
   702                 assertEquals(x, "bar", "weakCompareAndSetRelease String");
   717                 assertEquals(x, "bar", "weakCompareAndSetRelease String");
   703             }
   718             }
   704 
   719 
       
   720             {
       
   721                 boolean r = vh.weakCompareAndSetVolatile(array, i, "bar", "foo");
       
   722                 assertEquals(r, true, "weakCompareAndSetVolatile String");
       
   723                 String x = (String) vh.get(array, i);
       
   724                 assertEquals(x, "foo", "weakCompareAndSetVolatile String value");
       
   725             }
       
   726 
   705             // Compare set and get
   727             // Compare set and get
   706             {
   728             {
   707                 String o = (String) vh.getAndSet(array, i, "foo");
   729                 String o = (String) vh.getAndSet(array, i, "bar");
   708                 assertEquals(o, "bar", "getAndSet String");
   730                 assertEquals(o, "foo", "getAndSet String");
   709                 String x = (String) vh.get(array, i);
   731                 String x = (String) vh.get(array, i);
   710                 assertEquals(x, "foo", "getAndSet String value");
   732                 assertEquals(x, "bar", "getAndSet String value");
   711             }
   733             }
   712 
   734 
   713         }
   735         }
   714     }
   736     }
   715 
   737 
   784             checkIOOBE(() -> {
   806             checkIOOBE(() -> {
   785                 boolean r = vh.weakCompareAndSet(array, ci, "foo", "bar");
   807                 boolean r = vh.weakCompareAndSet(array, ci, "foo", "bar");
   786             });
   808             });
   787 
   809 
   788             checkIOOBE(() -> {
   810             checkIOOBE(() -> {
       
   811                 boolean r = vh.weakCompareAndSetVolatile(array, ci, "foo", "bar");
       
   812             });
       
   813 
       
   814             checkIOOBE(() -> {
   789                 boolean r = vh.weakCompareAndSetAcquire(array, ci, "foo", "bar");
   815                 boolean r = vh.weakCompareAndSetAcquire(array, ci, "foo", "bar");
   790             });
   816             });
   791 
   817 
   792             checkIOOBE(() -> {
   818             checkIOOBE(() -> {
   793                 boolean r = vh.weakCompareAndSetRelease(array, ci, "foo", "bar");
   819                 boolean r = vh.weakCompareAndSetRelease(array, ci, "foo", "bar");