aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.cpp
diff options
context:
space:
mode:
authorHenrik Smiding <henrik.smiding@stericsson.com>2013-02-21 23:11:53 +0100
committerSteve Kondik <shade@chemlab.org>2013-07-24 12:59:42 -0700
commitd49ca93f47b83e1b03be8d610d6ee5ec680dee7f (patch)
tree048383a01cd2d7728cec9b953053121f27f4ce82 /vm/compiler/codegen/arm/CodegenDriver.cpp
parent25b94295a57290623e34882e7fd86ea10928a54e (diff)
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 <henrik.smiding@stericsson.com> Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.cpp')
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.cpp3
1 files changed, 2 insertions, 1 deletions
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) {