diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-11-18 16:53:35 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2014-11-19 14:33:12 +0000 |
commit | 5e6916cea259897baaca019c5c7a5d05746306ed (patch) | |
tree | 0b4c73776c68e9ccbf4b49dbff5cdc9b3d7150f9 /compiler/optimizing/optimizing_compiler.cc | |
parent | bf75c5cf32a47eecadcc5e4a324237c1f1d09cde (diff) | |
download | art-5e6916cea259897baaca019c5c7a5d05746306ed.tar.gz art-5e6916cea259897baaca019c5c7a5d05746306ed.tar.bz2 art-5e6916cea259897baaca019c5c7a5d05746306ed.zip |
Use HOptimization abstraction for running optimizations.
Move existing optimizations to it.
Change-Id: I3b43f9997faf4ed8875162e3a3abdf99375478dd
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r-- | compiler/optimizing/optimizing_compiler.cc | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index 0de0907520..83a1e11a98 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -189,6 +189,25 @@ static bool CanOptimize(const DexFile::CodeItem& code_item) { return code_item.tries_size_ == 0; } +static void RunOptimizations(HGraph* graph, const HGraphVisualizer& visualizer) { + HDeadCodeElimination opt1(graph); + HConstantFolding opt2(graph); + SsaRedundantPhiElimination opt3(graph); + SsaDeadPhiElimination opt4(graph); + InstructionSimplifier opt5(graph); + GlobalValueNumberer opt6(graph->GetArena(), graph); + InstructionSimplifier opt7(graph); + + HOptimization* optimizations[] = { &opt1, &opt2, &opt3, &opt4, &opt5, &opt6, &opt7 }; + + for (size_t i = 0; i < arraysize(optimizations); ++i) { + HOptimization* optimization = optimizations[i]; + optimization->Run(); + optimization->Check(); + visualizer.DumpGraph(optimization->GetPassName()); + } +} + CompiledMethod* OptimizingCompiler::Compile(const DexFile::CodeItem* code_item, uint32_t access_flags, InvokeType invoke_type, @@ -256,17 +275,9 @@ CompiledMethod* OptimizingCompiler::Compile(const DexFile::CodeItem* code_item, visualizer.DumpGraph("ssa"); graph->FindNaturalLoops(); - HDeadCodeElimination(graph, visualizer).Execute(); - HConstantFolding(graph, visualizer).Execute(); + RunOptimizations(graph, visualizer); - SsaRedundantPhiElimination(graph).Run(); - SsaDeadPhiElimination(graph).Run(); - InstructionSimplifier(graph).Run(); - GlobalValueNumberer(graph->GetArena(), graph).Run(); - visualizer.DumpGraph(kGVNPassName); - InstructionSimplifier(graph).Run(); PrepareForRegisterAllocation(graph).Run(); - SsaLivenessAnalysis liveness(*graph, codegen); liveness.Analyze(); visualizer.DumpGraph(kLivenessPassName); |