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

#include <maglev-graph.h>

Inheritance diagram for v8::internal::maglev::Graph:
Collaboration diagram for v8::internal::maglev::Graph:

Public Types

using SmallAllocationVector = SmallZoneVector<InlinedAllocation*, 2>
 

Public Member Functions

 Graph (Zone *zone, bool is_osr)
 
BasicBlockoperator[] (int i)
 
const BasicBlockoperator[] (int i) const
 
int num_blocks () const
 
ZoneVector< BasicBlock * > & blocks ()
 
BlockConstIterator begin () const
 
BlockConstIterator end () const
 
BlockConstReverseIterator rbegin () const
 
BlockConstReverseIterator rend () const
 
BasicBlocklast_block () const
 
void Add (BasicBlock *block)
 
void set_blocks (ZoneVector< BasicBlock * > blocks)
 
template<typename Function >
void IterateGraphAndSweepDeadBlocks (Function &&is_dead)
 
uint32_t tagged_stack_slots () const
 
uint32_t untagged_stack_slots () const
 
uint32_t max_call_stack_args () const
 
uint32_t max_deopted_stack_size () const
 
void set_tagged_stack_slots (uint32_t stack_slots)
 
void set_untagged_stack_slots (uint32_t stack_slots)
 
void set_max_call_stack_args (uint32_t stack_slots)
 
void set_max_deopted_stack_size (uint32_t size)
 
int total_inlined_bytecode_size () const
 
void add_inlined_bytecode_size (int size)
 
int total_peeled_bytecode_size () const
 
void add_peeled_bytecode_size (int size)
 
ZoneMap< RootIndex, RootConstant * > & root ()
 
ZoneVector< InitialValue * > & osr_values ()
 
ZoneMap< int, SmiConstant * > & smi ()
 
ZoneMap< int, TaggedIndexConstant * > & tagged_index ()
 
ZoneMap< int32_t, Int32Constant * > & int32 ()
 
ZoneMap< uint32_t, Uint32Constant * > & uint32 ()
 
ZoneMap< uint64_t, Float64Constant * > & float64 ()
 
ZoneMap< Address, ExternalConstant * > & external_references ()
 
ZoneVector< InitialValue * > & parameters ()
 
ZoneVector< MaglevCallSiteInfo * > & inlineable_calls ()
 
ZoneVector< Node * > & node_buffer ()
 
ZoneMap< InlinedAllocation *, SmallAllocationVector > & allocations_escape_map ()
 
ZoneMap< InlinedAllocation *, SmallAllocationVector > & allocations_elide_map ()
 
RegListregister_inputs ()
 
compiler::ZoneRefMap< compiler::ObjectRef, Constant * > & constants ()
 
compiler::ZoneRefMap< compiler::HeapObjectRef, TrustedConstant * > & trusted_constants ()
 
ZoneVector< OptimizedCompilationInfo::InlinedFunctionHolder > & inlined_functions ()
 
bool has_recursive_calls () const
 
void set_has_recursive_calls (bool value)
 
bool is_osr () const
 
uint32_t min_maglev_stackslots_for_unoptimized_frame_size ()
 
uint32_t NewObjectId ()
 
void set_has_resumable_generator ()
 
bool has_resumable_generator () const
 
compiler::OptionalScopeInfoRef TryGetScopeInfoForContextLoad (ValueNode *context, int offset, compiler::JSHeapBroker *broker)
 
compiler::OptionalScopeInfoRef TryGetScopeInfo (ValueNode *context, compiler::JSHeapBroker *broker)
 
void record_scope_info (ValueNode *context, compiler::OptionalScopeInfoRef scope_info)
 
Zonezone () const
 
BasicBlock::Id max_block_id () const
 
- Public Member Functions inherited from v8::internal::ZoneObject
void * operator new (size_t, Zone *)=delete
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *, size_t)
 
void operator delete (void *pointer, Zone *zone)=delete
 

Static Public Member Functions

static GraphNew (Zone *zone, bool is_osr)
 

Private Attributes

uint32_t tagged_stack_slots_ = kMaxUInt32
 
uint32_t untagged_stack_slots_ = kMaxUInt32
 
uint32_t max_call_stack_args_ = kMaxUInt32
 
uint32_t max_deopted_stack_size_ = kMaxUInt32
 
ZoneVector< BasicBlock * > blocks_
 
ZoneMap< RootIndex, RootConstant * > root_
 
ZoneVector< InitialValue * > osr_values_
 
ZoneMap< int, SmiConstant * > smi_
 
ZoneMap< int, TaggedIndexConstant * > tagged_index_
 
