aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2010-08-19 11:21:12 -0700
committerBrian Carlstrom <bdc@google.com>2010-08-20 13:27:49 -0700
commit30febfdf4abe39f99dec100de968cb831b555b27 (patch)
tree0c59dad7485a097075b9ed5b4984de9dcbb5395b /vm/compiler/codegen/arm/CodegenDriver.c
parent3e9bfe0bed2f27d01efdb03a71025c421d321956 (diff)
parentb8c347d05fc8137d793df4dfdb98c429151d54a4 (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.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)
{