private int getInt( long p ) { if ( UnsafeUtil.allowUnalignedMemoryAccess ) { return UnsafeUtil.getInt( p ); } return UnsafeUtil.getIntByteWiseLittleEndian( p ); }
@Override protected long internalKey( long keyAddress ) { return UnsafeUtil.getInt( keyAddress ); }
protected static long alignmentSafeGetLongAsTwoInts( long address ) { if ( UnsafeUtil.allowUnalignedMemoryAccess ) { return UnsafeUtil.getLong( address ); } // See javadoc in constructor as to why we do this long lsb = UnsafeUtil.getInt( address ) & 0xFFFFFFFFL; long msb = UnsafeUtil.getInt( address + Integer.BYTES ) & 0xFFFFFFFFL; return lsb | (msb << Integer.SIZE); } }
putInt( obj, anIntOffset, 1 ); assertThat( obj.anInt, is( 1 ) ); assertThat( getInt( obj, anIntOffset ), is( 1 ) ); obj.anInt = 0; assertThat( obj, is( new Obj() ) );
@Override public int get( long index ) { return UnsafeUtil.getInt( addressOf( index ) ); }
private int getIntAt( long p ) { if ( UnsafeUtil.allowUnalignedMemoryAccess ) { int x = UnsafeUtil.getInt( p ); return UnsafeUtil.storeByteOrderIsNative ? x : Integer.reverseBytes( x ); } return getIntBigEndian( p ); }
@Override public long hopBits( int index ) { return ~(UnsafeUtil.getInt( hopBitsAddress( index ) ) | 0xFFFFFFFF00000000L); }
protected int sizeOfAsInt( long page ) { return UnsafeUtil.getInt( page - Integer.BYTES ); }
protected int getInt( long address, int offset ) { return UnsafeUtil.getInt( address + offset ); }
@Override public void putHopBit( int index, int hd ) { long adr = hopBitsAddress( index ); int hopBits = UnsafeUtil.getInt( adr ); hopBits &= ~(1 << hd); UnsafeUtil.putInt( adr, hopBits ); }
@Override public void moveHopBit( int index, int hd, int delta ) { long adr = hopBitsAddress( index ); int hopBits = UnsafeUtil.getInt( adr ); hopBits ^= (1 << hd) | (1 << (hd + delta)); UnsafeUtil.putInt( adr, hopBits ); }
@Override public void removeHopBit( int index, int hd ) { long adr = hopBitsAddress( index ); int hopBits = UnsafeUtil.getInt( adr ); hopBits |= 1 << hd; UnsafeUtil.putInt( adr, hopBits ); }
@Override protected long internalKey( long keyAddress ) { return UnsafeUtil.getInt( keyAddress ); }
protected static long alignmentSafeGetLongAsTwoInts( long address ) { if ( UnsafeUtil.allowUnalignedMemoryAccess ) { return UnsafeUtil.getLong( address ); } // See javadoc in constructor as to why we do this long lsb = UnsafeUtil.getInt( address ) & 0xFFFFFFFFL; long msb = UnsafeUtil.getInt( address + Integer.BYTES ) & 0xFFFFFFFFL; return lsb | (msb << Integer.SIZE); }
protected static long alignmentSafeGetLongAsTwoInts( long address ) { if ( UnsafeUtil.allowUnalignedMemoryAccess ) { return UnsafeUtil.getLong( address ); } // See javadoc in constructor as to why we do this long lsb = UnsafeUtil.getInt( address ) & 0xFFFFFFFFL; long msb = UnsafeUtil.getInt( address + Integer.BYTES ) & 0xFFFFFFFFL; return lsb | (msb << Integer.SIZE); } }
private int getIntAt( long p ) { if ( UnsafeUtil.allowUnalignedMemoryAccess ) { int x = UnsafeUtil.getInt( p ); return UnsafeUtil.storeByteOrderIsNative ? x : Integer.reverseBytes( x ); } return getIntBigEndian( p ); }
@Override public void removeHopBit( int index, int hd ) { long adr = hopBitsAddress( index ); int hopBits = UnsafeUtil.getInt( adr ); hopBits |= 1 << hd; UnsafeUtil.putInt( adr, hopBits ); }
@Override public void moveHopBit( int index, int hd, int delta ) { long adr = hopBitsAddress( index ); int hopBits = UnsafeUtil.getInt( adr ); hopBits ^= (1 << hd) | (1 << (hd + delta)); UnsafeUtil.putInt( adr, hopBits ); }
@Override public void putHopBit( int index, int hd ) { long adr = hopBitsAddress( index ); int hopBits = UnsafeUtil.getInt( adr ); hopBits &= ~(1 << hd); UnsafeUtil.putInt( adr, hopBits ); }