Fix for argument passing bug
The code was using r1 as a temp when it was live.
Change-Id: I79f42203eced2aff49980241c890629ecc3ff09a
diff --git a/src/compiler_test.cc b/src/compiler_test.cc
index acfd5e5..a1aadc8 100644
--- a/src/compiler_test.cc
+++ b/src/compiler_test.cc
@@ -270,6 +270,26 @@
111);
}
+TEST_F(CompilerTest, InvokeTest) {
+ CompileDirectMethod(NULL, "java.lang.Object", "<init>", "()V");
+ const ClassLoader* class_loader = LoadDex("Invoke");
+ CompileDirectMethod(class_loader, "Invoke", "<init>", "()V");
+ CompileVirtualMethod(class_loader, "Invoke", "virI_I", "(I)I");
+ CompileVirtualMethod(class_loader, "Invoke", "virI_II", "(II)I");
+ CompileVirtualMethod(class_loader, "Invoke", "virI_III", "(III)I");
+ CompileVirtualMethod(class_loader, "Invoke", "virI_IIII", "(IIII)I");
+ CompileVirtualMethod(class_loader, "Invoke", "virI_IIIII", "(IIIII)I");
+ CompileVirtualMethod(class_loader, "Invoke", "virI_IIIIII", "(IIIIII)I");
+ CompileDirectMethod(class_loader, "Invoke", "statI_I", "(I)I");
+ CompileDirectMethod(class_loader, "Invoke", "statI_II", "(II)I");
+ CompileDirectMethod(class_loader, "Invoke", "statI_III", "(III)I");
+ CompileDirectMethod(class_loader, "Invoke", "statI_IIII", "(IIII)I");
+ CompileDirectMethod(class_loader, "Invoke", "statI_IIIII", "(IIIII)I");
+ CompileDirectMethod(class_loader, "Invoke", "statI_IIIIII", "(IIIIII)I");
+ AssertStaticIntMethod(class_loader, "Invoke", "test0", "(I)I", 20664,
+ 912);
+}
+
TEST_F(CompilerTest, SystemMethodsTest) {
CompileDirectMethod(NULL, "java.lang.Object", "<init>", "()V");