diff options
| author | 2012-12-31 16:05:53 -0800 | |
|---|---|---|
| committer | 2013-01-03 06:17:11 -0800 | |
| commit | 2502e004d93734a99bdfeab811b3c5ae06f45bec (patch) | |
| tree | 1f1ef0f89464d4a2d5477fe026866cc684c7ca1b /src/compiler/compiler_ir.h | |
| parent | 2d76b041be770102fc912effc398e629a18180d2 (diff) | |
Basic block optimization refactoring
Various optimization improvements for the common frontend.
Before applying basic block optimizations, split the graph
into extended basic blocks. Replace existing pattern-match
range-check elimination with a scheme based on local value
numbering (which could also serve as the basis for some CSE
if the existing, but so-far untested, common frontend temp
register mechanism works as designed).
For the framework, this CL improves null check elimination
from 90.74% (statically) to 91.24% removed, and range
check elimination from 3.45% to 8.17%.
Change-Id: Ie1ce730cfe12a12fef665a30fe3814bad1993895
Diffstat (limited to 'src/compiler/compiler_ir.h')
| -rw-r--r-- | src/compiler/compiler_ir.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/compiler_ir.h b/src/compiler/compiler_ir.h index 9c67cd567c..8f00ac2282 100644 --- a/src/compiler/compiler_ir.h +++ b/src/compiler/compiler_ir.h @@ -196,7 +196,6 @@ struct SSARepresentation; #define MIR_CALLEE (1 << kMIRCallee) #define MIR_IGNORE_SUSPEND_CHECK (1 << kMIRIgnoreSuspendCheck) #define MIR_DUP (1 << kMIRDup) -#define MIR_MARK (1 << kMIRMark) struct Checkstats { int null_checks; @@ -400,6 +399,7 @@ struct CompilationUnit { std::vector<uint32_t> core_vmap_table; std::vector<uint32_t> fp_vmap_table; std::vector<uint8_t> native_gc_map; + std::vector<BasicBlock*> extended_basic_blocks; bool verbose; bool has_loop; // Contains a loop. bool has_invoke; // Contains an invoke instruction. |