ShortArrayCodeOutput.smali

.class public final Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;
.super Lcom/tencent/tinker/android/dx/instruction/CodeCursor;


# instance fields
.field private array:[S


# direct methods
.method public constructor <init>(I)V
    .registers 4

    invoke-direct {p0}, Lcom/tencent/tinker/android/dx/instruction/CodeCursor;-><init>()V

    if-gez p1, :cond_e

    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string/jumbo v1, "initSize < 0"

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_e
    new-array v0, p1, [S

    iput-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    return-void
.end method

.method public constructor <init>([S)V
    .registers 4

    invoke-direct {p0}, Lcom/tencent/tinker/android/dx/instruction/CodeCursor;-><init>()V

    if-nez p1, :cond_e

    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string/jumbo v1, "array is null."

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_e
    iput-object p1, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    return-void
.end method

.method private ensureArrayLength(I)V
    .registers 6

    const/4 v3, 0x0

    invoke-virtual {p0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    array-length v1, v1

    sub-int/2addr v1, v0

    if-ge v1, p1, :cond_1d

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    array-length v1, v1

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    array-length v2, v2

    shr-int/lit8 v2, v2, 0x1

    add-int/2addr v1, v2

    new-array v1, v1, [S

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    invoke-static {v2, v3, v1, v3, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    iput-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    :cond_1d
    return-void
.end method


# virtual methods
.method public getArray()[S
    .registers 5

    const/4 v3, 0x0

    invoke-virtual {p0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v1

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    array-length v0, v0

    if-ne v1, v0, :cond_d

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    :goto_c
    return-object v0

    :cond_d
    new-array v0, v1, [S

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    invoke-static {v2, v3, v0, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    goto :goto_c
.end method

.method public write(S)V
    .registers 5

    const/4 v2, 0x1

    invoke-direct {p0, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->ensureArrayLength(I)V

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->array:[S

    invoke-virtual {p0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v1

    aput-short p1, v0, v1

    invoke-virtual {p0, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->advance(I)V

    return-void
.end method

.method public write(SS)V
    .registers 3

    invoke-virtual {p0, p1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    return-void
.end method

.method public write(SSS)V
    .registers 4

    invoke-virtual {p0, p1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    return-void
.end method

.method public write(SSSS)V
    .registers 5

    invoke-virtual {p0, p1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p4}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    return-void
.end method

.method public write(SSSSS)V
    .registers 6

    invoke-virtual {p0, p1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p4}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    invoke-virtual {p0, p5}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    return-void
.end method

.method public write([B)V
    .registers 9

    const/4 v2, 0x1

    const/4 v1, 0x0

    array-length v5, p1

    move v4, v1

    move v0, v2

    move v3, v1

    :goto_6
    if-ge v4, v5, :cond_1d

    aget-byte v6, p1, v4

    if-eqz v0, :cond_13

    and-int/lit16 v0, v6, 0xff

    move v3, v0

    move v0, v1

    :goto_10
    add-int/lit8 v4, v4, 0x1

    goto :goto_6

    :cond_13
    shl-int/lit8 v0, v6, 0x8

    or-int/2addr v0, v3

    int-to-short v3, v0

    invoke-virtual {p0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    move v3, v0

    move v0, v2

    goto :goto_10

    :cond_1d
    if-nez v0, :cond_23

    int-to-short v0, v3

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    :cond_23
    return-void
.end method

.method public write([I)V
    .registers 5

    array-length v1, p1

    const/4 v0, 0x0

    :goto_2
    if-ge v0, v1, :cond_c

    aget v2, p1, v0

    invoke-virtual {p0, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    :cond_c
    return-void
.end method

.method public write([J)V
    .registers 6

    array-length v1, p1

    const/4 v0, 0x0

    :goto_2
    if-ge v0, v1, :cond_c

    aget-wide v2, p1, v0

    invoke-virtual {p0, v2, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeLong(J)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    :cond_c
    return-void
.end method

.method public write([S)V
    .registers 5

    array-length v1, p1

    const/4 v0, 0x0

    :goto_2
    if-ge v0, v1, :cond_c

    aget-short v2, p1, v0

    invoke-virtual {p0, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    :cond_c
    return-void
.end method

.method public writeInt(I)V
    .registers 3

    int-to-short v0, p1

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    shr-int/lit8 v0, p1, 0x10

    int-to-short v0, v0

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    return-void
.end method

.method public writeLong(J)V
    .registers 6

    long-to-int v0, p1

    int-to-short v0, v0

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    const/16 v0, 0x10

    shr-long v0, p1, v0

    long-to-int v0, v0

    int-to-short v0, v0

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    const/16 v0, 0x20

    shr-long v0, p1, v0

    long-to-int v0, v0

    int-to-short v0, v0

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    const/16 v0, 0x30

    shr-long v0, p1, v0

    long-to-int v0, v0

    int-to-short v0, v0

    invoke-virtual {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    return-void
.end method