< prev index next >

test/java/lang/invoke/VarHandles/VarHandleTestAccessString.java

Print this page




  89     }
  90 
  91     @Test(dataProvider = "varHandlesProvider")
  92     public void testIsAccessModeSupported(VarHandle vh) {
  93         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
  94         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
  95         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_VOLATILE));
  96         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_VOLATILE));
  97         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_ACQUIRE));
  98         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_RELEASE));
  99         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_OPAQUE));
 100         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_OPAQUE));
 101 
 102         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
 103         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
 104         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
 105         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
 106         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
 107         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));
 110         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
 111 
 112         assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
 113         assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.ADD_AND_GET));
 114     }
 115 
 116 
 117     @DataProvider
 118     public Object[][] typesProvider() throws Exception {
 119         List<Object[]> types = new ArrayList<>();
 120         types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessString.class)});
 121         types.add(new Object[] {vhStaticField, Arrays.asList()});
 122         types.add(new Object[] {vhArray, Arrays.asList(String[].class, int.class)});
 123 
 124         return types.stream().toArray(Object[][]::new);
 125     }
 126 
 127     @Test(dataProvider = "typesProvider")
 128     public void testTypes(VarHandle vh, List<Class<?>> pts) {
 129         assertEquals(vh.varType(), String.class);


 399             assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
 400             String x = (String) vh.get(recv);
 401             assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
 402         }
 403 
 404         {
 405             String r = (String) vh.compareAndExchangeRelease(recv, "bar", "foo");
 406             assertEquals(r, "bar", "success compareAndExchangeRelease String");
 407             String x = (String) vh.get(recv);
 408             assertEquals(x, "foo", "success compareAndExchangeRelease String value");
 409         }
 410 
 411         {
 412             String r = (String) vh.compareAndExchangeRelease(recv, "bar", "baz");
 413             assertEquals(r, "foo", "failing compareAndExchangeRelease String");
 414             String x = (String) vh.get(recv);
 415             assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
 416         }
 417 
 418         {
 419             boolean r = vh.weakCompareAndSet(recv, "foo", "bar");
 420             assertEquals(r, true, "weakCompareAndSet String");



 421             String x = (String) vh.get(recv);
 422             assertEquals(x, "bar", "weakCompareAndSet String value");
 423         }
 424 
 425         {
 426             boolean r = vh.weakCompareAndSetAcquire(recv, "bar", "foo");
 427             assertEquals(r, true, "weakCompareAndSetAcquire String");



 428             String x = (String) vh.get(recv);
 429             assertEquals(x, "foo", "weakCompareAndSetAcquire String");
 430         }
 431 
 432         {
 433             boolean r = vh.weakCompareAndSetRelease(recv, "foo", "bar");
 434             assertEquals(r, true, "weakCompareAndSetRelease String");



 435             String x = (String) vh.get(recv);
 436             assertEquals(x, "bar", "weakCompareAndSetRelease String");
 437         }
 438 
 439         // Compare set and get
 440         {
 441             String o = (String) vh.getAndSet(recv, "foo");
 442             assertEquals(o, "bar", "getAndSet String");
 443             String x = (String) vh.get(recv);
 444             assertEquals(x, "foo", "getAndSet String value");
 445         }
 446 
 447     }
 448 
 449     static void testInstanceFieldUnsupported(VarHandleTestAccessString recv, VarHandle vh) {
 450 
 451         checkUOE(() -> {
 452             String o = (String) vh.getAndAdd(recv, "foo");
 453         });
 454 


 531             assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
 532             String x = (String) vh.get();
 533             assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
 534         }
 535 
 536         {
 537             String r = (String) vh.compareAndExchangeRelease("bar", "foo");
 538             assertEquals(r, "bar", "success compareAndExchangeRelease String");
 539             String x = (String) vh.get();
 540             assertEquals(x, "foo", "success compareAndExchangeRelease String value");
 541         }
 542 
 543         {
 544             String r = (String) vh.compareAndExchangeRelease("bar", "baz");
 545             assertEquals(r, "foo", "failing compareAndExchangeRelease String");
 546             String x = (String) vh.get();
 547             assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
 548         }
 549 
 550         {
 551             boolean r = (boolean) vh.weakCompareAndSet("foo", "bar");
 552             assertEquals(r, true, "weakCompareAndSet String");



 553             String x = (String) vh.get();
 554             assertEquals(x, "bar", "weakCompareAndSet String value");
 555         }
 556 
 557         {
 558             boolean r = (boolean) vh.weakCompareAndSetAcquire("bar", "foo");
 559             assertEquals(r, true, "weakCompareAndSetAcquire String");



 560             String x = (String) vh.get();
 561             assertEquals(x, "foo", "weakCompareAndSetAcquire String");
 562         }
 563 
 564         {
 565             boolean r = (boolean) vh.weakCompareAndSetRelease( "foo", "bar");
 566             assertEquals(r, true, "weakCompareAndSetRelease String");



 567             String x = (String) vh.get();
 568             assertEquals(x, "bar", "weakCompareAndSetRelease String");
 569         }
 570 
 571         // Compare set and get
 572         {
 573             String o = (String) vh.getAndSet( "foo");
 574             assertEquals(o, "bar", "getAndSet String");
 575             String x = (String) vh.get();
 576             assertEquals(x, "foo", "getAndSet String value");
 577         }
 578 
 579     }
 580 
 581     static void testStaticFieldUnsupported(VarHandle vh) {
 582 
 583         checkUOE(() -> {
 584             String o = (String) vh.getAndAdd("foo");
 585         });
 586 


 666                 assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
 667                 String x = (String) vh.get(array, i);
 668                 assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
 669             }
 670 
 671             {
 672                 String r = (String) vh.compareAndExchangeRelease(array, i, "bar", "foo");
 673                 assertEquals(r, "bar", "success compareAndExchangeRelease String");
 674                 String x = (String) vh.get(array, i);
 675                 assertEquals(x, "foo", "success compareAndExchangeRelease String value");
 676             }
 677 
 678             {
 679                 String r = (String) vh.compareAndExchangeRelease(array, i, "bar", "baz");
 680                 assertEquals(r, "foo", "failing compareAndExchangeRelease String");
 681                 String x = (String) vh.get(array, i);
 682                 assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
 683             }
 684 
 685             {
 686                 boolean r = vh.weakCompareAndSet(array, i, "foo", "bar");
 687                 assertEquals(r, true, "weakCompareAndSet String");



 688                 String x = (String) vh.get(array, i);
 689                 assertEquals(x, "bar", "weakCompareAndSet String value");
 690             }
 691 
 692             {
 693                 boolean r = vh.weakCompareAndSetAcquire(array, i, "bar", "foo");
 694                 assertEquals(r, true, "weakCompareAndSetAcquire String");



 695                 String x = (String) vh.get(array, i);
 696                 assertEquals(x, "foo", "weakCompareAndSetAcquire String");
 697             }
 698 
 699             {
 700                 boolean r = vh.weakCompareAndSetRelease(array, i, "foo", "bar");
 701                 assertEquals(r, true, "weakCompareAndSetRelease String");



 702                 String x = (String) vh.get(array, i);
 703                 assertEquals(x, "bar", "weakCompareAndSetRelease String");
 704             }
 705 
 706             // Compare set and get
 707             {
 708                 String o = (String) vh.getAndSet(array, i, "foo");
 709                 assertEquals(o, "bar", "getAndSet String");
 710                 String x = (String) vh.get(array, i);
 711                 assertEquals(x, "foo", "getAndSet String value");
 712             }
 713 
 714         }
 715     }
 716 
 717     static void testArrayUnsupported(VarHandle vh) {
 718         String[] array = new String[10];
 719 
 720         int i = 0;
 721 




  89     }
  90 
  91     @Test(dataProvider = "varHandlesProvider")
  92     public void testIsAccessModeSupported(VarHandle vh) {
  93         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
  94         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
  95         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_VOLATILE));
  96         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_VOLATILE));
  97         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_ACQUIRE));
  98         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_RELEASE));
  99         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_OPAQUE));
 100         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_OPAQUE));
 101 
 102         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
 103         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
 104         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
 105         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
 106         assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
 107         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.GET_AND_SET));
 110 
 111         assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
 112         assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.ADD_AND_GET));
 113     }
 114 
 115 
 116     @DataProvider
 117     public Object[][] typesProvider() throws Exception {
 118         List<Object[]> types = new ArrayList<>();
 119         types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessString.class)});
 120         types.add(new Object[] {vhStaticField, Arrays.asList()});
 121         types.add(new Object[] {vhArray, Arrays.asList(String[].class, int.class)});
 122 
 123         return types.stream().toArray(Object[][]::new);
 124     }
 125 
 126     @Test(dataProvider = "typesProvider")
 127     public void testTypes(VarHandle vh, List<Class<?>> pts) {
 128         assertEquals(vh.varType(), String.class);


 398             assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
 399             String x = (String) vh.get(recv);
 400             assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
 401         }
 402 
 403         {
 404             String r = (String) vh.compareAndExchangeRelease(recv, "bar", "foo");
 405             assertEquals(r, "bar", "success compareAndExchangeRelease String");
 406             String x = (String) vh.get(recv);
 407             assertEquals(x, "foo", "success compareAndExchangeRelease String value");
 408         }
 409 
 410         {
 411             String r = (String) vh.compareAndExchangeRelease(recv, "bar", "baz");
 412             assertEquals(r, "foo", "failing compareAndExchangeRelease String");
 413             String x = (String) vh.get(recv);
 414             assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
 415         }
 416 
 417         {
 418             boolean success = false;
 419             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 420                 success = vh.weakCompareAndSet(recv, "foo", "bar");
 421             }
 422             assertEquals(success, true, "weakCompareAndSet String");
 423             String x = (String) vh.get(recv);
 424             assertEquals(x, "bar", "weakCompareAndSet String value");
 425         }
 426 
 427         {
 428             boolean success = false;
 429             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 430                 success = vh.weakCompareAndSetAcquire(recv, "bar", "foo");
 431             }
 432             assertEquals(success, true, "weakCompareAndSetAcquire String");
 433             String x = (String) vh.get(recv);
 434             assertEquals(x, "foo", "weakCompareAndSetAcquire String");
 435         }
 436 
 437         {
 438             boolean success = false;
 439             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 440                 success = vh.weakCompareAndSetRelease(recv, "foo", "bar");
 441             }
 442             assertEquals(success, true, "weakCompareAndSetRelease String");
 443             String x = (String) vh.get(recv);
 444             assertEquals(x, "bar", "weakCompareAndSetRelease String");
 445         }
 446 
 447         // Compare set and get
 448         {
 449             String o = (String) vh.getAndSet(recv, "foo");
 450             assertEquals(o, "bar", "getAndSet String");
 451             String x = (String) vh.get(recv);
 452             assertEquals(x, "foo", "getAndSet String value");
 453         }
 454 
 455     }
 456 
 457     static void testInstanceFieldUnsupported(VarHandleTestAccessString recv, VarHandle vh) {
 458 
 459         checkUOE(() -> {
 460             String o = (String) vh.getAndAdd(recv, "foo");
 461         });
 462 


 539             assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
 540             String x = (String) vh.get();
 541             assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
 542         }
 543 
 544         {
 545             String r = (String) vh.compareAndExchangeRelease("bar", "foo");
 546             assertEquals(r, "bar", "success compareAndExchangeRelease String");
 547             String x = (String) vh.get();
 548             assertEquals(x, "foo", "success compareAndExchangeRelease String value");
 549         }
 550 
 551         {
 552             String r = (String) vh.compareAndExchangeRelease("bar", "baz");
 553             assertEquals(r, "foo", "failing compareAndExchangeRelease String");
 554             String x = (String) vh.get();
 555             assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
 556         }
 557 
 558         {
 559             boolean success = false;
 560             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 561                 success = vh.weakCompareAndSet("foo", "bar");
 562             }
 563             assertEquals(success, true, "weakCompareAndSet String");
 564             String x = (String) vh.get();
 565             assertEquals(x, "bar", "weakCompareAndSet String value");
 566         }
 567 
 568         {
 569             boolean success = false;
 570             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 571                 success = vh.weakCompareAndSetAcquire("bar", "foo");
 572             }
 573             assertEquals(success, true, "weakCompareAndSetAcquire String");
 574             String x = (String) vh.get();
 575             assertEquals(x, "foo", "weakCompareAndSetAcquire String");
 576         }
 577 
 578         {
 579             boolean success = false;
 580             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 581                 success = vh.weakCompareAndSetRelease("foo", "bar");
 582             }
 583             assertEquals(success, true, "weakCompareAndSetRelease String");
 584             String x = (String) vh.get();
 585             assertEquals(x, "bar", "weakCompareAndSetRelease String");
 586         }
 587 
 588         // Compare set and get
 589         {
 590             String o = (String) vh.getAndSet( "foo");
 591             assertEquals(o, "bar", "getAndSet String");
 592             String x = (String) vh.get();
 593             assertEquals(x, "foo", "getAndSet String value");
 594         }
 595 
 596     }
 597 
 598     static void testStaticFieldUnsupported(VarHandle vh) {
 599 
 600         checkUOE(() -> {
 601             String o = (String) vh.getAndAdd("foo");
 602         });
 603 


 683                 assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
 684                 String x = (String) vh.get(array, i);
 685                 assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
 686             }
 687 
 688             {
 689                 String r = (String) vh.compareAndExchangeRelease(array, i, "bar", "foo");
 690                 assertEquals(r, "bar", "success compareAndExchangeRelease String");
 691                 String x = (String) vh.get(array, i);
 692                 assertEquals(x, "foo", "success compareAndExchangeRelease String value");
 693             }
 694 
 695             {
 696                 String r = (String) vh.compareAndExchangeRelease(array, i, "bar", "baz");
 697                 assertEquals(r, "foo", "failing compareAndExchangeRelease String");
 698                 String x = (String) vh.get(array, i);
 699                 assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
 700             }
 701 
 702             {
 703                 boolean success = false;
 704                 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 705                     success = vh.weakCompareAndSet(array, i, "foo", "bar");
 706                 }
 707                 assertEquals(success, true, "weakCompareAndSet String");
 708                 String x = (String) vh.get(array, i);
 709                 assertEquals(x, "bar", "weakCompareAndSet String value");
 710             }
 711 
 712             {
 713                 boolean success = false;
 714                 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 715                     success = vh.weakCompareAndSetAcquire(array, i, "bar", "foo");
 716                 }
 717                 assertEquals(success, true, "weakCompareAndSetAcquire String");
 718                 String x = (String) vh.get(array, i);
 719                 assertEquals(x, "foo", "weakCompareAndSetAcquire String");
 720             }
 721 
 722             {
 723                 boolean success = false;
 724                 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
 725                     success = vh.weakCompareAndSetRelease(array, i, "foo", "bar");
 726                 }
 727                 assertEquals(success, true, "weakCompareAndSetRelease String");
 728                 String x = (String) vh.get(array, i);
 729                 assertEquals(x, "bar", "weakCompareAndSetRelease String");
 730             }
 731 
 732             // Compare set and get
 733             {
 734                 String o = (String) vh.getAndSet(array, i, "foo");
 735                 assertEquals(o, "bar", "getAndSet String");
 736                 String x = (String) vh.get(array, i);
 737                 assertEquals(x, "foo", "getAndSet String value");
 738             }
 739 
 740         }
 741     }
 742 
 743     static void testArrayUnsupported(VarHandle vh) {
 744         String[] array = new String[10];
 745 
 746         int i = 0;
 747 


< prev index next >