home *** CD-ROM | disk | FTP | other *** search
- package java.nio;
-
- import java.security.AccessController;
- import sun.misc.Unsafe;
- import sun.misc.VM;
- import sun.security.action.GetPropertyAction;
-
- class Bits {
- private static final Unsafe unsafe = Unsafe.getUnsafe();
- private static ByteOrder byteOrder = null;
- private static int pageSize = -1;
- private static boolean unaligned;
- private static boolean unalignedKnown = false;
- private static volatile long maxMemory = VM.maxDirectMemory();
- private static volatile long reservedMemory = 0L;
- private static boolean memoryLimitSet = false;
- static final int JNI_COPY_TO_ARRAY_THRESHOLD = 6;
- static final int JNI_COPY_FROM_ARRAY_THRESHOLD = 6;
-
- private Bits() {
- }
-
- static short swap(short var0) {
- return (short)(var0 << 8 | var0 >> 8 & 255);
- }
-
- static char swap(char var0) {
- return (char)(var0 << 8 | var0 >> 8 & 255);
- }
-
- static int swap(int var0) {
- return swap((short)var0) << 16 | swap((short)(var0 >> 16)) & '\uffff';
- }
-
- static long swap(long var0) {
- return (long)swap((int)var0) << 32 | (long)swap((int)(var0 >> 32)) & 4294967295L;
- }
-
- private static char makeChar(byte var0, byte var1) {
- return (char)(var0 << 8 | var1 & 255);
- }
-
- static char getCharL(ByteBuffer var0, int var1) {
- return makeChar(var0._get(var1 + 1), var0._get(var1 + 0));
- }
-
- static char getCharL(long var0) {
- return makeChar(_get(var0 + 1L), _get(var0 + 0L));
- }
-
- static char getCharB(ByteBuffer var0, int var1) {
- return makeChar(var0._get(var1 + 0), var0._get(var1 + 1));
- }
-
- static char getCharB(long var0) {
- return makeChar(_get(var0 + 0L), _get(var0 + 1L));
- }
-
- static char getChar(ByteBuffer var0, int var1, boolean var2) {
- return var2 ? getCharB(var0, var1) : getCharL(var0, var1);
- }
-
- static char getChar(long var0, boolean var2) {
- return var2 ? getCharB(var0) : getCharL(var0);
- }
-
- private static byte char1(char var0) {
- return (byte)(var0 >> 8);
- }
-
- private static byte char0(char var0) {
- return (byte)(var0 >> 0);
- }
-
- static void putCharL(ByteBuffer var0, int var1, char var2) {
- var0._put(var1 + 0, char0(var2));
- var0._put(var1 + 1, char1(var2));
- }
-
- static void putCharL(long var0, char var2) {
- _put(var0 + 0L, char0(var2));
- _put(var0 + 1L, char1(var2));
- }
-
- static void putCharB(ByteBuffer var0, int var1, char var2) {
- var0._put(var1 + 0, char1(var2));
- var0._put(var1 + 1, char0(var2));
- }
-
- static void putCharB(long var0, char var2) {
- _put(var0 + 0L, char1(var2));
- _put(var0 + 1L, char0(var2));
- }
-
- static void putChar(ByteBuffer var0, int var1, char var2, boolean var3) {
- if (var3) {
- putCharB(var0, var1, var2);
- } else {
- putCharL(var0, var1, var2);
- }
-
- }
-
- static void putChar(long var0, char var2, boolean var3) {
- if (var3) {
- putCharB(var0, var2);
- } else {
- putCharL(var0, var2);
- }
-
- }
-
- private static short makeShort(byte var0, byte var1) {
- return (short)(var0 << 8 | var1 & 255);
- }
-
- static short getShortL(ByteBuffer var0, int var1) {
- return makeShort(var0._get(var1 + 1), var0._get(var1 + 0));
- }
-
- static short getShortL(long var0) {
- return makeShort(_get(var0 + 1L), _get(var0));
- }
-
- static short getShortB(ByteBuffer var0, int var1) {
- return makeShort(var0._get(var1 + 0), var0._get(var1 + 1));
- }
-
- static short getShortB(long var0) {
- return makeShort(_get(var0), _get(var0 + 1L));
- }
-
- static short getShort(ByteBuffer var0, int var1, boolean var2) {
- return var2 ? getShortB(var0, var1) : getShortL(var0, var1);
- }
-
- static short getShort(long var0, boolean var2) {
- return var2 ? getShortB(var0) : getShortL(var0);
- }
-
- private static byte short1(short var0) {
- return (byte)(var0 >> 8);
- }
-
- private static byte short0(short var0) {
- return (byte)(var0 >> 0);
- }
-
- static void putShortL(ByteBuffer var0, int var1, short var2) {
- var0._put(var1 + 0, short0(var2));
- var0._put(var1 + 1, short1(var2));
- }
-
- static void putShortL(long var0, short var2) {
- _put(var0, short0(var2));
- _put(var0 + 1L, short1(var2));
- }
-
- static void putShortB(ByteBuffer var0, int var1, short var2) {
- var0._put(var1 + 0, short1(var2));
- var0._put(var1 + 1, short0(var2));
- }
-
- static void putShortB(long var0, short var2) {
- _put(var0, short1(var2));
- _put(var0 + 1L, short0(var2));
- }
-
- static void putShort(ByteBuffer var0, int var1, short var2, boolean var3) {
- if (var3) {
- putShortB(var0, var1, var2);
- } else {
- putShortL(var0, var1, var2);
- }
-
- }
-
- static void putShort(long var0, short var2, boolean var3) {
- if (var3) {
- putShortB(var0, var2);
- } else {
- putShortL(var0, var2);
- }
-
- }
-
- private static int makeInt(byte var0, byte var1, byte var2, byte var3) {
- return (var0 & 255) << 24 | (var1 & 255) << 16 | (var2 & 255) << 8 | (var3 & 255) << 0;
- }
-
- static int getIntL(ByteBuffer var0, int var1) {
- return makeInt(var0._get(var1 + 3), var0._get(var1 + 2), var0._get(var1 + 1), var0._get(var1 + 0));
- }
-
- static int getIntL(long var0) {
- return makeInt(_get(var0 + 3L), _get(var0 + 2L), _get(var0 + 1L), _get(var0 + 0L));
- }
-
- static int getIntB(ByteBuffer var0, int var1) {
- return makeInt(var0._get(var1 + 0), var0._get(var1 + 1), var0._get(var1 + 2), var0._get(var1 + 3));
- }
-
- static int getIntB(long var0) {
- return makeInt(_get(var0 + 0L), _get(var0 + 1L), _get(var0 + 2L), _get(var0 + 3L));
- }
-
- static int getInt(ByteBuffer var0, int var1, boolean var2) {
- return var2 ? getIntB(var0, var1) : getIntL(var0, var1);
- }
-
- static int getInt(long var0, boolean var2) {
- return var2 ? getIntB(var0) : getIntL(var0);
- }
-
- private static byte int3(int var0) {
- return (byte)(var0 >> 24);
- }
-
- private static byte int2(int var0) {
- return (byte)(var0 >> 16);
- }
-
- private static byte int1(int var0) {
- return (byte)(var0 >> 8);
- }
-
- private static byte int0(int var0) {
- return (byte)(var0 >> 0);
- }
-
- static void putIntL(ByteBuffer var0, int var1, int var2) {
- var0._put(var1 + 3, int3(var2));
- var0._put(var1 + 2, int2(var2));
- var0._put(var1 + 1, int1(var2));
- var0._put(var1 + 0, int0(var2));
- }
-
- static void putIntL(long var0, int var2) {
- _put(var0 + 3L, int3(var2));
- _put(var0 + 2L, int2(var2));
- _put(var0 + 1L, int1(var2));
- _put(var0 + 0L, int0(var2));
- }
-
- static void putIntB(ByteBuffer var0, int var1, int var2) {
- var0._put(var1 + 0, int3(var2));
- var0._put(var1 + 1, int2(var2));
- var0._put(var1 + 2, int1(var2));
- var0._put(var1 + 3, int0(var2));
- }
-
- static void putIntB(long var0, int var2) {
- _put(var0 + 0L, int3(var2));
- _put(var0 + 1L, int2(var2));
- _put(var0 + 2L, int1(var2));
- _put(var0 + 3L, int0(var2));
- }
-
- static void putInt(ByteBuffer var0, int var1, int var2, boolean var3) {
- if (var3) {
- putIntB(var0, var1, var2);
- } else {
- putIntL(var0, var1, var2);
- }
-
- }
-
- static void putInt(long var0, int var2, boolean var3) {
- if (var3) {
- putIntB(var0, var2);
- } else {
- putIntL(var0, var2);
- }
-
- }
-
- private static long makeLong(byte var0, byte var1, byte var2, byte var3, byte var4, byte var5, byte var6, byte var7) {
- return ((long)var0 & 255L) << 56 | ((long)var1 & 255L) << 48 | ((long)var2 & 255L) << 40 | ((long)var3 & 255L) << 32 | ((long)var4 & 255L) << 24 | ((long)var5 & 255L) << 16 | ((long)var6 & 255L) << 8 | ((long)var7 & 255L) << 0;
- }
-
- static long getLongL(ByteBuffer var0, int var1) {
- return makeLong(var0._get(var1 + 7), var0._get(var1 + 6), var0._get(var1 + 5), var0._get(var1 + 4), var0._get(var1 + 3), var0._get(var1 + 2), var0._get(var1 + 1), var0._get(var1 + 0));
- }
-
- static long getLongL(long var0) {
- return makeLong(_get(var0 + 7L), _get(var0 + 6L), _get(var0 + 5L), _get(var0 + 4L), _get(var0 + 3L), _get(var0 + 2L), _get(var0 + 1L), _get(var0 + 0L));
- }
-
- static long getLongB(ByteBuffer var0, int var1) {
- return makeLong(var0._get(var1 + 0), var0._get(var1 + 1), var0._get(var1 + 2), var0._get(var1 + 3), var0._get(var1 + 4), var0._get(var1 + 5), var0._get(var1 + 6), var0._get(var1 + 7));
- }
-
- static long getLongB(long var0) {
- return makeLong(_get(var0 + 0L), _get(var0 + 1L), _get(var0 + 2L), _get(var0 + 3L), _get(var0 + 4L), _get(var0 + 5L), _get(var0 + 6L), _get(var0 + 7L));
- }
-
- static long getLong(ByteBuffer var0, int var1, boolean var2) {
- return var2 ? getLongB(var0, var1) : getLongL(var0, var1);
- }
-
- static long getLong(long var0, boolean var2) {
- return var2 ? getLongB(var0) : getLongL(var0);
- }
-
- private static byte long7(long var0) {
- return (byte)((int)(var0 >> 56));
- }
-
- private static byte long6(long var0) {
- return (byte)((int)(var0 >> 48));
- }
-
- private static byte long5(long var0) {
- return (byte)((int)(var0 >> 40));
- }
-
- private static byte long4(long var0) {
- return (byte)((int)(var0 >> 32));
- }
-
- private static byte long3(long var0) {
- return (byte)((int)(var0 >> 24));
- }
-
- private static byte long2(long var0) {
- return (byte)((int)(var0 >> 16));
- }
-
- private static byte long1(long var0) {
- return (byte)((int)(var0 >> 8));
- }
-
- private static byte long0(long var0) {
- return (byte)((int)(var0 >> 0));
- }
-
- static void putLongL(ByteBuffer var0, int var1, long var2) {
- var0._put(var1 + 7, long7(var2));
- var0._put(var1 + 6, long6(var2));
- var0._put(var1 + 5, long5(var2));
- var0._put(var1 + 4, long4(var2));
- var0._put(var1 + 3, long3(var2));
- var0._put(var1 + 2, long2(var2));
- var0._put(var1 + 1, long1(var2));
- var0._put(var1 + 0, long0(var2));
- }
-
- static void putLongL(long var0, long var2) {
- _put(var0 + 7L, long7(var2));
- _put(var0 + 6L, long6(var2));
- _put(var0 + 5L, long5(var2));
- _put(var0 + 4L, long4(var2));
- _put(var0 + 3L, long3(var2));
- _put(var0 + 2L, long2(var2));
- _put(var0 + 1L, long1(var2));
- _put(var0 + 0L, long0(var2));
- }
-
- static void putLongB(ByteBuffer var0, int var1, long var2) {
- var0._put(var1 + 0, long7(var2));
- var0._put(var1 + 1, long6(var2));
- var0._put(var1 + 2, long5(var2));
- var0._put(var1 + 3, long4(var2));
- var0._put(var1 + 4, long3(var2));
- var0._put(var1 + 5, long2(var2));
- var0._put(var1 + 6, long1(var2));
- var0._put(var1 + 7, long0(var2));
- }
-
- static void putLongB(long var0, long var2) {
- _put(var0 + 0L, long7(var2));
- _put(var0 + 1L, long6(var2));
- _put(var0 + 2L, long5(var2));
- _put(var0 + 3L, long4(var2));
- _put(var0 + 4L, long3(var2));
- _put(var0 + 5L, long2(var2));
- _put(var0 + 6L, long1(var2));
- _put(var0 + 7L, long0(var2));
- }
-
- static void putLong(ByteBuffer var0, int var1, long var2, boolean var4) {
- if (var4) {
- putLongB(var0, var1, var2);
- } else {
- putLongL(var0, var1, var2);
- }
-
- }
-
- static void putLong(long var0, long var2, boolean var4) {
- if (var4) {
- putLongB(var0, var2);
- } else {
- putLongL(var0, var2);
- }
-
- }
-
- static float getFloatL(ByteBuffer var0, int var1) {
- return Float.intBitsToFloat(getIntL(var0, var1));
- }
-
- static float getFloatL(long var0) {
- return Float.intBitsToFloat(getIntL(var0));
- }
-
- static float getFloatB(ByteBuffer var0, int var1) {
- return Float.intBitsToFloat(getIntB(var0, var1));
- }
-
- static float getFloatB(long var0) {
- return Float.intBitsToFloat(getIntB(var0));
- }
-
- static float getFloat(ByteBuffer var0, int var1, boolean var2) {
- return var2 ? getFloatB(var0, var1) : getFloatL(var0, var1);
- }
-
- static float getFloat(long var0, boolean var2) {
- return var2 ? getFloatB(var0) : getFloatL(var0);
- }
-
- static void putFloatL(ByteBuffer var0, int var1, float var2) {
- putIntL(var0, var1, Float.floatToRawIntBits(var2));
- }
-
- static void putFloatL(long var0, float var2) {
- putIntL(var0, Float.floatToRawIntBits(var2));
- }
-
- static void putFloatB(ByteBuffer var0, int var1, float var2) {
- putIntB(var0, var1, Float.floatToRawIntBits(var2));
- }
-
- static void putFloatB(long var0, float var2) {
- putIntB(var0, Float.floatToRawIntBits(var2));
- }
-
- static void putFloat(ByteBuffer var0, int var1, float var2, boolean var3) {
- if (var3) {
- putFloatB(var0, var1, var2);
- } else {
- putFloatL(var0, var1, var2);
- }
-
- }
-
- static void putFloat(long var0, float var2, boolean var3) {
- if (var3) {
- putFloatB(var0, var2);
- } else {
- putFloatL(var0, var2);
- }
-
- }
-
- static double getDoubleL(ByteBuffer var0, int var1) {
- return Double.longBitsToDouble(getLongL(var0, var1));
- }
-
- static double getDoubleL(long var0) {
- return Double.longBitsToDouble(getLongL(var0));
- }
-
- static double getDoubleB(ByteBuffer var0, int var1) {
- return Double.longBitsToDouble(getLongB(var0, var1));
- }
-
- static double getDoubleB(long var0) {
- return Double.longBitsToDouble(getLongB(var0));
- }
-
- static double getDouble(ByteBuffer var0, int var1, boolean var2) {
- return var2 ? getDoubleB(var0, var1) : getDoubleL(var0, var1);
- }
-
- static double getDouble(long var0, boolean var2) {
- return var2 ? getDoubleB(var0) : getDoubleL(var0);
- }
-
- static void putDoubleL(ByteBuffer var0, int var1, double var2) {
- putLongL(var0, var1, Double.doubleToRawLongBits(var2));
- }
-
- static void putDoubleL(long var0, double var2) {
- putLongL(var0, Double.doubleToRawLongBits(var2));
- }
-
- static void putDoubleB(ByteBuffer var0, int var1, double var2) {
- putLongB(var0, var1, Double.doubleToRawLongBits(var2));
- }
-
- static void putDoubleB(long var0, double var2) {
- putLongB(var0, Double.doubleToRawLongBits(var2));
- }
-
- static void putDouble(ByteBuffer var0, int var1, double var2, boolean var4) {
- if (var4) {
- putDoubleB(var0, var1, var2);
- } else {
- putDoubleL(var0, var1, var2);
- }
-
- }
-
- static void putDouble(long var0, double var2, boolean var4) {
- if (var4) {
- putDoubleB(var0, var2);
- } else {
- putDoubleL(var0, var2);
- }
-
- }
-
- private static byte _get(long var0) {
- return unsafe.getByte(var0);
- }
-
- private static void _put(long var0, byte var2) {
- unsafe.putByte(var0, var2);
- }
-
- static Unsafe unsafe() {
- return unsafe;
- }
-
- static ByteOrder byteOrder() {
- if (byteOrder != null) {
- return byteOrder;
- } else {
- long var0 = unsafe.allocateMemory(8L);
-
- try {
- unsafe.putLong(var0, 72623859790382856L);
- byte var2 = unsafe.getByte(var0);
- switch (var2) {
- case 1:
- byteOrder = ByteOrder.BIG_ENDIAN;
- break;
- case 8:
- byteOrder = ByteOrder.LITTLE_ENDIAN;
- break;
- default:
- throw new Error("Unknown byte order");
- }
- } finally {
- unsafe.freeMemory(var0);
- }
-
- return byteOrder;
- }
- }
-
- static int pageSize() {
- if (pageSize == -1) {
- pageSize = unsafe().pageSize();
- }
-
- return pageSize;
- }
-
- static boolean unaligned() {
- if (unalignedKnown) {
- return unaligned;
- } else {
- GetPropertyAction var0 = new GetPropertyAction("os.arch");
- String var1 = (String)AccessController.doPrivileged(var0);
- unaligned = var1.equals("i386") || var1.equals("x86") || var1.equals("amd64");
- unalignedKnown = true;
- return unaligned;
- }
- }
-
- static void reserveMemory(long var0) {
- synchronized(Bits.class) {
- if (!memoryLimitSet && VM.isBooted()) {
- maxMemory = VM.maxDirectMemory();
- memoryLimitSet = true;
- }
-
- if (var0 <= maxMemory - reservedMemory) {
- reservedMemory += var0;
- return;
- }
- }
-
- System.gc();
-
- try {
- Thread.sleep(100L);
- } catch (InterruptedException var6) {
- Thread.currentThread().interrupt();
- }
-
- synchronized(Bits.class) {
- if (reservedMemory + var0 > maxMemory) {
- throw new OutOfMemoryError("Direct buffer memory");
- } else {
- reservedMemory += var0;
- }
- }
- }
-
- static synchronized void unreserveMemory(long var0) {
- if (reservedMemory > 0L) {
- reservedMemory -= var0;
-
- assert reservedMemory > -1L;
- }
-
- }
-
- static native void copyFromByteArray(Object var0, long var1, long var3, long var5);
-
- static native void copyToByteArray(long var0, Object var2, long var3, long var5);
-
- static void copyFromCharArray(Object var0, long var1, long var3, long var5) {
- copyFromShortArray(var0, var1, var3, var5);
- }
-
- static void copyToCharArray(long var0, Object var2, long var3, long var5) {
- copyToShortArray(var0, var2, var3, var5);
- }
-
- static native void copyFromShortArray(Object var0, long var1, long var3, long var5);
-
- static native void copyToShortArray(long var0, Object var2, long var3, long var5);
-
- static native void copyFromIntArray(Object var0, long var1, long var3, long var5);
-
- static native void copyToIntArray(long var0, Object var2, long var3, long var5);
-
- static native void copyFromLongArray(Object var0, long var1, long var3, long var5);
-
- static native void copyToLongArray(long var0, Object var2, long var3, long var5);
- }
-