< prev index next >
test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestInt.java
Print this page
@@ -38,10 +38,11 @@
import static org.testng.Assert.*;
public class JdkInternalMiscUnsafeAccessTestInt {
static final int ITERS = Integer.getInteger("iters", 1);
+ static final int WEAK_ATTEMPTS = Integer.getInteger("weakAttempts", 10);
static final jdk.internal.misc.Unsafe UNSAFE;
static final long V_OFFSET;
@@ -249,26 +250,35 @@
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 1, "failing compareAndExchangeRelease int value");
}
{
- boolean r = UNSAFE.weakCompareAndSwapInt(base, offset, 1, 2);
- assertEquals(r, true, "weakCompareAndSwap int");
+ boolean success = false;
+ for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
+ success = UNSAFE.weakCompareAndSwapInt(base, offset, 1, 2);
+ }
+ assertEquals(success, true, "weakCompareAndSwap int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 2, "weakCompareAndSwap int value");
}
{
- boolean r = UNSAFE.weakCompareAndSwapIntAcquire(base, offset, 2, 1);
- assertEquals(r, true, "weakCompareAndSwapAcquire int");
+ boolean success = false;
+ for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
+ success = UNSAFE.weakCompareAndSwapIntAcquire(base, offset, 2, 1);
+ }
+ assertEquals(success, true, "weakCompareAndSwapAcquire int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 1, "weakCompareAndSwapAcquire int");
}
{
- boolean r = UNSAFE.weakCompareAndSwapIntRelease(base, offset, 1, 2);
- assertEquals(r, true, "weakCompareAndSwapRelease int");
+ boolean success = false;
+ for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
+ success = UNSAFE.weakCompareAndSwapIntRelease(base, offset, 1, 2);
+ }
+ assertEquals(success, true, "weakCompareAndSwapRelease int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 2, "weakCompareAndSwapRelease int");
}
// Compare set and get
@@ -284,11 +294,11 @@
// get and add, add and get
{
int o = UNSAFE.getAndAddInt(base, offset, 2);
assertEquals(o, 1, "getAndAdd int");
int x = UNSAFE.getInt(base, offset);
- assertEquals(x, 1 + 2, "weakCompareAndSwapRelease int");
+ assertEquals(x, 1 + 2, "getAndAdd int");
}
}
static void testAccess(long address) {
// Plain
@@ -298,6 +308,5 @@
assertEquals(x, 1, "set int value");
}
}
}
-
< prev index next >