v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::compiler::Schedule Class Referencefinal

#include <schedule.h>

Inheritance diagram for v8::internal::compiler::Schedule:
Collaboration diagram for v8::internal::compiler::Schedule:

Public Member Functions

 Schedule (Zone *zone, size_t node_count_hint=0)
 
 Schedule (const Schedule &)=delete
 
Scheduleoperator= (const Schedule &)=delete
 
BasicBlockblock (Node *node) const
 
bool IsScheduled (Node *node)
 
BasicBlockGetBlockById (BasicBlock::Id block_id)
 
void ClearBlockById (BasicBlock::Id block_id)
 
size_t BasicBlockCount () const
 
size_t RpoBlockCount () const
 
bool SameBasicBlock (Node *a, Node *b) const
 
BasicBlockNewBasicBlock ()
 
void PlanNode (BasicBlock *block, Node *node)
 
void AddNode (BasicBlock *block, Node *node)
 
void AddGoto (BasicBlock *block, BasicBlock *succ)
 
void AddCall (BasicBlock *block, Node *call, BasicBlock *success_block, BasicBlock *exception_block)
 
void AddBranch (BasicBlock *block, Node *branch, BasicBlock *tblock, BasicBlock *fblock)
 
void AddSwitch (BasicBlock *block, Node *sw, BasicBlock **succ_blocks, size_t succ_count)
 
void AddDeoptimize (BasicBlock *block, Node *input)
 
void AddTailCall (BasicBlock *block, Node *input)
 
void AddReturn (BasicBlock *block, Node *input)
 
void AddThrow (BasicBlock *block, Node *input)
 
void InsertBranch (BasicBlock *block, BasicBlock *end, Node *branch, BasicBlock *tblock, BasicBlock *fblock)
 
void InsertSwitch (BasicBlock *block, BasicBlock *end, Node *sw, BasicBlock **succ_blocks, size_t succ_count)
 
void AddSuccessorForTesting (BasicBlock *block, BasicBlock *succ)
 
const BasicBlockVectorall_blocks () const
 
BasicBlockVectorrpo_order ()
 
const BasicBlockVectorrpo_order () const
 
BasicBlockstart ()
 
BasicBlockend ()
 
Zonezone () const
 

Private Member Functions

void EnsureCFGWellFormedness ()
 
void EliminateRedundantPhiNodes ()
 
void EnsureSplitEdgeForm (BasicBlock *block)
 
void MovePhis (BasicBlock *from, BasicBlock *to)
 
void PropagateDeferredMark ()
 
void AddSuccessor (BasicBlock *block, BasicBlock *succ)
 
void MoveSuccessors (BasicBlock *from, BasicBlock *to)
 
void SetControlInput (BasicBlock *block, Node *node)
 
void SetBlockForNode (BasicBlock *block, Node *node)
 

Private Attributes

Zonezone_
 
BasicBlockVector all_blocks_
 
BasicBlockVector nodeid_to_block_
 
BasicBlockVector rpo_order_
 
BasicBlockstart_
 
BasicBlockend_
 

Friends

class GraphAssembler
 
class Scheduler
 
class BasicBlockInstrumentor
 
class RawMachineAssembler
 

Detailed Description

Definition at line 210 of file schedule.h.

Constructor & Destructor Documentation

◆ Schedule() [1/2]

v8::internal::compiler::Schedule::Schedule ( Zone * zone,
size_t node_count_hint = 0 )
explicit

Definition at line 159 of file schedule.cc.

Here is the call graph for this function:

◆ Schedule() [2/2]

v8::internal::compiler::Schedule::Schedule ( const Schedule & )
delete

Member Function Documentation

◆ AddBranch()

void v8::internal::compiler::Schedule::AddBranch ( BasicBlock * block,
Node * branch,
BasicBlock * tblock,
BasicBlock * fblock )

Definition at line 258 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCall()

void v8::internal::compiler::Schedule::AddCall ( BasicBlock * block,
Node * call,
BasicBlock * success_block,
BasicBlock * exception_block )

Definition at line 248 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddDeoptimize()

void v8::internal::compiler::Schedule::AddDeoptimize ( BasicBlock * block,
Node * input )

Definition at line 293 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddGoto()

void v8::internal::compiler::Schedule::AddGoto ( BasicBlock * block,
BasicBlock * succ )

Definition at line 223 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddNode()

void v8::internal::compiler::Schedule::AddNode ( BasicBlock * block,
Node * node )

Definition at line 213 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddReturn()

void v8::internal::compiler::Schedule::AddReturn ( BasicBlock * block,
Node * input )

Definition at line 286 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddSuccessor()

void v8::internal::compiler::Schedule::AddSuccessor ( BasicBlock * block,
BasicBlock * succ )
private

Definition at line 436 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddSuccessorForTesting()

void v8::internal::compiler::Schedule::AddSuccessorForTesting ( BasicBlock * block,
BasicBlock * succ )
inline

Definition at line 275 of file schedule.h.

◆ AddSwitch()

void v8::internal::compiler::Schedule::AddSwitch ( BasicBlock * block,
Node * sw,
BasicBlock ** succ_blocks,
size_t succ_count )

Definition at line 268 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTailCall()

void v8::internal::compiler::Schedule::AddTailCall ( BasicBlock * block,
Node * input )

Definition at line 279 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddThrow()

void v8::internal::compiler::Schedule::AddThrow ( BasicBlock * block,
Node * input )

Definition at line 300 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ all_blocks()

const BasicBlockVector * v8::internal::compiler::Schedule::all_blocks ( ) const
inline

