summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2018-07-04 15:31:27 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2018-07-04 15:31:27 +0000
commitea9b308e4548b704e21f4d587d9006ddc9db7b9e (patch)
tree7800ba6d720e36d2511022ccc5329962bdb44b45
parent64cdf56aeac47ab2dfd4f6437f976de9a9ad372d (diff)
parentab86413a9b5fab9eb7d3967d30277b2e7b580e9a (diff)
Merge "Move a 530-checker-lse test from java to smali"
-rw-r--r--test/530-checker-lse/smali/Main.smali32
-rw-r--r--test/530-checker-lse/src/Main.java21
2 files changed, 34 insertions, 19 deletions
diff --git a/test/530-checker-lse/smali/Main.smali b/test/530-checker-lse/smali/Main.smali
index 267801760f..4c18266c01 100644
--- a/test/530-checker-lse/smali/Main.smali
+++ b/test/530-checker-lse/smali/Main.smali
@@ -124,6 +124,38 @@
goto :goto_5
.end method
+## CHECK-START: int Main2.test10(TestClass) load_store_elimination (before)
+## CHECK: StaticFieldGet
+## CHECK: InstanceFieldGet
+## CHECK: StaticFieldSet
+## CHECK: InstanceFieldGet
+
+## CHECK-START: int Main2.test10(TestClass) load_store_elimination (after)
+## CHECK: StaticFieldGet
+## CHECK: InstanceFieldGet
+## CHECK: StaticFieldSet
+## CHECK-NOT: NullCheck
+## CHECK-NOT: InstanceFieldGet
+
+# Original java source:
+#
+# // Static fields shouldn't alias with instance fields.
+# static int test10(TestClass obj) {
+# TestClass.si += obj.i;
+# return obj.i;
+# }
+
+.method public static test10(LTestClass;)I
+ .registers 3
+ .param p0, "obj" # LTestClass;
+ sget v0, LTestClass;->si:I
+ iget v1, p0, LTestClass;->i:I
+ add-int/2addr v0, v1
+ sput v0, LTestClass;->si:I
+ iget p0, p0, LTestClass;->i:I
+ return p0
+.end method
+
## CHECK-START: int Main2.test23(boolean) load_store_elimination (before)
## CHECK: NewInstance
## CHECK: InstanceFieldSet
diff --git a/test/530-checker-lse/src/Main.java b/test/530-checker-lse/src/Main.java
index 541ae8bc07..22bff0aaf5 100644
--- a/test/530-checker-lse/src/Main.java
+++ b/test/530-checker-lse/src/Main.java
@@ -251,24 +251,6 @@ public class Main {
return obj2.i;
}
- /// CHECK-START: int Main.test10(TestClass) load_store_elimination (before)
- /// CHECK: StaticFieldGet
- /// CHECK: InstanceFieldGet
- /// CHECK: StaticFieldSet
-
- /// CHECK-START: int Main.test10(TestClass) load_store_elimination (after)
- /// CHECK: StaticFieldGet
- /// CHECK: InstanceFieldGet
- /// CHECK: StaticFieldSet
- /// CHECK-NOT: NullCheck
- /// CHECK-NOT: InstanceFieldGet
-
- // Static fields shouldn't alias with instance fields.
- static int test10(TestClass obj) {
- TestClass.si += obj.i;
- return obj.i;
- }
-
/// CHECK-START: int Main.test11(TestClass) load_store_elimination (before)
/// CHECK: InstanceFieldSet
/// CHECK: InstanceFieldGet
@@ -1176,6 +1158,7 @@ public class Main {
Class main2 = Class.forName("Main2");
Method test4 = main2.getMethod("test4", TestClass.class, boolean.class);
Method test5 = main2.getMethod("test5", TestClass.class, boolean.class);
+ Method test10 = main2.getMethod("test10", TestClass.class);
Method test23 = main2.getMethod("test23", boolean.class);
Method test24 = main2.getMethod("test24");
@@ -1198,7 +1181,7 @@ public class Main {
obj2 = new TestClass();
obj1.next = obj2;
assertIntEquals(test9(new TestClass()), 1);
- assertIntEquals(test10(new TestClass(3, 4)), 3);
+ assertIntEquals((int)test10.invoke(null, new TestClass(3, 4)), 3);
assertIntEquals(TestClass.si, 3);
assertIntEquals(test11(new TestClass()), 10);
assertIntEquals(test12(new TestClass(), new TestClass()), 10);