76 public void testIsAccessModeSupported(VarHandleSource vhs) {
77 VarHandle vh = vhs.s;
78
79 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
80 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
81
82 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_VOLATILE));
83 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_VOLATILE));
84 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_ACQUIRE));
85 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_RELEASE));
86 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_OPAQUE));
87 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_OPAQUE));
88
89 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
90 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
91 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
92 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
93 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
94 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_ACQUIRE));
95 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
96 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
97 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
98
99 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
100 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.ADD_AND_GET));
101 }
102
103 @Test(dataProvider = "typesProvider")
104 public void testTypes(VarHandle vh, List<java.lang.Class<?>> pts) {
105 assertEquals(vh.varType(), long.class);
106
107 assertEquals(vh.coordinateTypes(), pts);
108
109 testTypes(vh);
110 }
111
112
113 @DataProvider
114 public Object[][] accessTestCaseProvider() throws Exception {
115 List<AccessTestCase<?>> cases = new ArrayList<>();
116
675 assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire long");
676 long x = (long) vh.get(array, i);
677 assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire long value");
678 }
679
680 {
681 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
682 assertEquals(r, VALUE_2, "success compareAndExchangeRelease long");
683 long x = (long) vh.get(array, i);
684 assertEquals(x, VALUE_1, "success compareAndExchangeRelease long value");
685 }
686
687 {
688 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
689 assertEquals(r, VALUE_1, "failing compareAndExchangeRelease long");
690 long x = (long) vh.get(array, i);
691 assertEquals(x, VALUE_1, "failing compareAndExchangeRelease long value");
692 }
693
694 {
695 boolean r = vh.weakCompareAndSet(array, i, VALUE_1, VALUE_2);
696 assertEquals(r, true, "weakCompareAndSet long");
697 long x = (long) vh.get(array, i);
698 assertEquals(x, VALUE_2, "weakCompareAndSet long value");
699 }
700
701 {
702 boolean r = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_1);
703 assertEquals(r, true, "weakCompareAndSetAcquire long");
704 long x = (long) vh.get(array, i);
705 assertEquals(x, VALUE_1, "weakCompareAndSetAcquire long");
706 }
707
708 {
709 boolean r = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_2);
710 assertEquals(r, true, "weakCompareAndSetRelease long");
711 long x = (long) vh.get(array, i);
712 assertEquals(x, VALUE_2, "weakCompareAndSetRelease long");
713 }
714
715 // Compare set and get
716 {
717 long o = (long) vh.getAndSet(array, i, VALUE_1);
718 assertEquals(o, VALUE_2, "getAndSet long");
719 long x = (long) vh.get(array, i);
720 assertEquals(x, VALUE_1, "getAndSet long value");
721 }
722
723 vh.set(array, i, VALUE_1);
724
725 // get and add, add and get
726 {
727 long o = (long) vh.getAndAdd(array, i, VALUE_3);
728 assertEquals(o, VALUE_1, "getAndAdd long");
729 long c = (long) vh.addAndGet(array, i, VALUE_3);
730 assertEquals(c, VALUE_1 + VALUE_3 + VALUE_3, "getAndAdd long value");
817 assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire long");
818 long x = (long) vh.get(array, i);
819 assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire long value");
820 }
821
822 {
823 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
824 assertEquals(r, VALUE_2, "success compareAndExchangeRelease long");
825 long x = (long) vh.get(array, i);
826 assertEquals(x, VALUE_1, "success compareAndExchangeRelease long value");
827 }
828
829 {
830 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
831 assertEquals(r, VALUE_1, "failing compareAndExchangeRelease long");
832 long x = (long) vh.get(array, i);
833 assertEquals(x, VALUE_1, "failing compareAndExchangeRelease long value");
834 }
835
836 {
837 boolean r = vh.weakCompareAndSet(array, i, VALUE_1, VALUE_2);
838 assertEquals(r, true, "weakCompareAndSet long");
839 long x = (long) vh.get(array, i);
840 assertEquals(x, VALUE_2, "weakCompareAndSet long value");
841 }
842
843 {
844 boolean r = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_1);
845 assertEquals(r, true, "weakCompareAndSetAcquire long");
846 long x = (long) vh.get(array, i);
847 assertEquals(x, VALUE_1, "weakCompareAndSetAcquire long");
848 }
849
850 {
851 boolean r = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_2);
852 assertEquals(r, true, "weakCompareAndSetRelease long");
853 long x = (long) vh.get(array, i);
854 assertEquals(x, VALUE_2, "weakCompareAndSetRelease long");
855 }
856
857 // Compare set and get
858 {
859 long o = (long) vh.getAndSet(array, i, VALUE_1);
860 assertEquals(o, VALUE_2, "getAndSet long");
861 long x = (long) vh.get(array, i);
862 assertEquals(x, VALUE_1, "getAndSet long value");
863 }
864
865 vh.set(array, i, VALUE_1);
866
867 // get and add, add and get
868 {
869 long o = (long) vh.getAndAdd(array, i, VALUE_3);
870 assertEquals(o, VALUE_1, "getAndAdd long");
871 long c = (long) vh.addAndGet(array, i, VALUE_3);
872 assertEquals(c, VALUE_1 + VALUE_3 + VALUE_3, "getAndAdd long value");
|
76 public void testIsAccessModeSupported(VarHandleSource vhs) {
77 VarHandle vh = vhs.s;
78
79 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
80 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
81
82 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_VOLATILE));
83 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_VOLATILE));
84 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_ACQUIRE));
85 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_RELEASE));
86 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_OPAQUE));
87 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_OPAQUE));
88
89 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
90 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
91 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
92 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
93 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
94 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_ACQUIRE));
95 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
96 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
97
98 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
99 assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.ADD_AND_GET));
100 }
101
102 @Test(dataProvider = "typesProvider")
103 public void testTypes(VarHandle vh, List<java.lang.Class<?>> pts) {
104 assertEquals(vh.varType(), long.class);
105
106 assertEquals(vh.coordinateTypes(), pts);
107
108 testTypes(vh);
109 }
110
111
112 @DataProvider
113 public Object[][] accessTestCaseProvider() throws Exception {
114 List<AccessTestCase<?>> cases = new ArrayList<>();
115
674 assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire long");
675 long x = (long) vh.get(array, i);
676 assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire long value");
677 }
678
679 {
680 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
681 assertEquals(r, VALUE_2, "success compareAndExchangeRelease long");
682 long x = (long) vh.get(array, i);
683 assertEquals(x, VALUE_1, "success compareAndExchangeRelease long value");
684 }
685
686 {
687 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
688 assertEquals(r, VALUE_1, "failing compareAndExchangeRelease long");
689 long x = (long) vh.get(array, i);
690 assertEquals(x, VALUE_1, "failing compareAndExchangeRelease long value");
691 }
692
693 {
694 boolean success = false;
695 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
696 success = vh.weakCompareAndSet(array, i, VALUE_1, VALUE_2);
697 }
698 assertEquals(success, true, "weakCompareAndSet long");
699 long x = (long) vh.get(array, i);
700 assertEquals(x, VALUE_2, "weakCompareAndSet long value");
701 }
702
703 {
704 boolean success = false;
705 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
706 success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_1);
707 }
708 assertEquals(success, true, "weakCompareAndSetAcquire long");
709 long x = (long) vh.get(array, i);
710 assertEquals(x, VALUE_1, "weakCompareAndSetAcquire long");
711 }
712
713 {
714 boolean success = false;
715 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
716 success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_2);
717 }
718 assertEquals(success, true, "weakCompareAndSetRelease long");
719 long x = (long) vh.get(array, i);
720 assertEquals(x, VALUE_2, "weakCompareAndSetRelease long");
721 }
722
723 // Compare set and get
724 {
725 long o = (long) vh.getAndSet(array, i, VALUE_1);
726 assertEquals(o, VALUE_2, "getAndSet long");
727 long x = (long) vh.get(array, i);
728 assertEquals(x, VALUE_1, "getAndSet long value");
729 }
730
731 vh.set(array, i, VALUE_1);
732
733 // get and add, add and get
734 {
735 long o = (long) vh.getAndAdd(array, i, VALUE_3);
736 assertEquals(o, VALUE_1, "getAndAdd long");
737 long c = (long) vh.addAndGet(array, i, VALUE_3);
738 assertEquals(c, VALUE_1 + VALUE_3 + VALUE_3, "getAndAdd long value");
825 assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire long");
826 long x = (long) vh.get(array, i);
827 assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire long value");
828 }
829
830 {
831 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
832 assertEquals(r, VALUE_2, "success compareAndExchangeRelease long");
833 long x = (long) vh.get(array, i);
834 assertEquals(x, VALUE_1, "success compareAndExchangeRelease long value");
835 }
836
837 {
838 long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
839 assertEquals(r, VALUE_1, "failing compareAndExchangeRelease long");
840 long x = (long) vh.get(array, i);
841 assertEquals(x, VALUE_1, "failing compareAndExchangeRelease long value");
842 }
843
844 {
845 boolean success = false;
846 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
847 success = vh.weakCompareAndSet(array, i, VALUE_1, VALUE_2);
848 }
849 assertEquals(success, true, "weakCompareAndSet long");
850 long x = (long) vh.get(array, i);
851 assertEquals(x, VALUE_2, "weakCompareAndSet long value");
852 }
853
854 {
855 boolean success = false;
856 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
857 success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_1);
858 }
859 assertEquals(success, true, "weakCompareAndSetAcquire long");
860 long x = (long) vh.get(array, i);
861 assertEquals(x, VALUE_1, "weakCompareAndSetAcquire long");
862 }
863
864 {
865 boolean success = false;
866 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
867 success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_2);
868 }
869 assertEquals(success, true, "weakCompareAndSetRelease long");
870 long x = (long) vh.get(array, i);
871 assertEquals(x, VALUE_2, "weakCompareAndSetRelease long");
872 }
873
874 // Compare set and get
875 {
876 long o = (long) vh.getAndSet(array, i, VALUE_1);
877 assertEquals(o, VALUE_2, "getAndSet long");
878 long x = (long) vh.get(array, i);
879 assertEquals(x, VALUE_1, "getAndSet long value");
880 }
881
882 vh.set(array, i, VALUE_1);
883
884 // get and add, add and get
885 {
886 long o = (long) vh.getAndAdd(array, i, VALUE_3);
887 assertEquals(o, VALUE_1, "getAndAdd long");
888 long c = (long) vh.addAndGet(array, i, VALUE_3);
889 assertEquals(c, VALUE_1 + VALUE_3 + VALUE_3, "getAndAdd long value");
|