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

#include <feedback-vector.h>

Collaboration diagram for v8::internal::FeedbackNexus:

Public Types

using TryUpdateHandler = std::function<MaybeHandle<Map>(Handle<Map>)>
 
using SpeculationModeField = base::BitField<SpeculationMode, 0, 1>
 
using CallFeedbackContentField = base::BitField<CallFeedbackContent, 1, 1>
 
using CallCountField = base::BitField<uint32_t, 2, 30>
 

Public Member Functions

 FeedbackNexus (Isolate *isolate, Handle< FeedbackVector > vector, FeedbackSlot slot)
 
 FeedbackNexus (Isolate *, Tagged< FeedbackVector > vector, FeedbackSlot slot)
 
 FeedbackNexus (Handle< FeedbackVector > vector, FeedbackSlot slot, const NexusConfig &config)
 
const NexusConfigconfig () const
 
DirectHandle< FeedbackVectorvector_handle () const
 
Tagged< FeedbackVectorvector () const
 
FeedbackSlot slot () const
 
FeedbackSlotKind kind () const
 
LanguageMode GetLanguageMode () const
 
InlineCacheState ic_state () const
 
bool IsUninitialized () const
 
bool IsMegamorphic () const
 
bool IsGeneric () const
 
void Print (std::ostream &os)
 
Tagged< MapGetFirstMap () const
 
int ExtractMaps (MapHandles *maps) const
 
int ExtractMapsAndHandlers (MapsAndHandlers *maps_and_handlers, TryUpdateHandler map_handler=TryUpdateHandler()) const
 
MaybeObjectDirectHandle FindHandlerForMap (DirectHandle< Map > map) const
 
template<typename F >
void IterateMapsWithUnclearedHandler (F) const
 
bool IsCleared () const
 
bool Clear (ClearBehavior behavior)
 
void ConfigureUninitialized ()
 
bool ConfigureMegamorphic ()
 
bool ConfigureMegamorphic (IcCheckType property_type)
 
Tagged< MaybeObjectGetFeedback () const
 
Tagged< MaybeObjectGetFeedbackExtra () const
 
std::pair< Tagged< MaybeObject >, Tagged< MaybeObject > > GetFeedbackPair () const
 
void ConfigureMonomorphic (DirectHandle< Name > name, DirectHandle< Map > receiver_map, const MaybeObjectDirectHandle &handler)
 
void ConfigurePolymorphic (DirectHandle< Name > name, MapsAndHandlers const &maps_and_handlers)
 
void ConfigureMegaDOM (const MaybeObjectDirectHandle &handler)
 
MaybeObjectHandle ExtractMegaDOMHandler ()
 
BinaryOperationHint GetBinaryOperationFeedback () const
 
CompareOperationHint GetCompareOperationFeedback () const
 
TypeOfFeedback::Result GetTypeOfFeedback () const
 
ForInHint GetForInFeedback () const
 
KeyedAccessLoadMode GetKeyedAccessLoadMode () const
 
KeyedAccessStoreMode GetKeyedAccessStoreMode () const
 
IcCheckType GetKeyType () const
 
Tagged< NameGetName () const
 
int GetCallCount ()
 
void SetSpeculationMode (SpeculationMode mode)
 
SpeculationMode GetSpeculationMode ()
 
CallFeedbackContent GetCallFeedbackContent ()
 
float ComputeCallFrequency ()
 
MaybeDirectHandle< JSObjectGetConstructorFeedback () const
 
void ConfigurePropertyCellMode (DirectHandle< PropertyCell > cell)
 
bool ConfigureLexicalVarMode (int script_context_index, int context_slot_index, bool immutable)
 
void ConfigureHandlerMode (const MaybeObjectDirectHandle &handler)
 
void ConfigureCloneObject (DirectHandle< Map > source_map, const MaybeObjectHandle &handler)
 

Static Public Attributes

static constexpr int kCloneObjectPolymorphicEntrySize = 2
 

Private Member Functions

