aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2010-08-04 10:13:15 -0700
committerbuzbee <buzbee@google.com>2010-08-04 10:13:15 -0700
commitbaf196a7b259704137cccf4058b78da15d4c3998 (patch)
tree10bef01469fad63006c349bf428e10792aa170dd /vm/compiler/codegen/arm/CodegenDriver.c
parent4dc622c5b4ce48b5f2f0a0f92f316dd557fc950f (diff)
Fix for 2892472 jit spew: No free temp registers
Neglected some register allocation hygene, which caused a problem on armv5te builds. Change-Id: I666b39b88822c4d3d3d7f0e84386aca2920bb9f1
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index cd0f18d99..79019a044 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -41,6 +41,8 @@ static void markCard(CompilationUnit *cUnit, int valReg, int tgtAddrReg)
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 @@ static void genArrayObjectPut(CompilationUnit *cUnit, MIR *mir,
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 @@ static bool handleFmt21c_Fmt31c(CompilationUnit *cUnit, MIR *mir)
/* NOTE: marking card based on field address */
markCard(cUnit, rlSrc.lowReg, tReg);
}
+ dvmCompilerFreeTemp(cUnit, tReg);
break;
}