int addrDiff = Leb128.readUnsignedLeb128(inAdapter); Leb128.writeUnsignedLeb128(outAdapter, addrDiff); break; int lineDiff = Leb128.readSignedLeb128(inAdapter); Leb128.writeSignedLeb128(outAdapter, lineDiff); break; int registerNum = Leb128.readUnsignedLeb128(inAdapter); Leb128.writeUnsignedLeb128(outAdapter, registerNum); int nameIndex = adjustStringIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); int typeIndex = adjustTypeIdIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, typeIndex); int sigIndex = adjustStringIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, sigIndex); int registerNum = Leb128.readUnsignedLeb128(inAdapter); Leb128.writeUnsignedLeb128(outAdapter, registerNum); break; int nameIndex = adjustStringIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); break;
@Override public int byteCountInDex() { int insnsSize = instructions.length; int res = 4 * SizeOf.USHORT + 2 * SizeOf.UINT + insnsSize * SizeOf.USHORT; if (tries.length > 0) { if ((insnsSize & 1) == 1) { res += SizeOf.USHORT; } res += tries.length * SizeOf.TRY_ITEM; int catchHandlerSize = catchHandlers.length; res += Leb128.unsignedLeb128Size(catchHandlerSize); for (CatchHandler catchHandler : catchHandlers) { int typeIdxAddrPairCount = catchHandler.typeIndexes.length; if (catchHandler.catchAllAddress != -1) { res += Leb128.signedLeb128Size(-typeIdxAddrPairCount) + Leb128.unsignedLeb128Size(catchHandler.catchAllAddress); } else { res += Leb128.signedLeb128Size(typeIdxAddrPairCount); } for (int i = 0; i < typeIdxAddrPairCount; ++i) { res += Leb128.unsignedLeb128Size(catchHandler.typeIndexes[i]) + Leb128.unsignedLeb128Size(catchHandler.addresses[i]); } } } return res; }
@Override public int byteCountInDex() { int byteCount = Leb128.unsignedLeb128Size(lineStart) + Leb128.unsignedLeb128Size(parameterNames.length); for (int pn : parameterNames) { byteCount += Leb128.unsignedLeb128p1Size(pn); } byteCount += infoSTM.length * SizeOf.UBYTE; return byteCount; } }
Leb128.writeUnsignedLeb128(outAdapter, addrDiff); break; Leb128.writeSignedLeb128(outAdapter, lineDiff); break; case DebugInfoItem.DBG_START_LOCAL_EXTENDED: { int registerNum = readUleb128(); Leb128.writeUnsignedLeb128(outAdapter, registerNum); int nameIndex = readUleb128p1(); Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); int typeIndex = readUleb128p1(); Leb128.writeUnsignedLeb128p1(outAdapter, typeIndex); if (opcode == DebugInfoItem.DBG_START_LOCAL_EXTENDED) { int sigIndex = readUleb128p1(); Leb128.writeUnsignedLeb128p1(outAdapter, sigIndex); case DebugInfoItem.DBG_RESTART_LOCAL: { int registerNum = readUleb128(); Leb128.writeUnsignedLeb128(outAdapter, registerNum); break; Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); break;
/** * Reads an unsigned leb128p1 integer from {@code in}. */ public static int readUnsignedLeb128p1(ByteInput in) { return readUnsignedLeb128(in) - 1; }
/** * Writes {@code value} as an unsigned integer to {@code out}, starting at * {@code offset}. Returns the number of bytes written. */ public static int writeUnsignedLeb128p1(ByteOutput out, int value) { return writeUnsignedLeb128(out, value + 1); }
private int calcMethodsSize(Method[] methods) { int res = 0; int prevMethodIndex = 0; for (Method method : methods) { int methodIndexDelta = method.methodIndex - prevMethodIndex; prevMethodIndex = method.methodIndex; res += Leb128.unsignedLeb128Size(methodIndexDelta) + Leb128.unsignedLeb128Size(method.accessFlags) + Leb128.unsignedLeb128Size(method.codeOffset); } return res; }
public int readSleb128() { return Leb128.readSignedLeb128(this); }
public void writeSleb128(int i) { Leb128.writeSignedLeb128(this, i); }
Leb128.writeUnsignedLeb128(outAdapter, addrDiff); break; Leb128.writeSignedLeb128(outAdapter, lineDiff); break; case DebugInfoItem.DBG_START_LOCAL_EXTENDED: { int registerNum = readUleb128(); Leb128.writeUnsignedLeb128(outAdapter, registerNum); int nameIndex = readUleb128p1(); Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); int typeIndex = readUleb128p1(); Leb128.writeUnsignedLeb128p1(outAdapter, typeIndex); if (opcode == DebugInfoItem.DBG_START_LOCAL_EXTENDED) { int sigIndex = readUleb128p1(); Leb128.writeUnsignedLeb128p1(outAdapter, sigIndex); case DebugInfoItem.DBG_RESTART_LOCAL: { int registerNum = readUleb128(); Leb128.writeUnsignedLeb128(outAdapter, registerNum); break; Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); break;
public int readUleb128() { return Leb128.readUnsignedLeb128(this); }
public void writeUleb128(int i) { Leb128.writeUnsignedLeb128(this, i); }
private int calcFieldsSize(Field[] fields) { int res = 0; int prevFieldIndex = 0; for (Field field : fields) { int fieldIndexDelta = field.fieldIndex - prevFieldIndex; prevFieldIndex = field.fieldIndex; res += Leb128.unsignedLeb128Size(fieldIndexDelta) + Leb128.unsignedLeb128Size(field.accessFlags); } return res; }
public int readSleb128() { return Leb128.readSignedLeb128(this); }
public void writeSleb128(int i) { Leb128.writeSignedLeb128(this, i); }
int addrDiff = Leb128.readUnsignedLeb128(inAdapter); Leb128.writeUnsignedLeb128(outAdapter, addrDiff); break; int lineDiff = Leb128.readSignedLeb128(inAdapter); Leb128.writeSignedLeb128(outAdapter, lineDiff); break; int registerNum = Leb128.readUnsignedLeb128(inAdapter); Leb128.writeUnsignedLeb128(outAdapter, registerNum); int nameIndex = adjustStringIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); int typeIndex = adjustTypeIdIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, typeIndex); int sigIndex = adjustStringIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, sigIndex); int registerNum = Leb128.readUnsignedLeb128(inAdapter); Leb128.writeUnsignedLeb128(outAdapter, registerNum); break; int nameIndex = adjustStringIndex(Leb128.readUnsignedLeb128p1(inAdapter)); Leb128.writeUnsignedLeb128p1(outAdapter, nameIndex); break;
public int readUleb128p1() { return Leb128.readUnsignedLeb128(this) - 1; }
private void transformAnnotation(EncodedValueReader reader) { int fieldCount = reader.readAnnotation(); Leb128.writeUnsignedLeb128(out, adjustTypeIdIndex(reader.getAnnotationType())); Leb128.writeUnsignedLeb128(out, fieldCount); for (int i = 0; i < fieldCount; i++) { Leb128.writeUnsignedLeb128(out, adjustStringIndex(reader.readAnnotationName())); transform(reader); } }
public static int unsignedLeb128p1Size(int value) { return unsignedLeb128Size(value + 1); }
@Override public int byteCountInDex() { int byteCount = Leb128.unsignedLeb128Size(lineStart) + Leb128.unsignedLeb128Size(parameterNames.length); for (int pn : parameterNames) { byteCount += Leb128.unsignedLeb128p1Size(pn); } byteCount += infoSTM.length * SizeOf.UBYTE; return byteCount; }