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

#include <node.h>

Collaboration diagram for v8::internal::compiler::Node:

Classes

class  InputEdges
 
class  Inputs
 
struct  OutOfLineInputs
 
struct  Use
 
class  UseEdges
 
class  Uses
 

Public Member Functions

bool IsDead () const
 
void Kill ()
 
const Operatorop () const
 
constexpr IrOpcode::Value opcode () const
 
NodeId id () const
 
int InputCount () const
 
void Verify ()
 
NodeInputAt (int index) const
 
void ReplaceInput (int index, Node *new_to)
 
void AppendInput (Zone *zone, Node *new_to)
 
void InsertInput (Zone *zone, int index, Node *new_to)
 
void InsertInputs (Zone *zone, int index, int count)
 
NodeRemoveInput (int index)
 
void NullAllInputs ()
 
void TrimInputCount (int new_input_count)
 
void EnsureInputCount (Zone *zone, int new_input_count)
 
int UseCount () const
 
int BranchUseCount () const
 
void ReplaceUses (Node *replace_to)
 
InputEdges input_edges ()
 
Inputs inputs () const
 
base::Vector< Node * > inputs_vector () const
 
UseEdges use_edges ()
 
Uses uses ()
 
bool OwnedBy (Node const *owner) const
 
bool OwnedBy (Node const *owner1, Node const *owner2) const
 
void Print () const
 
void Print (int depth) const
 
void Print (std::ostream &, int depth=1) const
 

Static Public Member Functions

static NodeNew (Zone *zone, NodeId id, const Operator *op, int input_count, Node *const *inputs, bool has_extensible_inputs)
 
static NodeClone (Zone *zone, NodeId id, const Node *node)
 

Private Types

using ZoneUsePtr = GraphZoneTraits::Ptr<Use>
 
using ZoneOutOfLineInputsPtr = GraphZoneTraits::Ptr<OutOfLineInputs>
 
using IdField = base::BitField<NodeId, 0, 24>
 
using InlineCountField = base::BitField<unsigned, 24, 4>
 
using InlineCapacityField = base::BitField<unsigned, 28, 4>
 

Private Member Functions

 Node (NodeId id, const Operator *op, int inline_count, int inline_capacity)
 
 Node (const Node &)=delete
 
Nodeoperator= (const Node &)=delete
 
Address inputs_location () const
 
ZoneNodePtrinline_inputs () const
 
OutOfLineInputsoutline_inputs () const
 
void set_outline_inputs (OutOfLineInputs *outline)
 
ZoneNodePtr const * GetInputPtrConst (int input_index) const
 
ZoneNodePtrGetInputPtr (int input_index)
 
UseGetUsePtr (int input_index)
 
void AppendUse (Use *use)
 
void RemoveUse (Use *use)
 
void * operator new (size_t, void *location)
 
void set_op (const Operator *op)
 
Type type () const
 
void set_type (Type type)
 
Mark mark () const
 
void set_mark (Mark mark)
 
bool has_inline_inputs () const
 
void ClearInputs (int start, int count)
 

Static Private Member Functions

template<typename NodePtrT >
static NodeNewImpl (Zone *zone, NodeId id, const Operator *op, int input_count, NodePtrT const *inputs, bool has_extensible_inputs)
 

Private Attributes

const Operatorop_
 
Type type_
 
Mark mark_
 
uint32_t bit_field_
 
ZoneUsePtr first_use_
 

Static Private Attributes

static const int kOutlineMarker = InlineCountField::kMax
 
static const int kMaxInlineCapacity = InlineCapacityField::kMax - 1
 

Friends

class Edge
 
class NodeMarkerBase
 
class NodeProperties
 

Detailed Description

Definition at line 41 of file node.h.

Member Typedef Documentation

◆ IdField

Definition at line 291 of file node.h.

◆ InlineCapacityField

Definition at line 293 of file node.h.

◆ InlineCountField

Definition at line 292 of file node.h.

◆ ZoneOutOfLineInputsPtr

Definition at line 178 of file node.h.

◆ ZoneUsePtr

using v8::internal::compiler::Node::ZoneUsePtr = GraphZoneTraits::Ptr<Use>
private

Definition at line 163 of file node.h.

Constructor & Destructor Documentation

◆ Node() [1/2]

v8::internal::compiler::Node::Node ( NodeId id,
const Operator * op,
int inline_count,
int inline_capacity )
private

Definition at line 394 of file node.cc.

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

◆ Node() [2/2]

v8::internal::compiler::Node::Node ( const Node & )
privatedelete

Member Function Documentation

◆ AppendInput()

void v8::internal::compiler::Node::AppendInput ( Zone * zone,
Node * new_to )

Definition at line 154 of file node.cc.

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

