chromium/components/zucchini/testdata/all.smali

# Tests most/all DEX behaviors as of version 37.
# Disassembled from dexdump test files.
# Repo: https://android.googlesource.com/platform/art/
# File: test/dexdump/all.dex

# Compile using smali: https://github.com/JesusFreke/smali
# java -jar smali.jar assemble all.smali --api 25

.class public LA;
.super Ljava/lang/Object;


# static fields
.field private static sB:B

.field private static sC:C

.field private static sI:I

.field private static sJ:J

.field private static sO:LA;

.field private static sS:S

.field private static sZ:Z


# instance fields
.field private mB:B

.field private mC:C

.field private mI:I

.field private mJ:J

.field private mO:LA;

.field private mS:S

.field private mZ:Z


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

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static arrays()V
    .registers 3

    aget v0, v1, v2

    aget-wide v0, v1, v2

    aget-object v0, v1, v2

    aget-boolean v0, v1, v2

    aget-byte v0, v1, v2

    aget-char v0, v1, v2

    aget-short v0, v1, v2

    aput v0, v1, v2

    aput-wide v0, v1, v2

    aput-object v0, v1, v2

    aput-boolean v0, v1, v2

    aput-byte v0, v1, v2

    aput-char v0, v1, v2

    aput-short v0, v1, v2

    return-void
.end method

.method public static binary_ops()V
    .registers 3

    add-int v0, v1, v2

    sub-int v0, v1, v2

    mul-int v0, v1, v2

    div-int v0, v1, v2

    rem-int v0, v1, v2

    and-int v0, v1, v2

    or-int v0, v1, v2

    xor-int v0, v1, v2

    shl-int v0, v1, v2

    shr-int v0, v1, v2

    ushr-int v0, v1, v2

    add-long v0, v1, v2

    sub-long v0, v1, v2

    mul-long v0, v1, v2

    div-long v0, v1, v2

    rem-long v0, v1, v2

    and-long v0, v1, v2

    or-long v0, v1, v2

    xor-long v0, v1, v2

    shl-long v0, v1, v2

    shr-long v0, v1, v2

    ushr-long v0, v1, v2

    add-float v0, v1, v2

    sub-float v0, v1, v2

    mul-float v0, v1, v2

    div-float v0, v1, v2

    rem-float v0, v1, v2

    add-double v0, v1, v2

    sub-double v0, v1, v2

    mul-double v0, v1, v2

    div-double v0, v1, v2

    rem-double v0, v1, v2

    return-void
.end method

.method public static binary_ops_2addr()V
    .registers 2

    add-int/2addr v0, v1

    sub-int/2addr v0, v1

    mul-int/2addr v0, v1

    div-int/2addr v0, v1

    rem-int/2addr v0, v1

    and-int/2addr v0, v1

    or-int/2addr v0, v1

    xor-int/2addr v0, v1

    shl-int/2addr v0, v1

    shr-int/2addr v0, v1

    ushr-int/2addr v0, v1

    add-long/2addr v0, v1

    sub-long/2addr v0, v1

    mul-long/2addr v0, v1

    div-long/2addr v0, v1

    rem-long/2addr v0, v1

    and-long/2addr v0, v1

    or-long/2addr v0, v1

    xor-long/2addr v0, v1

    shl-long/2addr v0, v1

    shr-long/2addr v0, v1

    ushr-long/2addr v0, v1

    add-float/2addr v0, v1

    sub-float/2addr v0, v1

    mul-float/2addr v0, v1

    div-float/2addr v0, v1

    rem-float/2addr v0, v1

    add-double/2addr v0, v1

    sub-double/2addr v0, v1

    mul-double/2addr v0, v1

    div-double/2addr v0, v1

    rem-double/2addr v0, v1

    return-void
.end method

.method public static binary_ops_lit16()V
    .registers 2

    add-int/lit16 v0, v1, 0x1234

    rsub-int v0, v1, 0x1234

    mul-int/lit16 v0, v1, 0x1234

    div-int/lit16 v0, v1, 0x1234

    rem-int/lit16 v0, v1, 0x1234

    and-int/lit16 v0, v1, 0x1234

    or-int/lit16 v0, v1, 0x1234

    xor-int/lit16 v0, v1, 0x1234

    return-void
.end method

.method public static binary_ops_lit8()V
    .registers 2

    add-int/lit8 v0, v1, 0x12

    rsub-int/lit8 v0, v1, 0x12

    mul-int/lit8 v0, v1, 0x12

    div-int/lit8 v0, v1, 0x12

    rem-int/lit8 v0, v1, 0x12

    and-int/lit8 v0, v1, 0x12

    or-int/lit8 v0, v1, 0x12

    xor-int/lit8 v0, v1, 0x12

    shl-int/lit8 v0, v1, 0x12

    shr-int/lit8 v0, v1, 0x12

    ushr-int/lit8 v0, v1, 0x12

    return-void
.end method

.method public static compares()V
    .registers 3

    cmpl-float v0, v1, v2

    cmpg-float v0, v1, v2

    cmpl-double v0, v1, v2

    cmpg-double v0, v1, v2

    cmp-long v0, v1, v2

    return-void
.end method

.method public static conditionals()V
    .registers 2

    if-eq v0, v1, :cond_18

    if-ne v0, v1, :cond_18

    if-lt v0, v1, :cond_18

    if-ge v0, v1, :cond_18

    if-gt v0, v1, :cond_18

    if-le v0, v1, :cond_18

    if-eqz v0, :cond_18

    if-nez v0, :cond_18

    if-ltz v0, :cond_18

    if-gez v0, :cond_18

    if-gtz v0, :cond_18

    if-lez v0, :cond_18

    :cond_18
    return-void
