summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_compiler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r--compiler/optimizing/optimizing_compiler.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 286f48a183..dfbb488c7d 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -24,6 +24,7 @@
#include "driver/dex_compilation_unit.h"
#include "graph_visualizer.h"
#include "nodes.h"
+#include "register_allocator.h"
#include "ssa_liveness_analysis.h"
#include "utils/arena_allocator.h"
@@ -96,8 +97,6 @@ CompiledMethod* OptimizingCompiler::TryCompile(const DexFile::CodeItem* code_ite
}
return nullptr;
}
- HGraphVisualizer visualizer(visualizer_output_.get(), graph, kStringFilter, dex_compilation_unit);
- visualizer.DumpGraph("builder");
InstructionSet instruction_set = GetCompilerDriver()->GetInstructionSet();
// The optimizing compiler currently does not have a Thumb2 assembler.
@@ -112,6 +111,10 @@ CompiledMethod* OptimizingCompiler::TryCompile(const DexFile::CodeItem* code_ite
return nullptr;
}
+ HGraphVisualizer visualizer(
+ visualizer_output_.get(), graph, kStringFilter, *codegen, dex_compilation_unit);
+ visualizer.DumpGraph("builder");
+
CodeVectorAllocator allocator;
codegen->Compile(&allocator);
@@ -128,9 +131,13 @@ CompiledMethod* OptimizingCompiler::TryCompile(const DexFile::CodeItem* code_ite
visualizer.DumpGraph("ssa");
graph->FindNaturalLoops();
- SsaLivenessAnalysis(*graph).Analyze();
+ SsaLivenessAnalysis liveness(*graph);
+ liveness.Analyze();
visualizer.DumpGraph("liveness");
+ RegisterAllocator(graph->GetArena(), *codegen).AllocateRegisters(liveness);
+ visualizer.DumpGraph("register");
+
return new CompiledMethod(GetCompilerDriver(),
instruction_set,
allocator.GetMemory(),