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

#include <maglev-interpreter-frame-state.h>

Collaboration diagram for v8::internal::maglev::KnownNodeAspects:

Classes

struct  AvailableExpression
 
class  LoadedPropertyMapKey
 

Public Types

enum class  ContextSlotLoadsAlias : uint8_t {
  Invalid , None , OnlyLoadsRelativeToCurrentContext , OnlyLoadsRelativeToConstant ,
  Yes
}
 
using NodeInfos = ZoneMap<ValueNode*, NodeInfo>
 
using LoadedPropertyMap
 
using LoadedContextSlotsKey = std::tuple<ValueNode*, int>
 
using LoadedContextSlots = ZoneMap<LoadedContextSlotsKey, ValueNode*>
 

Public Member Functions

KnownNodeAspectsoperator= (const KnownNodeAspects &other)=delete
 
 KnownNodeAspects (KnownNodeAspects &&other)=delete
 
KnownNodeAspectsoperator= (KnownNodeAspects &&other)=delete
 
KnownNodeAspectsClone (Zone *zone) const
 
KnownNodeAspectsCloneForLoopHeader (bool optimistic_initial_state, LoopEffects *loop_effects, Zone *zone) const
 
void ClearUnstableNodeAspects ()
 
void ClearUnstableMaps ()
 
template<typename Function >
void ClearUnstableMapsIfAny (const Function &condition)
 
void ClearAvailableExpressions ()
 
NodeInfos::iterator FindInfo (ValueNode *node)
 
NodeInfos::const_iterator FindInfo (ValueNode *node) const
 
bool IsValid (NodeInfos::iterator &it)
 
bool IsValid (NodeInfos::const_iterator &it) const
 
const NodeInfoTryGetInfoFor (ValueNode *node) const
 
NodeInfoTryGetInfoFor (ValueNode *node)
 
NodeInfoGetOrCreateInfoFor (ValueNode *node, compiler::JSHeapBroker *broker, LocalIsolate *isolate)
 
NodeType NodeTypeFor (ValueNode *node) const
 
void Merge (const KnownNodeAspects &other, Zone *zone)
 
bool IsCompatibleWithLoopHeader (const KnownNodeAspects &other) const
 
ContextSlotLoadsAlias may_have_aliasing_contexts () const
 
void UpdateMayHaveAliasingContexts (ValueNode *context)
 
uint32_t effect_epoch () const
 
void increment_effect_epoch ()
 
 KnownNodeAspects (Zone *zone)
 

Public Attributes

bool any_map_for_any_node_is_unstable
 
LoadedPropertyMap loaded_constant_properties
 
LoadedPropertyMap loaded_properties
 
ZoneMap< std::tuple< ValueNode *, int >, ValueNode * > loaded_context_constants
 
LoadedContextSlots loaded_context_slots
 
ZoneMap< uint32_t, AvailableExpressionavailable_expressions
 

Static Public Attributes

static constexpr uint32_t kEffectEpochForPureInstructions
 
static constexpr uint32_t kEffectEpochOverflow
 

Private Member Functions

 KnownNodeAspects (const KnownNodeAspects &other) V8_NOEXCEPT=default
 
 KnownNodeAspects (const KnownNodeAspects &other, bool optimistic_initial_state, LoopEffects *loop_effects, Zone *zone)
 

Private Attributes

ContextSlotLoadsAlias may_have_aliasing_contexts_
 
uint32_t effect_epoch_
 
NodeInfos node_infos
 

Friends

KnownNodeAspectsZone::New (const KnownNodeAspects &)
 
KnownNodeAspectsZone::New (const KnownNodeAspects &, bool &, maglev::LoopEffects *&, Zone *&)
 

Detailed Description

Definition at line 263 of file maglev-interpreter-frame-state.h.

Member Typedef Documentation

◆ LoadedContextSlots

◆ LoadedContextSlotsKey

◆ LoadedPropertyMap

Initial value:
ZoneMap<LoadedPropertyMapKey, ZoneMap<ValueNode*, ValueNode*>>

Definition at line 423 of file maglev-interpreter-frame-state.h.

◆ NodeInfos

Member Enumeration Documentation

◆ ContextSlotLoadsAlias