◆ AppendUse()

void v8::internal::compiler::Node::AppendUse ( Use * use)
private

Definition at line 409 of file node.cc.

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

◆ BranchUseCount()

int v8::internal::compiler::Node::BranchUseCount ( ) const

Definition at line 296 of file node.cc.

Here is the call graph for this function:

◆ ClearInputs()

void v8::internal::compiler::Node::ClearInputs ( int start,
int count )
private

Definition at line 244 of file node.cc.

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

◆ Clone()

Node * v8::internal::compiler::Node::Clone ( Zone * zone,
NodeId id,
const Node * node )
static

Definition at line 136 of file node.cc.

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

◆ EnsureInputCount()

void v8::internal::compiler::Node::EnsureInputCount ( Zone * zone,
int new_input_count )

Definition at line 274 of file node.cc.

Here is the call graph for this function:

◆ GetInputPtr()

ZoneNodePtr * v8::internal::compiler::Node::GetInputPtr ( int input_index)
inlineprivate

Definition at line 259 of file node.h.

Here is the caller graph for this function:

◆ GetInputPtrConst()

ZoneNodePtr const * v8::internal::compiler::Node::GetInputPtrConst ( int input_index) const
inlineprivate

Definition at line 255 of file node.h.

◆ GetUsePtr()

Use * v8::internal::compiler::Node::GetUsePtr ( int input_index)
inlineprivate

Definition at line 263 of file node.h.

Here is the caller graph for this function:

◆ has_inline_inputs()

bool v8::internal::compiler::Node::has_inline_inputs ( ) const
inlineprivate

Definition at line 285 of file node.h.

Here is the caller graph for this function:

◆ id()

NodeId v8::internal::compiler::Node::id ( ) const
inline

Definition at line 57 of file node.h.

Here is the caller graph for this function:

◆ inline_inputs()

ZoneNodePtr * v8::internal::compiler::Node::inline_inputs ( ) const
inlineprivate

Definition at line 245 of file node.h.

Here is the caller graph for this function:

◆ input_edges()

Node::InputEdges v8::internal::compiler::Node::input_edges ( )
inline

Definition at line 466 of file node.h.

Here is the call graph for this function:

◆ InputAt()

Node * v8::internal::compiler::Node::InputAt ( int index) const
inline

Definition at line 70 of file node.h.

◆ InputCount()

int v8::internal::compiler::Node::InputCount ( ) const
inline

Definition at line 59 of file node.h.

Here is the caller graph for this function:

◆ inputs()

Node::Inputs v8::internal::compiler::Node::inputs ( ) const
inline

Definition at line 478 of file node.h.

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

◆ inputs_location()

Address v8::internal::compiler::Node::inputs_location ( ) const
inlineprivate

Definition at line 308 of file node.h.

◆ inputs_vector()

base::Vector< Node * > v8::internal::compiler::Node::inputs_vector ( ) const
inline

Definition at line 487 of file node.h.

Here is the call graph for this function:

◆ InsertInput()

void v8::internal::compiler::Node::InsertInput ( Zone * zone,
int index,
Node * new_to )

Definition at line 203 of file node.cc.

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

◆ InsertInputs()

void v8::internal::compiler::Node::InsertInputs ( Zone * zone,
int index,
int count )

Definition at line 215 of file node.cc.

Here is the call graph for this function:

◆ IsDead()

bool v8::internal::compiler::Node::IsDead ( ) const
inline

Definition at line 461 of file node.h.

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

◆ Kill()

void v8::internal::compiler::Node::Kill ( )

Definition at line 147 of file node.cc.

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

◆ mark()

Mark v8::internal::compiler::Node::mark ( ) const
inlineprivate

Definition at line 282 of file node.h.

◆ New()

Node * v8::internal::compiler::Node::New ( Zone * zone,
NodeId id,
const Operator * op,
int input_count,
Node *const * inputs,
bool has_extensible_inputs )
static

Definition at line 131 of file node.cc.

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

◆ NewImpl()

template<typename NodePtrT >
Node * v8::internal::compiler::Node::NewImpl ( Zone * zone,
NodeId id,
const Operator * op,
int input_count,
NodePtrT const * inputs,
bool has_extensible_inputs )
inlinestaticprivate

Definition at line 58 of file node.cc.

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

◆ NullAllInputs()

void v8::internal::compiler::Node::NullAllInputs ( )

Definition at line 259 of file node.cc.

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

◆ op()

const Operator * v8::internal::compiler::Node::op ( ) const
inline

Definition at line 50 of file node.h.

◆ opcode()

IrOpcode::Value v8::internal::compiler::Node::opcode ( ) const
inlineconstexpr

Definition at line 52 of file node.h.

◆ operator new()

