< prev index next >
test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestLong.java
Print this page
*** 143,324 ****
}
static void testAccess(Object base, long offset) {
// Plain
{
! UNSAFE.putLong(base, offset, 1L);
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "set long value");
}
// Volatile
{
! UNSAFE.putLongVolatile(base, offset, 2L);
long x = UNSAFE.getLongVolatile(base, offset);
! assertEquals(x, 2L, "putVolatile long value");
}
// Lazy
{
! UNSAFE.putLongRelease(base, offset, 1L);
long x = UNSAFE.getLongAcquire(base, offset);
! assertEquals(x, 1L, "putRelease long value");
}
// Opaque
{
! UNSAFE.putLongOpaque(base, offset, 2L);
long x = UNSAFE.getLongOpaque(base, offset);
! assertEquals(x, 2L, "putOpaque long value");
}
// Unaligned
{
! UNSAFE.putLongUnaligned(base, offset, 2L);
long x = UNSAFE.getLongUnaligned(base, offset);
! assertEquals(x, 2L, "putUnaligned long value");
}
{
! UNSAFE.putLongUnaligned(base, offset, 1L, true);
long x = UNSAFE.getLongUnaligned(base, offset, true);
! assertEquals(x, 1L, "putUnaligned big endian long value");
}
{
! UNSAFE.putLongUnaligned(base, offset, 2L, false);
long x = UNSAFE.getLongUnaligned(base, offset, false);
! assertEquals(x, 2L, "putUnaligned little endian long value");
}
! UNSAFE.putLong(base, offset, 1L);
// Compare
{
! boolean r = UNSAFE.compareAndSwapLong(base, offset, 1L, 2L);
assertEquals(r, true, "success compareAndSwap long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 2L, "success compareAndSwap long value");
}
{
! boolean r = UNSAFE.compareAndSwapLong(base, offset, 1L, 3L);
assertEquals(r, false, "failing compareAndSwap long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 2L, "failing compareAndSwap long value");
}
// Advanced compare
{
! long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 2L, 1L);
! assertEquals(r, 2L, "success compareAndExchangeVolatile long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "success compareAndExchangeVolatile long value");
}
{
! long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 2L, 3L);
! assertEquals(r, 1L, "failing compareAndExchangeVolatile long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "failing compareAndExchangeVolatile long value");
}
{
! long r = UNSAFE.compareAndExchangeLongAcquire(base, offset, 1L, 2L);
! assertEquals(r, 1L, "success compareAndExchangeAcquire long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 2L, "success compareAndExchangeAcquire long value");
}
{
! long r = UNSAFE.compareAndExchangeLongAcquire(base, offset, 1L, 3L);
! assertEquals(r, 2L, "failing compareAndExchangeAcquire long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 2L, "failing compareAndExchangeAcquire long value");
}
{
! long r = UNSAFE.compareAndExchangeLongRelease(base, offset, 2L, 1L);
! assertEquals(r, 2L, "success compareAndExchangeRelease long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "success compareAndExchangeRelease long value");
}
{
! long r = UNSAFE.compareAndExchangeLongRelease(base, offset, 2L, 3L);
! assertEquals(r, 1L, "failing compareAndExchangeRelease long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "failing compareAndExchangeRelease long value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLong(base, offset, 1L, 2L);
}
assertEquals(success, true, "weakCompareAndSwap long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 2L, "weakCompareAndSwap long value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLongAcquire(base, offset, 2L, 1L);
}
assertEquals(success, true, "weakCompareAndSwapAcquire long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "weakCompareAndSwapAcquire long");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLongRelease(base, offset, 1L, 2L);
}
assertEquals(success, true, "weakCompareAndSwapRelease long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 2L, "weakCompareAndSwapRelease long");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLongVolatile(base, offset, 2L, 1L);
}
assertEquals(success, true, "weakCompareAndSwapVolatile long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "weakCompareAndSwapVolatile long");
}
! UNSAFE.putLong(base, offset, 2L);
// Compare set and get
{
! long o = UNSAFE.getAndSetLong(base, offset, 1L);
! assertEquals(o, 2L, "getAndSet long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L, "getAndSet long value");
}
! UNSAFE.putLong(base, offset, 1L);
// get and add, add and get
{
! long o = UNSAFE.getAndAddLong(base, offset, 2L);
! assertEquals(o, 1L, "getAndAdd long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 1L + 2L, "getAndAdd long");
}
}
static void testAccess(long address) {
// Plain
{
! UNSAFE.putLong(address, 1L);
long x = UNSAFE.getLong(address);
! assertEquals(x, 1L, "set long value");
}
}
}
--- 143,324 ----
}
static void testAccess(Object base, long offset) {
// Plain
{
! UNSAFE.putLong(base, offset, 0x0123456789ABCDEFL);
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "set long value");
}
// Volatile
{
! UNSAFE.putLongVolatile(base, offset, 0xCAFEBABECAFEBABEL);
long x = UNSAFE.getLongVolatile(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "putVolatile long value");
}
// Lazy
{
! UNSAFE.putLongRelease(base, offset, 0x0123456789ABCDEFL);
long x = UNSAFE.getLongAcquire(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "putRelease long value");
}
// Opaque
{
! UNSAFE.putLongOpaque(base, offset, 0xCAFEBABECAFEBABEL);
long x = UNSAFE.getLongOpaque(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "putOpaque long value");
}
// Unaligned
{
! UNSAFE.putLongUnaligned(base, offset, 0xCAFEBABECAFEBABEL);
long x = UNSAFE.getLongUnaligned(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "putUnaligned long value");
}
{
! UNSAFE.putLongUnaligned(base, offset, 0x0123456789ABCDEFL, true);
long x = UNSAFE.getLongUnaligned(base, offset, true);
! assertEquals(x, 0x0123456789ABCDEFL, "putUnaligned big endian long value");
}
{
! UNSAFE.putLongUnaligned(base, offset, 0xCAFEBABECAFEBABEL, false);
long x = UNSAFE.getLongUnaligned(base, offset, false);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "putUnaligned little endian long value");
}
! UNSAFE.putLong(base, offset, 0x0123456789ABCDEFL);
// Compare
{
! boolean r = UNSAFE.compareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSwap long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSwap long value");
}
{
! boolean r = UNSAFE.compareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSwap long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSwap long value");
}
// Advanced compare
{
! long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
! assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeVolatile long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeVolatile long value");
}
{
! long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
! assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeVolatile long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeVolatile long value");
}
{
! long r = UNSAFE.compareAndExchangeLongAcquire(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
! assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
}
{
! long r = UNSAFE.compareAndExchangeLongAcquire(base, offset, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
! assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
}
{
! long r = UNSAFE.compareAndExchangeLongRelease(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
! assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
}
{
! long r = UNSAFE.compareAndExchangeLongRelease(base, offset, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
! assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
}
assertEquals(success, true, "weakCompareAndSwap long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSwap long value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLongAcquire(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
}
assertEquals(success, true, "weakCompareAndSwapAcquire long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSwapAcquire long");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLongRelease(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
}
assertEquals(success, true, "weakCompareAndSwapRelease long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSwapRelease long");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
! success = UNSAFE.weakCompareAndSwapLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
}
assertEquals(success, true, "weakCompareAndSwapVolatile long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSwapVolatile long");
}
! UNSAFE.putLong(base, offset, 0xCAFEBABECAFEBABEL);
// Compare set and get
{
! long o = UNSAFE.getAndSetLong(base, offset, 0x0123456789ABCDEFL);
! assertEquals(o, 0xCAFEBABECAFEBABEL, "getAndSet long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, 0x0123456789ABCDEFL, "getAndSet long value");
}
! UNSAFE.putLong(base, offset, 0x0123456789ABCDEFL);
// get and add, add and get
{
! long o = UNSAFE.getAndAddLong(base, offset, 0xCAFEBABECAFEBABEL);
! assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
long x = UNSAFE.getLong(base, offset);
! assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long");
}
}
static void testAccess(long address) {
// Plain
{
! UNSAFE.putLong(address, 0x0123456789ABCDEFL);
long x = UNSAFE.getLong(address);
! assertEquals(x, 0x0123456789ABCDEFL, "set long value");
}
}
}
< prev index next >