Revision: 23039
Author:   [email protected]
Date:     Mon Aug 11 13:07:32 2014 UTC
Log: Remove duplication in Scheduler and simplify interface. Make ComputeSchedule() and ComputeSpecialRPO() the only interface used by clients.

[email protected]
BUG=

Review URL: https://codereview.chromium.org/460633002
http://code.google.com/p/v8/source/detail?r=23039

Modified:
 /branches/bleeding_edge/src/compiler/pipeline.cc
 /branches/bleeding_edge/src/compiler/raw-machine-assembler.cc
 /branches/bleeding_edge/src/compiler/scheduler.cc
 /branches/bleeding_edge/src/compiler/scheduler.h
 /branches/bleeding_edge/src/compiler/structured-machine-assembler.cc
 /branches/bleeding_edge/test/cctest/compiler/test-instruction.cc
 /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc

=======================================
--- /branches/bleeding_edge/src/compiler/pipeline.cc Mon Aug 11 09:40:02 2014 UTC +++ /branches/bleeding_edge/src/compiler/pipeline.cc Mon Aug 11 13:07:32 2014 UTC
@@ -222,9 +222,8 @@


 Schedule* Pipeline::ComputeSchedule(Graph* graph) {
-  Scheduler scheduler(zone());
   PhaseStats schedule_stats(info(), PhaseStats::CODEGEN, "scheduling");
-  return scheduler.NewSchedule(graph);
+  return Scheduler::ComputeSchedule(graph);
 }