template<typename FeedbackType >
void SetFeedback (Tagged< FeedbackType > feedback, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
 
template<typename FeedbackType , typename FeedbackExtraType >
void SetFeedback (Tagged< FeedbackType > feedback, WriteBarrierMode mode, Tagged< FeedbackExtraType > feedback_extra, WriteBarrierMode mode_extra=UPDATE_WRITE_BARRIER)
 
Tagged< MaybeObjectUninitializedSentinel () const
 
Tagged< MaybeObjectMegamorphicSentinel () const
 
Tagged< MaybeObjectMegaDOMSentinel () const
 
DirectHandle< WeakFixedArrayCreateArrayOfSize (int length)
 
Tagged< MaybeObjectFromHandle (MaybeObjectDirectHandle slot) const
 
MaybeObjectHandle ToHandle (Tagged< MaybeObject > value) const
 

Private Attributes

Handle< FeedbackVectorvector_handle_
 
Tagged< FeedbackVectorvector_
 
FeedbackSlot slot_
 
FeedbackSlotKind kind_
 
std::optional< std::pair< MaybeObjectHandle, MaybeObjectHandle > > feedback_cache_
 
NexusConfig config_
 
Isolateisolate_
 

Detailed Description

Definition at line 926 of file feedback-vector.h.

Member Typedef Documentation

◆ CallCountField

Definition at line 1036 of file feedback-vector.h.

◆ CallFeedbackContentField

◆ SpeculationModeField

◆ TryUpdateHandler

Definition at line 971 of file feedback-vector.h.

Constructor & Destructor Documentation

◆ FeedbackNexus() [1/3]

v8::internal::FeedbackNexus::FeedbackNexus ( Isolate * isolate,
Handle< FeedbackVector > vector,
FeedbackSlot slot )

Definition at line 580 of file feedback-vector.cc.

Here is the call graph for this function:

◆ FeedbackNexus() [2/3]

v8::internal::FeedbackNexus::FeedbackNexus ( Isolate * isolate,
Tagged< FeedbackVector > vector,
FeedbackSlot slot )

Definition at line 588 of file feedback-vector.cc.

Here is the call graph for this function:

◆ FeedbackNexus() [3/3]

v8::internal::FeedbackNexus::FeedbackNexus ( Handle< FeedbackVector > vector,
FeedbackSlot slot,
const NexusConfig & config )

Definition at line 596 of file feedback-vector.cc.

Member Function Documentation

◆ Clear()

bool v8::internal::FeedbackNexus::Clear ( ClearBehavior behavior)

Definition at line 650 of file feedback-vector.cc.

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

◆ ComputeCallFrequency()

float v8::internal::FeedbackNexus::ComputeCallFrequency ( )

Definition at line 1102 of file feedback-vector.cc.

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

◆ config()

const NexusConfig * v8::internal::FeedbackNexus::config ( ) const
inline

Definition at line 938 of file feedback-vector.h.

Here is the caller graph for this function:

◆ ConfigureCloneObject()

void v8::internal::FeedbackNexus::ConfigureCloneObject ( DirectHandle< Map > source_map,
const MaybeObjectHandle & handler )

Definition at line 974 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigureHandlerMode()

void v8::internal::FeedbackNexus::ConfigureHandlerMode ( const MaybeObjectDirectHandle & handler)

Definition at line 966 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigureLexicalVarMode()

bool v8::internal::FeedbackNexus::ConfigureLexicalVarMode ( int script_context_index,
int context_slot_index,
bool immutable )

Definition at line 940 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigureMegaDOM()

void v8::internal::FeedbackNexus::ConfigureMegaDOM ( const MaybeObjectDirectHandle & handler)

Definition at line 717 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigureMegamorphic() [1/2]

bool v8::internal::FeedbackNexus::ConfigureMegamorphic ( )

Definition at line 705 of file feedback-vector.cc.

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

◆ ConfigureMegamorphic() [2/2]

bool v8::internal::FeedbackNexus::ConfigureMegamorphic ( IcCheckType property_type)

Definition at line 724 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigureMonomorphic()

void v8::internal::FeedbackNexus::ConfigureMonomorphic ( DirectHandle< Name > name,
DirectHandle< Map > receiver_map,
const MaybeObjectDirectHandle & handler )

Definition at line 1113 of file feedback-vector.cc.

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

◆ ConfigurePolymorphic()

void v8::internal::FeedbackNexus::ConfigurePolymorphic ( DirectHandle< Name > name,
MapsAndHandlers const & maps_and_handlers )

Definition at line 1131 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigurePropertyCellMode()

void v8::internal::FeedbackNexus::ConfigurePropertyCellMode ( DirectHandle< PropertyCell > cell)

Definition at line 926 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ConfigureUninitialized()

void v8::internal::FeedbackNexus::ConfigureUninitialized ( )

Definition at line 610 of file feedback-vector.cc.

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

◆ CreateArrayOfSize()

DirectHandle< WeakFixedArray > v8::internal::FeedbackNexus::CreateArrayOfSize ( int length)
private

Definition at line 603 of file feedback-vector.cc.

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

◆ ExtractMaps()

int v8::internal::FeedbackNexus::ExtractMaps ( MapHandles * maps) const

Definition at line 1152 of file feedback-vector.cc.

Here is the call graph for this function:

◆ ExtractMapsAndHandlers()

int v8::internal::FeedbackNexus::ExtractMapsAndHandlers ( MapsAndHandlers * maps_and_handlers,
TryUpdateHandler map_handler = TryUpdateHandler() ) const

Definition at line 1177 of file feedback-vector.cc.

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

◆ ExtractMegaDOMHandler()

MaybeObjectHandle v8::internal::FeedbackNexus::ExtractMegaDOMHandler ( )

Definition at line 1163 of file feedback-vector.cc.

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

◆ FindHandlerForMap()

MaybeObjectDirectHandle v8::internal::FeedbackNexus::FindHandlerForMap ( DirectHandle< Map > map) const

Definition at line 1200 of file feedback-vector.cc.

Here is the call graph for this function:

◆ FromHandle()

Tagged< MaybeObject > v8::internal::FeedbackNexus::FromHandle ( MaybeObjectDirectHandle slot) const
inlineprivate

Definition at line 528 of file feedback-vector-inl.h.

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

◆ GetBinaryOperationFeedback()

BinaryOperationHint v8::internal::FeedbackNexus::GetBinaryOperationFeedback ( ) const

Definition at line 1372 of file feedback-vector.cc.

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

◆ GetCallCount()

int v8::internal::FeedbackNexus::GetCallCount ( )

Definition at line 1061 of file feedback-vector.cc.

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

◆ GetCallFeedbackContent()

CallFeedbackContent v8::internal::FeedbackNexus::GetCallFeedbackContent ( )

Definition at line 1093 of file feedback-vector.cc.

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

◆ GetCompareOperationFeedback()

CompareOperationHint v8::internal::FeedbackNexus::GetCompareOperationFeedback ( ) const

Definition at line 1378 of file feedback-vector.cc.

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

◆ GetConstructorFeedback()

MaybeDirectHandle< JSObject > v8::internal::FeedbackNexus::GetConstructorFeedback ( ) const

Definition at line 1395 of file feedback-vector.cc.

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

◆ GetFeedback()

Tagged< MaybeObject > v8::internal::FeedbackNexus::GetFeedback ( ) const
inline

Definition at line 538 of file feedback-vector-inl.h.

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

◆ GetFeedbackExtra()

Tagged< MaybeObject > v8::internal::FeedbackNexus::GetFeedbackExtra ( ) const
inline

Definition at line 543 of file feedback-vector-inl.h.

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

◆ GetFeedbackPair()

std::pair< Tagged< MaybeObject >, Tagged< MaybeObject > > v8::internal::FeedbackNexus::GetFeedbackPair ( ) const
inline

Definition at line 549 of file feedback-vector-inl.h.

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

◆ GetFirstMap()

Tagged< Map > v8::internal::FeedbackNexus::GetFirstMap ( ) const

Definition at line 739 of file feedback-vector.cc.

Here is the caller graph for this function:

◆ GetForInFeedback()

ForInHint v8::internal::FeedbackNexus::GetForInFeedback ( ) const

Definition at line 1389 of file feedback-vector.cc.

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

◆ GetKeyedAccessLoadMode()

KeyedAccessLoadMode v8::internal::FeedbackNexus::GetKeyedAccessLoadMode ( ) const

Definition at line 1229 of file feedback-vector.cc.

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

◆ GetKeyedAccessStoreMode()

KeyedAccessStoreMode v8::internal::FeedbackNexus::GetKeyedAccessStoreMode ( ) const

Definition at line 1296 of file feedback-vector.cc.

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

◆ GetKeyType()

IcCheckType v8::internal::FeedbackNexus::GetKeyType ( ) const

Definition at line 1353 of file feedback-vector.cc.

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

◆ GetLanguageMode()

LanguageMode v8::internal::FeedbackNexus::GetLanguageMode ( ) const
inline

Definition at line 950 of file feedback-vector.h.

◆ GetName()

Tagged< Name > v8::internal::FeedbackNexus::GetName ( ) const

Definition at line 1212 of file feedback-vector.cc.

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

◆ GetSpeculationMode()

SpeculationMode v8::internal::FeedbackNexus::GetSpeculationMode ( )

Definition at line 1084 of file feedback-vector.cc.

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

◆ GetTypeOfFeedback()

TypeOfFeedback::Result v8::internal::FeedbackNexus::GetTypeOfFeedback ( ) const

Definition at line 1384 of file feedback-vector.cc.

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

◆ ic_state()

InlineCacheState v8::internal::FeedbackNexus::ic_state ( ) const

Definition at line 748 of file feedback-vector.cc.

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

◆ IsCleared()

bool v8::internal::FeedbackNexus::IsCleared ( ) const
inline

Definition at line 981 of file feedback-vector.h.

Here is the caller graph for this function:

◆ IsGeneric()

bool v8::internal::FeedbackNexus::IsGeneric ( ) const
inline

Definition at line 961 of file feedback-vector.h.

◆ IsMegamorphic()

bool v8::internal::FeedbackNexus::IsMegamorphic ( ) const
inline

Definition at line 958 of file feedback-vector.h.

◆ IsUninitialized()

bool v8::internal::FeedbackNexus::IsUninitialized ( ) const
inline

Definition at line 955 of file feedback-vector.h.

Here is the caller graph for this function:

◆ IterateMapsWithUnclearedHandler()

template<typename F >
void v8::internal::FeedbackNexus::IterateMapsWithUnclearedHandler ( F function) const

Definition at line 583 of file feedback-vector-inl.h.

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

◆ kind()

FeedbackSlotKind v8::internal::FeedbackNexus::kind ( ) const
inline

Definition at line 948 of file feedback-vector.h.

Here is the caller graph for this function:

◆ MegaDOMSentinel()

Tagged< MaybeObject > v8::internal::FeedbackNexus::MegaDOMSentinel ( ) const
inlineprivate

Definition at line 524 of file feedback-vector-inl.h.

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

◆ MegamorphicSentinel()

Tagged< MaybeObject > v8::internal::FeedbackNexus::MegamorphicSentinel ( ) const
inlineprivate

Definition at line 520 of file feedback-vector-inl.h.

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

◆ Print()

void v8::internal::FeedbackNexus::Print ( std::ostream & os)
Here is the caller graph for this function:

◆ SetFeedback() [1/2]

template<typename FeedbackType , typename FeedbackExtraType >
void v8::internal::FeedbackNexus::SetFeedback ( Tagged< FeedbackType > feedback,
WriteBarrierMode mode,
Tagged< FeedbackExtraType > feedback_extra,
WriteBarrierMode mode_extra = UPDATE_WRITE_BARRIER )
inlineprivate

Definition at line 574 of file feedback-vector-inl.h.

Here is the call graph for this function:

◆ SetFeedback() [2/2]

template<typename FeedbackType >
void v8::internal::FeedbackNexus::SetFeedback ( Tagged< FeedbackType > feedback,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER )
inlineprivate

Definition at line 568 of file feedback-vector-inl.h.

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

◆ SetSpeculationMode()

void v8::internal::FeedbackNexus::SetSpeculationMode ( SpeculationMode mode)

Definition at line 1070 of file feedback-vector.cc.

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

◆ slot()

FeedbackSlot v8::internal::FeedbackNexus::slot ( ) const
inline

Definition at line 947 of file feedback-vector.h.

Here is the caller graph for this function:

◆ ToHandle()

MaybeObjectHandle v8::internal::FeedbackNexus::ToHandle ( Tagged< MaybeObject > value) const
inlineprivate

Definition at line 533 of file feedback-vector-inl.h.

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

◆ UninitializedSentinel()

Tagged< MaybeObject > v8::internal::FeedbackNexus::UninitializedSentinel ( ) const
inlineprivate

Definition at line 516 of file feedback-vector-inl.h.

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

◆ vector()

Tagged< FeedbackVector > v8::internal::FeedbackNexus::vector ( ) const
inline

Definition at line 943 of file feedback-vector.h.

Here is the caller graph for this function:

◆ vector_handle()

DirectHandle< FeedbackVector > v8::internal::FeedbackNexus::vector_handle ( ) const
inline

Definition at line 939 of file feedback-vector.h.

Member Data Documentation

◆ config_

NexusConfig v8::internal::FeedbackNexus::config_
private

Definition at line 1097 of file feedback-vector.h.

◆ feedback_cache_

std::optional<std::pair<MaybeObjectHandle, MaybeObjectHandle> > v8::internal::FeedbackNexus::feedback_cache_
mutableprivate

Definition at line 1096 of file feedback-vector.h.

◆ isolate_

Isolate* v8::internal::FeedbackNexus::isolate_
private

Definition at line 1098 of file feedback-vector.h.

◆ kCloneObjectPolymorphicEntrySize

int v8::internal::FeedbackNexus::kCloneObjectPolymorphicEntrySize = 2
staticconstexpr

Definition at line 1049 of file feedback-vector.h.

◆ kind_

FeedbackSlotKind v8::internal::FeedbackNexus::kind_
private

Definition at line 1092 of file feedback-vector.h.

◆ slot_

FeedbackSlot v8::internal::FeedbackNexus::slot_
private

Definition at line 1091 of file feedback-vector.h.

◆ vector_

Tagged<FeedbackVector> v8::internal::FeedbackNexus::vector_
private

Definition at line 1090 of file feedback-vector.h.

◆ vector_handle_

Handle<FeedbackVector> v8::internal::FeedbackNexus::vector_handle_
private

Definition at line 1089 of file feedback-vector.h.


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