public StructClass(byte[] bytes, boolean own, LazyLoader loader) throws IOException { this(new DataInputFullStream(bytes), own, loader); }
int opcode = in.readUnsignedByte(); int group = GROUP_GENERAL; opcode = in.readUnsignedByte(); switch (opcode) { case opc_bipush: operands.add((int)in.readByte()); i++; break; case opc_ldc: case opc_newarray: operands.add(in.readUnsignedByte()); i++; break; operands.add((int)in.readShort()); i += 2; break; case opc_checkcast: case opc_instanceof: operands.add(in.readUnsignedShort()); i += 2; if (opcode >= opc_getstatic && opcode <= opc_putfield) { case opc_invokedynamic: if (classStruct.isVersionGE_1_7()) { // instruction unused in Java 6 and before operands.add(in.readUnsignedShort());
in.discard(8); in.discard(6); in.discard(in.readUnsignedShort() * 2); int size = in.readUnsignedShort(); for (int i = 0; i < size; i++) { in.discard(6); skipAttributes(in); size = in.readUnsignedShort(); for (int i = 0; i < size; i++) { in.discard(2); int nameIndex = in.readUnsignedShort(); int descriptorIndex = in.readUnsignedShort(); int attrSize = in.readUnsignedShort(); for (int j = 0; j < attrSize; j++) { int attrNameIndex = in.readUnsignedShort(); String attrName = pool.getPrimitiveConstant(attrNameIndex).getString(); if (!StructGeneralAttribute.ATTRIBUTE_CODE.getName().equals(attrName)) { in.discard(in.readInt()); continue; in.discard(12); return in.read(codeFullLength);
public static void skipAttributes(DataInputFullStream in) throws IOException { int length = in.readUnsignedShort(); for (int i = 0; i < length; i++) { in.discard(2); in.discard(in.readInt()); } }
public static void skipPool(DataInputFullStream in) throws IOException { int size = in.readUnsignedShort(); switch (in.readUnsignedByte()) { case CodeConstants.CONSTANT_Utf8: in.readUTF(); break; case CodeConstants.CONSTANT_NameAndType: case CodeConstants.CONSTANT_InvokeDynamic: in.discard(4); break; in.discard(8); i++; break; case CodeConstants.CONSTANT_String: case CodeConstants.CONSTANT_MethodType: in.discard(2); break; in.discard(3);
protected StructGeneralAttribute readAttribute(DataInputFullStream in, ConstantPool pool, String name) throws IOException { StructGeneralAttribute attribute = StructGeneralAttribute.createAttribute(name); int length = in.readInt(); if (attribute == null) { in.discard(length); } else { attribute.initContent(in, pool); } return attribute; } }
@Override public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { int len = data.readUnsignedShort() * 2; if (len > 0) { myLineInfo = new int[len]; for (int i = 0; i < len; i += 2) { myLineInfo[i] = data.readUnsignedShort(); myLineInfo[i + 1] = data.readUnsignedShort(); } } else if (myLineInfo.length > 0) { myLineInfo = InterpreterUtil.EMPTY_INT_ARRAY; } }
this.loader = loader; in.discard(4); minorVersion = in.readUnsignedShort(); majorVersion = in.readUnsignedShort(); accessFlags = in.readUnsignedShort(); int thisClassIdx = in.readUnsignedShort(); int superClassIdx = in.readUnsignedShort(); qualifiedName = pool.getPrimitiveConstant(thisClassIdx).getString(); superClass = pool.getPrimitiveConstant(superClassIdx); int length = in.readUnsignedShort(); interfaces = new int[length]; interfaceNames = new String[length]; for (int i = 0; i < length; i++) { interfaces[i] = in.readUnsignedShort(); interfaceNames[i] = pool.getPrimitiveConstant(interfaces[i]).getString(); length = in.readUnsignedShort(); fields = new VBStyleCollection<>(length); for (int i = 0; i < length; i++) { length = in.readUnsignedShort(); methods = new VBStyleCollection<>(length); for (int i = 0; i < length; i++) {
@Override public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { int len = data.readUnsignedByte(); List<Entry> entries; if (len > 0) { entries = new ArrayList<>(len); for (int i = 0; i < len; i++) { int nameIndex = data.readUnsignedShort(); String name = nameIndex != 0 ? pool.getPrimitiveConstant(nameIndex).getString() : null; int access_flags = data.readUnsignedShort(); entries.add(new Entry(name, access_flags)); } } else { entries = Collections.emptyList(); } myEntries = Collections.unmodifiableList(entries); }
public ConstantPool loadPool(String classname) { try (DataInputFullStream in = getClassStream(classname)) { if (in != null) { in.discard(8); return new ConstantPool(in); } return null; } catch (IOException ex) { throw new RuntimeException(ex); } }
@Override public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { int len = data.readUnsignedByte(); if (len > 0) { paramAnnotations = new ArrayList<>(len); for (int i = 0; i < len; i++) { List<AnnotationExprent> annotations = StructAnnotationAttribute.parseAnnotations(pool, data); paramAnnotations.add(annotations); } } else { paramAnnotations = Collections.emptyList(); } }
@Override protected StructGeneralAttribute readAttribute(DataInputFullStream in, ConstantPool pool, String name) throws IOException { if (StructGeneralAttribute.ATTRIBUTE_CODE.getName().equals(name)) { if (!classStruct.isOwn()) { // skip code in foreign classes in.discard(8); in.discard(in.readInt()); in.discard(8 * in.readUnsignedShort()); } else { containsCode = true; in.discard(6); localVariables = in.readUnsignedShort(); codeLength = in.readInt(); in.discard(codeLength); int excLength = in.readUnsignedShort(); in.discard(excLength * 8); codeFullLength = codeLength + excLength * 8 + 2; } codeAttributes = readAttributes(in, pool); return null; } return super.readAttribute(in, pool, name); }
public static void skipPool(DataInputFullStream in) throws IOException { int size = in.readUnsignedShort(); switch (in.readUnsignedByte()) { case CodeConstants.CONSTANT_Utf8: in.readUTF(); break; case CodeConstants.CONSTANT_NameAndType: case CodeConstants.CONSTANT_InvokeDynamic: in.discard(4); break; in.discard(8); i++; break; case CodeConstants.CONSTANT_String: case CodeConstants.CONSTANT_MethodType: in.discard(2); break; in.discard(3);
@Override public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { index = data.readUnsignedShort(); }
protected StructGeneralAttribute readAttribute(DataInputFullStream in, ConstantPool pool, String name) throws IOException { StructGeneralAttribute attribute = StructGeneralAttribute.createAttribute(name); int length = in.readInt(); if (attribute == null) { in.discard(length); } else { attribute.initContent(in, pool); } return attribute; } }
this.loader = loader; in.discard(4); minorVersion = in.readUnsignedShort(); majorVersion = in.readUnsignedShort(); accessFlags = in.readUnsignedShort(); int thisClassIdx = in.readUnsignedShort(); int superClassIdx = in.readUnsignedShort(); qualifiedName = pool.getPrimitiveConstant(thisClassIdx).getString(); superClass = pool.getPrimitiveConstant(superClassIdx); int length = in.readUnsignedShort(); interfaces = new int[length]; interfaceNames = new String[length]; for (int i = 0; i < length; i++) { interfaces[i] = in.readUnsignedShort(); interfaceNames[i] = pool.getPrimitiveConstant(interfaces[i]).getString(); length = in.readUnsignedShort(); fields = new VBStyleCollection<>(length); for (int i = 0; i < length; i++) { length = in.readUnsignedShort(); methods = new VBStyleCollection<>(length); for (int i = 0; i < length; i++) {
public ConstantPool loadPool(String classname) { try (DataInputFullStream in = getClassStream(classname)) { if (in != null) { in.discard(8); return new ConstantPool(in); } return null; } catch (IOException ex) { throw new RuntimeException(ex); } }
@Override public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { int len = data.readUnsignedByte(); if (len > 0) { paramAnnotations = new ArrayList<>(len); for (int i = 0; i < len; i++) { List<AnnotationExprent> annotations = StructAnnotationAttribute.parseAnnotations(pool, data); paramAnnotations.add(annotations); } } else { paramAnnotations = Collections.emptyList(); } }
int opcode = in.readUnsignedByte(); int group = GROUP_GENERAL; opcode = in.readUnsignedByte(); switch (opcode) { case opc_bipush: operands.add(Integer.valueOf(in.readByte())); i++; break; case opc_ldc: case opc_newarray: operands.add(Integer.valueOf(in.readUnsignedByte())); i++; break; operands.add(Integer.valueOf(in.readShort())); i += 2; break; case opc_checkcast: case opc_instanceof: operands.add(in.readUnsignedShort()); i += 2; if (opcode >= opc_getstatic && opcode <= opc_putfield) { case opc_invokedynamic: if (classStruct.isVersionGE_1_7()) { // instruction unused in Java 6 and before operands.add(in.readUnsignedShort());
public static void skipAttributes(DataInputFullStream in) throws IOException { int length = in.readUnsignedShort(); for (int i = 0; i < length; i++) { in.discard(2); in.discard(in.readInt()); } }