=======================================
--- /branches/bleeding_edge/src/compiler/raw-machine-assembler.cc Tue Aug 5 08:47:39 2014 UTC +++ /branches/bleeding_edge/src/compiler/raw-machine-assembler.cc Mon Aug 11 13:07:32 2014 UTC
@@ -34,8 +34,7 @@
 Schedule* RawMachineAssembler::Export() {
   // Compute the correct codegen order.
   DCHECK(schedule_->rpo_order()->empty());
-  Scheduler scheduler(zone(), graph(), schedule_);
-  scheduler.ComputeSpecialRPO();
+  Scheduler::ComputeSpecialRPO(schedule_);
   // Invalidate MachineAssembler.
   Schedule* schedule = schedule_;
   schedule_ = NULL;
=======================================
--- /branches/bleeding_edge/src/compiler/scheduler.cc Thu Aug 7 09:14:47 2014 UTC +++ /branches/bleeding_edge/src/compiler/scheduler.cc Mon Aug 11 13:07:32 2014 UTC
@@ -15,22 +15,6 @@
 namespace internal {
 namespace compiler {

-Scheduler::Scheduler(Zone* zone)
-    : zone_(zone),
-      graph_(NULL),
-      schedule_(NULL),
-      branches_(NodeVector::allocator_type(zone)),
-      calls_(NodeVector::allocator_type(zone)),
-      deopts_(NodeVector::allocator_type(zone)),
-      returns_(NodeVector::allocator_type(zone)),
-      loops_and_merges_(NodeVector::allocator_type(zone)),
-      node_block_placement_(BasicBlockVector::allocator_type(zone)),
-      unscheduled_uses_(IntVector::allocator_type(zone)),
-      scheduled_nodes_(NodeVectorVector::allocator_type(zone)),
-      schedule_root_nodes_(NodeVector::allocator_type(zone)),
-      schedule_early_rpo_index_(IntVector::allocator_type(zone)) {}
-
-
 Scheduler::Scheduler(Zone* zone, Graph* graph, Schedule* schedule)
     : zone_(zone),
       graph_(graph),
@@ -47,30 +31,26 @@
       schedule_early_rpo_index_(IntVector::allocator_type(zone)) {}


-Schedule* Scheduler::NewSchedule(Graph* graph) {
-  graph_ = graph;
-  schedule_ = new (zone_) Schedule(zone_);
-
-  schedule_->AddNode(schedule_->end(), graph_->end());
-
-  PrepareAuxiliaryNodeData();
-
-  // Create basic blocks for each block and merge node in the graph.
-  CreateBlocks();
+Schedule* Scheduler::ComputeSchedule(Graph* graph) {
+  Zone tmp_zone(graph->zone()->isolate());
+  Schedule* schedule = new (graph->zone()) Schedule(graph->zone());
+  Scheduler scheduler(&tmp_zone, graph, schedule);

-  // Wire the basic blocks together.
-  WireBlocks();
+  schedule->AddNode(schedule->end(), graph->end());

-  PrepareAuxiliaryBlockData();
+  scheduler.PrepareAuxiliaryNodeData();
+  scheduler.CreateBlocks();
+  scheduler.WireBlocks();
+  scheduler.PrepareAuxiliaryBlockData();

-  ComputeSpecialRPO();
-  GenerateImmediateDominatorTree();
+  Scheduler::ComputeSpecialRPO(schedule);
+  scheduler.GenerateImmediateDominatorTree();

-  PrepareUses();
-  ScheduleEarly();
-  ScheduleLate();
+  scheduler.PrepareUses();
+  scheduler.ScheduleEarly();
+  scheduler.ScheduleLate();

-  return schedule_;
+  return schedule;
 }


@@ -866,20 +846,22 @@
// 2. All loops are contiguous in the order (i.e. no intervening blocks that
 //    do not belong to the loop.)
 // Note a simple RPO traversal satisfies (1) but not (3).
-BasicBlockVector* Scheduler::ComputeSpecialRPO() {
+BasicBlockVector* Scheduler::ComputeSpecialRPO(Schedule* schedule) {
+  Zone tmp_zone(schedule->zone()->isolate());
+  Zone* zone = &tmp_zone;
   if (FLAG_trace_turbo_scheduler) {
     PrintF("------------- COMPUTING SPECIAL RPO ---------------\n");
   }
   // RPO should not have been computed for this schedule yet.
-  CHECK_EQ(kBlockUnvisited1, schedule_->entry()->rpo_number_);
-  CHECK_EQ(0, static_cast<int>(schedule_->rpo_order_.size()));
+  CHECK_EQ(kBlockUnvisited1, schedule->entry()->rpo_number_);
+  CHECK_EQ(0, static_cast<int>(schedule->rpo_order_.size()));

   // Perform an iterative RPO traversal using an explicit stack,
   // recording backedges that form cycles. O(|B|).
-  ZoneList<std::pair<BasicBlock*, int> > backedges(1, zone_);
+  ZoneList<std::pair<BasicBlock*, int> > backedges(1, zone);
   SpecialRPOStackFrame* stack =
-      zone_->NewArray<SpecialRPOStackFrame>(schedule_->BasicBlockCount());
-  BasicBlock* entry = schedule_->entry();
+      zone->NewArray<SpecialRPOStackFrame>(schedule->BasicBlockCount());
+  BasicBlock* entry = schedule->entry();
   BlockList* order = NULL;
   int stack_depth = Push(stack, 0, entry, kBlockUnvisited1);
   int num_loops = 0;
@@ -895,7 +877,7 @@
       if (succ->rpo_number_ == kBlockOnStack) {
         // The successor is on the stack, so this is a backedge (cycle).
         backedges.Add(
- std::pair<BasicBlock*, int>(frame->block, frame->index - 1), zone_); + std::pair<BasicBlock*, int>(frame->block, frame->index - 1), zone);
         if (succ->loop_end_ < 0) {
           // Assign a new loop number to the header if it doesn't have one.
           succ->loop_end_ = num_loops++;
@@ -907,7 +889,7 @@
       }
     } else {
       // Finished with all successors; pop the stack and add the block.
-      order = order->Add(zone_, frame->block);
+      order = order->Add(zone, frame->block);
       frame->block->rpo_number_ = kBlockVisited1;
       stack_depth--;
     }
@@ -918,8 +900,8 @@
   if (num_loops != 0) {
     // Otherwise, compute the loop information from the backedges in order
     // to perform a traversal that groups loop bodies together.
-    loops = ComputeLoopInfo(zone_, stack, num_loops,
-                            schedule_->BasicBlockCount(), &backedges);
+ loops = ComputeLoopInfo(zone, stack, num_loops, schedule->BasicBlockCount(),
+                            &backedges);

     // Initialize the "loop stack". Note the entry could be a loop header.
LoopInfo* loop = entry->IsLoopHeader() ? &loops[entry->loop_end_] : NULL;
@@ -944,7 +926,7 @@
           // Finish the loop body the first time the header is left on the
           // stack.
           DCHECK(loop != NULL && loop->header == block);
-          loop->start = order->Add(zone_, block);
+          loop->start = order->Add(zone, block);
           order = loop->end;
           block->rpo_number_ = kBlockVisited2;
// Pop the loop stack and continue visiting outgoing edges within the
@@ -973,7 +955,7 @@
         if (loop != NULL && !loop->members->Contains(succ->id())) {
           // The successor is not in the current loop or any nested loop.
           // Add it to the outgoing edges of this loop and visit it later.
-          loop->AddOutgoing(zone_, succ);
+          loop->AddOutgoing(zone, succ);
         } else {
           // Push the successor onto the stack.
           stack_depth = Push(stack, stack_depth, succ, kBlockUnvisited2);
@@ -1001,7 +983,7 @@
           order = info->start;
         } else {
           // Pop a single node off the stack and add it to the order.
-          order = order->Add(zone_, block);
+          order = order->Add(zone, block);
           block->rpo_number_ = kBlockVisited2;
         }
         stack_depth--;
@@ -1010,7 +992,7 @@
   }

   // Construct the final order from the list.
-  BasicBlockVector* final_order = &schedule_->rpo_order_;
+  BasicBlockVector* final_order = &schedule->rpo_order_;
   order->Serialize(final_order);

// Compute the correct loop header for every block and set the correct loop
=======================================
--- /branches/bleeding_edge/src/compiler/scheduler.h Mon Aug 4 11:34:54 2014 UTC +++ /branches/bleeding_edge/src/compiler/scheduler.h Mon Aug 11 13:07:32 2014 UTC
@@ -18,14 +18,15 @@
 namespace internal {
 namespace compiler {

+// Computes a schedule from a graph, placing nodes into basic blocks and
+// ordering the basic blocks in the special RPO order.
 class Scheduler {
  public:
-  explicit Scheduler(Zone* zone);
-  Scheduler(Zone* zone, Graph* graph, Schedule* schedule);
+  // Create a new schedule and place all computations from the graph in it.
+  static Schedule* ComputeSchedule(Graph* graph);

-  Schedule* NewSchedule(Graph* graph);
-
-  BasicBlockVector* ComputeSpecialRPO();
+  // Compute the RPO of blocks in an existing schedule.
+  static BasicBlockVector* ComputeSpecialRPO(Schedule* schedule);

  private:
   Zone* zone_;
@@ -42,6 +43,8 @@
   NodeVector schedule_root_nodes_;
   IntVector schedule_early_rpo_index_;

+  Scheduler(Zone* zone, Graph* graph, Schedule* schedule);
+
   int GetRPONumber(BasicBlock* block) {
     DCHECK(block->rpo_number_ >= 0 &&
block->rpo_number_ < static_cast<int>(schedule_->rpo_order_.size()));
=======================================
--- /branches/bleeding_edge/src/compiler/structured-machine-assembler.cc Tue Aug 5 08:47:39 2014 UTC +++ /branches/bleeding_edge/src/compiler/structured-machine-assembler.cc Mon Aug 11 13:07:32 2014 UTC
@@ -41,8 +41,7 @@
 Schedule* StructuredMachineAssembler::Export() {
   // Compute the correct codegen order.
   DCHECK(schedule_->rpo_order()->empty());
-  Scheduler scheduler(zone(), graph(), schedule_);
-  scheduler.ComputeSpecialRPO();
+  Scheduler::ComputeSpecialRPO(schedule_);
   // Invalidate MachineAssembler.
   Schedule* schedule = schedule_;
   schedule_ = NULL;
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-instruction.cc Mon Aug 4 11:34:54 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-instruction.cc Mon Aug 11 13:07:32 2014 UTC
@@ -51,8 +51,7 @@
   void allocCode() {
     if (schedule.rpo_order()->size() == 0) {
       // Compute the RPO order.
-      Scheduler scheduler(zone(), &graph, &schedule);
-      scheduler.ComputeSpecialRPO();
+      Scheduler::ComputeSpecialRPO(&schedule);
       DCHECK(schedule.rpo_order()->size() > 0);
     }
     code = new TestInstrSeq(&linkage, &graph, &schedule);
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Mon Aug 11 12:26:17 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Mon Aug 11 13:07:32 2014 UTC
@@ -68,9 +68,8 @@
 TEST(RPODegenerate1) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 1, false);
   CHECK_EQ(schedule.entry(), order->at(0));
 }
@@ -79,10 +78,9 @@
 TEST(RPODegenerate2) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   schedule.AddGoto(schedule.entry(), schedule.exit());
-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 2, false);
   CHECK_EQ(schedule.entry(), order->at(0));
   CHECK_EQ(schedule.exit(), order->at(1));
@@ -94,7 +92,6 @@

   for (int i = 0; i < 10; i++) {
     Schedule schedule(scope.main_zone());
-    Scheduler scheduler(scope.main_zone(), NULL, &schedule);

     BasicBlock* last = schedule.entry();
     for (int j = 0; j < i; j++) {
@@ -102,7 +99,7 @@
       schedule.AddGoto(last, block);
       last = block;
     }
-    BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+    BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
     CheckRPONumbers(order, 1 + i, false);

     Schedule::BasicBlocks blocks(schedule.all_blocks());
@@ -120,9 +117,8 @@
 TEST(RPOSelfLoop) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);
   schedule.AddSuccessor(schedule.entry(), schedule.entry());
-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 1, true);
   BasicBlock* loop[] = {schedule.entry()};
   CheckLoopContains(loop, 1);
@@ -132,10 +128,9 @@
 TEST(RPOEntryLoop) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);
   schedule.AddSuccessor(schedule.entry(), schedule.exit());
   schedule.AddSuccessor(schedule.exit(), schedule.entry());
-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 2, true);
   BasicBlock* loop[] = {schedule.entry(), schedule.exit()};
   CheckLoopContains(loop, 2);
@@ -145,10 +140,9 @@
 TEST(RPOEndLoop) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);
   SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 2));
   schedule.AddSuccessor(schedule.entry(), loop1->header());
-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 3, true);
   CheckLoopContains(loop1->nodes, loop1->count);
 }
