summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/Ralloc.h
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-08-20 11:12:18 -0700
committer buzbee <buzbee@google.com> 2012-08-23 15:22:25 -0700
commitca7a5e484ac02927247cc77ad40f291bf6613ed5 (patch)
tree5dd6f55984fe8eb0dd2cf80bd3b2aff5f514afa2 /src/compiler/codegen/Ralloc.h
parentb18e77abdb06a443744fbb6589e0932fa89f6073 (diff)
Quick compiler: restore optimizations
This CL re-enables optizations on the Quick compile path. Notes: o Although all optimization are enabled, several are now useless because of llvm and bitcode constraints: - Large method de-optimization (i.e. - skipping expensive dataflow analysis) can't be done because we have to do the analysis to produce a CFG that makes the bitcode verifier happy. - Small method pattern matching isn't applicable w/ bitcode (though I can probably do something similar in the Quick backend, but looking for bitcode instead of dex patterns). - Branch fusing doesn't translate to bitcode. - Bitcode generation has de-optimized code layout. We'll try to repair the damage in a subsequent CL. o There is an ugly workaround related to the way we're loading and unloading the compiler .so containing llvm. [See comment in compiler.cc] o We're still running single-threaded - need to add the magic to allow multi-threaded use of llvm. o With the CL, the phone boots, all target tests pass and all cts VM tests pass (except those being dealt with via a verifier change). o Compile time is pretty bad - when flashing it's best to follow with an adb sync to avoid on-device compilation of system apps. Change-Id: I1c98f9e64aefbcbd24b957c71544c28450eb2023
Diffstat (limited to 'src/compiler/codegen/Ralloc.h')
-rw-r--r--src/compiler/codegen/Ralloc.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler/codegen/Ralloc.h b/src/compiler/codegen/Ralloc.h
index d1518e8e3f..db8fc7dd47 100644
--- a/src/compiler/codegen/Ralloc.h
+++ b/src/compiler/codegen/Ralloc.h
@@ -198,6 +198,9 @@ extern int oatSRegOffset(CompilationUnit* cUnit, int reg);
extern void oatCountRefs(CompilationUnit*, BasicBlock*, RefCounts*, RefCounts*);
extern int oatSortCounts(const void *val1, const void *val2);
extern void oatDumpCounts(const RefCounts* arr, int size, const char* msg);
+extern void oatRecordCorePromotion(CompilationUnit* cUnit, int reg, int sReg);
+extern void oatRecordFpPromotion(CompilationUnit* cUnit, int reg, int sReg);
+
/*
* Architecture-dependent register allocation routines implemented in