5#ifndef V8_COMPILER_SCHEDULE_H_
6#define V8_COMPILER_SCHEDULE_H_
20class BasicBlockInstrumentor;
51 static Id FromInt(
int index) {
return Id(
static_cast<size_t>(index)); }
62 Id id()
const {
return id_; }
65 debug_info_ = debug_info;
79 void RemovePredecessor(
size_t index);
113 void AddNode(
Node* node);
114 template <
class InputIterator>
116 InputIterator insertion_end) {
117 nodes_.insert(insertion_point, insertion_start, insertion_end);
121 void TrimNodes(iterator new_end);
127 void set_control(
Control control);
130 void set_control_input(
Node* control_input);
145 void set_loop_header(
BasicBlock* loop_header);
151 void set_loop_depth(int32_t loop_depth);
157 void set_rpo_number(int32_t rpo_number);
161#ifdef LOG_BUILTIN_BLOCK_COUNT
162 uint64_t pgo_execution_count() {
return pgo_execution_count_; }
163 void set_pgo_execution_count(uint64_t
count) { pgo_execution_count_ =
count; }
196#ifdef LOG_BUILTIN_BLOCK_COUNT
197 uint64_t pgo_execution_count_;
212 explicit Schedule(
Zone* zone,
size_t node_count_hint = 0);
219 bool IsScheduled(
Node* node);
227 bool SameBasicBlock(
Node* a,
Node* b)
const;
276 return AddSuccessor(block, succ);
295 void EnsureCFGWellFormedness();
300 void EliminateRedundantPhiNodes();
306 void PropagateDeferredMark();
std::reverse_iterator< Node ** > reverse_iterator
const Node ** const_iterator
static Id FromSize(size_t index)
static Id FromInt(int index)
Node * NodeAt(size_t index)
void set_rpo_next(BasicBlock *rpo_next)
void set_deferred(bool deferred)
reverse_iterator rbegin()
BasicBlock * SuccessorAt(size_t index)
value_type const & front() const
int32_t rpo_number() const
NodeVector::const_iterator const_iterator
Node * control_input() const
void RemoveNode(iterator it)
BasicBlock * dominator() const
void set_dominator(BasicBlock *dominator)
BasicBlock * PredecessorAt(size_t index)
NodeVector::iterator iterator
BasicBlock & operator=(const BasicBlock &)=delete
BasicBlock * loop_header() const
const_iterator begin() const
int32_t loop_number() const
void set_loop_number(int32_t loop_number)
size_t SuccessorCount() const
BasicBlock(const BasicBlock &)=delete
BasicBlockVector successors_
BasicBlockVector & successors()
int32_t loop_depth() const
BasicBlockVector & predecessors()
BasicBlock * loop_end() const
void set_dominator_depth(int32_t depth)
void InsertNodes(iterator insertion_point, InputIterator insertion_start, InputIterator insertion_end)
const_iterator end() const
const BasicBlockVector & successors() const
const BasicBlockVector & predecessors() const
size_t PredecessorCount() const
BasicBlockVector predecessors_
bool IsLoopHeader() const
BasicBlock * rpo_next() const
NodeVector::reverse_iterator reverse_iterator
int32_t dominator_depth() const
BasicBlock * loop_header_
BasicBlockVector * rpo_order()
const BasicBlockVector * all_blocks() const
Schedule & operator=(const Schedule &)=delete
size_t BasicBlockCount() const
void AddSuccessorForTesting(BasicBlock *block, BasicBlock *succ)
const BasicBlockVector * rpo_order() const
BasicBlockVector all_blocks_
Schedule(const Schedule &)=delete
size_t RpoBlockCount() const
BasicBlockVector nodeid_to_block_
BasicBlockVector rpo_order_
const v8::base::TimeTicks end_
ZoneLinkedList< BFEntry > nodes_
std::ostream & operator<<(std::ostream &os, AccessMode access_mode)
#define NON_EXPORTED_BASE(code)
#define V8_EXPORT_PRIVATE