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. |