ZoneMap< int32_t, Int32Constant * > int32_
 
ZoneMap< uint32_t, Uint32Constant * > uint32_
 
ZoneMap< uint64_t, Float64Constant * > float_
 
ZoneMap< Address, ExternalConstant * > external_references_
 
ZoneVector< InitialValue * > parameters_
 
ZoneVector< MaglevCallSiteInfo * > inlineable_calls_
 
ZoneMap< InlinedAllocation *, SmallAllocationVectorallocations_escape_map_
 
ZoneMap< InlinedAllocation *, SmallAllocationVectorallocations_elide_map_
 
RegList register_inputs_
 
compiler::ZoneRefMap< compiler::ObjectRef, Constant * > constants_
 
compiler::ZoneRefMap< compiler::HeapObjectRef, TrustedConstant * > trusted_constants_
 
ZoneVector< OptimizedCompilationInfo::InlinedFunctionHolderinlined_functions_
 
ZoneVector< Node * > node_buffer_
 
bool has_recursive_calls_ = false
 
int total_inlined_bytecode_size_ = 0
 
int total_peeled_bytecode_size_ = 0
 
bool is_osr_ = false
 
uint32_t object_ids_ = 0
 
bool has_resumable_generator_ = false
 
ZoneUnorderedMap< ValueNode *, compiler::OptionalScopeInfoRef > scope_infos_
 
BasicBlock::Id max_block_id_ = 0
 

Detailed Description

Definition at line 25 of file maglev-graph.h.

Member Typedef Documentation

◆ SmallAllocationVector

Constructor & Destructor Documentation

◆ Graph()

v8::internal::maglev::Graph::Graph ( Zone * zone,
bool is_osr )
inline

Definition at line 32 of file maglev-graph.h.

Here is the call graph for this function:

Member Function Documentation

◆ Add()

void v8::internal::maglev::Graph::Add ( BasicBlock * block)
inline

Definition at line 69 of file maglev-graph.h.

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

◆ add_inlined_bytecode_size()

void v8::internal::maglev::Graph::add_inlined_bytecode_size ( int size)
inline

Definition at line 131 of file maglev-graph.h.

Here is the caller graph for this function:

◆ add_peeled_bytecode_size()

void v8::internal::maglev::Graph::add_peeled_bytecode_size ( int size)
inline

Definition at line 136 of file maglev-graph.h.

◆ allocations_elide_map()

ZoneMap< InlinedAllocation *, SmallAllocationVector > & v8::internal::maglev::Graph::allocations_elide_map ( )
inline

Definition at line 168 of file maglev-graph.h.

Here is the caller graph for this function:

◆ allocations_escape_map()

ZoneMap< InlinedAllocation *, SmallAllocationVector > & v8::internal::maglev::Graph::allocations_escape_map ( )
inline

Definition at line 163 of file maglev-graph.h.

Here is the caller graph for this function:

◆ begin()

BlockConstIterator v8::internal::maglev::Graph::begin ( ) const
inline

Definition at line 62 of file maglev-graph.h.

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

◆ blocks()

ZoneVector< BasicBlock * > & v8::internal::maglev::Graph::blocks ( )
inline

Definition at line 60 of file maglev-graph.h.

Here is the caller graph for this function:

◆ constants()

compiler::ZoneRefMap< compiler::ObjectRef, Constant * > & v8::internal::maglev::Graph::constants ( )
inline

Definition at line 173 of file maglev-graph.h.

Here is the caller graph for this function:

◆ end()

BlockConstIterator v8::internal::maglev::Graph::end ( ) const
inline

Definition at line 63 of file maglev-graph.h.

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

◆ external_references()

ZoneMap< Address, ExternalConstant * > & v8::internal::maglev::Graph::external_references ( )
inline

Definition at line 147 of file maglev-graph.h.

Here is the caller graph for this function:

◆ float64()

ZoneMap< uint64_t, Float64Constant * > & v8::internal::maglev::Graph::float64 ( )
inline

Definition at line 146 of file maglev-graph.h.

Here is the caller graph for this function:

◆ has_recursive_calls()

bool v8::internal::maglev::Graph::has_recursive_calls ( ) const
inline

Definition at line 186 of file maglev-graph.h.

◆ has_resumable_generator()

bool v8::internal::maglev::Graph::has_resumable_generator ( ) const
inline

Definition at line 201 of file maglev-graph.h.

◆ inlineable_calls()

ZoneVector< MaglevCallSiteInfo * > & v8::internal::maglev::Graph::inlineable_calls ( )
inline

