diff options
| author | Brian Carlstrom <bdc@google.com> | 2010-08-19 11:21:12 -0700 |
|---|---|---|
| committer | Brian Carlstrom <bdc@google.com> | 2010-08-20 13:27:49 -0700 |
| commit | 30febfdf4abe39f99dec100de968cb831b555b27 (patch) | |
| tree | 0c59dad7485a097075b9ed5b4984de9dcbb5395b /vm/compiler/codegen/arm/CodegenDriver.c | |
| parent | 3e9bfe0bed2f27d01efdb03a71025c421d321956 (diff) | |
| parent | b8c347d05fc8137d793df4dfdb98c429151d54a4 (diff) | |
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-gingerbread
Also includes cherry-pick of 07ecdc0b5d92099364eebdaee9aec297c4bbad72
Change-Id: Ie1744d78683f2f66dd1586f453f8bdd56ad2e9a5
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
| -rw-r--r-- | vm/compiler/codegen/arm/CodegenDriver.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c index 37425ada1..1ff94096e 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); } @@ -1549,6 +1554,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; } @@ -4333,14 +4339,14 @@ bool dvmCompilerDoWork(CompilerWorkOrder *work) case kWorkOrderTrace: /* Start compilation with maximally allowed trace length */ res = dvmCompileTrace(work->info, JIT_MAX_TRACE_LEN, &work->result, - work->bailPtr); + work->bailPtr, 0 /* no hints */); break; case kWorkOrderTraceDebug: { bool oldPrintMe = gDvmJit.printMe; gDvmJit.printMe = true; /* Start compilation with maximally allowed trace length */ res = dvmCompileTrace(work->info, JIT_MAX_TRACE_LEN, &work->result, - work->bailPtr); + work->bailPtr, 0 /* no hints */); gDvmJit.printMe = oldPrintMe; break; } @@ -4420,6 +4426,12 @@ void *dvmCompilerGetInterpretTemplate() templateEntryOffsets[TEMPLATE_INTERPRET]); } +/* Needed by the Assembler */ +void dvmCompilerSetupResourceMasks(ArmLIR *lir) +{ + setupResourceMasks(lir); +} + /* Needed by the ld/st optmizatons */ ArmLIR* dvmCompilerRegCopyNoInsert(CompilationUnit *cUnit, int rDest, int rSrc) { |