@@ -157,11 +151,10 @@
 TEST(RPOEndLoopNested) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);
   SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 2));
   schedule.AddSuccessor(schedule.entry(), loop1->header());
   schedule.AddSuccessor(loop1->last(), schedule.entry());
-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 3, true);
   CheckLoopContains(loop1->nodes, loop1->count);
 }
@@ -170,7 +163,6 @@
 TEST(RPODiamond) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   BasicBlock* A = schedule.entry();
   BasicBlock* B = schedule.NewBasicBlock();
@@ -182,7 +174,7 @@
   schedule.AddSuccessor(B, D);
   schedule.AddSuccessor(C, D);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 4, false);

   CHECK_EQ(0, A->rpo_number_);
@@ -195,7 +187,6 @@
 TEST(RPOLoop1) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   BasicBlock* A = schedule.entry();
   BasicBlock* B = schedule.NewBasicBlock();
@@ -207,7 +198,7 @@
   schedule.AddSuccessor(C, B);
   schedule.AddSuccessor(C, D);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 4, true);
   BasicBlock* loop[] = {B, C};
   CheckLoopContains(loop, 2);
@@ -217,7 +208,6 @@
 TEST(RPOLoop2) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   BasicBlock* A = schedule.entry();
   BasicBlock* B = schedule.NewBasicBlock();
