Home | History | Annotate | Download | only in compiler

Lines Matching full:scheduler

5 #include "src/compiler/scheduler.h"
28 Scheduler::Scheduler(Zone* zone, Graph* graph, Schedule* schedule, Flags flags)
39 Schedule* Scheduler::ComputeSchedule(Zone* zone, Graph* graph, Flags flags) {
42 Scheduler scheduler(zone, graph, schedule, flags);
44 scheduler.BuildCFG();
45 scheduler.ComputeSpecialRPONumbering();
46 scheduler.GenerateImmediateDominatorTree();
48 scheduler.PrepareUses();
49 scheduler.ScheduleEarly();
50 scheduler.ScheduleLate();
52 scheduler.SealFinalSchedule();
58 Scheduler::SchedulerData Scheduler::DefaultSchedulerData() {
64 Scheduler::SchedulerData* Scheduler::GetData(Node* node) {
69 Scheduler::Placement Scheduler::GetPlacement(Node* node) {
103 void Scheduler::UpdatePlacement(Node* node, Placement placement) {
114 DCHECK_EQ(Scheduler::kCoupled, data->placement_);
115 DCHECK_EQ(Scheduler::kFixed, placement);
127 if (GetPlacement(use) == Scheduler::kCoupled) {
135 DCHECK_EQ(Scheduler::kSchedulable, data->placement_);
136 DCHECK_EQ(Scheduler::kScheduled, placement);
150 bool Scheduler::IsCoupledControlEdge(Node* node, int index) {
156 void Scheduler::IncrementUnscheduledUseCount(Node* node, int index,
179 void Scheduler::DecrementUnscheduledUseCount(Node* node, int index,
217 CFGBuilder(Zone* zone, Scheduler* scheduler)
219 scheduler_(scheduler),
220 schedule_(scheduler->schedule_),
221 queued_(scheduler->graph_, 2),
287 friend class Scheduler;
291 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
344 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
348 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
352 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
356 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
360 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
364 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
369 scheduler_->UpdatePlacement(node, Scheduler::kFixed);
558 Scheduler* scheduler_;
569 void Scheduler::BuildCFG() {
1083 BasicBlockVector* Scheduler::ComputeSpecialRPO(Zone* zone, Schedule* schedule) {
1092 void Scheduler::ComputeSpecialRPONumbering() {
1101 void Scheduler::PropagateImmediateDominators(BasicBlock* block) {
1126 void Scheduler::GenerateImmediateDominatorTree() {
1143 explicit PrepareUsesVisitor(Scheduler* scheduler)
1144 : scheduler_(scheduler), schedule_(scheduler->schedule_) {}
1147 if (scheduler_->GetPlacement(node) == Scheduler::kFixed) {
1170 DCHECK_NE(Scheduler::kFixed, scheduler_->GetPlacement(from));
1176 Scheduler* scheduler_;
1181 void Scheduler::PrepareUses() {
1216 ScheduleEarlyNodeVisitor(Zone* zone, Scheduler* scheduler)
1217 : scheduler_(scheduler), schedule_(scheduler->schedule_), queue_(zone) {}
1234 Scheduler::SchedulerData* data = scheduler_->GetData(node);
1237 if (scheduler_->GetPlacement(node) == Scheduler::kFixed) {
1259 Scheduler::SchedulerData* data = scheduler_->GetData(node);
1262 if (scheduler_->GetPlacement(node) == Scheduler::kFixed) return;
1265 if (scheduler_->GetPlacement(node) == Scheduler::kCoupled) {
1291 Scheduler* scheduler_;
1297 void Scheduler::ScheduleEarly() {
1320 ScheduleLateNodeVisitor(Zone* zone, Scheduler* scheduler)
1321 : scheduler_(scheduler),
1323 marked_(scheduler->zone_),
1324 marking_queue_(scheduler->zone_) {}
1338 if (scheduler_->GetPlacement(node) == Scheduler::kCoupled) {
1362 DCHECK_EQ(Scheduler::kSchedulable, scheduler_->GetPlacement(node));
1392 } else if (scheduler_->flags_ & Scheduler::kSplitNodes) {
1545 if (scheduler_->GetPlacement(use) == Scheduler::kCoupled) {
1553 if (scheduler_->GetPlacement(use) == Scheduler::kFixed) {
1564 if (scheduler_->GetPlacement(use) == Scheduler::kFixed) {
1612 scheduler_->UpdatePlacement(node, Scheduler::kScheduled);
1630 Scheduler* scheduler_;
1637 void Scheduler::ScheduleLate() {
1657 void Scheduler::SealFinalSchedule() {
1679 void Scheduler::FuseFloatingControl(BasicBlock* block, Node* node) {
1700 // temporary solution and should be merged into the rest of the scheduler as
1730 void Scheduler::MovePlannedNodes(BasicBlock* from, BasicBlock* to) {