Fix invokeSuper range check (cts blocker)
The generated range check for the slow/slow path of invoke super
had the operands backwards, with predictable results. With this fix,
cts testing can proceed.
A new slow-path testing mode will be added in an upcoming CL to exercise
this path.
Change-Id: I36bba5bc5484fc7aaa0aca5ad394c10ea5efd0b1
diff --git a/src/compiler/codegen/arm/MethodCodegenDriver.cc b/src/compiler/codegen/arm/MethodCodegenDriver.cc
index 08a53bd..7ad974c 100644
--- a/src/compiler/codegen/arm/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/arm/MethodCodegenDriver.cc
@@ -759,7 +759,7 @@
tReg = oatAllocTemp(cUnit);
loadWordDisp(cUnit, r0, art::Array::LengthOffset().Int32Value(),
tReg);
- genRegRegCheck(cUnit, kArmCondCs, tReg, rLR, mir,
+ genRegRegCheck(cUnit, kArmCondCs, rLR, tReg, mir,
kArmThrowNoSuchMethod);
oatFreeTemp(cUnit, tReg);
}
@@ -2203,7 +2203,7 @@
OFFSETOF_MEMBER(Thread, pThrowNegArraySizeFromCode);
break;
case kArmThrowNoSuchMethod:
- genRegCopy(cUnit, r0, v2);
+ genRegCopy(cUnit, r0, v1);
funcOffset =
OFFSETOF_MEMBER(Thread, pThrowNoSuchMethodFromCode);
break;