diff options
| author | Brian Carlstrom <bdc@google.com> | 2010-08-20 13:52:14 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2010-08-20 13:52:14 -0700 |
| commit | 39796a6aa79f687ac0b1254f6a8be048ad1243d8 (patch) | |
| tree | 0cbdfbbb9291bf7b06e9ab0f93f45ea3816e8388 /vm/compiler/codegen/arm/CodegenDriver.c | |
| parent | 1310319f0f89c1fc2890657aaa1f0b0ac30e099f (diff) | |
| parent | 30febfdf4abe39f99dec100de968cb831b555b27 (diff) | |
am 30febfdf: Merge remote branch \'goog/dalvik-dev\' into dalvik-dev-to-gingerbread
Merge commit '30febfdf4abe39f99dec100de968cb831b555b27' into gingerbread-plus-aosp
* commit '30febfdf4abe39f99dec100de968cb831b555b27': (34 commits)
Remove an assertion that cannot be guaranteed.
Always support debugging and profiling.
Fix a critical space leak introduced by concurrent sweeping.
Add a little bit of paranoia to the odex data reader.
Nudge a couple of log messages.
Fix build breakage caused by the countInstancesOfClass change.
Add a method for counting the extant instances of a class.
Added fsync call to dexopt.
JIT: Fix for armv5te-VFP bug [Issue 2916682]
Cast to a byte pointer before performing arithmetic.
Limit scanning to cards within the committed region of the heap.
Remove a malfunctioning predicate used only in assertions.
Remove debugging code and stale comments from the sweep callback.
Fix build breakage caused by a bad merge from master.
JIT: Correct conversion of cb[n]z to cmp/cond_br pair
Sweep concurrently.
Implement card table verification.
Fix the ordering of lock acquisition in the heap worker.
Print callee information in the JIT profile outout
JIT: Fix for lightweight assembler retry mechanism.
...
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) { |
