5 #ifndef V8_COMPILER_SCHEDULER_H_ 6 #define V8_COMPILER_SCHEDULER_H_ 8 #include "src/base/flags.h" 9 #include "src/compiler/node.h" 10 #include "src/compiler/opcodes.h" 11 #include "src/compiler/schedule.h" 12 #include "src/compiler/zone-stats.h" 13 #include "src/globals.h" 14 #include "src/zone/zone-containers.h" 22 class ControlEquivalence;
24 class SpecialRPONumberer;
32 enum Flag { kNoFlags = 0u, kSplitNodes = 1u << 1, kTempSchedule = 1u << 2 };
59 enum Placement { kUnknown, kSchedulable, kFixed, kCoupled, kScheduled };
62 struct SchedulerData {
64 int unscheduled_count_;
83 size_t node_count_hint_);
85 inline SchedulerData DefaultSchedulerData();
86 inline SchedulerData* GetData(
Node* node);
88 Placement GetPlacement(
Node* node);
89 Placement InitializePlacement(
Node* node);
90 void UpdatePlacement(
Node* node, Placement placement);
91 bool IsLive(
Node* node);
93 inline bool IsCoupledControlEdge(
Node* node,
int index);
94 void IncrementUnscheduledUseCount(
Node* node,
int index,
Node* from);
95 void DecrementUnscheduledUseCount(
Node* node,
int index,
Node* from);
97 void PropagateImmediateDominators(
BasicBlock* block);
105 void ComputeSpecialRPONumbering();
106 void GenerateImmediateDominatorTree();
114 void ScheduleEarly();
121 void SealFinalSchedule();
134 #endif // V8_COMPILER_SCHEDULER_H_