[turbofan] remove graph from InstructionSequence
authordcarney@chromium.org <dcarney@chromium.org>
Mon, 13 Oct 2014 08:09:27 +0000 (08:09 +0000)
committerdcarney@chromium.org <dcarney@chromium.org>
Mon, 13 Oct 2014 08:09:27 +0000 (08:09 +0000)
R=bmeurer@chromium.org

BUG=

Review URL: https://codereview.chromium.org/652643002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/compiler/code-generator.h
src/compiler/instruction-selector-impl.h
src/compiler/instruction-selector.cc
src/compiler/instruction-selector.h
src/compiler/instruction.cc
src/compiler/instruction.h
test/cctest/compiler/test-instruction.cc

index 6bf96ac..e740dd3 100644 (file)
@@ -27,7 +27,6 @@ class CodeGenerator FINAL : public GapResolver::Assembler {
 
   InstructionSequence* code() const { return code_; }
   Frame* frame() const { return code()->frame(); }
-  Graph* graph() const { return code()->graph(); }
   Isolate* isolate() const { return zone()->isolate(); }
   Linkage* linkage() const { return code()->linkage(); }
   Schedule* schedule() const { return code()->schedule(); }
index 600ac39..1c8c175 100644 (file)
@@ -134,7 +134,6 @@ class OperandGenerator {
   }
 
  protected:
-  Graph* graph() const { return selector()->graph(); }
   InstructionSelector* selector() const { return selector_; }
   InstructionSequence* sequence() const { return selector()->sequence(); }
   Isolate* isolate() const { return zone()->isolate(); }
index 791aa29..72a7ed2 100644 (file)
@@ -22,8 +22,8 @@ InstructionSelector::InstructionSelector(InstructionSequence* sequence,
       features_(features),
       current_block_(NULL),
       instructions_(zone()),
-      defined_(graph()->NodeCount(), false, zone()),
-      used_(graph()->NodeCount(), false, zone()) {}
+      defined_(sequence->node_count(), false, zone()),
+      used_(sequence->node_count(), false, zone()) {}
 
 
 void InstructionSelector::SelectInstructions() {
index 9178262..5d64ec8 100644 (file)
@@ -193,7 +193,6 @@ class InstructionSelector FINAL {
 
   // ===========================================================================
 
-  Graph* graph() const { return sequence()->graph(); }
   Linkage* linkage() const { return sequence()->linkage(); }
   Schedule* schedule() const { return sequence()->schedule(); }
   InstructionSequence* sequence() const { return sequence_; }
index 635a6bd..4a1cd1a 100644 (file)
@@ -318,8 +318,9 @@ std::ostream& operator<<(std::ostream& os, const Constant& constant) {
 
 InstructionSequence::InstructionSequence(Linkage* linkage, Graph* graph,
                                          Schedule* schedule)
-    : graph_(graph),
-      node_map_(zone()->NewArray<int>(graph->NodeCount())),
+    : zone_(schedule->zone()),
+      node_count_(graph->NodeCount()),
+      node_map_(zone()->NewArray<int>(node_count_)),
       linkage_(linkage),
       schedule_(schedule),
       constants_(ConstantMap::key_compare(),
@@ -331,7 +332,7 @@ InstructionSequence::InstructionSequence(Linkage* linkage, Graph* graph,
       doubles_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())),
       references_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())),
       deoptimization_entries_(zone()) {
-  for (int i = 0; i < graph->NodeCount(); ++i) {
+  for (int i = 0; i < node_count_; ++i) {
     node_map_[i] = -1;
   }
 }
index b769a1d..2bb2b72 100644 (file)
@@ -767,7 +767,7 @@ class InstructionSequence FINAL {
   int NextVirtualRegister() { return next_virtual_register_++; }
   int VirtualRegisterCount() const { return next_virtual_register_; }
 
-  int ValueCount() const { return graph_->NodeCount(); }
+  int node_count() const { return node_count_; }
 
   int BasicBlockCount() const {
     return static_cast<int>(schedule_->rpo_order()->size());
@@ -815,12 +815,11 @@ class InstructionSequence FINAL {
   }
 
   Frame* frame() { return &frame_; }
-  Graph* graph() const { return graph_; }
   Isolate* isolate() const { return zone()->isolate(); }
   Linkage* linkage() const { return linkage_; }
   Schedule* schedule() const { return schedule_; }
   const PointerMapDeque* pointer_maps() const { return &pointer_maps_; }
-  Zone* zone() const { return graph_->zone(); }
+  Zone* zone() const { return zone_; }
 
   // Used by the code generator while adding instructions.
   int AddInstruction(Instruction* instr, BasicBlock* block);
@@ -874,7 +873,8 @@ class InstructionSequence FINAL {
 
   typedef std::set<int, std::less<int>, ZoneIntAllocator> VirtualRegisterSet;
 
-  Graph* graph_;
+  Zone* zone_;
+  int node_count_;
   int* node_map_;
   Linkage* linkage_;
   Schedule* schedule_;
index a9feaac..073d584 100644 (file)
@@ -112,7 +112,7 @@ TEST(InstructionBasic) {
 
   R.allocCode();
 
-  CHECK_EQ(R.graph.NodeCount(), R.code->ValueCount());
+  CHECK_EQ(R.graph.NodeCount(), R.code->node_count());
 
   BasicBlockVector* blocks = R.schedule.rpo_order();
   CHECK_EQ(static_cast<int>(blocks->size()), R.code->BasicBlockCount());