Definition at line 152 of file maglev-graph.h.

Here is the caller graph for this function:

◆ inlined_functions()

ZoneVector< OptimizedCompilationInfo::InlinedFunctionHolder > & v8::internal::maglev::Graph::inlined_functions ( )
inline

Definition at line 183 of file maglev-graph.h.

Here is the caller graph for this function:

◆ int32()

ZoneMap< int32_t, Int32Constant * > & v8::internal::maglev::Graph::int32 ( )
inline

Definition at line 144 of file maglev-graph.h.

Here is the caller graph for this function:

◆ is_osr()

bool v8::internal::maglev::Graph::is_osr ( ) const
inline

Definition at line 189 of file maglev-graph.h.

Here is the caller graph for this function:

◆ IterateGraphAndSweepDeadBlocks()

template<typename Function >
void v8::internal::maglev::Graph::IterateGraphAndSweepDeadBlocks ( Function && is_dead)
inline

Definition at line 83 of file maglev-graph.h.

Here is the call graph for this function:

◆ last_block()

BasicBlock * v8::internal::maglev::Graph::last_block ( ) const
inline

Definition at line 67 of file maglev-graph.h.

Here is the call graph for this function:

◆ max_block_id()

BasicBlock::Id v8::internal::maglev::Graph::max_block_id ( ) const
inline

Definition at line 267 of file maglev-graph.h.

◆ max_call_stack_args()

uint32_t v8::internal::maglev::Graph::max_call_stack_args ( ) const
inline

Definition at line 105 of file maglev-graph.h.

◆ max_deopted_stack_size()

uint32_t v8::internal::maglev::Graph::max_deopted_stack_size ( ) const
inline

Definition at line 106 of file maglev-graph.h.

◆ min_maglev_stackslots_for_unoptimized_frame_size()

uint32_t v8::internal::maglev::Graph::min_maglev_stackslots_for_unoptimized_frame_size ( )
inline

Definition at line 190 of file maglev-graph.h.

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

◆ New()

static Graph * v8::internal::maglev::Graph::New ( Zone * zone,
bool is_osr )
inlinestatic

Definition at line 27 of file maglev-graph.h.

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

◆ NewObjectId()

uint32_t v8::internal::maglev::Graph::NewObjectId ( )
inline

Definition at line 198 of file maglev-graph.h.

Here is the caller graph for this function:

◆ node_buffer()

ZoneVector< Node * > & v8::internal::maglev::Graph::node_buffer ( )
inline

Definition at line 156 of file maglev-graph.h.

Here is the caller graph for this function:

◆ num_blocks()

int v8::internal::maglev::Graph::num_blocks ( ) const
inline

Definition at line 59 of file maglev-graph.h.

Here is the call graph for this function:

◆ operator[]() [1/2]

BasicBlock * v8::internal::maglev::Graph::operator[] ( int i)
inline

Definition at line 56 of file maglev-graph.h.

◆ operator[]() [2/2]

const BasicBlock * v8::internal::maglev::Graph::operator[] ( int i) const
inline

Definition at line 57 of file maglev-graph.h.

◆ osr_values()

ZoneVector< InitialValue * > & v8::internal::maglev::Graph::osr_values ( )
inline

Definition at line 141 of file maglev-graph.h.

Here is the caller graph for this function:

◆ parameters()

ZoneVector< InitialValue * > & v8::internal::maglev::Graph::parameters ( )
inline

Definition at line 150 of file maglev-graph.h.

Here is the caller graph for this function:

◆ rbegin()

BlockConstReverseIterator v8::internal::maglev::Graph::rbegin ( ) const
inline

Definition at line 64 of file maglev-graph.h.

Here is the call graph for this function:

◆ record_scope_info()

void v8::internal::maglev::Graph::record_scope_info ( ValueNode * context,
compiler::OptionalScopeInfoRef scope_info )
inline

Definition at line 260 of file maglev-graph.h.

Here is the caller graph for this function:

◆ register_inputs()

RegList & v8::internal::maglev::Graph::register_inputs ( )
inline

Definition at line 172 of file maglev-graph.h.

◆ rend()

BlockConstReverseIterator v8::internal::maglev::Graph::rend ( ) const
inline

Definition at line 65 of file maglev-graph.h.

Here is the call graph for this function:

◆ root()

ZoneMap< RootIndex, RootConstant * > & v8::internal::maglev::Graph::root ( )
inline

Definition at line 140 of file maglev-graph.h.

Here is the caller graph for this function:

◆ set_blocks()

void v8::internal::maglev::Graph::set_blocks ( ZoneVector< BasicBlock * > blocks)
inline