.end method

.method public static constants()V
    .registers 1

    const/4 v0, 0x1

    const/16 v0, 0x1234

    const v0, 0x12345678

    const/high16 v0, 0x12340000

    const-wide/16 v0, 0x1234

    const-wide/32 v0, 0x12345678

    const-wide v0, 0x1234567890abcdefL    # 5.626349108908516E-221

    const-wide/high16 v0, 0x1234000000000000L

    const-string v0, "string"

    const-string/jumbo v0, "string"

    const-class v0, Ljava/lang/Object;

    return-void
.end method

.method public static misc()V
    .registers 5

    nop

    monitor-enter v0

    monitor-exit v0

    check-cast v0, Ljava/lang/Object;

    instance-of v0, v1, Ljava/lang/Object;

    array-length v0, v1

    new-instance v0, Ljava/lang/Object;

    new-array v0, v1, Ljava/lang/Object;

    filled-new-array {v0, v1, v2, v3, v4}, [Ljava/lang/Object;

    filled-new-array/range {v0 .. v4}, [Ljava/lang/Object;

    fill-array-data v0, :array_1e

    throw v0

    goto :goto_1c

    goto/16 :goto_1c

    goto/32 :goto_1c

    :goto_1c
    return-void

    nop

    :array_1e
    .array-data 4
        0x1
        0x2
        0x3
        0x4
        0x5
        0x6
        0x7
        0x8
        0x9
        0x0
    .end array-data
.end method

.method public static moves()V
    .registers 2

    move v0, v1

    move/from16 v0, v1

    move/16 v0, v1

    move-wide v0, v1

    move-wide/from16 v0, v1

    move-wide/16 v0, v1

    move-object v0, v1

    move-object/from16 v0, v1

    move-object/16 v0, v1

    move-result v0

    move-result-wide v0

    move-result-object v0

    move-exception v0

    return-void
.end method

.method public static packed_switch()V
    .registers 1

    packed-switch v0, :pswitch_data_8

    :goto_3
    return-void

    goto :goto_3

    :pswitch_5
    goto :goto_3

    :pswitch_6
    goto :goto_3

    nop

    :pswitch_data_8
    .packed-switch 0x7ffffffe
        :pswitch_5
        :pswitch_6
    .end packed-switch
.end method

.method public static return32()I
    .registers 1

    return v0
.end method

.method public static return64()I
    .registers 2

    return-wide v0
.end method

.method public static return_object()Ljava/lang/Object;
    .registers 1

    return-object v0
.end method

.method public static sparse_switch()V
    .registers 2

    sparse-switch v0, :sswitch_data_4

    :sswitch_3
    return-void

    :sswitch_data_4
    .sparse-switch
        0x1111 -> :sswitch_3
        0x2222 -> :sswitch_3
        0x3333 -> :sswitch_3
        0x4444 -> :sswitch_3
    .end sparse-switch
.end method

.method public static static_fields()V
    .registers 1

    sget v0, LA;->sI:I

    sget-wide v0, LA;->sJ:J

    sget-object v0, LA;->sO:LA;

    sget-boolean v0, LA;->sZ:Z

    sget-byte v0, LA;->sB:B

    sget-char v0, LA;->sC:C

    sget-short v0, LA;->sS:S

    sput v0, LA;->sI:I

    sput-wide v0, LA;->sJ:J

    sput-object v0, LA;->sO:LA;

    sput-boolean v0, LA;->sZ:Z

    sput-byte v0, LA;->sB:B

    sput-char v0, LA;->sC:C

    sput-short v0, LA;->mS:S

    return-void
.end method

.method public static unary_ops()V
    .registers 2

    neg-int v0, v1

    not-int v0, v1

    neg-long v0, v1

    not-long v0, v1

    neg-float v0, v1

    neg-double v0, v1

    int-to-long v0, v1

    int-to-float v0, v1

    int-to-double v0, v1

    long-to-int v0, v1

    long-to-float v0, v1

    long-to-double v0, v1

    float-to-int v0, v1

    float-to-long v0, v1

    float-to-double v0, v1

    double-to-int v0, v1

    double-to-long v0, v1

    double-to-float v0, v1

    int-to-byte v0, v1

    int-to-char v0, v1

    int-to-short v0, v1

    return-void
.end method


# virtual methods
.method public instance_fields()V
    .registers 2

    iget v0, p0, LA;->sI:I

    iget-wide v0, p0, LA;->sJ:J

    iget-object v0, p0, LA;->sO:LA;

    iget-boolean v0, p0, LA;->sZ:Z

    iget-byte v0, p0, LA;->sB:B

    iget-char v0, p0, LA;->sC:C

    iget-short v0, p0, LA;->sS:S

    iput v0, p0, LA;->sI:I

    iput-wide v0, p0, LA;->sJ:J

    iput-object v0, p0, LA;->sO:LA;

    iput-boolean v0, p0, LA;->sZ:Z

    iput-byte v0, p0, LA;->sB:B

    iput-char v0, p0, LA;->sC:C

    iput-short v0, p0, LA;->sS:S

    return-void
.end method

.method public invokes()V
    .registers 5

    invoke-virtual {v0, v1, v2, v3, p0}, LA;->invokes()V

    invoke-super {v0, v1, v2, v3, p0}, LA;->invokes()V

    invoke-direct {v0, v1, v2, v3, p0}, LA;->invokes()V

    invoke-static {v0, v1, v2, v3, p0}, LA;->invokes()V

    invoke-interface {v0, v1, v2, v3, p0}, LA;->invokes()V
.end method