mirror of
https://github.com/revanced/smali.git
synced 2025-05-02 23:54:38 +02:00
Remove the DexBuffer wrapper methods from DexReader
This commit is contained in:
parent
982e9f614f
commit
fd26bc6062
@ -38,16 +38,16 @@ import org.jf.dexlib2.iface.value.EncodedValue;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class DexBackedAnnotationElement extends BaseAnnotationElement {
|
||||
@Nonnull private final DexBuffer dexBuffer;
|
||||
@Nonnull private final DexBuffer dexBuf;
|
||||
public final int nameIndex;
|
||||
@Nonnull public final EncodedValue value;
|
||||
|
||||
public DexBackedAnnotationElement(@Nonnull DexReader reader) {
|
||||
this.dexBuffer = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.nameIndex = reader.readSmallUleb128();
|
||||
this.value = DexBackedEncodedValue.readFrom(reader);
|
||||
}
|
||||
|
||||
@Nonnull @Override public String getName() { return dexBuffer.getString(nameIndex); }
|
||||
@Nonnull @Override public String getName() { return dexBuf.getString(nameIndex); }
|
||||
@Nonnull @Override public EncodedValue getValue() { return value; }
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public class DexBackedExceptionHandler extends BaseExceptionHandler implements E
|
||||
|
||||
public DexBackedExceptionHandler(@Nonnull DexReader reader) {
|
||||
// TODO: verify dalvik doesn't accept an exception handler that points in the middle of an instruction
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.typeId = reader.readSmallUleb128();
|
||||
this.handlerCodeAddress = reader.readSmallUleb128();
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ public class DexBackedField extends BaseFieldReference implements Field {
|
||||
int previousFieldIndex,
|
||||
@Nonnull StaticInitialValueIterator staticInitialValueIterator,
|
||||
@Nonnull AnnotationsDirectory.AnnotationIterator annotationIterator) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.classDef = classDef;
|
||||
|
||||
int fieldIndexDiff = reader.readSmallUleb128();
|
||||
|
@ -73,7 +73,7 @@ public class DexBackedMethod extends BaseMethodReference implements Method {
|
||||
public DexBackedMethod(@Nonnull DexReader reader,
|
||||
@Nonnull DexBackedClassDef classDef,
|
||||
int previousMethodIndex) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.classDef = classDef;
|
||||
|
||||
int methodIndexDiff = reader.readSmallUleb128();
|
||||
@ -90,7 +90,7 @@ public class DexBackedMethod extends BaseMethodReference implements Method {
|
||||
int previousMethodIndex,
|
||||
@Nonnull AnnotationsDirectory.AnnotationIterator methodAnnotationIterator,
|
||||
@Nonnull AnnotationsDirectory.AnnotationIterator paramaterAnnotationIterator) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.classDef = classDef;
|
||||
|
||||
int methodIndexDiff = reader.readSmallUleb128();
|
||||
|
@ -36,7 +36,7 @@ import org.jf.util.ExceptionWithContext;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class DexReader {
|
||||
@Nonnull private final DexBuffer dexBuf;
|
||||
@Nonnull public final DexBuffer dexBuf;
|
||||
private int offset;
|
||||
|
||||
public DexReader(@Nonnull DexBuffer dexBuf, int offset) {
|
||||
@ -44,24 +44,9 @@ public class DexReader {
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
@Nonnull public DexBuffer getDexBuffer() { return dexBuf; }
|
||||
public int getOffset() { return offset; }
|
||||
public void setOffset(int offset) { this.offset = offset; }
|
||||
|
||||
public int getStringIdItemOffset(int stringIndex) { return dexBuf.getStringIdItemOffset(stringIndex); }
|
||||
public int getTypeIdItemOffset(int typeIndex) { return dexBuf.getTypeIdItemOffset(typeIndex); }
|
||||
public int getFieldIdItemOffset(int fieldIndex) { return dexBuf.getFieldIdItemOffset(fieldIndex); }
|
||||
public int getMethodIdItemOffset(int methodIndex) { return dexBuf.getMethodIdItemOffset(methodIndex); }
|
||||
public int getProtoIdItemOffset(int methodIndex) { return dexBuf.getProtoIdItemOffset(methodIndex); }
|
||||
public int getClassDefItemOffset(int classIndex) { return dexBuf.getClassDefItemOffset(classIndex); }
|
||||
public String getString(int stringIndex) { return dexBuf.getString(stringIndex); }
|
||||
public String getOptionalString(int stringIndex) { return dexBuf.getOptionalString(stringIndex); }
|
||||
public String getType(int typeIndex) { return dexBuf.getType(typeIndex); }
|
||||
public String getOptionalType(int typeIndex) { return dexBuf.getOptionalType(typeIndex); }
|
||||
public String getField(int fieldIndex) { return dexBuf.getField(fieldIndex); }
|
||||
public String getMethod(int methodIndex) { return dexBuf.getMethod(methodIndex); }
|
||||
public String getReference(int type, int index) { return dexBuf.getReference(type, index); }
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public int readSleb128() {
|
||||
int end = offset;
|
||||
|
@ -66,7 +66,7 @@ public abstract class DexBackedInstruction implements Instruction {
|
||||
Opcode opcode = Opcode.getOpcodeByValue(opcodeValue);
|
||||
|
||||
//TODO: handle unexpected/unknown opcodes
|
||||
Instruction instruction = buildInstruction(reader.getDexBuffer(), opcode, reader.getOffset());
|
||||
Instruction instruction = buildInstruction(reader.dexBuf, opcode, reader.getOffset());
|
||||
reader.moveRelative(instruction.getCodeUnits()*2);
|
||||
return instruction;
|
||||
}
|
||||
|
@ -247,7 +247,7 @@ public abstract class DebugInfo implements Iterable<DebugItem> {
|
||||
final MethodParameter methodParameter = methodParametersWithoutNames.get(index);
|
||||
String _name = null;
|
||||
if (index < parameterNameCount) {
|
||||
_name = reader.getOptionalString(reader.readSmallUleb128() - 1);
|
||||
_name = dexBuf.getOptionalString(reader.readSmallUleb128() - 1);
|
||||
}
|
||||
final String name = _name;
|
||||
|
||||
|
@ -48,8 +48,8 @@ public class DexBackedAnnotationEncodedValue extends BaseAnnotationEncodedValue
|
||||
private final int elementsOffset;
|
||||
|
||||
public DexBackedAnnotationEncodedValue(@Nonnull DexReader reader) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.type = reader.getType(reader.readSmallUleb128());
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.type = dexBuf.getType(reader.readSmallUleb128());
|
||||
this.elementCount = reader.readSmallUleb128();
|
||||
this.elementsOffset = reader.getOffset();
|
||||
skipElements(reader, elementCount);
|
||||
|
@ -47,7 +47,7 @@ public class DexBackedArrayEncodedValue extends BaseArrayEncodedValue implements
|
||||
private final int encodedArrayOffset;
|
||||
|
||||
public DexBackedArrayEncodedValue(@Nonnull DexReader reader) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
this.elementCount = reader.readSmallUleb128();
|
||||
this.encodedArrayOffset = reader.getOffset();
|
||||
skipElementsFrom(reader, elementCount);
|
||||
|
@ -79,7 +79,8 @@ public abstract class DexBackedEncodedValue {
|
||||
return new DexBackedStringEncodedValue(reader, valueArg);
|
||||
case ValueType.TYPE:
|
||||
Preconditions.checkValueArg(valueArg, 3);
|
||||
return new ImmutableTypeEncodedValue(reader.getType(reader.readSizedSmallUint(valueArg + 1)));
|
||||
return new ImmutableTypeEncodedValue(reader.dexBuf.getType(
|
||||
reader.readSizedSmallUint(valueArg + 1)));
|
||||
case ValueType.FIELD:
|
||||
Preconditions.checkValueArg(valueArg, 3);
|
||||
return new DexBackedFieldEncodedValue(reader, valueArg);
|
||||
|
@ -44,7 +44,7 @@ public class DexBackedEnumEncodedValue extends BaseEnumEncodedValue {
|
||||
private final int fieldIndex;
|
||||
|
||||
public DexBackedEnumEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ public class DexBackedFieldEncodedValue extends BaseFieldEncodedValue {
|
||||
private final int fieldIndex;
|
||||
|
||||
public DexBackedFieldEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ public class DexBackedMethodEncodedValue extends BaseMethodEncodedValue {
|
||||
private final int MethodIndex;
|
||||
|
||||
public DexBackedMethodEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
MethodIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ public class DexBackedStringEncodedValue extends BaseStringEncodedValue {
|
||||
private final int stringIndex;
|
||||
|
||||
public DexBackedStringEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
stringIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ public class DexBackedTypeEncodedValue extends BaseTypeEncodedValue {
|
||||
private final int typeIndex;
|
||||
|
||||
public DexBackedTypeEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||
this.dexBuf = reader.getDexBuffer();
|
||||
this.dexBuf = reader.dexBuf;
|
||||
typeIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user