Enumerator
Invalid 
None 
OnlyLoadsRelativeToCurrentContext 
OnlyLoadsRelativeToConstant 
Yes 

Definition at line 433 of file maglev-interpreter-frame-state.h.

Constructor & Destructor Documentation

◆ KnownNodeAspects() [1/4]

v8::internal::maglev::KnownNodeAspects::KnownNodeAspects ( KnownNodeAspects && other)
delete

◆ KnownNodeAspects() [2/4]

v8::internal::maglev::KnownNodeAspects::KnownNodeAspects ( Zone * zone)
inlineexplicit

Definition at line 484 of file maglev-interpreter-frame-state.h.

◆ KnownNodeAspects() [3/4]

v8::internal::maglev::KnownNodeAspects::KnownNodeAspects ( const KnownNodeAspects & other)
privatedefault

◆ KnownNodeAspects() [4/4]

v8::internal::maglev::KnownNodeAspects::KnownNodeAspects ( const KnownNodeAspects & other,
bool optimistic_initial_state,
LoopEffects * loop_effects,
Zone * zone )
private

Definition at line 127 of file maglev-interpreter-frame-state.cc.

Member Function Documentation

◆ ClearAvailableExpressions()

void v8::internal::maglev::KnownNodeAspects::ClearAvailableExpressions ( )
inline

Definition at line 309 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ ClearUnstableMaps()

void v8::internal::maglev::KnownNodeAspects::ClearUnstableMaps ( )
inline

Definition at line 287 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ ClearUnstableMapsIfAny()

template<typename Function >
void v8::internal::maglev::KnownNodeAspects::ClearUnstableMapsIfAny ( const Function & condition)
inline

Definition at line 302 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ ClearUnstableNodeAspects()

void v8::internal::maglev::KnownNodeAspects::ClearUnstableNodeAspects ( )

Definition at line 108 of file maglev-interpreter-frame-state.cc.

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

◆ Clone()

KnownNodeAspects * v8::internal::maglev::KnownNodeAspects::Clone ( Zone * zone) const
inline

Definition at line 273 of file maglev-interpreter-frame-state.h.

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

◆ CloneForLoopHeader()

KnownNodeAspects * v8::internal::maglev::KnownNodeAspects::CloneForLoopHeader ( bool optimistic_initial_state,
LoopEffects * loop_effects,
Zone * zone ) const

Definition at line 122 of file maglev-interpreter-frame-state.cc.

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

◆ effect_epoch()

uint32_t v8::internal::maglev::KnownNodeAspects::effect_epoch ( ) const
inline

Definition at line 475 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ FindInfo() [1/2]

NodeInfos::iterator v8::internal::maglev::KnownNodeAspects::FindInfo ( ValueNode * node)
inline

Definition at line 311 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ FindInfo() [2/2]

NodeInfos::const_iterator v8::internal::maglev::KnownNodeAspects::FindInfo ( ValueNode * node) const
inline

Definition at line 314 of file maglev-interpreter-frame-state.h.

◆ GetOrCreateInfoFor()

NodeInfo * v8::internal::maglev::KnownNodeAspects::GetOrCreateInfoFor ( ValueNode * node,
compiler::JSHeapBroker * broker,
LocalIsolate * isolate )
inline

Definition at line 330 of file maglev-interpreter-frame-state.h.

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

◆ increment_effect_epoch()

void v8::internal::maglev::KnownNodeAspects::increment_effect_epoch ( )
inline

Definition at line 480 of file maglev-interpreter-frame-state.h.

◆ IsCompatibleWithLoopHeader()

bool v8::internal::maglev::KnownNodeAspects::IsCompatibleWithLoopHeader ( const KnownNodeAspects & other) const

Definition at line 289 of file maglev-interpreter-frame-state.cc.

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

◆ IsValid() [1/2]

bool v8::internal::maglev::KnownNodeAspects::IsValid ( NodeInfos::const_iterator & it) const
inline

Definition at line 318 of file maglev-interpreter-frame-state.h.

◆ IsValid() [2/2]

bool v8::internal::maglev::KnownNodeAspects::IsValid ( NodeInfos::iterator & it)
inline

Definition at line 317 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ may_have_aliasing_contexts()

