added another deodex test case

git-svn-id: https://smali.googlecode.com/svn/trunk@453 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
JesusFreke@JesusFreke.com 2009-09-10 01:22:25 +00:00
parent 61eedba1ab
commit cf4e7ce360
6 changed files with 143 additions and 0 deletions

View File

@ -0,0 +1,41 @@
.class public Lmain;
.super Ljava/lang/Object;
.method public static main([Ljava/lang/String;)V
.registers 6
const v2, 0
const v3, 1
const v4, 0
new-array v1, v3, [Lsubclass1;
new-instance v0, Lsubclass1;
invoke-direct {v0}, Lsubclass1;-><init>()V
aput-object v0, v1, v4
goto here2:
here:
const v2, 1
here2:
#this is tricky, because it has to merge two array types, [Lsubclass1; and [Lsubclass2
#which should result in [Lsuperclass;. However, this dex file won't have a reference
#to [Lsuperclass;
aget-object v5, v1, v4
invoke-virtual {v5}, Lsupersuperclass;->somemethod()V
new-array v1, v3, [Lsubclass2;
new-instance v0, Lsubclass2;
invoke-direct {v0}, Lsubclass2;-><init>()V
aput-object v0, v1, v4
if-eqz v2, here:
return-void
.end method

View File

@ -0,0 +1,18 @@
.class public Lrandomclass;
.super Ljava/lang/Object;
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public getSuperclass()Lsuperclass;
.registers 2
new-instance v0, Lsuperclass;
invoke-direct {v0}, Lsuperclass;-><init>()V
return-object v0
.end method

View File

@ -0,0 +1,21 @@
.class public Lsubclass1;
.super Lsuperclass;
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Lsuperclass;-><init>()V
return-void
.end method
.method public somemethod()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "subclass1.somemethod"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method

View File

@ -0,0 +1,21 @@
.class public Lsubclass2;
.super Lsuperclass;
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Lsuperclass;-><init>()V
return-void
.end method
.method public somemethod()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "subclass2.somemethod"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method

View File

@ -0,0 +1,21 @@
.class public Lsuperclass;
.super Lsupersuperclass;
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Lsupersuperclass;-><init>()V
return-void
.end method
.method public somemethod()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "superclass.somemethod"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method

View File

@ -0,0 +1,21 @@
.class public Lsupersuperclass;
.super Ljava/lang/Object;
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public somemethod()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "supersuperclass.somemethod"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method