@@ -229,7 +219,7 @@
   schedule.AddSuccessor(C, B);
   schedule.AddSuccessor(B, D);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 4, true);
   BasicBlock* loop[] = {B, C};
   CheckLoopContains(loop, 2);
@@ -241,7 +231,6 @@

   for (int i = 0; i < 11; i++) {
     Schedule schedule(scope.main_zone());
-    Scheduler scheduler(scope.main_zone(), NULL, &schedule);
     BasicBlock* A = schedule.entry();
     BasicBlock* B = schedule.NewBasicBlock();
     BasicBlock* C = schedule.NewBasicBlock();
@@ -272,7 +261,7 @@
     if (i == 9) schedule.AddSuccessor(E, G);
     if (i == 10) schedule.AddSuccessor(F, G);

-    BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+    BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
     CheckRPONumbers(order, 7, true);
     BasicBlock* loop[] = {B, C, D, E, F};
     CheckLoopContains(loop, 5);
@@ -283,7 +272,6 @@
 TEST(RPOLoopNest1) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   BasicBlock* A = schedule.entry();
   BasicBlock* B = schedule.NewBasicBlock();
@@ -300,7 +288,7 @@
   schedule.AddSuccessor(E, B);
   schedule.AddSuccessor(E, F);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 6, true);
   BasicBlock* loop1[] = {B, C, D, E};
   CheckLoopContains(loop1, 4);
