/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
deps/v8/src/compiler/linear-scheduler.h
67 строк
2 KB
Michaël Zasso
deps: update V8 to 13.6.233.8
02 май 2025, 16:06
Не верифицирован
02 май 2025, 16:06
918fe04
Код
Авторство
О чём код?
// Copyright 2013 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_COMPILER_LINEAR_SCHEDULER_H_ #define V8_COMPILER_LINEAR_SCHEDULER_H_ #include "src/base/flags.h" #include "src/common/globals.h" #include "src/compiler/node.h" #include "src/compiler/opcodes.h" #include "src/compiler/zone-stats.h" #include "src/zone/zone-containers.h" namespace v8 { namespace internal { namespace compiler { // A simple, linear-time scheduler to check whether two nodes are in a same // basic block without actually building basic block. class V8_EXPORT_PRIVATE LinearScheduler { public: explicit LinearScheduler(Zone* zone, TFGraph* graph); bool SameBasicBlock(Node* node0, Node* node1); // Get a node's early schedule position. It is the earliest block (represented // by a control node) where a node could be scheduled. Node* GetEarlySchedulePosition(Node* node); private: // Compute the level of each control node. The level is defined by the // shortest control path from the start node. void ComputeControlLevel(); struct NodeState { Node* node; Node* early_schedule_position; int input_index; }; int GetControlLevel(Node* control) const { auto it = control_level_.find(control); DCHECK(it != control_level_.end()); return it->second; } void SetControlLevel(Node* control, int level) { DCHECK(control_level_.find(control) == control_level_.end()); control_level_[control] = level; } void SetEarlySchedulePosition(Node* node, Node* early_schedule_position) { early_schedule_position_[node] = early_schedule_position; } TFGraph* graph_; // A map from a control node to the control level of the corresponding basic // block. ZoneMap<Node*, int> control_level_; // A map from a non-control node to its early schedule position. ZoneMap<Node*, Node*> early_schedule_position_; }; } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_LINEAR_SCHEDULER_H_