49 */
50 BinaryConstantPool(DataInputStream in) throws IOException {
51 // JVM 4.1 ClassFile.constant_pool_count
52 types = new byte[in.readUnsignedShort()];
53 cpool = new Object[types.length];
54 for (int i = 1 ; i < cpool.length ; i++) {
55 int j = i;
56 // JVM 4.4 cp_info.tag
57 switch(types[i] = in.readByte()) {
58 case CONSTANT_UTF8:
59 cpool[i] = in.readUTF();
60 break;
61
62 case CONSTANT_INTEGER:
63 cpool[i] = new Integer(in.readInt());
64 break;
65 case CONSTANT_FLOAT:
66 cpool[i] = new Float(in.readFloat());
67 break;
68 case CONSTANT_LONG:
69 cpool[i++] = new Long(in.readLong());
70 break;
71 case CONSTANT_DOUBLE:
72 cpool[i++] = new Double(in.readDouble());
73 break;
74
75 case CONSTANT_CLASS:
76 case CONSTANT_STRING:
77 // JVM 4.4.3 CONSTANT_String_info.string_index
78 // or JVM 4.4.1 CONSTANT_Class_info.name_index
79 cpool[i] = new Integer(in.readUnsignedShort());
80 break;
81
82 case CONSTANT_FIELD:
83 case CONSTANT_METHOD:
84 case CONSTANT_INTERFACEMETHOD:
85 case CONSTANT_NAMEANDTYPE:
86 // JVM 4.4.2 CONSTANT_*ref_info.class_index & name_and_type_index
87 cpool[i] = new Integer((in.readUnsignedShort() << 16) | in.readUnsignedShort());
88 break;
89
|
49 */
50 BinaryConstantPool(DataInputStream in) throws IOException {
51 // JVM 4.1 ClassFile.constant_pool_count
52 types = new byte[in.readUnsignedShort()];
53 cpool = new Object[types.length];
54 for (int i = 1 ; i < cpool.length ; i++) {
55 int j = i;
56 // JVM 4.4 cp_info.tag
57 switch(types[i] = in.readByte()) {
58 case CONSTANT_UTF8:
59 cpool[i] = in.readUTF();
60 break;
61
62 case CONSTANT_INTEGER:
63 cpool[i] = new Integer(in.readInt());
64 break;
65 case CONSTANT_FLOAT:
66 cpool[i] = new Float(in.readFloat());
67 break;
68 case CONSTANT_LONG:
69 cpool[i++] = in.readLong();
70 break;
71 case CONSTANT_DOUBLE:
72 cpool[i++] = new Double(in.readDouble());
73 break;
74
75 case CONSTANT_CLASS:
76 case CONSTANT_STRING:
77 // JVM 4.4.3 CONSTANT_String_info.string_index
78 // or JVM 4.4.1 CONSTANT_Class_info.name_index
79 cpool[i] = new Integer(in.readUnsignedShort());
80 break;
81
82 case CONSTANT_FIELD:
83 case CONSTANT_METHOD:
84 case CONSTANT_INTERFACEMETHOD:
85 case CONSTANT_NAMEANDTYPE:
86 // JVM 4.4.2 CONSTANT_*ref_info.class_index & name_and_type_index
87 cpool[i] = new Integer((in.readUnsignedShort() << 16) | in.readUnsignedShort());
88 break;
89
|