@@ -313,7 +301,6 @@
 TEST(RPOLoopNest2) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   BasicBlock* A = schedule.entry();
   BasicBlock* B = schedule.NewBasicBlock();
@@ -336,7 +323,7 @@
   schedule.AddSuccessor(F, C);
   schedule.AddSuccessor(G, B);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 8, true);
   BasicBlock* loop1[] = {B, C, D, E, F, G};
   CheckLoopContains(loop1, 6);
@@ -352,7 +339,6 @@
 TEST(RPOLoopFollow1) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 1));
   SmartPointer<TestLoop> loop2(CreateLoop(&schedule, 1));
@@ -364,7 +350,7 @@
   schedule.AddSuccessor(loop1->header(), loop2->header());
   schedule.AddSuccessor(loop2->last(), E);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);

   CheckLoopContains(loop1->nodes, loop1->count);

@@ -377,7 +363,6 @@
 TEST(RPOLoopFollow2) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 1));
   SmartPointer<TestLoop> loop2(CreateLoop(&schedule, 1));
@@ -391,7 +376,7 @@
   schedule.AddSuccessor(S, loop2->header());
   schedule.AddSuccessor(loop2->last(), E);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);

   CheckLoopContains(loop1->nodes, loop1->count);

@@ -407,7 +392,6 @@
   for (int size = 1; size < 5; size++) {
     for (int exit = 0; exit < size; exit++) {
       Schedule schedule(scope.main_zone());
-      Scheduler scheduler(scope.main_zone(), NULL, &schedule);
       SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
       SmartPointer<TestLoop> loop2(CreateLoop(&schedule, size));
       BasicBlock* A = schedule.entry();
@@ -416,7 +400,7 @@
       schedule.AddSuccessor(A, loop1->header());
       schedule.AddSuccessor(loop1->nodes[exit], loop2->header());
       schedule.AddSuccessor(loop2->nodes[exit], E);
-      BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+      BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
       CheckLoopContains(loop1->nodes, loop1->count);

CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size()));
@@ -430,7 +414,6 @@
 TEST(RPONestedLoopFollow1) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 1));
   SmartPointer<TestLoop> loop2(CreateLoop(&schedule, 1));
@@ -447,7 +430,7 @@
   schedule.AddSuccessor(C, E);
   schedule.AddSuccessor(C, B);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);

   CheckLoopContains(loop1->nodes, loop1->count);

