From baf196a7b259704137cccf4058b78da15d4c3998 Mon Sep 17 00:00:00 2001 From: buzbee Date: Wed, 4 Aug 2010 10:13:15 -0700 Subject: [PATCH] Fix for 2892472 jit spew: No free temp registers Neglected some register allocation hygene, which caused a problem on armv5te builds. Change-Id: I666b39b88822c4d3d3d7f0e84386aca2920bb9f1 --- vm/compiler/codegen/arm/CodegenDriver.c | 6 ++++++ 1 file changed, 6 insertions(+) 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; } -- 2.11.0