ART-tests: Remove DX-dependency from 458-checker-instruct-simplification
Bug: 65168732
Test: art/test.py -r --host -t 458-checker
Change-Id: Id8cbdb80f3e643d4dbf0c32e01babe38e6e1a5dd
diff --git a/test/458-checker-instruct-simplification/build b/test/458-checker-instruct-simplification/build
deleted file mode 100755
index 10ffcc5..0000000
--- a/test/458-checker-instruct-simplification/build
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-#
-# Copyright 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.
-
-# See b/65168732
-export USE_D8=false
-
-./default-build "$@"
diff --git a/test/458-checker-instruct-simplification/smali/SmaliTests2.smali b/test/458-checker-instruct-simplification/smali/SmaliTests2.smali
new file mode 100644
index 0000000..99fb049
--- /dev/null
+++ b/test/458-checker-instruct-simplification/smali/SmaliTests2.smali
@@ -0,0 +1,305 @@
+# Copyright (C) 2018 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 LSmaliTests2;
+.super Ljava/lang/Object;
+
+## CHECK-START: int SmaliTests2.$noinline$XorAllOnes(int) instruction_simplifier (before)
+## CHECK-DAG: <<Arg:i\d+>> ParameterValue
+## CHECK-DAG: <<ConstF:i\d+>> IntConstant -1
+## CHECK-DAG: <<Xor:i\d+>> Xor [<<Arg>>,<<ConstF>>]
+## CHECK-DAG: Return [<<Xor>>]
+
+## CHECK-START: int SmaliTests2.$noinline$XorAllOnes(int) instruction_simplifier (after)
+## CHECK-DAG: <<Arg:i\d+>> ParameterValue
+## CHECK-DAG: <<Not:i\d+>> Not [<<Arg>>]
+## CHECK-DAG: Return [<<Not>>]
+
+## CHECK-START: int SmaliTests2.$noinline$XorAllOnes(int) instruction_simplifier (after)
+## CHECK-NOT: Xor
+
+# Original java source:
+#
+# return arg ^ -1;
+#
+.method public static $noinline$XorAllOnes(I)I
+ .registers 2
+ .param p0, "arg" # I
+
+ .prologue
+ .line 658
+ xor-int/lit8 v0, p0, -0x1
+
+ return v0
+.end method
+
+# Test simplification of the `~~var` pattern.
+# The transformation tested is implemented in `InstructionSimplifierVisitor::VisitNot`.
+
+## CHECK-START: long SmaliTests2.$noinline$NotNot1(long) instruction_simplifier (before)
+## CHECK-DAG: <<Arg:j\d+>> ParameterValue
+## CHECK-DAG: <<ConstNeg1:j\d+>> LongConstant -1
+## CHECK-DAG: <<Not1:j\d+>> Xor [<<Arg>>,<<ConstNeg1>>]
+## CHECK-DAG: <<Not2:j\d+>> Xor [<<Not1>>,<<ConstNeg1>>]
+## CHECK-DAG: Return [<<Not2>>]
+
+## CHECK-START: long SmaliTests2.$noinline$NotNot1(long) instruction_simplifier (after)
+## CHECK-DAG: <<Arg:j\d+>> ParameterValue
+## CHECK-DAG: Return [<<Arg>>]
+
+## CHECK-START: long SmaliTests2.$noinline$NotNot1(long) instruction_simplifier (after)
+## CHECK-NOT: Xor
+
+# Original java source:
+#
+# return ~~arg;
+.method public static $noinline$NotNot1(J)J
+ .registers 6
+ .param p0, "arg" # J
+
+ .prologue
+ const-wide/16 v2, -0x1
+
+ .line 1001
+ xor-long v0, p0, v2
+
+ xor-long/2addr v0, v2
+
+ return-wide v0
+.end method
+
+## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (before)
+## CHECK-DAG: <<Arg:i\d+>> ParameterValue
+## CHECK-DAG: <<ConstNeg1:i\d+>> IntConstant -1
+## CHECK-DAG: <<Not1:i\d+>> Xor [<<Arg>>,<<ConstNeg1>>]
+## CHECK-DAG: <<Not2:i\d+>> Xor [<<Not1>>,<<ConstNeg1>>]
+## CHECK-DAG: <<Add:i\d+>> Add [<<Not2>>,<<Not1>>]
+## CHECK-DAG: Return [<<Add>>]
+
+## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (after)
+## CHECK-DAG: <<Arg:i\d+>> ParameterValue
+## CHECK-DAG: <<Not:i\d+>> Not [<<Arg>>]
+## CHECK-DAG: <<Add:i\d+>> Add [<<Arg>>,<<Not>>]
+## CHECK-DAG: Return [<<Add>>]
+
+## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (after)
+## CHECK: Not
+## CHECK-NOT: Not
+
+## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (after)
+## CHECK-NOT: Xor
+
+# Original java source:
+#
+# int temp = ~arg;
+# return temp + ~temp;
+#
+.method public static $noinline$NotNot2(I)I
+ .registers 3
+ .param p0, "arg" # I
+
+ .prologue
+ .line 1026
+ xor-int/lit8 v0, p0, -0x1
+
+ .line 1027
+ .local v0, "temp":I
+ xor-int/lit8 v1, v0, -0x1
+
+ add-int/2addr v1, v0
+
+ return v1
+.end method
+
+# Original java source:
+#
+# return !arg;
+#
+.method public static NegateValue(Z)Z
+ .registers 2
+ .param p0, "arg" # Z
+
+ .prologue
+ .line 1216
+ if-nez p0, :cond_4
+
+ const/4 v0, 0x1
+
+ :goto_3
+ return v0
+
+ :cond_4
+ const/4 v0, 0x0
+
+ goto :goto_3
+.end method
+
+# Test simplification of double Boolean negation. Note that sometimes
+# both negations can be removed but we only expect the simplifier to
+# remove the second.
+
+## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier (before)
+## CHECK-DAG: <<Arg:z\d+>> ParameterValue
+## CHECK-DAG: <<Const1:i\d+>> IntConstant 0
+## CHECK-DAG: <<Result:z\d+>> InvokeStaticOrDirect method_name:SmaliTests2.NegateValue
+## CHECK-DAG: <<NotResult:z\d+>> NotEqual [<<Result>>,<<Const1>>]
+## CHECK-DAG: If [<<NotResult>>]
+
+## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier (after)
+## CHECK-NOT: NotEqual
+
+## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier (after)
+## CHECK-DAG: <<Arg:z\d+>> ParameterValue
+## CHECK-DAG: <<Result:z\d+>> InvokeStaticOrDirect method_name:SmaliTests2.NegateValue
+## CHECK-DAG: <<Const0:i\d+>> IntConstant 0
+## CHECK-DAG: <<Const1:i\d+>> IntConstant 1
+## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
+## CHECK-DAG: Return [<<Phi>>]
+
+## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier$after_inlining (before)
+## CHECK-DAG: <<Arg:z\d+>> ParameterValue
+## CHECK-DAG: <<Const0:i\d+>> IntConstant 0
+## CHECK-DAG: <<Const1:i\d+>> IntConstant 1
+## CHECK-DAG: If [<<Arg>>]
+## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
+## CHECK-DAG: Return [<<Phi>>]
+
+## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier$after_gvn (after)
+## CHECK-DAG: <<Arg:z\d+>> ParameterValue
+## CHECK-DAG: Return [<<Arg>>]
+
+# Original java source:
+#
+# return !(NegateValue(arg));
+#
+.method public static $noinline$NotNotBool(Z)Z
+ .registers 2
+ .param p0, "arg" # Z
+
+ .prologue
+ .line 1220
+ invoke-static {p0}, LSmaliTests2;->NegateValue(Z)Z
+
+ move-result v0
+
+ if-nez v0, :cond_8
+
+ const/4 v0, 0x1
+
+ :goto_7
+ return v0
+
+ :cond_8
+ const/4 v0, 0x0
+
+ goto :goto_7
+.end method
+
+## CHECK-START: int SmaliTests2.$noinline$bug68142795Short(short) instruction_simplifier (before)
+## CHECK-DAG: <<Arg:s\d+>> ParameterValue
+## CHECK-DAG: <<Const:i\d+>> IntConstant 65535
+## CHECK-DAG: <<And1:i\d+>> And [<<Arg>>,<<Const>>]
+## CHECK-DAG: <<And2:i\d+>> And [<<And1>>,<<Const>>]
+## CHECK-DAG: <<Conv:s\d+>> TypeConversion [<<And2>>]
+## CHECK-DAG: Return [<<Conv>>]
+
+## CHECK-START: int SmaliTests2.$noinline$bug68142795Short(short) instruction_simplifier (after)
+## CHECK-DAG: <<Arg:s\d+>> ParameterValue
+## CHECK-DAG: Return [<<Arg>>]
+
+# Original java source
+#
+# return (short)(0xffff & (s & 0xffff));
+#
+.method public static $noinline$bug68142795Short(S)I
+ .registers 3
+ .param p0, "s" # S
+
+ .prologue
+ const v1, 0xffff
+
+ .line 2562
+ and-int v0, p0, v1
+
+ and-int/2addr v0, v1
+
+ int-to-short v0, v0
+
+ return v0
+.end method
+
+# Original java source
+#
+# return 255;
+#
+.method private static $inline$get255()I
+ .registers 1
+
+ .prologue
+ .line 2849
+ const/16 v0, 0xff
+
+ return v0
+.end method
+
+## CHECK-START: int SmaliTests2.$noinline$bug68142795Boolean(boolean) instruction_simplifier$after_inlining (before)
+## CHECK-DAG: <<Arg:z\d+>> ParameterValue
+## CHECK-DAG: <<Const0:i\d+>> IntConstant 0
+## CHECK-DAG: <<Const1:i\d+>> IntConstant 1
+## CHECK-DAG: <<Const255:i\d+>> IntConstant 255
+## CHECK-DAG: If [<<Arg>>]
+## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
+## CHECK-DAG: <<And:i\d+>> And [<<Const255>>,<<Phi>>]
+## CHECK-DAG: <<Conv:b\d+>> TypeConversion [<<And>>]
+## CHECK-DAG: Return [<<Conv>>]
+
+## CHECK-START: int SmaliTests2.$noinline$bug68142795Boolean(boolean) instruction_simplifier$after_gvn (after)
+## CHECK-DAG: <<Arg:z\d+>> ParameterValue
+## CHECK-DAG: Return [<<Arg>>]
+
+# Original java source
+#
+# int v = b ? 1 : 0; // Should be simplified to "b" after inlining.
+# return (byte)($inline$get255() & v);
+#
+.method public static $noinline$bug68142795Boolean(Z)I
+ .registers 3
+ .param p0, "b" # Z
+
+ .prologue
+ .line 2580
+ if-eqz p0, :cond_a
+
+ const/4 v0, 0x1
+
+ .line 2581
+ .local v0, "v":I
+ :goto_3
+ invoke-static {}, LSmaliTests2;->$inline$get255()I
+
+ move-result v1
+
+ and-int/2addr v1, v0
+
+ int-to-byte v1, v1
+
+ return v1
+
+ .line 2580
+ .end local v0 # "v":I
+ :cond_a
+ const/4 v0, 0x0
+
+ goto :goto_3
+.end method
diff --git a/test/458-checker-instruct-simplification/src/Main.java b/test/458-checker-instruct-simplification/src/Main.java
index b24cfcb..40e3778 100644
--- a/test/458-checker-instruct-simplification/src/Main.java
+++ b/test/458-checker-instruct-simplification/src/Main.java
@@ -640,24 +640,6 @@
return arg ^ 0;
}
- /// CHECK-START: int Main.$noinline$XorAllOnes(int) instruction_simplifier (before)
- /// CHECK-DAG: <<Arg:i\d+>> ParameterValue
- /// CHECK-DAG: <<ConstF:i\d+>> IntConstant -1
- /// CHECK-DAG: <<Xor:i\d+>> Xor [<<Arg>>,<<ConstF>>]
- /// CHECK-DAG: Return [<<Xor>>]
-
- /// CHECK-START: int Main.$noinline$XorAllOnes(int) instruction_simplifier (after)
- /// CHECK-DAG: <<Arg:i\d+>> ParameterValue
- /// CHECK-DAG: <<Not:i\d+>> Not [<<Arg>>]
- /// CHECK-DAG: Return [<<Not>>]
-
- /// CHECK-START: int Main.$noinline$XorAllOnes(int) instruction_simplifier (after)
- /// CHECK-NOT: Xor
-
- public static int $noinline$XorAllOnes(int arg) {
- return arg ^ -1;
- }
-
/**
* Test that addition or subtraction operation with both inputs negated are
* optimized to use a single negation after the operation.
@@ -978,56 +960,7 @@
return -temp | -temp;
}
- /**
- * Test simplification of the `~~var` pattern.
- * The transformation tested is implemented in `InstructionSimplifierVisitor::VisitNot`.
- */
-
- /// CHECK-START: long Main.$noinline$NotNot1(long) instruction_simplifier (before)
- /// CHECK-DAG: <<Arg:j\d+>> ParameterValue
- /// CHECK-DAG: <<ConstNeg1:j\d+>> LongConstant -1
- /// CHECK-DAG: <<Not1:j\d+>> Xor [<<Arg>>,<<ConstNeg1>>]
- /// CHECK-DAG: <<Not2:j\d+>> Xor [<<Not1>>,<<ConstNeg1>>]
- /// CHECK-DAG: Return [<<Not2>>]
-
- /// CHECK-START: long Main.$noinline$NotNot1(long) instruction_simplifier (after)
- /// CHECK-DAG: <<Arg:j\d+>> ParameterValue
- /// CHECK-DAG: Return [<<Arg>>]
-
- /// CHECK-START: long Main.$noinline$NotNot1(long) instruction_simplifier (after)
- /// CHECK-NOT: Xor
-
- public static long $noinline$NotNot1(long arg) {
- return ~~arg;
- }
-
- /// CHECK-START: int Main.$noinline$NotNot2(int) instruction_simplifier (before)
- /// CHECK-DAG: <<Arg:i\d+>> ParameterValue
- /// CHECK-DAG: <<ConstNeg1:i\d+>> IntConstant -1
- /// CHECK-DAG: <<Not1:i\d+>> Xor [<<Arg>>,<<ConstNeg1>>]
- /// CHECK-DAG: <<Not2:i\d+>> Xor [<<Not1>>,<<ConstNeg1>>]
- /// CHECK-DAG: <<Add:i\d+>> Add [<<Not2>>,<<Not1>>]
- /// CHECK-DAG: Return [<<Add>>]
-
- /// CHECK-START: int Main.$noinline$NotNot2(int) instruction_simplifier (after)
- /// CHECK-DAG: <<Arg:i\d+>> ParameterValue
- /// CHECK-DAG: <<Not:i\d+>> Not [<<Arg>>]
- /// CHECK-DAG: <<Add:i\d+>> Add [<<Arg>>,<<Not>>]
- /// CHECK-DAG: Return [<<Add>>]
-
- /// CHECK-START: int Main.$noinline$NotNot2(int) instruction_simplifier (after)
- /// CHECK: Not
- /// CHECK-NOT: Not
-
- /// CHECK-START: int Main.$noinline$NotNot2(int) instruction_simplifier (after)
- /// CHECK-NOT: Xor
-
- public static int $noinline$NotNot2(int arg) {
- int temp = ~arg;
- return temp + ~temp;
- }
-
- /**
+ /**
* Test the simplification of a subtraction with a negated argument.
* The transformation tested is implemented in `InstructionSimplifierVisitor::VisitSub`.
*/
@@ -1176,50 +1109,6 @@
return (arg ? $inline$ReturnArg(0) : $inline$ReturnArg(1)) == 2;
}
- /*
- * Test simplification of double Boolean negation. Note that sometimes
- * both negations can be removed but we only expect the simplifier to
- * remove the second.
- */
-
- /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier (before)
- /// CHECK-DAG: <<Arg:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Result:z\d+>> InvokeStaticOrDirect method_name:Main.NegateValue
- /// CHECK-DAG: <<NotResult:z\d+>> NotEqual [<<Result>>,<<Const1>>]
- /// CHECK-DAG: If [<<NotResult>>]
-
- /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier (after)
- /// CHECK-NOT: NotEqual
-
- /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier (after)
- /// CHECK-DAG: <<Arg:z\d+>> ParameterValue
- /// CHECK-DAG: <<Result:z\d+>> InvokeStaticOrDirect method_name:Main.NegateValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
- /// CHECK-DAG: Return [<<Phi>>]
-
- /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier$after_inlining (before)
- /// CHECK-DAG: <<Arg:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: If [<<Arg>>]
- /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
- /// CHECK-DAG: Return [<<Phi>>]
-
- /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier$after_gvn (after)
- /// CHECK-DAG: <<Arg:z\d+>> ParameterValue
- /// CHECK-DAG: Return [<<Arg>>]
-
- public static boolean NegateValue(boolean arg) {
- return !arg;
- }
-
- public static boolean $noinline$NotNotBool(boolean arg) {
- return !(NegateValue(arg));
- }
-
/// CHECK-START: float Main.$noinline$Div2(float) instruction_simplifier (before)
/// CHECK-DAG: <<Arg:f\d+>> ParameterValue
/// CHECK-DAG: <<Const2:f\d+>> FloatConstant 2
@@ -1911,9 +1800,9 @@
}
}
- public static boolean $noinline$runSmaliTestBoolean(String name, boolean input) {
+ public static boolean $noinline$runSmaliTest2Boolean(String name, boolean input) {
try {
- Class<?> c = Class.forName("SmaliTests");
+ Class<?> c = Class.forName("SmaliTests2");
Method m = c.getMethod(name, boolean.class);
return (Boolean) m.invoke(null, input);
} catch (Exception ex) {
@@ -1921,9 +1810,9 @@
}
}
- public static int $noinline$runSmaliTestInt(String name, int arg) {
+ public static int $noinline$runSmaliTestInt(String postfix, String name, int arg) {
try {
- Class<?> c = Class.forName("SmaliTests");
+ Class<?> c = Class.forName("SmaliTests" + postfix);
Method m = c.getMethod(name, int.class);
return (Integer) m.invoke(null, arg);
} catch (Exception ex) {
@@ -1931,9 +1820,13 @@
}
}
- public static long $noinline$runSmaliTestLong(String name, long arg) {
+ public static int $noinline$runSmaliTestInt(String name, int arg) {
+ return $noinline$runSmaliTestInt("", name, arg);
+ }
+
+ public static long $noinline$runSmaliTest2Long(String name, long arg) {
try {
- Class<?> c = Class.forName("SmaliTests");
+ Class<?> c = Class.forName("SmaliTests2");
Method m = c.getMethod(name, long.class);
return (Long) m.invoke(null, arg);
} catch (Exception ex) {
@@ -2547,40 +2440,6 @@
return (byte)(0xff & (b & 0xff));
}
- /// CHECK-START: int Main.$noinline$bug68142795Short(short) instruction_simplifier (before)
- /// CHECK-DAG: <<Arg:s\d+>> ParameterValue
- /// CHECK-DAG: <<Const:i\d+>> IntConstant 65535
- /// CHECK-DAG: <<And1:i\d+>> And [<<Arg>>,<<Const>>]
- /// CHECK-DAG: <<And2:i\d+>> And [<<And1>>,<<Const>>]
- /// CHECK-DAG: <<Conv:s\d+>> TypeConversion [<<And2>>]
- /// CHECK-DAG: Return [<<Conv>>]
-
- /// CHECK-START: int Main.$noinline$bug68142795Short(short) instruction_simplifier (after)
- /// CHECK-DAG: <<Arg:s\d+>> ParameterValue
- /// CHECK-DAG: Return [<<Arg>>]
- public static int $noinline$bug68142795Short(short s) {
- return (short)(0xffff & (s & 0xffff));
- }
-
- /// CHECK-START: int Main.$noinline$bug68142795Boolean(boolean) instruction_simplifier$after_inlining (before)
- /// CHECK-DAG: <<Arg:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<Const255:i\d+>> IntConstant 255
- /// CHECK-DAG: If [<<Arg>>]
- /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
- /// CHECK-DAG: <<And:i\d+>> And [<<Const255>>,<<Phi>>]
- /// CHECK-DAG: <<Conv:b\d+>> TypeConversion [<<And>>]
- /// CHECK-DAG: Return [<<Conv>>]
-
- /// CHECK-START: int Main.$noinline$bug68142795Boolean(boolean) instruction_simplifier$after_gvn (after)
- /// CHECK-DAG: <<Arg:z\d+>> ParameterValue
- /// CHECK-DAG: Return [<<Arg>>]
- public static int $noinline$bug68142795Boolean(boolean b) {
- int v = b ? 1 : 0; // Should be simplified to "b" after inlining.
- return (byte)($inline$get255() & v);
- }
-
/// CHECK-START: int Main.$noinline$bug68142795Elaborate(byte) instruction_simplifier (before)
/// CHECK-DAG: <<Arg:b\d+>> ParameterValue
/// CHECK-DAG: <<Int255:i\d+>> IntConstant 255
@@ -2599,7 +2458,15 @@
return (byte)((int)(((long)(b & 0xff)) & 255L));
}
- public static void main(String[] args) {
+ public static void main(String[] args) throws Exception {
+ Class smaliTests2 = Class.forName("SmaliTests2");
+ Method $noinline$XorAllOnes = smaliTests2.getMethod("$noinline$XorAllOnes", int.class);
+ Method $noinline$NotNot1 = smaliTests2.getMethod("$noinline$NotNot1", long.class);
+ Method $noinline$NotNot2 = smaliTests2.getMethod("$noinline$NotNot2", int.class);
+ Method $noinline$NotNotBool = smaliTests2.getMethod("$noinline$NotNotBool", boolean.class);
+ Method $noinline$bug68142795Short = smaliTests2.getMethod("$noinline$bug68142795Short", short.class);
+ Method $noinline$bug68142795Boolean = smaliTests2.getMethod("$noinline$bug68142795Boolean", boolean.class);
+
int arg = 123456;
float floatArg = 123456.125f;
@@ -2624,7 +2491,7 @@
assertLongEquals(3, $noinline$SubSubConst(4));
assertLongEquals(arg, $noinline$UShr0(arg));
assertIntEquals(arg, $noinline$Xor0(arg));
- assertIntEquals(~arg, $noinline$XorAllOnes(arg));
+ assertIntEquals(~arg, (int)$noinline$XorAllOnes.invoke(null, arg));
assertIntEquals(-(arg + arg + 1), $noinline$AddNegs1(arg, arg + 1));
assertIntEquals(-(arg + arg + 1), $noinline$AddNegs2(arg, arg + 1));
assertLongEquals(-(2 * arg + 1), $noinline$AddNegs3(arg, arg + 1));
@@ -2635,10 +2502,10 @@
assertLongEquals(arg, $noinline$NegNeg3(arg));
assertIntEquals(1, $noinline$NegSub1(arg, arg + 1));
assertIntEquals(1, $noinline$NegSub2(arg, arg + 1));
- assertLongEquals(arg, $noinline$NotNot1(arg));
- assertLongEquals(arg, $noinline$runSmaliTestLong("$noinline$NotNot1", arg));
- assertIntEquals(-1, $noinline$NotNot2(arg));
- assertIntEquals(-1, $noinline$runSmaliTestInt("$noinline$NotNot2", arg));
+ assertLongEquals(arg, (long)$noinline$NotNot1.invoke(null, arg));
+ assertLongEquals(arg, $noinline$runSmaliTest2Long("$noinline$NotNot1", arg));
+ assertIntEquals(-1, (int)$noinline$NotNot2.invoke(null, arg));
+ assertIntEquals(-1, $noinline$runSmaliTestInt("2", "$noinline$NotNot2", arg));
assertIntEquals(-(arg + arg + 1), $noinline$SubNeg1(arg, arg + 1));
assertIntEquals(-(arg + arg + 1), $noinline$SubNeg2(arg, arg + 1));
assertLongEquals(-(2 * arg + 1), $noinline$SubNeg3(arg, arg + 1));
@@ -2646,10 +2513,10 @@
assertBooleanEquals(true, $noinline$EqualBoolVsIntConst(true));
assertBooleanEquals(false, $noinline$NotEqualBoolVsIntConst(false));
assertBooleanEquals(false, $noinline$NotEqualBoolVsIntConst(false));
- assertBooleanEquals(true, $noinline$NotNotBool(true));
- assertBooleanEquals(true, $noinline$runSmaliTestBoolean("$noinline$NotNotBool", true));
- assertBooleanEquals(false, $noinline$NotNotBool(false));
- assertBooleanEquals(false, $noinline$runSmaliTestBoolean("$noinline$NotNotBool", false));
+ assertBooleanEquals(true, (boolean)$noinline$NotNotBool.invoke(null, true));
+ assertBooleanEquals(true, $noinline$runSmaliTest2Boolean("$noinline$NotNotBool", true));
+ assertBooleanEquals(false, (boolean)$noinline$NotNotBool.invoke(null, false));
+ assertBooleanEquals(false, $noinline$runSmaliTest2Boolean("$noinline$NotNotBool", false));
assertFloatEquals(50.0f, $noinline$Div2(100.0f));
assertDoubleEquals(75.0, $noinline$Div2(150.0));
assertFloatEquals(-400.0f, $noinline$DivMP25(100.0f));
@@ -2836,17 +2703,16 @@
assertIntEquals(0x7f, $noinline$bug68142795Byte((byte) 0x7f));
assertIntEquals((byte) 0x80, $noinline$bug68142795Byte((byte) 0x80));
- assertIntEquals(0x7fff, $noinline$bug68142795Short((short) 0x7fff));
- assertIntEquals((short) 0x8000, $noinline$bug68142795Short((short) 0x8000));
- assertIntEquals(0, $noinline$bug68142795Boolean(false));
- assertIntEquals(1, $noinline$bug68142795Boolean(true));
+ assertIntEquals(0x7fff, (int)$noinline$bug68142795Short.invoke(null, (short) 0x7fff));
+ assertIntEquals((short) 0x8000, (int)$noinline$bug68142795Short.invoke(null, (short) 0x8000));
+ assertIntEquals(0, (int)$noinline$bug68142795Boolean.invoke(null, false));
+ assertIntEquals(1, (int)$noinline$bug68142795Boolean.invoke(null, true));
assertIntEquals(0x7f, $noinline$bug68142795Elaborate((byte) 0x7f));
assertIntEquals((byte) 0x80, $noinline$bug68142795Elaborate((byte) 0x80));
}
private static boolean $inline$true() { return true; }
private static boolean $inline$false() { return false; }
- private static int $inline$get255() { return 255; }
public static boolean booleanField;