OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <deque> | 5 #include <deque> |
6 #include <queue> | 6 #include <queue> |
7 | 7 |
8 #include "src/compiler/scheduler.h" | 8 #include "src/compiler/scheduler.h" |
9 | 9 |
10 #include "src/bit-vector.h" | 10 #include "src/bit-vector.h" |
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 order_(NULL), | 528 order_(NULL), |
529 loops_(zone), | 529 loops_(zone), |
530 beyond_end_(NULL), | 530 beyond_end_(NULL), |
531 backedges_(1, zone), | 531 backedges_(1, zone), |
532 stack_(zone), | 532 stack_(zone), |
533 previous_block_count_(0) {} | 533 previous_block_count_(0) {} |
534 | 534 |
535 // Computes the special reverse-post-order for the main control flow graph, | 535 // Computes the special reverse-post-order for the main control flow graph, |
536 // that is for the graph spanned between the schedule's start and end blocks. | 536 // that is for the graph spanned between the schedule's start and end blocks. |
537 void ComputeSpecialRPO() { | 537 void ComputeSpecialRPO() { |
| 538 DCHECK(schedule_->end()->SuccessorCount() == 0); |
538 DCHECK_EQ(NULL, order_); // Main order does not exist yet. | 539 DCHECK_EQ(NULL, order_); // Main order does not exist yet. |
539 // TODO(mstarzinger): Should use Schedule::end() after tests are fixed. | 540 ComputeAndInsertSpecialRPO(schedule_->start(), schedule_->end()); |
540 ComputeAndInsertSpecialRPO(schedule_->start(), NULL); | |
541 } | 541 } |
542 | 542 |
543 // Computes the special reverse-post-order for a partial control flow graph, | 543 // Computes the special reverse-post-order for a partial control flow graph, |
544 // that is for the graph spanned between the given {entry} and {end} blocks, | 544 // that is for the graph spanned between the given {entry} and {end} blocks, |
545 // then updates the existing ordering with this new information. | 545 // then updates the existing ordering with this new information. |
546 void UpdateSpecialRPO(BasicBlock* entry, BasicBlock* end) { | 546 void UpdateSpecialRPO(BasicBlock* entry, BasicBlock* end) { |
547 DCHECK_NE(NULL, order_); // Main order to be updated is present. | 547 DCHECK_NE(NULL, order_); // Main order to be updated is present. |
548 ComputeAndInsertSpecialRPO(entry, end); | 548 ComputeAndInsertSpecialRPO(entry, end); |
549 } | 549 } |
550 | 550 |
(...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1474 for (NodeVectorIter i = nodes->begin(); i != nodes->end(); ++i) { | 1474 for (NodeVectorIter i = nodes->begin(); i != nodes->end(); ++i) { |
1475 schedule_->SetBlockForNode(to, *i); | 1475 schedule_->SetBlockForNode(to, *i); |
1476 scheduled_nodes_[to->id().ToSize()].push_back(*i); | 1476 scheduled_nodes_[to->id().ToSize()].push_back(*i); |
1477 } | 1477 } |
1478 nodes->clear(); | 1478 nodes->clear(); |
1479 } | 1479 } |
1480 | 1480 |
1481 } // namespace compiler | 1481 } // namespace compiler |
1482 } // namespace internal | 1482 } // namespace internal |
1483 } // namespace v8 | 1483 } // namespace v8 |
OLD | NEW |