Plug new optimizing compiler in compilation pipeline.
Also rename accessors to ART's conventions.
Change-Id: I344807055b98aa4b27215704ec362191464acecc
diff --git a/compiler/optimizing/code_generator_x86.h b/compiler/optimizing/code_generator_x86.h
index dd146b8..ad2a061 100644
--- a/compiler/optimizing/code_generator_x86.h
+++ b/compiler/optimizing/code_generator_x86.h
@@ -19,6 +19,7 @@
#include "code_generator.h"
#include "nodes.h"
+#include "utils/x86/assembler_x86.h"
namespace art {
@@ -42,10 +43,12 @@
DISALLOW_COPY_AND_ASSIGN(LocationsBuilderX86);
};
-class CodeGeneratorX86 : public CodeGenerator {
+class InstructionCodeGeneratorX86 : public HGraphVisitor {
public:
- CodeGeneratorX86(Assembler* assembler, HGraph* graph)
- : CodeGenerator(assembler, graph), location_builder_(graph) { }
+ explicit InstructionCodeGeneratorX86(HGraph* graph, CodeGenerator* codegen)
+ : HGraphVisitor(graph),
+ assembler_(codegen->GetAssembler()),
+ codegen_(codegen) { }
#define DECLARE_VISIT_INSTRUCTION(name) \
virtual void Visit##name(H##name* instr);
@@ -54,6 +57,23 @@
#undef DECLARE_VISIT_INSTRUCTION
+ Assembler* GetAssembler() const { return assembler_; }
+
+ private:
+ Assembler* const assembler_;
+ CodeGenerator* const codegen_;
+
+ DISALLOW_COPY_AND_ASSIGN(InstructionCodeGeneratorX86);
+};
+
+class CodeGeneratorX86 : public CodeGenerator {
+ public:
+ explicit CodeGeneratorX86(HGraph* graph)
+ : CodeGenerator(graph),
+ location_builder_(graph),
+ instruction_visitor_(graph, this) { }
+ virtual ~CodeGeneratorX86() { }
+
protected:
virtual void GenerateFrameEntry() OVERRIDE;
virtual void GenerateFrameExit() OVERRIDE;
@@ -65,8 +85,18 @@
return &location_builder_;
}
+ virtual HGraphVisitor* GetInstructionVisitor() OVERRIDE {
+ return &instruction_visitor_;
+ }
+
+ virtual X86Assembler* GetAssembler() OVERRIDE {
+ return &assembler_;
+ }
+
private:
LocationsBuilderX86 location_builder_;
+ InstructionCodeGeneratorX86 instruction_visitor_;
+ X86Assembler assembler_;
DISALLOW_COPY_AND_ASSIGN(CodeGeneratorX86);
};