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

Side by Side Diff: src/compiler/scheduler.cc

Issue 985023002: [turbofan] Add schedule to visualizer output (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove redundant cdoe Created 5 years, 9 months 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 unified diff | Download patch
OLDNEW
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 "src/compiler/scheduler.h" 5 #include "src/compiler/scheduler.h"
6 6
7 #include <iomanip> 7 #include <iomanip>
8 8
9 #include "src/bit-vector.h" 9 #include "src/bit-vector.h"
10 #include "src/compiler/common-operator.h" 10 #include "src/compiler/common-operator.h"
11 #include "src/compiler/control-equivalence.h" 11 #include "src/compiler/control-equivalence.h"
12 #include "src/compiler/graph.h" 12 #include "src/compiler/graph.h"
13 #include "src/compiler/node.h" 13 #include "src/compiler/node.h"
14 #include "src/compiler/node-marker.h" 14 #include "src/compiler/node-marker.h"
15 #include "src/compiler/node-properties.h" 15 #include "src/compiler/node-properties.h"
16 #include "src/compiler/visualizer.h"
16 #include "src/zone-containers.h" 17 #include "src/zone-containers.h"
17 18
18 namespace v8 { 19 namespace v8 {
19 namespace internal { 20 namespace internal {
20 namespace compiler { 21 namespace compiler {
21 22
22 static inline void Trace(const char* msg, ...) { 23 static inline void Trace(const char* msg, ...) {
23 if (FLAG_trace_turbo_scheduler) { 24 if (FLAG_trace_turbo_scheduler) {
24 va_list arguments; 25 va_list arguments;
25 va_start(arguments, msg); 26 va_start(arguments, msg);
(...skipping 1604 matching lines...) Expand 10 before | Expand all | Expand 10 after
1630 } 1631 }
1631 1632
1632 1633
1633 // ----------------------------------------------------------------------------- 1634 // -----------------------------------------------------------------------------
1634 1635
1635 1636
1636 void Scheduler::FuseFloatingControl(BasicBlock* block, Node* node) { 1637 void Scheduler::FuseFloatingControl(BasicBlock* block, Node* node) {
1637 Trace("--- FUSE FLOATING CONTROL ----------------------------------\n"); 1638 Trace("--- FUSE FLOATING CONTROL ----------------------------------\n");
1638 if (FLAG_trace_turbo_scheduler) { 1639 if (FLAG_trace_turbo_scheduler) {
1639 OFStream os(stdout); 1640 OFStream os(stdout);
1640 os << "Schedule before control flow fusion:\n" << *schedule_; 1641 os << "Schedule before control flow fusion:\n"
1642 << ScheduleAsJSON(*schedule_);
1641 } 1643 }
1642 1644
1643 // Iterate on phase 1: Build control-flow graph. 1645 // Iterate on phase 1: Build control-flow graph.
1644 control_flow_builder_->Run(block, node); 1646 control_flow_builder_->Run(block, node);
1645 1647
1646 // Iterate on phase 2: Compute special RPO and dominator tree. 1648 // Iterate on phase 2: Compute special RPO and dominator tree.
1647 special_rpo_->UpdateSpecialRPO(block, schedule_->block(node)); 1649 special_rpo_->UpdateSpecialRPO(block, schedule_->block(node));
1648 // TODO(mstarzinger): Currently "iterate on" means "re-run". Fix that. 1650 // TODO(mstarzinger): Currently "iterate on" means "re-run". Fix that.
1649 for (BasicBlock* b = block->rpo_next(); b != NULL; b = b->rpo_next()) { 1651 for (BasicBlock* b = block->rpo_next(); b != NULL; b = b->rpo_next()) {
1650 b->set_dominator_depth(-1); 1652 b->set_dominator_depth(-1);
(...skipping 21 matching lines...) Expand all
1672 ScheduleEarlyNodeVisitor schedule_early_visitor(zone_, this); 1674 ScheduleEarlyNodeVisitor schedule_early_visitor(zone_, this);
1673 schedule_early_visitor.Run(&propagation_roots); 1675 schedule_early_visitor.Run(&propagation_roots);
1674 1676
1675 // Move previously planned nodes. 1677 // Move previously planned nodes.
1676 // TODO(mstarzinger): Improve that by supporting bulk moves. 1678 // TODO(mstarzinger): Improve that by supporting bulk moves.
1677 scheduled_nodes_.resize(schedule_->BasicBlockCount(), NodeVector(zone_)); 1679 scheduled_nodes_.resize(schedule_->BasicBlockCount(), NodeVector(zone_));
1678 MovePlannedNodes(block, schedule_->block(node)); 1680 MovePlannedNodes(block, schedule_->block(node));
1679 1681
1680 if (FLAG_trace_turbo_scheduler) { 1682 if (FLAG_trace_turbo_scheduler) {
1681 OFStream os(stdout); 1683 OFStream os(stdout);
1682 os << "Schedule after control flow fusion:\n" << *schedule_; 1684 os << "Schedule after control flow fusion:\n" << ScheduleAsJSON(*schedule_);
1683 } 1685 }
1684 } 1686 }
1685 1687
1686 1688
1687 void Scheduler::MovePlannedNodes(BasicBlock* from, BasicBlock* to) { 1689 void Scheduler::MovePlannedNodes(BasicBlock* from, BasicBlock* to) {
1688 Trace("Move planned nodes from id:%d to id:%d\n", from->id().ToInt(), 1690 Trace("Move planned nodes from id:%d to id:%d\n", from->id().ToInt(),
1689 to->id().ToInt()); 1691 to->id().ToInt());
1690 NodeVector* nodes = &(scheduled_nodes_[from->id().ToSize()]); 1692 NodeVector* nodes = &(scheduled_nodes_[from->id().ToSize()]);
1691 for (Node* const node : *nodes) { 1693 for (Node* const node : *nodes) {
1692 schedule_->SetBlockForNode(to, node); 1694 schedule_->SetBlockForNode(to, node);
1693 scheduled_nodes_[to->id().ToSize()].push_back(node); 1695 scheduled_nodes_[to->id().ToSize()].push_back(node);
1694 } 1696 }
1695 nodes->clear(); 1697 nodes->clear();
1696 } 1698 }
1697 1699
1698 } // namespace compiler 1700 } // namespace compiler
1699 } // namespace internal 1701 } // namespace internal
1700 } // namespace v8 1702 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/schedule.cc ('k') | src/compiler/visualizer.h » ('j') | src/compiler/visualizer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698