diff options
| author | buzbee <buzbee@google.com> | 2010-08-04 10:13:15 -0700 |
|---|---|---|
| committer | buzbee <buzbee@google.com> | 2010-08-04 10:13:15 -0700 |
| commit | baf196a7b259704137cccf4058b78da15d4c3998 (patch) | |
| tree | 10bef01469fad63006c349bf428e10792aa170dd /vm/compiler/codegen/arm/CodegenDriver.c | |
| parent | 4dc622c5b4ce48b5f2f0a0f92f316dd557fc950f (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.c | 6 |
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; } |