void * v8::internal::compiler::Node::operator new ( size_t ,
void * location )
inlineprivate

Definition at line 272 of file node.h.

◆ operator=()

Node & v8::internal::compiler::Node::operator= ( const Node & )
privatedelete

◆ outline_inputs()

OutOfLineInputs * v8::internal::compiler::Node::outline_inputs ( ) const
inlineprivate

Definition at line 248 of file node.h.

Here is the caller graph for this function:

◆ OwnedBy() [1/2]

bool v8::internal::compiler::Node::OwnedBy ( Node const * owner) const

Definition at line 325 of file node.cc.

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

◆ OwnedBy() [2/2]

bool v8::internal::compiler::Node::OwnedBy ( Node const * owner1,
Node const * owner2 ) const

Definition at line 334 of file node.cc.

Here is the call graph for this function:

◆ Print() [1/3]

void v8::internal::compiler::Node::Print ( ) const
inline

Definition at line 152 of file node.h.

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

◆ Print() [2/3]

void v8::internal::compiler::Node::Print ( int depth) const

Definition at line 349 of file node.cc.

Here is the call graph for this function:

◆ Print() [3/3]

void v8::internal::compiler::Node::Print ( std::ostream & os,
int depth = 1 ) const

Definition at line 373 of file node.cc.

◆ RemoveInput()

Node * v8::internal::compiler::Node::RemoveInput ( int index)

Definition at line 232 of file node.cc.

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

◆ RemoveUse()

void v8::internal::compiler::Node::RemoveUse ( Use * use)
private

Definition at line 419 of file node.cc.

Here is the caller graph for this function:

◆ ReplaceInput()

void v8::internal::compiler::Node::ReplaceInput ( int index,
Node * new_to )
inline

Definition at line 76 of file node.h.

Here is the call graph for this function:

◆ ReplaceUses()

void v8::internal::compiler::Node::ReplaceUses ( Node * replace_to)

Definition at line 306 of file node.cc.

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

◆ set_mark()

void v8::internal::compiler::Node::set_mark ( Mark mark)
inlineprivate

Definition at line 283 of file node.h.

◆ set_op()

void v8::internal::compiler::Node::set_op ( const Operator * op)
inlineprivate

Definition at line 275 of file node.h.

◆ set_outline_inputs()

void v8::internal::compiler::Node::set_outline_inputs ( OutOfLineInputs * outline)
inlineprivate

Definition at line 251 of file node.h.

Here is the caller graph for this function:

◆ set_type()

void v8::internal::compiler::Node::set_type ( Type type)
inlineprivate

Definition at line 279 of file node.h.

◆ TrimInputCount()

void v8::internal::compiler::Node::TrimInputCount ( int new_input_count)

Definition at line 262 of file node.cc.

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

◆ type()

Type v8::internal::compiler::Node::type ( ) const
inlineprivate

Definition at line 278 of file node.h.

Here is the caller graph for this function:

◆ use_edges()

UseEdges v8::internal::compiler::Node::use_edges ( )
inline

Definition at line 126 of file node.h.

Here is the caller graph for this function:

◆ UseCount()

int v8::internal::compiler::Node::UseCount ( ) const

Definition at line 288 of file node.cc.

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

◆ uses()

Uses v8::internal::compiler::Node::uses ( )
inline

Definition at line 144 of file node.h.

Here is the caller graph for this function:

◆ Verify()

void v8::internal::compiler::Node::Verify ( )
inline

Definition at line 67 of file node.h.

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ Edge

friend class Edge
friend

Definition at line 303 of file node.h.

◆ NodeMarkerBase

friend class NodeMarkerBase
friend

Definition at line 304 of file node.h.

◆ NodeProperties

friend class NodeProperties
friend

Definition at line 305 of file node.h.

Member Data Documentation

◆ bit_field_

uint32_t v8::internal::compiler::Node::bit_field_
private

Definition at line 300 of file node.h.

◆ first_use_

ZoneUsePtr v8::internal::compiler::Node::first_use_
private

Definition at line 301 of file node.h.

◆ kMaxInlineCapacity

const int v8::internal::compiler::Node::kMaxInlineCapacity = InlineCapacityField::kMax - 1
staticprivate

Definition at line 295 of file node.h.

◆ kOutlineMarker

const int v8::internal::compiler::Node::kOutlineMarker = InlineCountField::kMax
staticprivate

Definition at line 294 of file node.h.

◆ mark_

Mark v8::internal::compiler::Node::mark_
private

Definition at line 299 of file node.h.

◆ op_

const Operator* v8::internal::compiler::Node::op_
private

Definition at line 297 of file node.h.

◆ type_

Type v8::internal::compiler::Node::type_
private

Definition at line 298 of file node.h.


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