From d49ca93f47b83e1b03be8d610d6ee5ec680dee7f Mon Sep 17 00:00:00 2001 From: Henrik Smiding Date: Thu, 21 Feb 2013 23:11:53 +0100 Subject: JIT: Hoist loop load operations above loop. Hoists Dalvik frame load operations outside of loops, when possible. This improves performance in most loops, and is noticable in many applications. Change-Id: Ibe42b509b50a13f19758fd923f31d703e33a51c6 Signed-off-by: Henrik Smiding Signed-off-by: Patrik Ryd --- vm/compiler/codegen/arm/CodegenDriver.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'vm/compiler/codegen/arm/CodegenDriver.cpp') diff --git a/vm/compiler/codegen/arm/CodegenDriver.cpp b/vm/compiler/codegen/arm/CodegenDriver.cpp index cdc4f0203..de53b00fb 100644 --- a/vm/compiler/codegen/arm/CodegenDriver.cpp +++ b/vm/compiler/codegen/arm/CodegenDriver.cpp @@ -3838,7 +3838,7 @@ static void handlePCReconstruction(CompilationUnit *cUnit, * We should never reach here through fall-through code, so insert * a bomb to signal troubles immediately. */ - if (numElems) { + if ((numElems) || (cUnit->jitMode == kJitLoop)) { newLIR0(cUnit, kThumbUndefined); } @@ -4493,6 +4493,7 @@ void dvmCompilerMIR2LIR(CompilationUnit *cUnit) (LIR *) cUnit->loopAnalysis->branchToBody); dvmCompilerAppendLIR(cUnit, (LIR *) cUnit->loopAnalysis->branchToPCR); + cUnit->loopAnalysis->branchesAdded = true; } if (headLIR) { -- cgit v1.2.3