Move some checker-gvn test to Smali

Since D8 does GVN already, we can no longer depend on the dexer
to generate a test case from Java.

Bug: 65168732
Test: art/test.py -j20 --host -b
Change-Id: Ie27f26e4a67b43ffc083a92071231ecd03de3075
diff --git a/test/455-checker-gvn/smali/Smali.smali b/test/455-checker-gvn/smali/Smali.smali
new file mode 100644
index 0000000..fbeb4db
--- /dev/null
+++ b/test/455-checker-gvn/smali/Smali.smali
@@ -0,0 +1,42 @@
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+.class public LSmali;
+.super Ljava/lang/Object;
+
+## CHECK-START: int Smali.foo(int, int) GVN (before)
+## CHECK: Add
+## CHECK: Add
+## CHECK: Add
+
+## CHECK-START: int Smali.foo(int, int) GVN (after)
+## CHECK: Add
+## CHECK: Add
+## CHECK-NOT: Add
+.method public static foo(II)I
+
+    # int sum1 = x + y;
+    # int sum2 = y + x;
+    # return sum1 + sum2;
+
+    .registers 5
+    .param p0, "x"    # I
+    .param p1, "y"    # I
+
+    add-int v0, p0, p1
+    add-int v1, p1, p0
+    add-int v2, v0, v1
+
+    return v2
+.end method
+
diff --git a/test/455-checker-gvn/src/Main.java b/test/455-checker-gvn/src/Main.java
index cea0959..6df57fd 100644
--- a/test/455-checker-gvn/src/Main.java
+++ b/test/455-checker-gvn/src/Main.java
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+import java.lang.reflect.Method;
 
 public class Main {
 
@@ -25,20 +26,14 @@
     System.out.println(directIntrinsic(-5));
   }
 
-  /// CHECK-START: int Main.foo(int, int) GVN (before)
-  /// CHECK: Add
-  /// CHECK: Add
-  /// CHECK: Add
-
-  /// CHECK-START: int Main.foo(int, int) GVN (after)
-  /// CHECK: Add
-  /// CHECK: Add
-  /// CHECK-NOT: Add
-
   public static int foo(int x, int y) {
-    int sum1 = x + y;
-    int sum2 = y + x;
-    return sum1 + sum2;
+   try {
+      Class<?> c = Class.forName("Smali");
+      Method m = c.getMethod("foo", int.class, int.class);
+      return (Integer) m.invoke(null, x, y);
+    } catch (Throwable t) {
+      throw new RuntimeException(t);
+    }
   }
 
   /// CHECK-START: int Main.mulAndIntrinsic() GVN (before)