Definition at line 80 of file maglev-graph.h.

Here is the call graph for this function:

◆ set_has_recursive_calls()

void v8::internal::maglev::Graph::set_has_recursive_calls ( bool value)
inline

Definition at line 187 of file maglev-graph.h.

Here is the caller graph for this function:

◆ set_has_resumable_generator()

void v8::internal::maglev::Graph::set_has_resumable_generator ( )
inline

Definition at line 200 of file maglev-graph.h.

◆ set_max_call_stack_args()

void v8::internal::maglev::Graph::set_max_call_stack_args ( uint32_t stack_slots)
inline

Definition at line 117 of file maglev-graph.h.

◆ set_max_deopted_stack_size()

void v8::internal::maglev::Graph::set_max_deopted_stack_size ( uint32_t size)
inline

Definition at line 122 of file maglev-graph.h.

◆ set_tagged_stack_slots()

void v8::internal::maglev::Graph::set_tagged_stack_slots ( uint32_t stack_slots)
inline

Definition at line 107 of file maglev-graph.h.

Here is the caller graph for this function:

◆ set_untagged_stack_slots()

void v8::internal::maglev::Graph::set_untagged_stack_slots ( uint32_t stack_slots)
inline

Definition at line 112 of file maglev-graph.h.

Here is the caller graph for this function:

◆ smi()

ZoneMap< int, SmiConstant * > & v8::internal::maglev::Graph::smi ( )
inline

Definition at line 142 of file maglev-graph.h.

Here is the caller graph for this function:

◆ tagged_index()

ZoneMap< int, TaggedIndexConstant * > & v8::internal::maglev::Graph::tagged_index ( )
inline

Definition at line 143 of file maglev-graph.h.

Here is the caller graph for this function:

◆ tagged_stack_slots()

uint32_t v8::internal::maglev::Graph::tagged_stack_slots ( ) const
inline

Definition at line 103 of file maglev-graph.h.

◆ total_inlined_bytecode_size()

int v8::internal::maglev::Graph::total_inlined_bytecode_size ( ) const
inline

Definition at line 128 of file maglev-graph.h.

Here is the caller graph for this function:

◆ total_peeled_bytecode_size()

int v8::internal::maglev::Graph::total_peeled_bytecode_size ( ) const
inline

Definition at line 135 of file maglev-graph.h.

◆ trusted_constants()

compiler::ZoneRefMap< compiler::HeapObjectRef, TrustedConstant * > & v8::internal::maglev::Graph::trusted_constants ( )
inline

Definition at line 178 of file maglev-graph.h.

Here is the caller graph for this function:

◆ TryGetScopeInfo()

compiler::OptionalScopeInfoRef v8::internal::maglev::Graph::TryGetScopeInfo ( ValueNode * context,
compiler::JSHeapBroker * broker )
inline

Definition at line 224 of file maglev-graph.h.

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

◆ TryGetScopeInfoForContextLoad()

compiler::OptionalScopeInfoRef v8::internal::maglev::Graph::TryGetScopeInfoForContextLoad ( ValueNode * context,
int offset,
compiler::JSHeapBroker * broker )
inline

Definition at line 203 of file maglev-graph.h.

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

◆ uint32()

ZoneMap< uint32_t, Uint32Constant * > & v8::internal::maglev::Graph::uint32 ( )
inline

Definition at line 145 of file maglev-graph.h.

Here is the caller graph for this function:

◆ untagged_stack_slots()

uint32_t v8::internal::maglev::Graph::untagged_stack_slots ( ) const
inline

Definition at line 104 of file maglev-graph.h.

◆ zone()

Zone * v8::internal::maglev::Graph::zone ( ) const
inline

Definition at line 265 of file maglev-graph.h.

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

Member Data Documentation

◆ allocations_elide_map_

ZoneMap<InlinedAllocation*, SmallAllocationVector> v8::internal::maglev::Graph::allocations_elide_map_
private

Definition at line 287 of file maglev-graph.h.

◆ allocations_escape_map_

ZoneMap<InlinedAllocation*, SmallAllocationVector> v8::internal::maglev::Graph::allocations_escape_map_
private

Definition at line 286 of file maglev-graph.h.

◆ blocks_

ZoneVector<BasicBlock*> v8::internal::maglev::Graph::blocks_
private

Definition at line 274 of file maglev-graph.h.

◆ constants_

compiler::ZoneRefMap<compiler::ObjectRef, Constant*> v8::internal::maglev::Graph::constants_
private

Definition at line 289 of file maglev-graph.h.

◆ external_references_

