Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Unified Diff: src/compiler/scheduler.cc

Issue 708763002: Remove workaround for successors on end block from scheduler. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | test/cctest/compiler/test-scheduler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/scheduler.cc
diff --git a/src/compiler/scheduler.cc b/src/compiler/scheduler.cc
index 36ed08823d5d6fa9ae9a7082b4fc0f900441a225..ec3296a19aae7f85a8cf8ac5cff925d171d82e14 100644
--- a/src/compiler/scheduler.cc
+++ b/src/compiler/scheduler.cc
@@ -527,7 +527,6 @@ class SpecialRPONumberer : public ZoneObject {
schedule_(schedule),
order_(NULL),
loops_(zone),
- beyond_end_(NULL),
backedges_(1, zone),
stack_(zone),
previous_block_count_(0) {}
@@ -535,9 +534,9 @@ class SpecialRPONumberer : public ZoneObject {
// Computes the special reverse-post-order for the main control flow graph,
// that is for the graph spanned between the schedule's start and end blocks.
void ComputeSpecialRPO() {
+ DCHECK(schedule_->end()->SuccessorCount() == 0);
DCHECK_EQ(NULL, order_); // Main order does not exist yet.
- // TODO(mstarzinger): Should use Schedule::end() after tests are fixed.
- ComputeAndInsertSpecialRPO(schedule_->start(), NULL);
+ ComputeAndInsertSpecialRPO(schedule_->start(), schedule_->end());
}
// Computes the special reverse-post-order for a partial control flow graph,
@@ -570,7 +569,9 @@ class SpecialRPONumberer : public ZoneObject {
l->block->set_rpo_number(number++);
schedule_->rpo_order()->push_back(l->block);
}
- BeyondEndSentinel()->set_rpo_number(number);
+ if (schedule_->end()->rpo_number() < 0) {
+ schedule_->end()->set_rpo_number(number);
+ }
}
// Print and verify the special reverse-post-order.
@@ -655,17 +656,6 @@ class SpecialRPONumberer : public ZoneObject {
return block->ao_number() >= 0;
}
- // TODO(mstarzinger): We only need this special sentinel because some tests
- // use the schedule's end block in actual control flow (e.g. with end having
- // successors). Once this has been cleaned up we can use the end block here.
- BasicBlock* BeyondEndSentinel() {
- if (beyond_end_ == NULL) {
- BasicBlock::Id id = BasicBlock::Id::FromInt(-1);
- beyond_end_ = new (schedule_->zone()) BasicBlock(schedule_->zone(), id);
- }
- return beyond_end_;
- }
-
// Compute special RPO for the control flow graph between {entry} and {end},
// mutating any existing order so that the result is still valid.
void ComputeAndInsertSpecialRPO(BasicBlock* entry, BasicBlock* end) {
@@ -848,7 +838,7 @@ class SpecialRPONumberer : public ZoneObject {
++loop_depth;
current_loop = &loops_[GetLoopNumber(current)];
BlockList* end = current_loop->end;
- current->set_loop_end(end == NULL ? BeyondEndSentinel() : end->block);
+ current->set_loop_end(end == NULL ? schedule_->end() : end->block);
current_header = current_loop->header;
Trace("B%d is a loop header, increment loop depth to %d\n",
current->id().ToInt(), loop_depth);
@@ -1018,7 +1008,6 @@ class SpecialRPONumberer : public ZoneObject {
Schedule* schedule_;
BlockList* order_;
ZoneVector<LoopInfo> loops_;
- BasicBlock* beyond_end_;
ZoneList<Backedge> backedges_;
ZoneVector<SpecialRPOStackFrame> stack_;
size_t previous_block_count_;
« no previous file with comments | « no previous file | test/cctest/compiler/test-scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698