@@ -467,7 +450,6 @@
   for (int i = 0; i < size; i++) {
     for (int j = 0; j < size; j++) {
       Schedule schedule(scope.main_zone());
-      Scheduler scheduler(scope.main_zone(), NULL, &schedule);
       BasicBlock* A = schedule.entry();
       BasicBlock* E = schedule.exit();

@@ -478,7 +460,7 @@
       schedule.AddSuccessor(loop1->nodes[i], loop1->header());
       schedule.AddSuccessor(loop1->nodes[j], E);

-      BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+      BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
       CheckRPONumbers(order, schedule.BasicBlockCount(), true);
       CheckLoopContains(loop1->nodes, loop1->count);
     }
@@ -493,7 +475,6 @@
   for (int i = 0; i < size; i++) {
     for (int j = 0; j < size; j++) {
       Schedule schedule(scope.main_zone());
-      Scheduler scheduler(scope.main_zone(), NULL, &schedule);
       BasicBlock* A = schedule.entry();
       BasicBlock* D = schedule.NewBasicBlock();
       BasicBlock* E = schedule.exit();
@@ -506,7 +487,7 @@
       schedule.AddSuccessor(loop1->nodes[j], D);
       schedule.AddSuccessor(D, E);

-      BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+      BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
       CheckRPONumbers(order, schedule.BasicBlockCount(), true);
       CheckLoopContains(loop1->nodes, loop1->count);
     }
@@ -520,7 +501,6 @@
   int size = 8;
   for (int i = 0; i < size; i++) {
     Schedule schedule(scope.main_zone());
-    Scheduler scheduler(scope.main_zone(), NULL, &schedule);
     BasicBlock* A = schedule.entry();
     BasicBlock* E = schedule.exit();

@@ -534,7 +514,7 @@
       schedule.AddSuccessor(O, E);
     }

-    BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+    BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
     CheckRPONumbers(order, schedule.BasicBlockCount(), true);
     CheckLoopContains(loop1->nodes, loop1->count);
   }
@@ -547,7 +527,6 @@
   int size = 8;
   for (int i = 0; i < size; i++) {
     Schedule schedule(scope.main_zone());
-    Scheduler scheduler(scope.main_zone(), NULL, &schedule);
     BasicBlock* A = schedule.entry();
     BasicBlock* E = schedule.exit();
     SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
@@ -561,7 +540,7 @@
       schedule.AddSuccessor(loopN[j]->last(), E);
     }

-    BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+    BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
     CheckRPONumbers(order, schedule.BasicBlockCount(), true);
     CheckLoopContains(loop1->nodes, loop1->count);

@@ -577,7 +556,6 @@
 TEST(RPOLoopMultibackedge) {
   HandleAndZoneScope scope;
   Schedule schedule(scope.main_zone());
-  Scheduler scheduler(scope.main_zone(), NULL, &schedule);

   BasicBlock* A = schedule.entry();
   BasicBlock* B = schedule.NewBasicBlock();
@@ -593,7 +571,7 @@
   schedule.AddSuccessor(D, B);
   schedule.AddSuccessor(E, B);

-  BasicBlockVector* order = scheduler.ComputeSpecialRPO();
+  BasicBlockVector* order = Scheduler::ComputeSpecialRPO(&schedule);
   CheckRPONumbers(order, 5, true);

   BasicBlock* loop1[] = {B, C, D, E};
@@ -608,8 +586,7 @@
   graph.SetStart(graph.NewNode(builder.Start(0)));
   graph.SetEnd(graph.NewNode(builder.End(), graph.start()));

-  Scheduler scheduler(scope.main_zone());
-  USE(scheduler.NewSchedule(&graph));
+  USE(Scheduler::ComputeSchedule(&graph));
 }


@@ -624,8 +601,7 @@

   graph.SetEnd(graph.NewNode(builder.End(), ret));

-  Scheduler scheduler(scope.main_zone());
-  USE(scheduler.NewSchedule(&graph));
+  USE(Scheduler::ComputeSchedule(&graph));
 }


@@ -684,8 +660,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

@@ -838,8 +813,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

@@ -958,8 +932,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

@@ -1213,8 +1186,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

@@ -1550,8 +1522,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

@@ -1682,8 +1653,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

@@ -1803,8 +1773,7 @@

   PrintGraph(&graph);

-  Scheduler scheduler(scope.main_zone());
-  Schedule* schedule = scheduler.NewSchedule(&graph);
+  Schedule* schedule = Scheduler::ComputeSchedule(&graph);

   PrintSchedule(schedule);

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to