ContextSlotLoadsAlias v8::internal::maglev::KnownNodeAspects::may_have_aliasing_contexts ( ) const
inline

Definition at line 440 of file maglev-interpreter-frame-state.h.

Here is the caller graph for this function:

◆ Merge()

void v8::internal::maglev::KnownNodeAspects::Merge ( const KnownNodeAspects & other,
Zone * zone )

Definition at line 43 of file maglev-interpreter-frame-state.cc.

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

◆ NodeTypeFor()

NodeType v8::internal::maglev::KnownNodeAspects::NodeTypeFor ( ValueNode * node) const
inline

Definition at line 339 of file maglev-interpreter-frame-state.h.

Here is the call graph for this function:

◆ operator=() [1/2]

KnownNodeAspects & v8::internal::maglev::KnownNodeAspects::operator= ( const KnownNodeAspects & other)
delete

◆ operator=() [2/2]

KnownNodeAspects & v8::internal::maglev::KnownNodeAspects::operator= ( KnownNodeAspects && other)
delete

◆ TryGetInfoFor() [1/2]

NodeInfo * v8::internal::maglev::KnownNodeAspects::TryGetInfoFor ( ValueNode * node)
inline

Definition at line 325 of file maglev-interpreter-frame-state.h.

Here is the call graph for this function:

◆ TryGetInfoFor() [2/2]

const NodeInfo * v8::internal::maglev::KnownNodeAspects::TryGetInfoFor ( ValueNode * node) const
inline

Definition at line 322 of file maglev-interpreter-frame-state.h.

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

◆ UpdateMayHaveAliasingContexts()

void v8::internal::maglev::KnownNodeAspects::UpdateMayHaveAliasingContexts ( ValueNode * context)
inline

Definition at line 444 of file maglev-interpreter-frame-state.h.

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

Friends And Related Symbol Documentation

◆ Zone::New [1/2]

◆ Zone::New [2/2]

Member Data Documentation

◆ any_map_for_any_node_is_unstable

bool v8::internal::maglev::KnownNodeAspects::any_map_for_any_node_is_unstable

Definition at line 356 of file maglev-interpreter-frame-state.h.

◆ available_expressions

ZoneMap<uint32_t, AvailableExpression> v8::internal::maglev::KnownNodeAspects::available_expressions

Definition at line 474 of file maglev-interpreter-frame-state.h.

◆ effect_epoch_

uint32_t v8::internal::maglev::KnownNodeAspects::effect_epoch_
private

Definition at line 498 of file maglev-interpreter-frame-state.h.

◆ kEffectEpochForPureInstructions

uint32_t v8::internal::maglev::KnownNodeAspects::kEffectEpochForPureInstructions
staticconstexpr
Initial value:
=
std::numeric_limits<uint32_t>::max()

Definition at line 476 of file maglev-interpreter-frame-state.h.

◆ kEffectEpochOverflow

uint32_t v8::internal::maglev::KnownNodeAspects::kEffectEpochOverflow
staticconstexpr
Initial value:

Definition at line 478 of file maglev-interpreter-frame-state.h.

◆ loaded_constant_properties

LoadedPropertyMap v8::internal::maglev::KnownNodeAspects::loaded_constant_properties

Definition at line 427 of file maglev-interpreter-frame-state.h.

◆ loaded_context_constants

ZoneMap<std::tuple<ValueNode*, int>, ValueNode*> v8::internal::maglev::KnownNodeAspects::loaded_context_constants

Definition at line 432 of file maglev-interpreter-frame-state.h.

◆ loaded_context_slots

LoadedContextSlots v8::internal::maglev::KnownNodeAspects::loaded_context_slots

Definition at line 468 of file maglev-interpreter-frame-state.h.

◆ loaded_properties

LoadedPropertyMap v8::internal::maglev::KnownNodeAspects::loaded_properties

Definition at line 429 of file maglev-interpreter-frame-state.h.

◆ may_have_aliasing_contexts_

ContextSlotLoadsAlias v8::internal::maglev::KnownNodeAspects::may_have_aliasing_contexts_
private

◆ node_infos

NodeInfos v8::internal::maglev::KnownNodeAspects::node_infos
private

Definition at line 500 of file maglev-interpreter-frame-state.h.


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