summaryrefslogtreecommitdiff
path: root/src/compiler/compiler_ir.h
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-12-31 16:05:53 -0800
committer buzbee <buzbee@google.com> 2013-01-03 06:17:11 -0800
commit2502e004d93734a99bdfeab811b3c5ae06f45bec (patch)
tree1f1ef0f89464d4a2d5477fe026866cc684c7ca1b /src/compiler/compiler_ir.h
parent2d76b041be770102fc912effc398e629a18180d2 (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.h2
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.