ClassReader relies on autoboxing for reuse of cached primitive values

Issue: SPR-12365
master
Juergen Hoeller 10 years ago
parent 051c5fb66a
commit b16048b061
  1. 21
      spring-core/src/main/java/org/springframework/asm/ClassReader.java

@ -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…
Cancel
Save