6940258: (bf) Use intrinsified reverseBytes operation; elide no-op constructs

Reviewed-by: alanb, sherman
This commit is contained in:
Ulf Zibis 2010-06-30 16:11:32 -07:00 committed by Martin Buchholz
parent cd7e4c8c16
commit c8a460e29d

View File

@ -41,25 +41,19 @@ class Bits { // package-private
// -- Swapping -- // -- Swapping --
static short swap(short x) { static short swap(short x) {
return (short)((x << 8) | return Short.reverseBytes(x);
((char)x >>> 8));
} }
static char swap(char x) { static char swap(char x) {
return (char)((x << 8) | return Character.reverseBytes(x);
(x >>> 8));
} }
static int swap(int x) { static int swap(int x) {
return ((x << 24) | return Integer.reverseBytes(x);
((x & 0x0000ff00) << 8) |
((x & 0x00ff0000) >>> 8) |
(x >>> 24));
} }
static long swap(long x) { static long swap(long x) {
return (((long)swap((int)x) << 32) | return Long.reverseBytes(x);
((long)swap((int)(x >>> 32)) & 0xffffffffL));
} }
@ -71,52 +65,52 @@ class Bits { // package-private
static char getCharL(ByteBuffer bb, int bi) { static char getCharL(ByteBuffer bb, int bi) {
return makeChar(bb._get(bi + 1), return makeChar(bb._get(bi + 1),
bb._get(bi + 0)); bb._get(bi ));
} }
static char getCharL(long a) { static char getCharL(long a) {
return makeChar(_get(a + 1), return makeChar(_get(a + 1),
_get(a + 0)); _get(a ));
} }
static char getCharB(ByteBuffer bb, int bi) { static char getCharB(ByteBuffer bb, int bi) {
return makeChar(bb._get(bi + 0), return makeChar(bb._get(bi ),
bb._get(bi + 1)); bb._get(bi + 1));
} }
static char getCharB(long a) { static char getCharB(long a) {
return makeChar(_get(a + 0), return makeChar(_get(a ),
_get(a + 1)); _get(a + 1));
} }
static char getChar(ByteBuffer bb, int bi, boolean bigEndian) { static char getChar(ByteBuffer bb, int bi, boolean bigEndian) {
return (bigEndian ? getCharB(bb, bi) : getCharL(bb, bi)); return bigEndian ? getCharB(bb, bi) : getCharL(bb, bi);
} }
static char getChar(long a, boolean bigEndian) { static char getChar(long a, boolean bigEndian) {
return (bigEndian ? getCharB(a) : getCharL(a)); return bigEndian ? getCharB(a) : getCharL(a);
} }
private static byte char1(char x) { return (byte)(x >> 8); } private static byte char1(char x) { return (byte)(x >> 8); }
private static byte char0(char x) { return (byte)(x >> 0); } private static byte char0(char x) { return (byte)(x ); }
static void putCharL(ByteBuffer bb, int bi, char x) { static void putCharL(ByteBuffer bb, int bi, char x) {
bb._put(bi + 0, char0(x)); bb._put(bi , char0(x));
bb._put(bi + 1, char1(x)); bb._put(bi + 1, char1(x));
} }
static void putCharL(long a, char x) { static void putCharL(long a, char x) {
_put(a + 0, char0(x)); _put(a , char0(x));
_put(a + 1, char1(x)); _put(a + 1, char1(x));
} }
static void putCharB(ByteBuffer bb, int bi, char x) { static void putCharB(ByteBuffer bb, int bi, char x) {
bb._put(bi + 0, char1(x)); bb._put(bi , char1(x));
bb._put(bi + 1, char0(x)); bb._put(bi + 1, char0(x));
} }
static void putCharB(long a, char x) { static void putCharB(long a, char x) {
_put(a + 0, char1(x)); _put(a , char1(x));
_put(a + 1, char0(x)); _put(a + 1, char0(x));
} }
@ -143,7 +137,7 @@ class Bits { // package-private
static short getShortL(ByteBuffer bb, int bi) { static short getShortL(ByteBuffer bb, int bi) {
return makeShort(bb._get(bi + 1), return makeShort(bb._get(bi + 1),
bb._get(bi + 0)); bb._get(bi ));
} }
static short getShortL(long a) { static short getShortL(long a) {
@ -152,7 +146,7 @@ class Bits { // package-private
} }
static short getShortB(ByteBuffer bb, int bi) { static short getShortB(ByteBuffer bb, int bi) {
return makeShort(bb._get(bi + 0), return makeShort(bb._get(bi ),
bb._get(bi + 1)); bb._get(bi + 1));
} }
@ -162,18 +156,18 @@ class Bits { // package-private
} }
static short getShort(ByteBuffer bb, int bi, boolean bigEndian) { static short getShort(ByteBuffer bb, int bi, boolean bigEndian) {
return (bigEndian ? getShortB(bb, bi) : getShortL(bb, bi)); return bigEndian ? getShortB(bb, bi) : getShortL(bb, bi);
} }
static short getShort(long a, boolean bigEndian) { static short getShort(long a, boolean bigEndian) {
return (bigEndian ? getShortB(a) : getShortL(a)); return bigEndian ? getShortB(a) : getShortL(a);
} }
private static byte short1(short x) { return (byte)(x >> 8); } private static byte short1(short x) { return (byte)(x >> 8); }
private static byte short0(short x) { return (byte)(x >> 0); } private static byte short0(short x) { return (byte)(x ); }
static void putShortL(ByteBuffer bb, int bi, short x) { static void putShortL(ByteBuffer bb, int bi, short x) {
bb._put(bi + 0, short0(x)); bb._put(bi , short0(x));
bb._put(bi + 1, short1(x)); bb._put(bi + 1, short1(x));
} }
@ -183,7 +177,7 @@ class Bits { // package-private
} }
static void putShortB(ByteBuffer bb, int bi, short x) { static void putShortB(ByteBuffer bb, int bi, short x) {
bb._put(bi + 0, short1(x)); bb._put(bi , short1(x));
bb._put(bi + 1, short0(x)); bb._put(bi + 1, short0(x));
} }
@ -210,76 +204,76 @@ class Bits { // package-private
// -- get/put int -- // -- get/put int --
static private int makeInt(byte b3, byte b2, byte b1, byte b0) { static private int makeInt(byte b3, byte b2, byte b1, byte b0) {
return (((b3 & 0xff) << 24) | return (((b3 ) << 24) |
((b2 & 0xff) << 16) | ((b2 & 0xff) << 16) |
((b1 & 0xff) << 8) | ((b1 & 0xff) << 8) |
((b0 & 0xff) << 0)); ((b0 & 0xff) ));
} }
static int getIntL(ByteBuffer bb, int bi) { static int getIntL(ByteBuffer bb, int bi) {
return makeInt(bb._get(bi + 3), return makeInt(bb._get(bi + 3),
bb._get(bi + 2), bb._get(bi + 2),
bb._get(bi + 1), bb._get(bi + 1),
bb._get(bi + 0)); bb._get(bi ));
} }
static int getIntL(long a) { static int getIntL(long a) {
return makeInt(_get(a + 3), return makeInt(_get(a + 3),
_get(a + 2), _get(a + 2),
_get(a + 1), _get(a + 1),
_get(a + 0)); _get(a ));
} }
static int getIntB(ByteBuffer bb, int bi) { static int getIntB(ByteBuffer bb, int bi) {
return makeInt(bb._get(bi + 0), return makeInt(bb._get(bi ),
bb._get(bi + 1), bb._get(bi + 1),
bb._get(bi + 2), bb._get(bi + 2),
bb._get(bi + 3)); bb._get(bi + 3));
} }
static int getIntB(long a) { static int getIntB(long a) {
return makeInt(_get(a + 0), return makeInt(_get(a ),
_get(a + 1), _get(a + 1),
_get(a + 2), _get(a + 2),
_get(a + 3)); _get(a + 3));
} }
static int getInt(ByteBuffer bb, int bi, boolean bigEndian) { static int getInt(ByteBuffer bb, int bi, boolean bigEndian) {
return (bigEndian ? getIntB(bb, bi) : getIntL(bb, bi)); return bigEndian ? getIntB(bb, bi) : getIntL(bb, bi) ;
} }
static int getInt(long a, boolean bigEndian) { static int getInt(long a, boolean bigEndian) {
return (bigEndian ? getIntB(a) : getIntL(a)); return bigEndian ? getIntB(a) : getIntL(a) ;
} }
private static byte int3(int x) { return (byte)(x >> 24); } private static byte int3(int x) { return (byte)(x >> 24); }
private static byte int2(int x) { return (byte)(x >> 16); } private static byte int2(int x) { return (byte)(x >> 16); }
private static byte int1(int x) { return (byte)(x >> 8); } private static byte int1(int x) { return (byte)(x >> 8); }
private static byte int0(int x) { return (byte)(x >> 0); } private static byte int0(int x) { return (byte)(x ); }
static void putIntL(ByteBuffer bb, int bi, int x) { static void putIntL(ByteBuffer bb, int bi, int x) {
bb._put(bi + 3, int3(x)); bb._put(bi + 3, int3(x));
bb._put(bi + 2, int2(x)); bb._put(bi + 2, int2(x));
bb._put(bi + 1, int1(x)); bb._put(bi + 1, int1(x));
bb._put(bi + 0, int0(x)); bb._put(bi , int0(x));
} }
static void putIntL(long a, int x) { static void putIntL(long a, int x) {
_put(a + 3, int3(x)); _put(a + 3, int3(x));
_put(a + 2, int2(x)); _put(a + 2, int2(x));
_put(a + 1, int1(x)); _put(a + 1, int1(x));
_put(a + 0, int0(x)); _put(a , int0(x));
} }
static void putIntB(ByteBuffer bb, int bi, int x) { static void putIntB(ByteBuffer bb, int bi, int x) {
bb._put(bi + 0, int3(x)); bb._put(bi , int3(x));
bb._put(bi + 1, int2(x)); bb._put(bi + 1, int2(x));
bb._put(bi + 2, int1(x)); bb._put(bi + 2, int1(x));
bb._put(bi + 3, int0(x)); bb._put(bi + 3, int0(x));
} }
static void putIntB(long a, int x) { static void putIntB(long a, int x) {
_put(a + 0, int3(x)); _put(a , int3(x));
_put(a + 1, int2(x)); _put(a + 1, int2(x));
_put(a + 2, int1(x)); _put(a + 2, int1(x));
_put(a + 3, int0(x)); _put(a + 3, int0(x));
@ -305,14 +299,14 @@ class Bits { // package-private
static private long makeLong(byte b7, byte b6, byte b5, byte b4, static private long makeLong(byte b7, byte b6, byte b5, byte b4,
byte b3, byte b2, byte b1, byte b0) byte b3, byte b2, byte b1, byte b0)
{ {
return ((((long)b7 & 0xff) << 56) | return ((((long)b7 ) << 56) |
(((long)b6 & 0xff) << 48) | (((long)b6 & 0xff) << 48) |
(((long)b5 & 0xff) << 40) | (((long)b5 & 0xff) << 40) |
(((long)b4 & 0xff) << 32) | (((long)b4 & 0xff) << 32) |
(((long)b3 & 0xff) << 24) | (((long)b3 & 0xff) << 24) |
(((long)b2 & 0xff) << 16) | (((long)b2 & 0xff) << 16) |
(((long)b1 & 0xff) << 8) | (((long)b1 & 0xff) << 8) |
(((long)b0 & 0xff) << 0)); (((long)b0 & 0xff) ));
} }
static long getLongL(ByteBuffer bb, int bi) { static long getLongL(ByteBuffer bb, int bi) {
@ -323,7 +317,7 @@ class Bits { // package-private
bb._get(bi + 3), bb._get(bi + 3),
bb._get(bi + 2), bb._get(bi + 2),
bb._get(bi + 1), bb._get(bi + 1),
bb._get(bi + 0)); bb._get(bi ));
} }
static long getLongL(long a) { static long getLongL(long a) {
@ -334,11 +328,11 @@ class Bits { // package-private
_get(a + 3), _get(a + 3),
_get(a + 2), _get(a + 2),
_get(a + 1), _get(a + 1),
_get(a + 0)); _get(a ));
} }
static long getLongB(ByteBuffer bb, int bi) { static long getLongB(ByteBuffer bb, int bi) {
return makeLong(bb._get(bi + 0), return makeLong(bb._get(bi ),
bb._get(bi + 1), bb._get(bi + 1),
bb._get(bi + 2), bb._get(bi + 2),
bb._get(bi + 3), bb._get(bi + 3),
@ -349,7 +343,7 @@ class Bits { // package-private
} }
static long getLongB(long a) { static long getLongB(long a) {
return makeLong(_get(a + 0), return makeLong(_get(a ),
_get(a + 1), _get(a + 1),
_get(a + 2), _get(a + 2),
_get(a + 3), _get(a + 3),
@ -360,11 +354,11 @@ class Bits { // package-private
} }
static long getLong(ByteBuffer bb, int bi, boolean bigEndian) { static long getLong(ByteBuffer bb, int bi, boolean bigEndian) {
return (bigEndian ? getLongB(bb, bi) : getLongL(bb, bi)); return bigEndian ? getLongB(bb, bi) : getLongL(bb, bi);
} }
static long getLong(long a, boolean bigEndian) { static long getLong(long a, boolean bigEndian) {
return (bigEndian ? getLongB(a) : getLongL(a)); return bigEndian ? getLongB(a) : getLongL(a);
} }
private static byte long7(long x) { return (byte)(x >> 56); } private static byte long7(long x) { return (byte)(x >> 56); }
@ -374,7 +368,7 @@ class Bits { // package-private
private static byte long3(long x) { return (byte)(x >> 24); } private static byte long3(long x) { return (byte)(x >> 24); }
private static byte long2(long x) { return (byte)(x >> 16); } private static byte long2(long x) { return (byte)(x >> 16); }
private static byte long1(long x) { return (byte)(x >> 8); } private static byte long1(long x) { return (byte)(x >> 8); }
private static byte long0(long x) { return (byte)(x >> 0); } private static byte long0(long x) { return (byte)(x ); }
static void putLongL(ByteBuffer bb, int bi, long x) { static void putLongL(ByteBuffer bb, int bi, long x) {
bb._put(bi + 7, long7(x)); bb._put(bi + 7, long7(x));
@ -384,7 +378,7 @@ class Bits { // package-private
bb._put(bi + 3, long3(x)); bb._put(bi + 3, long3(x));
bb._put(bi + 2, long2(x)); bb._put(bi + 2, long2(x));
bb._put(bi + 1, long1(x)); bb._put(bi + 1, long1(x));
bb._put(bi + 0, long0(x)); bb._put(bi , long0(x));
} }
static void putLongL(long a, long x) { static void putLongL(long a, long x) {
@ -395,11 +389,11 @@ class Bits { // package-private
_put(a + 3, long3(x)); _put(a + 3, long3(x));
_put(a + 2, long2(x)); _put(a + 2, long2(x));
_put(a + 1, long1(x)); _put(a + 1, long1(x));
_put(a + 0, long0(x)); _put(a , long0(x));
} }
static void putLongB(ByteBuffer bb, int bi, long x) { static void putLongB(ByteBuffer bb, int bi, long x) {
bb._put(bi + 0, long7(x)); bb._put(bi , long7(x));
bb._put(bi + 1, long6(x)); bb._put(bi + 1, long6(x));
bb._put(bi + 2, long5(x)); bb._put(bi + 2, long5(x));
bb._put(bi + 3, long4(x)); bb._put(bi + 3, long4(x));
@ -410,7 +404,7 @@ class Bits { // package-private
} }
static void putLongB(long a, long x) { static void putLongB(long a, long x) {
_put(a + 0, long7(x)); _put(a , long7(x));
_put(a + 1, long6(x)); _put(a + 1, long6(x));
_put(a + 2, long5(x)); _put(a + 2, long5(x));
_put(a + 3, long4(x)); _put(a + 3, long4(x));
@ -454,11 +448,11 @@ class Bits { // package-private
} }
static float getFloat(ByteBuffer bb, int bi, boolean bigEndian) { static float getFloat(ByteBuffer bb, int bi, boolean bigEndian) {
return (bigEndian ? getFloatB(bb, bi) : getFloatL(bb, bi)); return bigEndian ? getFloatB(bb, bi) : getFloatL(bb, bi);
} }
static float getFloat(long a, boolean bigEndian) { static float getFloat(long a, boolean bigEndian) {
return (bigEndian ? getFloatB(a) : getFloatL(a)); return bigEndian ? getFloatB(a) : getFloatL(a);
} }
static void putFloatL(ByteBuffer bb, int bi, float x) { static void putFloatL(ByteBuffer bb, int bi, float x) {
@ -511,11 +505,11 @@ class Bits { // package-private
} }
static double getDouble(ByteBuffer bb, int bi, boolean bigEndian) { static double getDouble(ByteBuffer bb, int bi, boolean bigEndian) {
return (bigEndian ? getDoubleB(bb, bi) : getDoubleL(bb, bi)); return bigEndian ? getDoubleB(bb, bi) : getDoubleL(bb, bi);
} }
static double getDouble(long a, boolean bigEndian) { static double getDouble(long a, boolean bigEndian) {
return (bigEndian ? getDoubleB(a) : getDoubleL(a)); return bigEndian ? getDoubleB(a) : getDoubleL(a);
} }
static void putDoubleL(ByteBuffer bb, int bi, double x) { static void putDoubleL(ByteBuffer bb, int bi, double x) {