| Index: src/compiler/scheduler.h
|
| diff --git a/src/compiler/scheduler.h b/src/compiler/scheduler.h
|
| index a5207128beb62d77e9049f3e38941a82ec521016..88f7be75a8a02b9e8905ad314a1a4276a1a73887 100644
|
| --- a/src/compiler/scheduler.h
|
| +++ b/src/compiler/scheduler.h
|
| @@ -27,7 +27,7 @@ class Scheduler {
|
| static BasicBlockVector* ComputeSpecialRPO(Schedule* schedule);
|
|
|
| private:
|
| - enum Placement { kUnknown, kSchedulable, kFixed };
|
| + enum Placement { kUnknown, kSchedulable, kFixed, kCoupled };
|
|
|
| // Per-node data tracked during scheduling.
|
| struct SchedulerData {
|
| @@ -36,8 +36,8 @@ class Scheduler {
|
| bool is_connected_control_; // {true} if control-connected to the end node.
|
| bool is_floating_control_; // {true} if control, but not control-connected
|
| // to the end node.
|
| - Placement placement_ : 3; // Whether the node is fixed, schedulable,
|
| - // or not yet known.
|
| + Placement placement_ : 2; // Whether the node is fixed, schedulable,
|
| + // coupled to another node, or not yet known.
|
| };
|
|
|
| Zone* zone_;
|
| @@ -50,23 +50,15 @@ class Scheduler {
|
|
|
| Scheduler(Zone* zone, Graph* graph, Schedule* schedule);
|
|
|
| - SchedulerData DefaultSchedulerData();
|
| -
|
| - SchedulerData* GetData(Node* node) {
|
| - DCHECK(node->id() < static_cast<int>(node_data_.size()));
|
| - return &node_data_[node->id()];
|
| - }
|
| + inline SchedulerData DefaultSchedulerData();
|
| + inline SchedulerData* GetData(Node* node);
|
|
|
| Placement GetPlacement(Node* node);
|
|
|
| - int GetRPONumber(BasicBlock* block) {
|
| - DCHECK(block->rpo_number() >= 0 &&
|
| - block->rpo_number() <
|
| - static_cast<int>(schedule_->rpo_order_.size()));
|
| - DCHECK(schedule_->rpo_order_[block->rpo_number()] == block);
|
| - return block->rpo_number();
|
| - }
|
| + void IncrementUnscheduledUseCount(Node* node, Node* from);
|
| + void DecrementUnscheduledUseCount(Node* node, Node* from);
|
|
|
| + inline int GetRPONumber(BasicBlock* block);
|
| BasicBlock* GetCommonDominator(BasicBlock* b1, BasicBlock* b2);
|
|
|
| // Phase 1: Build control-flow graph and dominator tree.
|
|
|