diff options
Diffstat (limited to 'deps/v8/src/compiler/scheduler.h')
-rw-r--r-- | deps/v8/src/compiler/scheduler.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/deps/v8/src/compiler/scheduler.h b/deps/v8/src/compiler/scheduler.h index 2839a0cb7a..9da0b6daa4 100644 --- a/deps/v8/src/compiler/scheduler.h +++ b/deps/v8/src/compiler/scheduler.h @@ -16,6 +16,8 @@ namespace v8 { namespace internal { namespace compiler { +class CFGBuilder; +class ControlEquivalence; class SpecialRPONumberer; // Computes a schedule from a graph, placing nodes into basic blocks and @@ -24,11 +26,10 @@ class Scheduler { public: // The complete scheduling algorithm. Creates a new schedule and places all // nodes from the graph into it. - static Schedule* ComputeSchedule(ZonePool* zone_pool, Graph* graph); + static Schedule* ComputeSchedule(Zone* zone, Graph* graph); // Compute the RPO of blocks in an existing schedule. - static BasicBlockVector* ComputeSpecialRPO(ZonePool* zone_pool, - Schedule* schedule); + static BasicBlockVector* ComputeSpecialRPO(Zone* zone, Schedule* schedule); private: // Placement of a node changes during scheduling. The placement state @@ -48,9 +49,6 @@ class Scheduler { struct SchedulerData { BasicBlock* minimum_block_; // Minimum legal RPO placement. int unscheduled_count_; // Number of unscheduled uses of this node. - 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_; // Whether the node is fixed, schedulable, // coupled to another node, or not yet known. }; @@ -62,7 +60,9 @@ class Scheduler { NodeVector schedule_root_nodes_; // Fixed root nodes seed the worklist. ZoneQueue<Node*> schedule_queue_; // Worklist of schedulable nodes. ZoneVector<SchedulerData> node_data_; // Per-node data for all nodes. + CFGBuilder* control_flow_builder_; // Builds basic blocks for controls. SpecialRPONumberer* special_rpo_; // Special RPO numbering of blocks. + ControlEquivalence* equivalence_; // Control dependence equivalence. Scheduler(Zone* zone, Graph* graph, Schedule* schedule); @@ -77,6 +77,7 @@ class Scheduler { void DecrementUnscheduledUseCount(Node* node, int index, Node* from); BasicBlock* GetCommonDominator(BasicBlock* b1, BasicBlock* b2); + void PropagateImmediateDominators(BasicBlock* block); // Phase 1: Build control-flow graph. friend class CFGBuilder; |