Definition at line 279 of file schedule.h.

Here is the caller graph for this function:

◆ BasicBlockCount()

size_t v8::internal::compiler::Schedule::BasicBlockCount ( ) const
inline

Definition at line 223 of file schedule.h.

Here is the caller graph for this function:

◆ block()

BasicBlock * v8::internal::compiler::Schedule::block ( Node * node) const

Definition at line 169 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClearBlockById()

void v8::internal::compiler::Schedule::ClearBlockById ( BasicBlock::Id block_id)

Definition at line 186 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EliminateRedundantPhiNodes()

void v8::internal::compiler::Schedule::EliminateRedundantPhiNodes ( )
private

Definition at line 351 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ end()

BasicBlock * v8::internal::compiler::Schedule::end ( )
inline

Definition at line 284 of file schedule.h.

Here is the caller graph for this function:

◆ EnsureCFGWellFormedness()

void v8::internal::compiler::Schedule::EnsureCFGWellFormedness ( )
private

Definition at line 338 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EnsureSplitEdgeForm()

void v8::internal::compiler::Schedule::EnsureSplitEdgeForm ( BasicBlock * block)
private

Definition at line 387 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetBlockById()

BasicBlock * v8::internal::compiler::Schedule::GetBlockById ( BasicBlock::Id block_id)

Definition at line 181 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InsertBranch()

void v8::internal::compiler::Schedule::InsertBranch ( BasicBlock * block,
BasicBlock * end,
Node * branch,
BasicBlock * tblock,
BasicBlock * fblock )

Definition at line 307 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InsertSwitch()

void v8::internal::compiler::Schedule::InsertSwitch ( BasicBlock * block,
BasicBlock * end,
Node * sw,
BasicBlock ** succ_blocks,
size_t succ_count )

Definition at line 322 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsScheduled()

bool v8::internal::compiler::Schedule::IsScheduled ( Node * node)

Definition at line 176 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MovePhis()

void v8::internal::compiler::Schedule::MovePhis ( BasicBlock * from,
BasicBlock * to )
private

Definition at line 398 of file schedule.cc.

◆ MoveSuccessors()

void v8::internal::compiler::Schedule::MoveSuccessors ( BasicBlock * from,
BasicBlock * to )
private

Definition at line 441 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NewBasicBlock()

BasicBlock * v8::internal::compiler::Schedule::NewBasicBlock ( )

Definition at line 196 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

Schedule & v8::internal::compiler::Schedule::operator= ( const Schedule & )
delete

◆ PlanNode()

void v8::internal::compiler::Schedule::PlanNode ( BasicBlock * block,
Node * node )

Definition at line 203 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PropagateDeferredMark()

void v8::internal::compiler::Schedule::PropagateDeferredMark ( )
private

Definition at line 412 of file schedule.cc.

Here is the caller graph for this function:

◆ rpo_order() [1/2]

BasicBlockVector * v8::internal::compiler::Schedule::rpo_order ( )
inline

Definition at line 280 of file schedule.h.

Here is the caller graph for this function:

◆ rpo_order() [2/2]

const BasicBlockVector * v8::internal::compiler::Schedule::rpo_order ( ) const
inline

Definition at line 281 of file schedule.h.

◆ RpoBlockCount()

size_t v8::internal::compiler::Schedule::RpoBlockCount ( ) const
inline

Definition at line 224 of file schedule.h.

◆ SameBasicBlock()

bool v8::internal::compiler::Schedule::SameBasicBlock ( Node * a,
Node * b ) const

Definition at line 191 of file schedule.cc.

◆ SetBlockForNode()

void v8::internal::compiler::Schedule::SetBlockForNode ( BasicBlock * block,
Node * node )
private

Definition at line 456 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetControlInput()

void v8::internal::compiler::Schedule::SetControlInput ( BasicBlock * block,
Node * node )
private

Definition at line 451 of file schedule.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ start()

BasicBlock * v8::internal::compiler::Schedule::start ( )
inline

Definition at line 283 of file schedule.h.

Here is the caller graph for this function:

◆ zone()

Zone * v8::internal::compiler::Schedule::zone ( ) const
inline

Definition at line 286 of file schedule.h.

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ BasicBlockInstrumentor

friend class BasicBlockInstrumentor
friend

Definition at line 291 of file schedule.h.

◆ GraphAssembler

friend class GraphAssembler
friend

Definition at line 289 of file schedule.h.

◆ RawMachineAssembler

friend class RawMachineAssembler
friend

Definition at line 292 of file schedule.h.

◆ Scheduler

friend class Scheduler
friend

Definition at line 290 of file schedule.h.

Member Data Documentation

◆ all_blocks_

BasicBlockVector v8::internal::compiler::Schedule::all_blocks_
private

Definition at line 315 of file schedule.h.

◆ end_

BasicBlock* v8::internal::compiler::Schedule::end_
private

Definition at line 319 of file schedule.h.

◆ nodeid_to_block_

BasicBlockVector v8::internal::compiler::Schedule::nodeid_to_block_
private

Definition at line 316 of file schedule.h.

◆ rpo_order_

BasicBlockVector v8::internal::compiler::Schedule::rpo_order_
private

Definition at line 317 of file schedule.h.

◆ start_

BasicBlock* v8::internal::compiler::Schedule::start_
private

Definition at line 318 of file schedule.h.

◆ zone_

Zone* v8::internal::compiler::Schedule::zone_
private

Definition at line 314 of file schedule.h.


The documentation for this class was generated from the following files: