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

#include <maglev-basic-block.h>

Collaboration diagram for v8::internal::maglev::BasicBlock:

Public Types

using Id = uint32_t
 

Public Member Functions

 BasicBlock (MergePointInterpreterFrameState *state, Zone *zone)
 
NodeIdT first_id () const
 
void Print () const
 
NodeIdT first_non_phi_id () const
 
NodeIdT FirstNonGapMoveId () const
 
ZoneVector< Node * > & nodes ()
 
ControlNodecontrol_node () const
 
void set_control_node (ControlNode *control_node)
 
ControlNodereset_control_node ()
 
ZoneVector< Node * > Split (Node *node, Zone *zone)
 
bool has_phi () const
 
bool is_merge_block () const
 
bool is_edge_split_block () const
 
bool is_loop () const
 
MergePointRegisterStateedge_split_block_register_state ()
 
bool contains_node_id (NodeIdT id) const
 
void set_edge_split_block_register_state (MergePointRegisterState *register_state)
 
void set_edge_split_block (BasicBlock *predecessor)
 
BasicBlockpredecessor () const
 
void set_predecessor (BasicBlock *predecessor)
 
bool is_start_block_of_switch_case () const
 
void set_start_block_of_switch_case (bool value)
 
bool is_dead () const
 
void mark_dead ()
 
Phi::Listphis () const
 
void AddPhi (Phi *phi) const
 
ExceptionHandlerInfo::Listexception_handlers ()
 
void AddExceptionHandler (ExceptionHandlerInfo *handler)
 
int predecessor_count () const
 
BasicBlockpredecessor_at (int i) const
 
BasicBlockbackedge_predecessor () const
 
int predecessor_id () const
 
void set_predecessor_id (int id)
 
base::SmallVector< BasicBlock *, 2 > successors () const
 
template<typename Func >
void ForEachPredecessor (Func &&functor) const
 
template<typename Func >
void ForEachSuccessor (Func &&functor) const
 
Labellabel ()
 
MergePointInterpreterFrameStatestate () const
 
bool has_state () const
 
bool is_exception_handler_block () const
 
BasicBlockComputeRealJumpTarget ()
 
bool is_deferred () const
 
void set_deferred (bool deferred)
 
void set_id (Id id)
 
bool has_id () const
 
Id id () const
 

Static Public Member Functions

template<typename Func >
static void ForEachSuccessorFollowing (ControlNode *control, Func &&functor)
 

Static Public Attributes

static constexpr Id kInvalidBlockId = 0xffffffff
 

Private Types

enum  : uint8_t { kMerge , kEdgeSplit , kOther }
 

Private Member Functions

bool HasPhisOrRegisterMerges () const
 
void check_layout ()
 

Private Attributes

enum v8::internal::maglev::BasicBlock:: { ... }  type_
 
bool deferred_: 1 = false
 
bool is_start_block_of_switch_case_: 1 = false
 
bool is_dead_: 1 = false
 
Id id_ = kInvalidBlockId
 
ZoneVector< Node * > nodes_
 
ControlNodecontrol_node_
 
ExceptionHandlerInfo::List exception_handlers_
 
union { 
 
   MergePointInterpreterFrameState *   state_ 
 
   MergePointRegisterState *   edge_split_block_register_state_ 
 
};  
 
BasicBlockpredecessor_ = nullptr
 
Label label_
 

Detailed Description

Definition at line 25 of file maglev-basic-block.h.

Member Typedef Documentation

◆ Id

Definition at line 265 of file maglev-basic-block.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : uint8_t
private
Enumerator
kMerge 
kEdgeSplit 
kOther 

Definition at line 314 of file maglev-basic-block.h.

Constructor & Destructor Documentation

◆ BasicBlock()

v8::internal::maglev::BasicBlock::BasicBlock ( MergePointInterpreterFrameState * state,
Zone * zone )
inlineexplicit

Definition at line 27 of file maglev-basic-block.h.

Member Function Documentation

◆ AddExceptionHandler()

void v8::internal::maglev::BasicBlock::AddExceptionHandler ( ExceptionHandlerInfo * handler)
inline

Definition at line 157 of file maglev-basic-block.h.

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

◆ AddPhi()

void v8::internal::maglev::BasicBlock::AddPhi ( Phi * phi) const
inline

Definition at line 148 of file maglev-basic-block.h.

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

◆ backedge_predecessor()

BasicBlock * v8::internal::maglev::BasicBlock::backedge_predecessor ( ) const
inline

Definition at line 171 of file maglev-basic-block.h.

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

◆ check_layout()

void v8::internal::maglev::BasicBlock::check_layout ( )
inlineprivate

Definition at line 336 of file maglev-basic-block.h.

◆ ComputeRealJumpTarget()

BasicBlock * v8::internal::maglev::BasicBlock::ComputeRealJumpTarget ( )
inline

Definition at line 241 of file maglev-basic-block.h.

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

◆ contains_node_id()

bool v8::internal::maglev::BasicBlock::contains_node_id ( NodeIdT id) const
inline

Definition at line 105 of file maglev-basic-block.h.

Here is the call graph for this function:

◆ control_node()

ControlNode * v8::internal::maglev::BasicBlock::control_node ( ) const
inline

Definition at line 62 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ edge_split_block_register_state()

MergePointRegisterState & v8::internal::maglev::BasicBlock::edge_split_block_register_state ( )
inline

Definition at line 99 of file maglev-basic-block.h.

◆ exception_handlers()

ExceptionHandlerInfo::List & v8::internal::maglev::BasicBlock::exception_handlers ( )
inline

Definition at line 153 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ first_id()

NodeIdT v8::internal::maglev::BasicBlock::first_id ( ) const
inline

Definition at line 33 of file maglev-basic-block.h.

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

◆ first_non_phi_id()

NodeIdT v8::internal::maglev::BasicBlock::first_non_phi_id ( ) const
inline

Definition at line 41 of file maglev-basic-block.h.

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

◆ FirstNonGapMoveId()

NodeIdT v8::internal::maglev::BasicBlock::FirstNonGapMoveId ( ) const
inline

Definition at line 49 of file maglev-basic-block.h.

Here is the call graph for this function:

◆ ForEachPredecessor()

template<typename Func >
void v8::internal::maglev::BasicBlock::ForEachPredecessor ( Func && functor) const
inline

Definition at line 186 of file maglev-basic-block.h.

Here is the call graph for this function:

◆ ForEachSuccessor()

template<typename Func >
void v8::internal::maglev::BasicBlock::ForEachSuccessor ( Func && functor) const
inline

Definition at line 218 of file maglev-basic-block.h.

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

◆ ForEachSuccessorFollowing()

template<typename Func >
static void v8::internal::maglev::BasicBlock::ForEachSuccessorFollowing ( ControlNode * control,
Func && functor )
inlinestatic

Definition at line 200 of file maglev-basic-block.h.

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

◆ has_id()

bool v8::internal::maglev::BasicBlock::has_id ( ) const
inline

Definition at line 272 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ has_phi()

bool v8::internal::maglev::BasicBlock::has_phi ( ) const
inline

Definition at line 92 of file maglev-basic-block.h.

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

◆ has_state()

bool v8::internal::maglev::BasicBlock::has_state ( ) const
inline

Definition at line 233 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ HasPhisOrRegisterMerges()

bool v8::internal::maglev::BasicBlock::HasPhisOrRegisterMerges ( ) const
inlineprivate

Definition at line 279 of file maglev-basic-block.h.

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

◆ id()

Id v8::internal::maglev::BasicBlock::id ( ) const
inline

Definition at line 273 of file maglev-basic-block.h.

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

◆ is_dead()

bool v8::internal::maglev::BasicBlock::is_dead ( ) const
inline

Definition at line 140 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ is_deferred()

bool v8::internal::maglev::BasicBlock::is_deferred ( ) const
inline

Definition at line 262 of file maglev-basic-block.h.

◆ is_edge_split_block()

bool v8::internal::maglev::BasicBlock::is_edge_split_block ( ) const
inline

Definition at line 95 of file maglev-basic-block.h.

◆ is_exception_handler_block()

bool v8::internal::maglev::BasicBlock::is_exception_handler_block ( ) const
inline

Definition at line 235 of file maglev-basic-block.h.

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

◆ is_loop()

bool v8::internal::maglev::BasicBlock::is_loop ( ) const
inline

Definition at line 97 of file maglev-basic-block.h.

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

◆ is_merge_block()

bool v8::internal::maglev::BasicBlock::is_merge_block ( ) const
inline

Definition at line 94 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ is_start_block_of_switch_case()

bool v8::internal::maglev::BasicBlock::is_start_block_of_switch_case ( ) const
inline

Definition at line 133 of file maglev-basic-block.h.

◆ label()

Label * v8::internal::maglev::BasicBlock::label ( )
inline

Definition at line 223 of file maglev-basic-block.h.

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

◆ mark_dead()

void v8::internal::maglev::BasicBlock::mark_dead ( )
inline

Definition at line 142 of file maglev-basic-block.h.

◆ nodes()

ZoneVector< Node * > & v8::internal::maglev::BasicBlock::nodes ( )
inline

Definition at line 60 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ phis()

Phi::List * v8::internal::maglev::BasicBlock::phis ( ) const
inline

Definition at line 144 of file maglev-basic-block.h.

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

◆ predecessor()

BasicBlock * v8::internal::maglev::BasicBlock::predecessor ( ) const
inline

Definition at line 123 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ predecessor_at()

BasicBlock * v8::internal::maglev::BasicBlock::predecessor_at ( int i) const
inline

Definition at line 166 of file maglev-basic-block.h.

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

