From cf4e7ce3601e18e8690bbdb83017c366a5238cca Mon Sep 17 00:00:00 2001 From: "JesusFreke@JesusFreke.com" Date: Thu, 10 Sep 2009 01:22:25 +0000 Subject: [PATCH] added another deodex test case git-svn-id: https://smali.googlecode.com/svn/trunk@453 55b6fa8a-2a1e-11de-a435-ffa8d773f76a --- .../smali/deodex_test2/app_classes/main.smali | 41 +++++++++++++++++++ .../bootclass_classes/randomclass.smali | 18 ++++++++ .../bootclass_classes/subclass1.smali | 21 ++++++++++ .../bootclass_classes/subclass2.smali | 21 ++++++++++ .../bootclass_classes/superclass.smali | 21 ++++++++++ .../bootclass_classes/supersuperclass.smali | 21 ++++++++++ 6 files changed, 143 insertions(+) create mode 100644 baksmali/src/test/smali/deodex_test2/app_classes/main.smali create mode 100644 baksmali/src/test/smali/deodex_test2/bootclass_classes/randomclass.smali create mode 100644 baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass1.smali create mode 100644 baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass2.smali create mode 100644 baksmali/src/test/smali/deodex_test2/bootclass_classes/superclass.smali create mode 100644 baksmali/src/test/smali/deodex_test2/bootclass_classes/supersuperclass.smali diff --git a/baksmali/src/test/smali/deodex_test2/app_classes/main.smali b/baksmali/src/test/smali/deodex_test2/app_classes/main.smali new file mode 100644 index 00000000..9c1846ed --- /dev/null +++ b/baksmali/src/test/smali/deodex_test2/app_classes/main.smali @@ -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;->()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;->()V + aput-object v0, v1, v4 + + if-eqz v2, here: + + return-void +.end method \ No newline at end of file diff --git a/baksmali/src/test/smali/deodex_test2/bootclass_classes/randomclass.smali b/baksmali/src/test/smali/deodex_test2/bootclass_classes/randomclass.smali new file mode 100644 index 00000000..3c02f137 --- /dev/null +++ b/baksmali/src/test/smali/deodex_test2/bootclass_classes/randomclass.smali @@ -0,0 +1,18 @@ +.class public Lrandomclass; + +.super Ljava/lang/Object; + +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Ljava/lang/Object;->()V + return-void +.end method + +.method public getSuperclass()Lsuperclass; + .registers 2 + + new-instance v0, Lsuperclass; + invoke-direct {v0}, Lsuperclass;->()V + + return-object v0 +.end method \ No newline at end of file diff --git a/baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass1.smali b/baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass1.smali new file mode 100644 index 00000000..d7b840f3 --- /dev/null +++ b/baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass1.smali @@ -0,0 +1,21 @@ +.class public Lsubclass1; + +.super Lsuperclass; + +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Lsuperclass;->()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 \ No newline at end of file diff --git a/baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass2.smali b/baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass2.smali new file mode 100644 index 00000000..605cccb7 --- /dev/null +++ b/baksmali/src/test/smali/deodex_test2/bootclass_classes/subclass2.smali @@ -0,0 +1,21 @@ +.class public Lsubclass2; + +.super Lsuperclass; + +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Lsuperclass;->()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 \ No newline at end of file diff --git a/baksmali/src/test/smali/deodex_test2/bootclass_classes/superclass.smali b/baksmali/src/test/smali/deodex_test2/bootclass_classes/superclass.smali new file mode 100644 index 00000000..e44a17a2 --- /dev/null +++ b/baksmali/src/test/smali/deodex_test2/bootclass_classes/superclass.smali @@ -0,0 +1,21 @@ +.class public Lsuperclass; + +.super Lsupersuperclass; + +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Lsupersuperclass;->()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 \ No newline at end of file diff --git a/baksmali/src/test/smali/deodex_test2/bootclass_classes/supersuperclass.smali b/baksmali/src/test/smali/deodex_test2/bootclass_classes/supersuperclass.smali new file mode 100644 index 00000000..9621e14c --- /dev/null +++ b/baksmali/src/test/smali/deodex_test2/bootclass_classes/supersuperclass.smali @@ -0,0 +1,21 @@ +.class public Lsupersuperclass; + +.super Ljava/lang/Object; + +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Ljava/lang/Object;->()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 \ No newline at end of file