summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rwxr-xr-xtest/127-checker-secondarydex/build (renamed from test/127-secondarydex/build)0
-rw-r--r--test/127-checker-secondarydex/expected.txt (renamed from test/127-secondarydex/expected.txt)0
-rw-r--r--test/127-checker-secondarydex/info.txt (renamed from test/127-secondarydex/info.txt)0
-rwxr-xr-xtest/127-checker-secondarydex/run (renamed from test/127-secondarydex/run)0
-rw-r--r--test/127-checker-secondarydex/src/Main.java (renamed from test/127-secondarydex/src/Main.java)0
-rw-r--r--test/127-checker-secondarydex/src/Super.java (renamed from test/127-secondarydex/src/Super.java)0
-rw-r--r--test/127-checker-secondarydex/src/Test.java (renamed from test/127-secondarydex/src/Test.java)7
-rw-r--r--test/563-checker-fakestring/smali/TestCase.smali28
-rw-r--r--test/563-checker-fakestring/src/Main.java6
9 files changed, 40 insertions, 1 deletions
diff --git a/test/127-secondarydex/build b/test/127-checker-secondarydex/build
index 0d9f4d6291..0d9f4d6291 100755
--- a/test/127-secondarydex/build
+++ b/test/127-checker-secondarydex/build
diff --git a/test/127-secondarydex/expected.txt b/test/127-checker-secondarydex/expected.txt
index 1c8defb6ec..1c8defb6ec 100644
--- a/test/127-secondarydex/expected.txt
+++ b/test/127-checker-secondarydex/expected.txt
diff --git a/test/127-secondarydex/info.txt b/test/127-checker-secondarydex/info.txt
index 0479d1a784..0479d1a784 100644
--- a/test/127-secondarydex/info.txt
+++ b/test/127-checker-secondarydex/info.txt
diff --git a/test/127-secondarydex/run b/test/127-checker-secondarydex/run
index d8c3c798bf..d8c3c798bf 100755
--- a/test/127-secondarydex/run
+++ b/test/127-checker-secondarydex/run
diff --git a/test/127-secondarydex/src/Main.java b/test/127-checker-secondarydex/src/Main.java
index 0ede8ed2b2..0ede8ed2b2 100644
--- a/test/127-secondarydex/src/Main.java
+++ b/test/127-checker-secondarydex/src/Main.java
diff --git a/test/127-secondarydex/src/Super.java b/test/127-checker-secondarydex/src/Super.java
index 7608d4a7c8..7608d4a7c8 100644
--- a/test/127-secondarydex/src/Super.java
+++ b/test/127-checker-secondarydex/src/Super.java
diff --git a/test/127-secondarydex/src/Test.java b/test/127-checker-secondarydex/src/Test.java
index 8547e791c2..266ed191bc 100644
--- a/test/127-secondarydex/src/Test.java
+++ b/test/127-checker-secondarydex/src/Test.java
@@ -23,6 +23,13 @@ public class Test extends Super {
System.out.println("Test");
}
+ /// CHECK-START: java.lang.Integer Test.toInteger() ssa_builder (after)
+ /// CHECK: LoadClass needs_access_check:false klass:java.lang.Integer
+
+ public Integer toInteger() {
+ return new Integer(42);
+ }
+
public String toString() {
return new String("Test");
}
diff --git a/test/563-checker-fakestring/smali/TestCase.smali b/test/563-checker-fakestring/smali/TestCase.smali
index cd52f3d55d..4bd804da26 100644
--- a/test/563-checker-fakestring/smali/TestCase.smali
+++ b/test/563-checker-fakestring/smali/TestCase.smali
@@ -64,9 +64,15 @@
.end method
-# Test deoptimization between String's allocation and initialization.
+# Test deoptimization between String's allocation and initialization. When not
+# compiling --debuggable, the NewInstance will be optimized out.
## CHECK-START: int TestCase.deoptimizeNewInstance(int[], byte[]) register (after)
+## CHECK: <<Null:l\d+>> NullConstant
+## CHECK: Deoptimize env:[[<<Null>>,{{.*]]}}
+## CHECK: InvokeStaticOrDirect method_name:java.lang.String.<init>
+
+## CHECK-START-DEBUGGABLE: int TestCase.deoptimizeNewInstance(int[], byte[]) register (after)
## CHECK: <<String:l\d+>> NewInstance
## CHECK: Deoptimize env:[[<<String>>,{{.*]]}}
## CHECK: InvokeStaticOrDirect method_name:java.lang.String.<init>
@@ -98,3 +104,23 @@
return v2
.end method
+
+# Test that a redundant NewInstance is removed if not used and not compiling
+# --debuggable.
+
+## CHECK-START: java.lang.String TestCase.removeNewInstance(byte[]) register (after)
+## CHECK-NOT: NewInstance
+## CHECK-NOT: LoadClass
+
+## CHECK-START-DEBUGGABLE: java.lang.String TestCase.removeNewInstance(byte[]) register (after)
+## CHECK: NewInstance
+
+.method public static removeNewInstance([B)Ljava/lang/String;
+ .registers 5
+
+ new-instance v0, Ljava/lang/String;
+ const-string v1, "UTF8"
+ invoke-direct {v0, p0, v1}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
+ return-object v0
+
+.end method
diff --git a/test/563-checker-fakestring/src/Main.java b/test/563-checker-fakestring/src/Main.java
index 750f7184ee..04df0f637c 100644
--- a/test/563-checker-fakestring/src/Main.java
+++ b/test/563-checker-fakestring/src/Main.java
@@ -57,5 +57,11 @@ public class Main {
}
}
}
+
+ {
+ Method m = c.getMethod("removeNewInstance", byte[].class);
+ String result = (String) m.invoke(null, new Object[] { testData });
+ assertEqual(testString, result);
+ }
}
}