diff options
| author | 2012-02-02 16:46:25 -0800 | |
|---|---|---|
| committer | 2012-02-02 16:46:25 -0800 | |
| commit | 1ff1b98327b8056e20cd959963d759697a2b2f11 (patch) | |
| tree | b5f93a7ca614ab8f34551cf179f9bdb41bd4adf4 /src/compiler/CompilerIR.h | |
| parent | 3c92a1833dcf1bda1b6180e053ffa4334866d1f9 (diff) | |
| parent | 5abfa3ea35781464df8fae60aaf03f48a295e965 (diff) | |
Merge "Compiler tuning" into dalvik-dev
Diffstat (limited to 'src/compiler/CompilerIR.h')
| -rw-r--r-- | src/compiler/CompilerIR.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/compiler/CompilerIR.h b/src/compiler/CompilerIR.h index 1eb6c6472e..b17855bb3f 100644 --- a/src/compiler/CompilerIR.h +++ b/src/compiler/CompilerIR.h @@ -66,12 +66,10 @@ typedef struct RegLocation { * benefit in optimizing these methods, and the cost can be very high. * We attempt to identify these cases, and avoid performing most dataflow * analysis. Two thresholds are used - one for known initializers and one - * for everything else. Note: we require dataflow analysis for floating point - * type inference. If any non-move fp operations exist in a method, dataflow - * is performed regardless of block count. + * for everything else. */ -#define MANY_BLOCKS_INITIALIZER 200 /* Threshold for switching dataflow off */ -#define MANY_BLOCKS 3000 /* Non-initializer threshold */ +#define MANY_BLOCKS_INITIALIZER 1000 /* Threshold for switching dataflow off */ +#define MANY_BLOCKS 4000 /* Non-initializer threshold */ typedef enum BBType { kEntryBlock, @@ -175,7 +173,7 @@ typedef struct BasicBlock { struct BasicBlock* taken; struct BasicBlock* iDom; // Immediate dominator struct BasicBlockDataFlow* dataFlowInfo; - ArenaBitVector* predecessors; + GrowableList* predecessors; ArenaBitVector* dominators; ArenaBitVector* iDominated; // Set nodes being immediately dominated ArenaBitVector* domFrontier; // Dominance frontier @@ -328,13 +326,13 @@ typedef struct CompilationUnit { GrowableList fillArrayData; const u2* insns; u4 insnsSize; - bool usesFP; // Method contains at least 1 non-move FP operation bool disableDataflow; // Skip dataflow analysis if possible std::map<unsigned int, BasicBlock*> blockMap; // findBlock lookup cache std::map<unsigned int, LIR*> boundaryMap; // boundary lookup cache + int defCount; // Used to estimate number of SSA names } CompilationUnit; -BasicBlock* oatNewBB(BBType blockType, int blockId); +BasicBlock* oatNewBB(CompilationUnit* cUnit, BBType blockType, int blockId); void oatAppendMIR(BasicBlock* bb, MIR* mir); |