ClassReader relies on autoboxing for reuse of cached primitive values
Issue: SPR-12365
This commit is contained in:
parent
051c5fb66a
commit
b16048b061
|
@ -1830,24 +1830,19 @@ public class ClassReader {
|
|||
v += 2;
|
||||
break;
|
||||
case 'B': // pointer to CONSTANT_Byte
|
||||
av.visit(name,
|
||||
new Byte((byte) readInt(items[readUnsignedShort(v)])));
|
||||
av.visit(name, (byte) readInt(items[readUnsignedShort(v)]));
|
||||
v += 2;
|
||||
break;
|
||||
case 'Z': // pointer to CONSTANT_Boolean
|
||||
av.visit(name,
|
||||
readInt(items[readUnsignedShort(v)]) == 0 ? Boolean.FALSE
|
||||
: Boolean.TRUE);
|
||||
av.visit(name, readInt(items[readUnsignedShort(v)]) == 0 ? Boolean.FALSE : Boolean.TRUE);
|
||||
v += 2;
|
||||
break;
|
||||
case 'S': // pointer to CONSTANT_Short
|
||||
av.visit(name, new Short(
|
||||
(short) readInt(items[readUnsignedShort(v)])));
|
||||
av.visit(name, (short) readInt(items[readUnsignedShort(v)]));
|
||||
v += 2;
|
||||
break;
|
||||
case 'C': // pointer to CONSTANT_Char
|
||||
av.visit(name, new Character(
|
||||
(char) readInt(items[readUnsignedShort(v)])));
|
||||
av.visit(name, (char) readInt(items[readUnsignedShort(v)]));
|
||||
v += 2;
|
||||
break;
|
||||
case 's': // pointer to CONSTANT_Utf8
|
||||
|
@ -2471,13 +2466,13 @@ public class ClassReader {
|
|||
int index = items[item];
|
||||
switch (b[index - 1]) {
|
||||
case ClassWriter.INT:
|
||||
return new Integer(readInt(index));
|
||||
return readInt(index);
|
||||
case ClassWriter.FLOAT:
|
||||
return new Float(Float.intBitsToFloat(readInt(index)));
|
||||
return Float.intBitsToFloat(readInt(index));
|
||||
case ClassWriter.LONG:
|
||||
return new Long(readLong(index));
|
||||
return readLong(index);
|
||||
case ClassWriter.DOUBLE:
|
||||
return new Double(Double.longBitsToDouble(readLong(index)));
|
||||
return Double.longBitsToDouble(readLong(index));
|
||||
case ClassWriter.CLASS:
|
||||
return Type.getObjectType(readUTF8(index, buf));
|
||||
case ClassWriter.STR:
|
||||
|
|
Loading…
Reference in New Issue