--- a/jdk/test/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java Thu Sep 01 08:39:27 2016 -0700
+++ b/jdk/test/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java Thu Sep 01 10:16:57 2016 -0700
@@ -255,19 +255,44 @@
assertEquals(x, 2.0f, "getAndSet float value");
}
- hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
-
// get and add, add and get
{
+ hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
+
float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, 3.0f);
assertEquals(o, 1.0f, "getAndAdd float");
float c = (float) hs.get(TestAccessMode.ADD_AND_GET).invokeExact(recv, 3.0f);
assertEquals(c, (float)(1.0f + 3.0f + 3.0f), "getAndAdd float value");
}
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, 2.0f);
+ assertEquals(o, 1.0f, "getAndAddAcquire float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
+ assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ }
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, 2.0f);
+ assertEquals(o, 1.0f, "getAndAddRelease float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
+ assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ }
+
}
static void testInstanceFieldUnsupported(VarHandleTestMethodHandleAccessFloat recv, Handles hs) throws Throwable {
+
+ for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_BITWISE)) {
+ checkUOE(am, () -> {
+ float r = (float) hs.get(am).invokeExact(recv, 1.0f);
+ });
+ }
}
@@ -402,25 +427,72 @@
// Compare set and get
{
- float o = (float) hs.get(TestAccessMode.GET_AND_SET).invokeExact( 2.0f);
+ hs.get(TestAccessMode.SET).invokeExact(1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_SET).invokeExact(2.0f);
assertEquals(o, 1.0f, "getAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
assertEquals(x, 2.0f, "getAndSet float value");
}
- hs.get(TestAccessMode.SET).invokeExact(1.0f);
+ // Compare set and get
+ {
+ hs.get(TestAccessMode.SET).invokeExact(1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(2.0f);
+ assertEquals(o, 1.0f, "getAndSetAcquire float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact();
+ assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ }
+
+ // Compare set and get
+ {
+ hs.get(TestAccessMode.SET).invokeExact(1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(2.0f);
+ assertEquals(o, 1.0f, "getAndSetRelease float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact();
+ assertEquals(x, 2.0f, "getAndSetRelease float value");
+ }
// get and add, add and get
{
- float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact( 3.0f);
+ hs.get(TestAccessMode.SET).invokeExact(1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(3.0f);
assertEquals(o, 1.0f, "getAndAdd float");
float c = (float) hs.get(TestAccessMode.ADD_AND_GET).invokeExact(3.0f);
assertEquals(c, (float)(1.0f + 3.0f + 3.0f), "getAndAdd float value");
}
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(2.0f);
+ assertEquals(o, 1.0f, "getAndAddAcquire float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact();
+ assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ }
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(2.0f);
+ assertEquals(o, 1.0f, "getAndAddRelease float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact();
+ assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ }
+
}
static void testStaticFieldUnsupported(Handles hs) throws Throwable {
+
+ for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_BITWISE)) {
+ checkUOE(am, () -> {
+ float r = (float) hs.get(am).invokeExact(1.0f);
+ });
+ }
}
@@ -558,21 +630,60 @@
// Compare set and get
{
+ hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+
float o = (float) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, 2.0f);
assertEquals(o, 1.0f, "getAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
assertEquals(x, 2.0f, "getAndSet float value");
}
- hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+ {
+ hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, 2.0f);
+ assertEquals(o, 1.0f, "getAndSetAcquire float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
+ assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ }
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, 2.0f);
+ assertEquals(o, 1.0f, "getAndSetRelease float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
+ assertEquals(x, 2.0f, "getAndSetRelease float value");
+ }
// get and add, add and get
{
+ hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+
float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, 3.0f);
assertEquals(o, 1.0f, "getAndAdd float");
float c = (float) hs.get(TestAccessMode.ADD_AND_GET).invokeExact(array, i, 3.0f);
assertEquals(c, (float)(1.0f + 3.0f + 3.0f), "getAndAdd float value");
}
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, 2.0f);
+ assertEquals(o, 1.0f, "getAndAddAcquire float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
+ assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ }
+
+ {
+ hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
+
+ float o = (float) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, 2.0f);
+ assertEquals(o, 1.0f, "getAndAddRelease float");
+ float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
+ assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ }
+
}
}
@@ -581,6 +692,12 @@
final int i = 0;
+
+ for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_BITWISE)) {
+ checkUOE(am, () -> {
+ float o = (float) hs.get(am).invokeExact(array, i, 1.0f);
+ });
+ }
}
static void testArrayIndexOutOfBounds(Handles hs) throws Throwable {
@@ -624,6 +741,7 @@
float o = (float) hs.get(am).invokeExact(array, ci, 3.0f);
});
}
+
}
}
}