Add a linear scan register allocator to the optimizing compiler.
This is a "by-the-book" implementation. It currently only deals
with allocating registers, with no hint optimizations.
The changes remaining to make it functional are:
- Allocate spill slots.
- Resolution and placements of Move instructions.
- Connect it to the code generator.
Change-Id: Ie0b2f6ba1b98da85425be721ce4afecd6b4012a4
diff --git a/compiler/optimizing/graph_visualizer.h b/compiler/optimizing/graph_visualizer.h
index 2b88e65..2638cf5 100644
--- a/compiler/optimizing/graph_visualizer.h
+++ b/compiler/optimizing/graph_visualizer.h
@@ -21,6 +21,7 @@
namespace art {
+class CodeGenerator;
class DexCompilationUnit;
class HGraph;
@@ -39,13 +40,17 @@
HGraphVisualizer(std::ostream* output,
HGraph* graph,
const char* string_filter,
+ const CodeGenerator& codegen,
const DexCompilationUnit& cu);
/**
* Version of `HGraphVisualizer` for unit testing, that is when a
* `DexCompilationUnit` is not available.
*/
- HGraphVisualizer(std::ostream* output, HGraph* graph, const char* name);
+ HGraphVisualizer(std::ostream* output,
+ HGraph* graph,
+ const CodeGenerator& codegen,
+ const char* name);
/**
* If this visualizer is enabled, emit the compilation information
@@ -56,6 +61,7 @@
private:
std::ostream* const output_;
HGraph* const graph_;
+ const CodeGenerator& codegen_;
// Is true when `output_` is not null, and the compiled method's name
// contains the string_filter given in the constructor.