aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2010-08-20 13:52:14 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-20 13:52:14 -0700
commit39796a6aa79f687ac0b1254f6a8be048ad1243d8 (patch)
tree0cbdfbbb9291bf7b06e9ab0f93f45ea3816e8388 /vm/compiler/codegen/arm/CodegenDriver.c
parent1310319f0f89c1fc2890657aaa1f0b0ac30e099f (diff)
parent30febfdf4abe39f99dec100de968cb831b555b27 (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.c16
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)
{