◆ predecessor_count()

int v8::internal::maglev::BasicBlock::predecessor_count ( ) const
inline

Definition at line 161 of file maglev-basic-block.h.

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

◆ predecessor_id()

int v8::internal::maglev::BasicBlock::predecessor_id ( ) const
inline

Definition at line 176 of file maglev-basic-block.h.

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

◆ Print()

void v8::internal::maglev::BasicBlock::Print ( ) const

◆ reset_control_node()

ControlNode * v8::internal::maglev::BasicBlock::reset_control_node ( )
inline

Definition at line 68 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ set_control_node()

void v8::internal::maglev::BasicBlock::set_control_node ( ControlNode * control_node)
inline

Definition at line 63 of file maglev-basic-block.h.

Here is the call graph for this function:

◆ set_deferred()

void v8::internal::maglev::BasicBlock::set_deferred ( bool deferred)
inline

Definition at line 263 of file maglev-basic-block.h.

Here is the caller graph for this function:

◆ set_edge_split_block()

void v8::internal::maglev::BasicBlock::set_edge_split_block ( BasicBlock * predecessor)
inline

Definition at line 115 of file maglev-basic-block.h.

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

◆ set_edge_split_block_register_state()

void v8::internal::maglev::BasicBlock::set_edge_split_block_register_state ( MergePointRegisterState * register_state)
inline

Definition at line 109 of file maglev-basic-block.h.

◆ set_id()

void v8::internal::maglev::BasicBlock::set_id ( Id id)
inline

Definition at line 268 of file maglev-basic-block.h.

Here is the call graph for this function:

◆ set_predecessor()

void v8::internal::maglev::BasicBlock::set_predecessor ( BasicBlock * predecessor)
inline

Definition at line 127 of file maglev-basic-block.h.

Here is the call graph for this function:

◆ set_predecessor_id()

void v8::internal::maglev::BasicBlock::set_predecessor_id ( int id)
inline

Definition at line 179 of file maglev-basic-block.h.

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

◆ set_start_block_of_switch_case()

void v8::internal::maglev::BasicBlock::set_start_block_of_switch_case ( bool value)
inline

Definition at line 136 of file maglev-basic-block.h.

◆ Split()

ZoneVector< Node * > v8::internal::maglev::BasicBlock::Split ( Node * node,
Zone * zone )
inline

Definition at line 77 of file maglev-basic-block.h.

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

◆ state()

MergePointInterpreterFrameState * v8::internal::maglev::BasicBlock::state ( ) const
inline

Definition at line 229 of file maglev-basic-block.h.

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

◆ successors()

base::SmallVector< BasicBlock *, 2 > v8::internal::maglev::BasicBlock::successors ( ) const
inline

Definition at line 341 of file maglev-basic-block.h.

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

Member Data Documentation

◆ [union]

◆ control_node_

ControlNode* v8::internal::maglev::BasicBlock::control_node_
private

Definition at line 322 of file maglev-basic-block.h.

◆ deferred_

bool v8::internal::maglev::BasicBlock::deferred_
private

Definition at line 315 of file maglev-basic-block.h.

◆ edge_split_block_register_state_

MergePointRegisterState* v8::internal::maglev::BasicBlock::edge_split_block_register_state_

Definition at line 327 of file maglev-basic-block.h.

◆ exception_handlers_

ExceptionHandlerInfo::List v8::internal::maglev::BasicBlock::exception_handlers_
private

Definition at line 323 of file maglev-basic-block.h.

◆ id_

Id v8::internal::maglev::BasicBlock::id_ = kInvalidBlockId
private

Definition at line 319 of file maglev-basic-block.h.

◆ is_dead_

bool v8::internal::maglev::BasicBlock::is_dead_
private

Definition at line 317 of file maglev-basic-block.h.

◆ is_start_block_of_switch_case_

bool v8::internal::maglev::BasicBlock::is_start_block_of_switch_case_
private

Definition at line 316 of file maglev-basic-block.h.

◆ kInvalidBlockId

Id v8::internal::maglev::BasicBlock::kInvalidBlockId = 0xffffffff
staticconstexpr

Definition at line 266 of file maglev-basic-block.h.

◆ label_

Label v8::internal::maglev::BasicBlock::label_
private

Definition at line 331 of file maglev-basic-block.h.

◆ nodes_

ZoneVector<Node*> v8::internal::maglev::BasicBlock::nodes_
private

Definition at line 321 of file maglev-basic-block.h.

◆ predecessor_

BasicBlock* v8::internal::maglev::BasicBlock::predecessor_ = nullptr
private

Definition at line 330 of file maglev-basic-block.h.

◆ state_

MergePointInterpreterFrameState* v8::internal::maglev::BasicBlock::state_

Definition at line 326 of file maglev-basic-block.h.

◆ []

enum { ... } v8::internal::maglev::BasicBlock::type_

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