AbstractIndexMap.smali
.class public abstract Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;
}
.end annotation
# direct methods
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private adjustCatchHandlers([Lcom/tencent/tinker/android/dex/Code$CatchHandler;)[Lcom/tencent/tinker/android/dex/Code$CatchHandler;
.registers 10
const/4 v1, 0x0
if-eqz p1, :cond_6
array-length v0, p1
if-nez v0, :cond_7
:cond_6
:goto_6
return-object p1
:cond_7
array-length v0, p1
new-array v2, v0, [Lcom/tencent/tinker/android/dex/Code$CatchHandler;
move v0, v1
:goto_b
array-length v3, p1
if-ge v0, v3, :cond_35
aget-object v4, p1, v0
iget-object v3, v4, Lcom/tencent/tinker/android/dex/Code$CatchHandler;->typeIndexes:[I
array-length v5, v3
new-array v6, v5, [I
move v3, v1
:goto_16
if-ge v3, v5, :cond_25
iget-object v7, v4, Lcom/tencent/tinker/android/dex/Code$CatchHandler;->typeIndexes:[I
aget v7, v7, v3
invoke-virtual {p0, v7}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v7
aput v7, v6, v3
add-int/lit8 v3, v3, 0x1
goto :goto_16
:cond_25
new-instance v3, Lcom/tencent/tinker/android/dex/Code$CatchHandler;
iget-object v5, v4, Lcom/tencent/tinker/android/dex/Code$CatchHandler;->addresses:[I
iget v7, v4, Lcom/tencent/tinker/android/dex/Code$CatchHandler;->catchAllAddress:I
iget v4, v4, Lcom/tencent/tinker/android/dex/Code$CatchHandler;->offset:I
invoke-direct {v3, v6, v5, v7, v4}, Lcom/tencent/tinker/android/dex/Code$CatchHandler;-><init>([I[III)V
aput-object v3, v2, v0
add-int/lit8 v0, v0, 0x1
goto :goto_b
:cond_35
move-object p1, v2
goto :goto_6
.end method
.method private adjustDebugInfoItemSTM([B)[B
.registers 8
new-instance v0, Ljava/io/ByteArrayInputStream;
invoke-direct {v0, p1}, Ljava/io/ByteArrayInputStream;-><init>([B)V
new-instance v1, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$1;
invoke-direct {v1, p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$1;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Ljava/io/ByteArrayInputStream;)V
new-instance v2, Ljava/io/ByteArrayOutputStream;
array-length v3, p1
add-int/lit16 v3, v3, 0x200
invoke-direct {v2, v3}, Ljava/io/ByteArrayOutputStream;-><init>(I)V
new-instance v3, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$2;
invoke-direct {v3, p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$2;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Ljava/io/ByteArrayOutputStream;)V
:cond_17
:goto_17
invoke-virtual {v0}, Ljava/io/ByteArrayInputStream;->read()I
move-result v4
and-int/lit16 v4, v4, 0xff
invoke-virtual {v2, v4}, Ljava/io/ByteArrayOutputStream;->write(I)V
packed-switch v4, :pswitch_data_7a
:pswitch_23
goto :goto_17
:pswitch_24
invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
:pswitch_29
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v4
invoke-static {v3, v4}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
goto :goto_17
:pswitch_31
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readSignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v4
invoke-static {v3, v4}, Lcom/tencent/tinker/android/dex/Leb128;->writeSignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
goto :goto_17
:pswitch_39
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v5
invoke-static {v3, v5}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v5
invoke-virtual {p0, v5}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v5
invoke-static {v3, v5}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v5
invoke-virtual {p0, v5}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v5
invoke-static {v3, v5}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
const/4 v5, 0x4
if-ne v4, v5, :cond_17
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v4
invoke-virtual {p0, v4}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v4
invoke-static {v3, v4}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
goto :goto_17
:pswitch_65
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v4
invoke-static {v3, v4}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
goto :goto_17
:pswitch_6d
invoke-static {v1}, Lcom/tencent/tinker/android/dex/Leb128;->readUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteInput;)I
move-result v4
invoke-virtual {p0, v4}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v4
invoke-static {v3, v4}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128p1(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I
goto :goto_17
nop
:pswitch_data_7a
.packed-switch 0x0
:pswitch_24
:pswitch_29
:pswitch_31
:pswitch_39
:pswitch_39
:pswitch_65
:pswitch_65
:pswitch_23
:pswitch_23
:pswitch_6d
.end packed-switch
.end method
.method private adjustFields([Lcom/tencent/tinker/android/dex/ClassData$Field;)[Lcom/tencent/tinker/android/dex/ClassData$Field;
.registers 7
array-length v0, p1
new-array v1, v0, [Lcom/tencent/tinker/android/dex/ClassData$Field;
const/4 v0, 0x0
:goto_4
array-length v2, p1
if-ge v0, v2, :cond_1b
aget-object v2, p1, v0
iget v3, v2, Lcom/tencent/tinker/android/dex/ClassData$Field;->fieldIndex:I
invoke-virtual {p0, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustFieldIdIndex(I)I
move-result v3
new-instance v4, Lcom/tencent/tinker/android/dex/ClassData$Field;
iget v2, v2, Lcom/tencent/tinker/android/dex/ClassData$Field;->accessFlags:I
invoke-direct {v4, v3, v2}, Lcom/tencent/tinker/android/dex/ClassData$Field;-><init>(II)V
aput-object v4, v1, v0
add-int/lit8 v0, v0, 0x1
goto :goto_4
:cond_1b
return-object v1
.end method
.method private adjustInstructions([S)[S
.registers 3
if-eqz p1, :cond_5
array-length v0, p1
if-nez v0, :cond_6
:cond_5
:goto_5
return-object p1
:cond_6
new-instance v0, Lcom/tencent/tinker/commons/dexpatcher/util/InstructionTransformer;
invoke-direct {v0, p0}, Lcom/tencent/tinker/commons/dexpatcher/util/InstructionTransformer;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;)V
invoke-virtual {v0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/InstructionTransformer;->transform([S)[S
move-result-object p1
goto :goto_5
.end method
.method private adjustMethods([Lcom/tencent/tinker/android/dex/ClassData$Method;)[Lcom/tencent/tinker/android/dex/ClassData$Method;
.registers 8
array-length v0, p1
new-array v1, v0, [Lcom/tencent/tinker/android/dex/ClassData$Method;
const/4 v0, 0x0
:goto_4
array-length v2, p1
if-ge v0, v2, :cond_21
aget-object v2, p1, v0
iget v3, v2, Lcom/tencent/tinker/android/dex/ClassData$Method;->methodIndex:I
invoke-virtual {p0, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustMethodIdIndex(I)I
move-result v3
iget v4, v2, Lcom/tencent/tinker/android/dex/ClassData$Method;->codeOffset:I
invoke-virtual {p0, v4}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustCodeOffset(I)I
move-result v4
new-instance v5, Lcom/tencent/tinker/android/dex/ClassData$Method;
iget v2, v2, Lcom/tencent/tinker/android/dex/ClassData$Method;->accessFlags:I
invoke-direct {v5, v3, v2, v4}, Lcom/tencent/tinker/android/dex/ClassData$Method;-><init>(III)V
aput-object v5, v1, v0
add-int/lit8 v0, v0, 0x1
goto :goto_4
:cond_21
return-object v1
.end method
.method private adjustParameterNames([I)[I
.registers 6
array-length v1, p1
new-array v2, v1, [I
const/4 v0, 0x0
:goto_4
if-ge v0, v1, :cond_11
aget v3, p1, v0
invoke-virtual {p0, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v3
aput v3, v2, v0
add-int/lit8 v0, v0, 0x1
goto :goto_4
:cond_11
return-object v2
.end method
# virtual methods
.method public adjust(Lcom/tencent/tinker/android/dex/Annotation;)Lcom/tencent/tinker/android/dex/Annotation;
.registers 8
new-instance v0, Ljava/io/ByteArrayOutputStream;
iget-object v1, p1, Lcom/tencent/tinker/android/dex/Annotation;->encodedAnnotation:Lcom/tencent/tinker/android/dex/EncodedValue;
iget-object v1, v1, Lcom/tencent/tinker/android/dex/EncodedValue;->data:[B
array-length v1, v1
invoke-direct {v0, v1}, Ljava/io/ByteArrayOutputStream;-><init>(I)V
new-instance v1, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;
new-instance v2, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$4;
invoke-direct {v2, p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$4;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Ljava/io/ByteArrayOutputStream;)V
invoke-direct {v1, p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Lcom/tencent/tinker/android/dex/util/ByteOutput;)V
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Annotation;->getReader()Lcom/tencent/tinker/android/dex/EncodedValueReader;
move-result-object v2
# invokes: Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transformAnnotation(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
invoke-static {v1, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->access$100(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
new-instance v1, Lcom/tencent/tinker/android/dex/Annotation;
iget v2, p1, Lcom/tencent/tinker/android/dex/Annotation;->off:I
iget-byte v3, p1, Lcom/tencent/tinker/android/dex/Annotation;->visibility:B
new-instance v4, Lcom/tencent/tinker/android/dex/EncodedValue;
iget-object v5, p1, Lcom/tencent/tinker/android/dex/Annotation;->encodedAnnotation:Lcom/tencent/tinker/android/dex/EncodedValue;
iget v5, v5, Lcom/tencent/tinker/android/dex/EncodedValue;->off:I
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
invoke-direct {v4, v5, v0}, Lcom/tencent/tinker/android/dex/EncodedValue;-><init>(I[B)V
invoke-direct {v1, v2, v3, v4}, Lcom/tencent/tinker/android/dex/Annotation;-><init>(IBLcom/tencent/tinker/android/dex/EncodedValue;)V
return-object v1
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/AnnotationSet;)Lcom/tencent/tinker/android/dex/AnnotationSet;
.registers 6
iget-object v0, p1, Lcom/tencent/tinker/android/dex/AnnotationSet;->annotationOffsets:[I
array-length v1, v0
new-array v2, v1, [I
const/4 v0, 0x0
:goto_6
if-ge v0, v1, :cond_15
iget-object v3, p1, Lcom/tencent/tinker/android/dex/AnnotationSet;->annotationOffsets:[I
aget v3, v3, v0
invoke-virtual {p0, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationOffset(I)I
move-result v3
aput v3, v2, v0
add-int/lit8 v0, v0, 0x1
goto :goto_6
:cond_15
new-instance v0, Lcom/tencent/tinker/android/dex/AnnotationSet;
iget v1, p1, Lcom/tencent/tinker/android/dex/AnnotationSet;->off:I
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/AnnotationSet;-><init>(I[I)V
return-object v0
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/AnnotationSetRefList;)Lcom/tencent/tinker/android/dex/AnnotationSetRefList;
.registers 6
iget-object v0, p1, Lcom/tencent/tinker/android/dex/AnnotationSetRefList;->annotationSetRefItems:[I
array-length v1, v0
new-array v2, v1, [I
const/4 v0, 0x0
:goto_6
if-ge v0, v1, :cond_15
iget-object v3, p1, Lcom/tencent/tinker/android/dex/AnnotationSetRefList;->annotationSetRefItems:[I
aget v3, v3, v0
invoke-virtual {p0, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationSetOffset(I)I
move-result v3
aput v3, v2, v0
add-int/lit8 v0, v0, 0x1
goto :goto_6
:cond_15
new-instance v0, Lcom/tencent/tinker/android/dex/AnnotationSetRefList;
iget v1, p1, Lcom/tencent/tinker/android/dex/AnnotationSetRefList;->off:I
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/AnnotationSetRefList;-><init>(I[I)V
return-object v0
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/AnnotationsDirectory;)Lcom/tencent/tinker/android/dex/AnnotationsDirectory;
.registers 11
const/4 v7, 0x2
const/4 v8, 0x1
const/4 v1, 0x0
iget v0, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->classAnnotationsOffset:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationSetOffset(I)I
move-result v2
iget-object v0, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->fieldAnnotations:[[I
array-length v0, v0
filled-new-array {v0, v7}, [I
move-result-object v0
sget-object v3, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
invoke-static {v3, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v3
check-cast v3, [[I
move v0, v1
:goto_19
array-length v4, v3
if-ge v0, v4, :cond_3b
aget-object v4, v3, v0
iget-object v5, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->fieldAnnotations:[[I
aget-object v5, v5, v0
aget v5, v5, v1
invoke-virtual {p0, v5}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustFieldIdIndex(I)I
move-result v5
aput v5, v4, v1
aget-object v4, v3, v0
iget-object v5, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->fieldAnnotations:[[I
aget-object v5, v5, v0
aget v5, v5, v8
invoke-virtual {p0, v5}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationSetOffset(I)I
move-result v5
aput v5, v4, v8
add-int/lit8 v0, v0, 0x1
goto :goto_19
:cond_3b
iget-object v0, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->methodAnnotations:[[I
array-length v0, v0
filled-new-array {v0, v7}, [I
move-result-object v0
sget-object v4, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
invoke-static {v4, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v4
check-cast v4, [[I
move v0, v1
:goto_4b
array-length v5, v4
if-ge v0, v5, :cond_6d
aget-object v5, v4, v0
iget-object v6, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->methodAnnotations:[[I
aget-object v6, v6, v0
aget v6, v6, v1
invoke-virtual {p0, v6}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustMethodIdIndex(I)I
move-result v6
aput v6, v5, v1
aget-object v5, v4, v0
iget-object v6, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->methodAnnotations:[[I
aget-object v6, v6, v0
aget v6, v6, v8
invoke-virtual {p0, v6}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationSetOffset(I)I
move-result v6
aput v6, v5, v8
add-int/lit8 v0, v0, 0x1
goto :goto_4b
:cond_6d
iget-object v0, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->parameterAnnotations:[[I
array-length v0, v0
filled-new-array {v0, v7}, [I
move-result-object v0
sget-object v5, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
invoke-static {v5, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v5
check-cast v5, [[I
move v0, v1
:goto_7d
array-length v6, v5
if-ge v0, v6, :cond_9f
aget-object v6, v5, v0
iget-object v7, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->parameterAnnotations:[[I
aget-object v7, v7, v0
aget v7, v7, v1
invoke-virtual {p0, v7}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustMethodIdIndex(I)I
move-result v7
aput v7, v6, v1
aget-object v6, v5, v0
iget-object v7, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->parameterAnnotations:[[I
aget-object v7, v7, v0
aget v7, v7, v8
invoke-virtual {p0, v7}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationSetRefListOffset(I)I
move-result v7
aput v7, v6, v8
add-int/lit8 v0, v0, 0x1
goto :goto_7d
:cond_9f
new-instance v0, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;
iget v1, p1, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;->off:I
invoke-direct/range {v0 .. v5}, Lcom/tencent/tinker/android/dex/AnnotationsDirectory;-><init>(II[[I[[I[[I)V
return-object v0
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/ClassData;)Lcom/tencent/tinker/android/dex/ClassData;
.registers 8
iget-object v0, p1, Lcom/tencent/tinker/android/dex/ClassData;->staticFields:[Lcom/tencent/tinker/android/dex/ClassData$Field;
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustFields([Lcom/tencent/tinker/android/dex/ClassData$Field;)[Lcom/tencent/tinker/android/dex/ClassData$Field;
move-result-object v2
iget-object v0, p1, Lcom/tencent/tinker/android/dex/ClassData;->instanceFields:[Lcom/tencent/tinker/android/dex/ClassData$Field;
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustFields([Lcom/tencent/tinker/android/dex/ClassData$Field;)[Lcom/tencent/tinker/android/dex/ClassData$Field;
move-result-object v3
iget-object v0, p1, Lcom/tencent/tinker/android/dex/ClassData;->directMethods:[Lcom/tencent/tinker/android/dex/ClassData$Method;
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustMethods([Lcom/tencent/tinker/android/dex/ClassData$Method;)[Lcom/tencent/tinker/android/dex/ClassData$Method;
move-result-object v4
iget-object v0, p1, Lcom/tencent/tinker/android/dex/ClassData;->virtualMethods:[Lcom/tencent/tinker/android/dex/ClassData$Method;
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustMethods([Lcom/tencent/tinker/android/dex/ClassData$Method;)[Lcom/tencent/tinker/android/dex/ClassData$Method;
move-result-object v5
new-instance v0, Lcom/tencent/tinker/android/dex/ClassData;
iget v1, p1, Lcom/tencent/tinker/android/dex/ClassData;->off:I
invoke-direct/range {v0 .. v5}, Lcom/tencent/tinker/android/dex/ClassData;-><init>(I[Lcom/tencent/tinker/android/dex/ClassData$Field;[Lcom/tencent/tinker/android/dex/ClassData$Field;[Lcom/tencent/tinker/android/dex/ClassData$Method;[Lcom/tencent/tinker/android/dex/ClassData$Method;)V
return-object v0
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/ClassDef;)Lcom/tencent/tinker/android/dex/ClassDef;
.registers 12
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->typeIndex:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v2
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->supertypeIndex:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v4
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->interfacesOffset:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeListOffset(I)I
move-result v5
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->sourceFileIndex:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v6
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->annotationsOffset:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustAnnotationsDirectoryOffset(I)I
move-result v7
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->classDataOffset:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustClassDataOffset(I)I
move-result v8
iget v0, p1, Lcom/tencent/tinker/android/dex/ClassDef;->staticValuesOffset:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStaticValuesOffset(I)I
move-result v9
new-instance v0, Lcom/tencent/tinker/android/dex/ClassDef;
iget v1, p1, Lcom/tencent/tinker/android/dex/ClassDef;->off:I
iget v3, p1, Lcom/tencent/tinker/android/dex/ClassDef;->accessFlags:I
invoke-direct/range {v0 .. v9}, Lcom/tencent/tinker/android/dex/ClassDef;-><init>(IIIIIIIII)V
return-object v0
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/Code;)Lcom/tencent/tinker/android/dex/Code;
.registers 11
iget v0, p1, Lcom/tencent/tinker/android/dex/Code;->debugInfoOffset:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustDebugInfoItemOffset(I)I
move-result v5
iget-object v0, p1, Lcom/tencent/tinker/android/dex/Code;->instructions:[S
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustInstructions([S)[S
move-result-object v6
iget-object v0, p1, Lcom/tencent/tinker/android/dex/Code;->catchHandlers:[Lcom/tencent/tinker/android/dex/Code$CatchHandler;
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustCatchHandlers([Lcom/tencent/tinker/android/dex/Code$CatchHandler;)[Lcom/tencent/tinker/android/dex/Code$CatchHandler;
move-result-object v8
new-instance v0, Lcom/tencent/tinker/android/dex/Code;
iget v1, p1, Lcom/tencent/tinker/android/dex/Code;->off:I
iget v2, p1, Lcom/tencent/tinker/android/dex/Code;->registersSize:I
iget v3, p1, Lcom/tencent/tinker/android/dex/Code;->insSize:I
iget v4, p1, Lcom/tencent/tinker/android/dex/Code;->outsSize:I
iget-object v7, p1, Lcom/tencent/tinker/android/dex/Code;->tries:[Lcom/tencent/tinker/android/dex/Code$Try;
invoke-direct/range {v0 .. v8}, Lcom/tencent/tinker/android/dex/Code;-><init>(IIIII[S[Lcom/tencent/tinker/android/dex/Code$Try;[Lcom/tencent/tinker/android/dex/Code$CatchHandler;)V
return-object v0
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/DebugInfoItem;)Lcom/tencent/tinker/android/dex/DebugInfoItem;
.registers 7
iget-object v0, p1, Lcom/tencent/tinker/android/dex/DebugInfoItem;->parameterNames:[I
invoke-direct {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustParameterNames([I)[I
move-result-object v0
iget-object v1, p1, Lcom/tencent/tinker/android/dex/DebugInfoItem;->infoSTM:[B
invoke-direct {p0, v1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustDebugInfoItemSTM([B)[B
move-result-object v1
new-instance v2, Lcom/tencent/tinker/android/dex/DebugInfoItem;
iget v3, p1, Lcom/tencent/tinker/android/dex/DebugInfoItem;->off:I
iget v4, p1, Lcom/tencent/tinker/android/dex/DebugInfoItem;->lineStart:I
invoke-direct {v2, v3, v4, v0, v1}, Lcom/tencent/tinker/android/dex/DebugInfoItem;-><init>(II[I[B)V
return-object v2
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/EncodedValue;)Lcom/tencent/tinker/android/dex/EncodedValue;
.registers 6
new-instance v0, Ljava/io/ByteArrayOutputStream;
iget-object v1, p1, Lcom/tencent/tinker/android/dex/EncodedValue;->data:[B
array-length v1, v1
invoke-direct {v0, v1}, Ljava/io/ByteArrayOutputStream;-><init>(I)V
new-instance v1, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;
new-instance v2, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$3;
invoke-direct {v2, p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$3;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Ljava/io/ByteArrayOutputStream;)V
invoke-direct {v1, p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;-><init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Lcom/tencent/tinker/android/dex/util/ByteOutput;)V
new-instance v2, Lcom/tencent/tinker/android/dex/EncodedValueReader;
const/16 v3, 0x1c
invoke-direct {v2, p1, v3}, Lcom/tencent/tinker/android/dex/EncodedValueReader;-><init>(Lcom/tencent/tinker/android/dex/EncodedValue;I)V
# invokes: Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transformArray(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
invoke-static {v1, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->access$000(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
new-instance v1, Lcom/tencent/tinker/android/dex/EncodedValue;
iget v2, p1, Lcom/tencent/tinker/android/dex/EncodedValue;->off:I
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
invoke-direct {v1, v2, v0}, Lcom/tencent/tinker/android/dex/EncodedValue;-><init>(I[B)V
return-object v1
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/FieldId;)Lcom/tencent/tinker/android/dex/FieldId;
.registers 7
iget v0, p1, Lcom/tencent/tinker/android/dex/FieldId;->declaringClassIndex:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v0
iget v1, p1, Lcom/tencent/tinker/android/dex/FieldId;->typeIndex:I
invoke-virtual {p0, v1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v1
iget v2, p1, Lcom/tencent/tinker/android/dex/FieldId;->nameIndex:I
invoke-virtual {p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v2
new-instance v3, Lcom/tencent/tinker/android/dex/FieldId;
iget v4, p1, Lcom/tencent/tinker/android/dex/FieldId;->off:I
invoke-direct {v3, v4, v0, v1, v2}, Lcom/tencent/tinker/android/dex/FieldId;-><init>(IIII)V
return-object v3
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/MethodId;)Lcom/tencent/tinker/android/dex/MethodId;
.registers 7
iget v0, p1, Lcom/tencent/tinker/android/dex/MethodId;->declaringClassIndex:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v0
iget v1, p1, Lcom/tencent/tinker/android/dex/MethodId;->protoIndex:I
invoke-virtual {p0, v1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustProtoIdIndex(I)I
move-result v1
iget v2, p1, Lcom/tencent/tinker/android/dex/MethodId;->nameIndex:I
invoke-virtual {p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v2
new-instance v3, Lcom/tencent/tinker/android/dex/MethodId;
iget v4, p1, Lcom/tencent/tinker/android/dex/MethodId;->off:I
invoke-direct {v3, v4, v0, v1, v2}, Lcom/tencent/tinker/android/dex/MethodId;-><init>(IIII)V
return-object v3
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/ProtoId;)Lcom/tencent/tinker/android/dex/ProtoId;
.registers 7
iget v0, p1, Lcom/tencent/tinker/android/dex/ProtoId;->shortyIndex:I
invoke-virtual {p0, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I
move-result v0
iget v1, p1, Lcom/tencent/tinker/android/dex/ProtoId;->returnTypeIndex:I
invoke-virtual {p0, v1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v1
iget v2, p1, Lcom/tencent/tinker/android/dex/ProtoId;->parametersOffset:I
invoke-virtual {p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeListOffset(I)I
move-result v2
new-instance v3, Lcom/tencent/tinker/android/dex/ProtoId;
iget v4, p1, Lcom/tencent/tinker/android/dex/ProtoId;->off:I
invoke-direct {v3, v4, v0, v1, v2}, Lcom/tencent/tinker/android/dex/ProtoId;-><init>(IIII)V
return-object v3
.end method
.method public adjust(Lcom/tencent/tinker/android/dex/TypeList;)Lcom/tencent/tinker/android/dex/TypeList;
.registers 5
sget-object v0, Lcom/tencent/tinker/android/dex/TypeList;->EMPTY:Lcom/tencent/tinker/android/dex/TypeList;
if-ne p1, v0, :cond_5
:goto_4
return-object p1
:cond_5
iget-object v0, p1, Lcom/tencent/tinker/android/dex/TypeList;->types:[S
array-length v0, v0
new-array v1, v0, [S
const/4 v0, 0x0
:goto_b
array-length v2, v1
if-ge v0, v2, :cond_1c
iget-object v2, p1, Lcom/tencent/tinker/android/dex/TypeList;->types:[S
aget-short v2, v2, v0
invoke-virtual {p0, v2}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I
move-result v2
int-to-short v2, v2
aput-short v2, v1, v0
add-int/lit8 v0, v0, 0x1
goto :goto_b
:cond_1c
new-instance v0, Lcom/tencent/tinker/android/dex/TypeList;
iget v2, p1, Lcom/tencent/tinker/android/dex/TypeList;->off:I
invoke-direct {v0, v2, v1}, Lcom/tencent/tinker/android/dex/TypeList;-><init>(I[S)V
move-object p1, v0
goto :goto_4
.end method
.method public abstract adjustAnnotationOffset(I)I
.end method
.method public abstract adjustAnnotationSetOffset(I)I
.end method
.method public abstract adjustAnnotationSetRefListOffset(I)I
.end method
.method public abstract adjustAnnotationsDirectoryOffset(I)I
.end method
.method public abstract adjustClassDataOffset(I)I
.end method
.method public abstract adjustCodeOffset(I)I
.end method
.method public abstract adjustDebugInfoItemOffset(I)I
.end method
.method public abstract adjustFieldIdIndex(I)I
.end method
.method public abstract adjustMethodIdIndex(I)I
.end method
.method public abstract adjustProtoIdIndex(I)I
.end method
.method public abstract adjustStaticValuesOffset(I)I
.end method
.method public abstract adjustStringIndex(I)I
.end method
.method public abstract adjustTypeIdIndex(I)I
.end method
.method public abstract adjustTypeListOffset(I)I
.end method