From 2502e004d93734a99bdfeab811b3c5ae06f45bec Mon Sep 17 00:00:00 2001 From: buzbee Date: Mon, 31 Dec 2012 16:05:53 -0800 Subject: 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 --- src/compiler/compiler_ir.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/compiler/compiler_ir.h') 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 core_vmap_table; std::vector fp_vmap_table; std::vector native_gc_map; + std::vector extended_basic_blocks; bool verbose; bool has_loop; // Contains a loop. bool has_invoke; // Contains an invoke instruction. -- cgit v1.2.3-59-g8ed1b