Fix for 2892472 jit spew: No free temp registers
Neglected some register allocation hygene, which caused a
problem on armv5te builds.
Change-Id: I666b39b88822c4d3d3d7f0e84386aca2920bb9f1
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index cd0f18d..79019a0 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -41,6 +41,8 @@
ArmLIR *target = newLIR0(cUnit, kArmPseudoTargetLabel);
target->defMask = ENCODE_ALL;
branchOver->generic.target = (LIR *)target;
+ dvmCompilerFreeTemp(cUnit, regCardBase);
+ dvmCompilerFreeTemp(cUnit, regCardNo);
}
static bool genConversionCall(CompilationUnit *cUnit, MIR *mir, void *funct,
@@ -574,6 +576,9 @@
scale, kWord);
HEAP_ACCESS_SHADOW(false);
+ dvmCompilerFreeTemp(cUnit, regPtr);
+ dvmCompilerFreeTemp(cUnit, regIndex);
+
/* NOTE: marking card here based on object head */
markCard(cUnit, r0, r1);
}
@@ -1543,6 +1548,7 @@
/* NOTE: marking card based on field address */
markCard(cUnit, rlSrc.lowReg, tReg);
}
+ dvmCompilerFreeTemp(cUnit, tReg);
break;
}