< prev index next >
test/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java
Print this page
*** 97,115 ****
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_ACQUIRE));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_RELEASE));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_OPAQUE));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_OPAQUE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_VOLATILE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_ACQUIRE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
! assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.ADD_AND_GET));
}
--- 97,114 ----
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_ACQUIRE));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_RELEASE));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_OPAQUE));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET_OPAQUE));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_SET));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_ACQUIRE));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_RELEASE));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_ACQUIRE));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.WEAK_COMPARE_AND_SET_RELEASE));
! assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_SET));
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_ADD));
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.ADD_AND_GET));
}
*** 258,298 ****
checkUOE(() -> {
vh.setOpaque(recv, false);
});
- checkUOE(() -> {
- boolean r = vh.compareAndSet(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = (boolean) vh.compareAndExchangeVolatile(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = (boolean) vh.compareAndExchangeAcquire(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = (boolean) vh.compareAndExchangeRelease(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSet(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSetVolatile(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSetAcquire(recv, true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSetRelease(recv, true, false);
- });
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(recv, true);
});
--- 257,266 ----
*** 344,384 ****
checkUOE(() -> {
vh.setOpaque(false);
});
- checkUOE(() -> {
- boolean r = vh.compareAndSet(true, false);
- });
-
- checkUOE(() -> {
- boolean r = (boolean) vh.compareAndExchangeVolatile(true, false);
- });
-
- checkUOE(() -> {
- boolean r = (boolean) vh.compareAndExchangeAcquire(true, false);
- });
-
- checkUOE(() -> {
- boolean r = (boolean) vh.compareAndExchangeRelease(true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSet(true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSetVolatile(true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSetAcquire(true, false);
- });
-
- checkUOE(() -> {
- boolean r = vh.weakCompareAndSetRelease(true, false);
- });
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(true);
});
--- 312,321 ----
*** 416,460 ****
vh.setOpaque(recv, false);
boolean x = (boolean) vh.getOpaque(recv);
assertEquals(x, false, "setOpaque boolean value");
}
}
! static void testInstanceFieldUnsupported(VarHandleTestAccessBoolean recv, VarHandle vh) {
! checkUOE(() -> {
boolean r = vh.compareAndSet(recv, true, false);
! });
! checkUOE(() -> {
! boolean r = (boolean) vh.compareAndExchangeVolatile(recv, true, false);
! });
! checkUOE(() -> {
boolean r = (boolean) vh.compareAndExchangeAcquire(recv, true, false);
! });
! checkUOE(() -> {
! boolean r = (boolean) vh.compareAndExchangeRelease(recv, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSet(recv, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetVolatile(recv, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetAcquire(recv, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetRelease(recv, true, false);
! });
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(recv, true);
});
--- 353,462 ----
vh.setOpaque(recv, false);
boolean x = (boolean) vh.getOpaque(recv);
assertEquals(x, false, "setOpaque boolean value");
}
+ vh.set(recv, true);
+ // Compare
+ {
+ boolean r = vh.compareAndSet(recv, true, false);
+ assertEquals(r, true, "success compareAndSet boolean");
+ boolean x = (boolean) vh.get(recv);
+ assertEquals(x, false, "success compareAndSet boolean value");
}
! {
boolean r = vh.compareAndSet(recv, true, false);
! assertEquals(r, false, "failing compareAndSet boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, false, "failing compareAndSet boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeVolatile(recv, false, true);
! assertEquals(r, false, "success compareAndExchangeVolatile boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, true, "success compareAndExchangeVolatile boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeVolatile(recv, false, false);
! assertEquals(r, true, "failing compareAndExchangeVolatile boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, true, "failing compareAndExchangeVolatile boolean value");
! }
!
! {
boolean r = (boolean) vh.compareAndExchangeAcquire(recv, true, false);
! assertEquals(r, true, "success compareAndExchangeAcquire boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeAcquire(recv, true, false);
! assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeRelease(recv, false, true);
! assertEquals(r, false, "success compareAndExchangeRelease boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, true, "success compareAndExchangeRelease boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeRelease(recv, false, false);
! assertEquals(r, true, "failing compareAndExchangeRelease boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSet(recv, true, false);
! }
! assertEquals(success, true, "weakCompareAndSet boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, false, "weakCompareAndSet boolean value");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSetAcquire(recv, false, true);
! }
! assertEquals(success, true, "weakCompareAndSetAcquire boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, true, "weakCompareAndSetAcquire boolean");
! }
!
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSetRelease(recv, true, false);
! }
! assertEquals(success, true, "weakCompareAndSetRelease boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, false, "weakCompareAndSetRelease boolean");
! }
!
! // Compare set and get
! {
! boolean o = (boolean) vh.getAndSet(recv, true);
! assertEquals(o, false, "getAndSet boolean");
! boolean x = (boolean) vh.get(recv);
! assertEquals(x, true, "getAndSet boolean value");
! }
!
! }
!
! static void testInstanceFieldUnsupported(VarHandleTestAccessBoolean recv, VarHandle vh) {
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(recv, true);
});
*** 492,536 ****
vh.setOpaque(false);
boolean x = (boolean) vh.getOpaque();
assertEquals(x, false, "setOpaque boolean value");
}
}
! static void testStaticFieldUnsupported(VarHandle vh) {
! checkUOE(() -> {
boolean r = vh.compareAndSet(true, false);
! });
! checkUOE(() -> {
! boolean r = (boolean) vh.compareAndExchangeVolatile(true, false);
! });
! checkUOE(() -> {
boolean r = (boolean) vh.compareAndExchangeAcquire(true, false);
! });
! checkUOE(() -> {
! boolean r = (boolean) vh.compareAndExchangeRelease(true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSet(true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetVolatile(true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetAcquire(true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetRelease(true, false);
! });
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(true);
});
--- 494,603 ----
vh.setOpaque(false);
boolean x = (boolean) vh.getOpaque();
assertEquals(x, false, "setOpaque boolean value");
}
+ vh.set(true);
+ // Compare
+ {
+ boolean r = vh.compareAndSet(true, false);
+ assertEquals(r, true, "success compareAndSet boolean");
+ boolean x = (boolean) vh.get();
+ assertEquals(x, false, "success compareAndSet boolean value");
}
! {
boolean r = vh.compareAndSet(true, false);
! assertEquals(r, false, "failing compareAndSet boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, false, "failing compareAndSet boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeVolatile(false, true);
! assertEquals(r, false, "success compareAndExchangeVolatile boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, true, "success compareAndExchangeVolatile boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeVolatile(false, false);
! assertEquals(r, true, "failing compareAndExchangeVolatile boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, true, "failing compareAndExchangeVolatile boolean value");
! }
!
! {
boolean r = (boolean) vh.compareAndExchangeAcquire(true, false);
! assertEquals(r, true, "success compareAndExchangeAcquire boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeAcquire(true, false);
! assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeRelease(false, true);
! assertEquals(r, false, "success compareAndExchangeRelease boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, true, "success compareAndExchangeRelease boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeRelease(false, false);
! assertEquals(r, true, "failing compareAndExchangeRelease boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSet(true, false);
! }
! assertEquals(success, true, "weakCompareAndSet boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, false, "weakCompareAndSet boolean value");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSetAcquire(false, true);
! }
! assertEquals(success, true, "weakCompareAndSetAcquire boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, true, "weakCompareAndSetAcquire boolean");
! }
!
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSetRelease(true, false);
! }
! assertEquals(success, true, "weakCompareAndSetRelease boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, false, "weakCompareAndSetRelease boolean");
! }
!
! // Compare set and get
! {
! boolean o = (boolean) vh.getAndSet( true);
! assertEquals(o, false, "getAndSet boolean");
! boolean x = (boolean) vh.get();
! assertEquals(x, true, "getAndSet boolean value");
! }
!
! }
!
! static void testStaticFieldUnsupported(VarHandle vh) {
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(true);
});
*** 571,619 ****
vh.setOpaque(array, i, false);
boolean x = (boolean) vh.getOpaque(array, i);
assertEquals(x, false, "setOpaque boolean value");
}
}
}
! static void testArrayUnsupported(VarHandle vh) {
! boolean[] array = new boolean[10];
! int i = 0;
! checkUOE(() -> {
! boolean r = vh.compareAndSet(array, i, true, false);
! });
! checkUOE(() -> {
! boolean r = (boolean) vh.compareAndExchangeVolatile(array, i, true, false);
! });
! checkUOE(() -> {
boolean r = (boolean) vh.compareAndExchangeAcquire(array, i, true, false);
! });
! checkUOE(() -> {
! boolean r = (boolean) vh.compareAndExchangeRelease(array, i, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSet(array, i, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetVolatile(array, i, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetAcquire(array, i, true, false);
! });
! checkUOE(() -> {
! boolean r = vh.weakCompareAndSetRelease(array, i, true, false);
! });
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(array, i, true);
});
--- 638,751 ----
vh.setOpaque(array, i, false);
boolean x = (boolean) vh.getOpaque(array, i);
assertEquals(x, false, "setOpaque boolean value");
}
+ vh.set(array, i, true);
+ // Compare
+ {
+ boolean r = vh.compareAndSet(array, i, true, false);
+ assertEquals(r, true, "success compareAndSet boolean");
+ boolean x = (boolean) vh.get(array, i);
+ assertEquals(x, false, "success compareAndSet boolean value");
}
+
+ {
+ boolean r = vh.compareAndSet(array, i, true, false);
+ assertEquals(r, false, "failing compareAndSet boolean");
+ boolean x = (boolean) vh.get(array, i);
+ assertEquals(x, false, "failing compareAndSet boolean value");
}
! {
! boolean r = (boolean) vh.compareAndExchangeVolatile(array, i, false, true);
! assertEquals(r, false, "success compareAndExchangeVolatile boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, true, "success compareAndExchangeVolatile boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeVolatile(array, i, false, false);
! assertEquals(r, true, "failing compareAndExchangeVolatile boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, true, "failing compareAndExchangeVolatile boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeAcquire(array, i, true, false);
! assertEquals(r, true, "success compareAndExchangeAcquire boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
! }
! {
boolean r = (boolean) vh.compareAndExchangeAcquire(array, i, true, false);
! assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeRelease(array, i, false, true);
! assertEquals(r, false, "success compareAndExchangeRelease boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, true, "success compareAndExchangeRelease boolean value");
! }
! {
! boolean r = (boolean) vh.compareAndExchangeRelease(array, i, false, false);
! assertEquals(r, true, "failing compareAndExchangeRelease boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSet(array, i, true, false);
! }
! assertEquals(success, true, "weakCompareAndSet boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, false, "weakCompareAndSet boolean value");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSetAcquire(array, i, false, true);
! }
! assertEquals(success, true, "weakCompareAndSetAcquire boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, true, "weakCompareAndSetAcquire boolean");
! }
! {
! boolean success = false;
! for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = vh.weakCompareAndSetRelease(array, i, true, false);
! }
! assertEquals(success, true, "weakCompareAndSetRelease boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, false, "weakCompareAndSetRelease boolean");
! }
!
! // Compare set and get
! {
! boolean o = (boolean) vh.getAndSet(array, i, true);
! assertEquals(o, false, "getAndSet boolean");
! boolean x = (boolean) vh.get(array, i);
! assertEquals(x, true, "getAndSet boolean value");
! }
!
! }
! }
!
! static void testArrayUnsupported(VarHandle vh) {
! boolean[] array = new boolean[10];
!
! int i = 0;
checkUOE(() -> {
boolean o = (boolean) vh.getAndAdd(array, i, true);
});
*** 658,667 ****
--- 790,830 ----
checkIOOBE(() -> {
vh.setOpaque(array, ci, true);
});
+ checkIOOBE(() -> {
+ boolean r = vh.compareAndSet(array, ci, true, false);
+ });
+
+ checkIOOBE(() -> {
+ boolean r = (boolean) vh.compareAndExchangeVolatile(array, ci, false, true);
+ });
+
+ checkIOOBE(() -> {
+ boolean r = (boolean) vh.compareAndExchangeAcquire(array, ci, false, true);
+ });
+
+ checkIOOBE(() -> {
+ boolean r = (boolean) vh.compareAndExchangeRelease(array, ci, false, true);
+ });
+
+ checkIOOBE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, true, false);
+ });
+
+ checkIOOBE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, true, false);
+ });
+
+ checkIOOBE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, true, false);
+ });
+
+ checkIOOBE(() -> {
+ boolean o = (boolean) vh.getAndSet(array, ci, true);
+ });
}
}
}
< prev index next >