ZoneMap<Address, ExternalConstant*> v8::internal::maglev::Graph::external_references_
private

Definition at line 283 of file maglev-graph.h.

◆ float_

ZoneMap<uint64_t, Float64Constant*> v8::internal::maglev::Graph::float_
private

Definition at line 282 of file maglev-graph.h.

◆ has_recursive_calls_

bool v8::internal::maglev::Graph::has_recursive_calls_ = false
private

Definition at line 295 of file maglev-graph.h.

◆ has_resumable_generator_

bool v8::internal::maglev::Graph::has_resumable_generator_ = false
private

Definition at line 300 of file maglev-graph.h.

◆ inlineable_calls_

ZoneVector<MaglevCallSiteInfo*> v8::internal::maglev::Graph::inlineable_calls_
private

Definition at line 285 of file maglev-graph.h.

◆ inlined_functions_

ZoneVector<OptimizedCompilationInfo::InlinedFunctionHolder> v8::internal::maglev::Graph::inlined_functions_
private

Definition at line 293 of file maglev-graph.h.

◆ int32_

ZoneMap<int32_t, Int32Constant*> v8::internal::maglev::Graph::int32_
private

Definition at line 279 of file maglev-graph.h.

◆ is_osr_

bool v8::internal::maglev::Graph::is_osr_ = false
private

Definition at line 298 of file maglev-graph.h.

◆ max_block_id_

BasicBlock::Id v8::internal::maglev::Graph::max_block_id_ = 0
private

Definition at line 302 of file maglev-graph.h.

◆ max_call_stack_args_

uint32_t v8::internal::maglev::Graph::max_call_stack_args_ = kMaxUInt32
private

Definition at line 272 of file maglev-graph.h.

◆ max_deopted_stack_size_

uint32_t v8::internal::maglev::Graph::max_deopted_stack_size_ = kMaxUInt32
private

Definition at line 273 of file maglev-graph.h.

◆ node_buffer_

ZoneVector<Node*> v8::internal::maglev::Graph::node_buffer_
private

Definition at line 294 of file maglev-graph.h.

◆ object_ids_

uint32_t v8::internal::maglev::Graph::object_ids_ = 0
private

Definition at line 299 of file maglev-graph.h.

◆ osr_values_

ZoneVector<InitialValue*> v8::internal::maglev::Graph::osr_values_
private

Definition at line 276 of file maglev-graph.h.

◆ parameters_

ZoneVector<InitialValue*> v8::internal::maglev::Graph::parameters_
private

Definition at line 284 of file maglev-graph.h.

◆ register_inputs_

RegList v8::internal::maglev::Graph::register_inputs_
private

Definition at line 288 of file maglev-graph.h.

◆ root_

ZoneMap<RootIndex, RootConstant*> v8::internal::maglev::Graph::root_
private

Definition at line 275 of file maglev-graph.h.

◆ scope_infos_

ZoneUnorderedMap<ValueNode*, compiler::OptionalScopeInfoRef> v8::internal::maglev::Graph::scope_infos_
private

Definition at line 301 of file maglev-graph.h.

◆ smi_

ZoneMap<int, SmiConstant*> v8::internal::maglev::Graph::smi_
private

Definition at line 277 of file maglev-graph.h.

◆ tagged_index_

ZoneMap<int, TaggedIndexConstant*> v8::internal::maglev::Graph::tagged_index_
private

Definition at line 278 of file maglev-graph.h.

◆ tagged_stack_slots_

uint32_t v8::internal::maglev::Graph::tagged_stack_slots_ = kMaxUInt32
private

Definition at line 270 of file maglev-graph.h.

◆ total_inlined_bytecode_size_

int v8::internal::maglev::Graph::total_inlined_bytecode_size_ = 0
private

Definition at line 296 of file maglev-graph.h.

◆ total_peeled_bytecode_size_

int v8::internal::maglev::Graph::total_peeled_bytecode_size_ = 0
private

Definition at line 297 of file maglev-graph.h.

◆ trusted_constants_

compiler::ZoneRefMap<compiler::HeapObjectRef, TrustedConstant*> v8::internal::maglev::Graph::trusted_constants_
private

Definition at line 291 of file maglev-graph.h.

◆ uint32_

ZoneMap<uint32_t, Uint32Constant*> v8::internal::maglev::Graph::uint32_
private

Definition at line 280 of file maglev-graph.h.

◆ untagged_stack_slots_

uint32_t v8::internal::maglev::Graph::untagged_stack_slots_ = kMaxUInt32
private

Definition at line 271 of file maglev-graph.h.


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