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

#include <ic.h>

Inheritance diagram for v8::internal::IC:
Collaboration diagram for v8::internal::IC:

Public Types

using State = InlineCacheState
 

Public Member Functions

 IC (Isolate *isolate, Handle< FeedbackVector > vector, FeedbackSlot slot, FeedbackSlotKind kind)
 
virtual ~IC ()=default
 
State state () const
 
void UpdateState (DirectHandle< Object > lookup_start_object, DirectHandle< Object > name)
 
bool RecomputeHandlerForName (DirectHandle< Object > name)
 
void MarkRecomputeHandler (DirectHandle< Object > name)
 
bool IsAnyHas () const
 
bool IsAnyLoad () const
 
bool IsAnyStore () const
 
bool IsAnyDefineOwn () const
 
void OnFeedbackChanged (const char *reason)
 

Static Public Member Functions

static bool IsHandler (Tagged< MaybeObject > object)
 
static void OnFeedbackChanged (Isolate *isolate, Tagged< FeedbackVector > vector, FeedbackSlot slot, const char *reason)
 

Protected Member Functions

void set_slow_stub_reason (const char *reason)
 
void set_accessor (Handle< Object > accessor)
 
MaybeHandle< Objectaccessor () const
 
Isolateisolate () const
 
bool is_vector_set ()
 
bool vector_needs_update ()
 
bool ConfigureVectorState (IC::State new_state, DirectHandle< Object > key)
 
void ConfigureVectorState (DirectHandle< Name > name, DirectHandle< Map > map, DirectHandle< Object > handler)
 
void ConfigureVectorState (DirectHandle< Name > name, DirectHandle< Map > map, const MaybeObjectDirectHandle &handler)
 
void ConfigureVectorState (DirectHandle< Name > name, MapHandlesSpan maps, MaybeObjectHandles *handlers)
 
void ConfigureVectorState (DirectHandle< Name > name, MapsAndHandlers const &maps_and_handlers)
 
char TransitionMarkFromState (IC::State state)
 
void TraceIC (const char *type, DirectHandle< Object > name)
 
void TraceIC (const char *type, DirectHandle< Object > name, State old_state, State new_state)
 
MaybeDirectHandle< ObjectTypeError (MessageTemplate, Handle< Object > object, Handle< Object > key)
 
MaybeDirectHandle< ObjectReferenceError (Handle< Name > name)
 
void UpdateMonomorphicIC (const MaybeObjectDirectHandle &handler, DirectHandle< Name > name)
 
bool UpdateMegaDOMIC (const MaybeObjectDirectHandle &handler, DirectHandle< Name > name)
 
bool UpdatePolymorphicIC (DirectHandle< Name > name, const MaybeObjectDirectHandle &handler)
 
void UpdateMegamorphicCache (DirectHandle< Map > map, DirectHandle< Name > name, const MaybeObjectDirectHandle &handler)
 
StubCachestub_cache ()
 
void CopyICToMegamorphicCache (DirectHandle< Name > name)
 
bool IsTransitionOfMonomorphicTarget (Tagged< Map > source_map, Tagged< Map > target_map)
 
void SetCache (DirectHandle< Name > name, Handle< Object > handler)
 
void SetCache (DirectHandle< Name > name, const MaybeObjectHandle &handler)
 
FeedbackSlotKind kind () const
 
bool IsGlobalIC () const
 
bool IsLoadIC () const
 
bool IsLoadGlobalIC () const
 
bool IsKeyedLoadIC () const
 
bool IsStoreGlobalIC () const
 
bool IsSetNamedIC () const
 
bool IsDefineNamedOwnIC () const
 
bool IsStoreInArrayLiteralIC () const
 
bool IsKeyedStoreIC () const
 
bool IsKeyedHasIC () const
 
bool IsDefineKeyedOwnIC () const
 
bool is_keyed () const
 
bool ShouldRecomputeHandler (DirectHandle< String > name)
 
Handle< Maplookup_start_object_map ()
 
void update_lookup_start_object_map (DirectHandle< Object > object)
 
void TargetMaps (MapHandles *list)
 
Tagged< MapFirstTargetMap ()
 
const FeedbackNexusnexus () const
 
FeedbackNexusnexus ()
 

Private Member Functions

void FindTargetMaps ()
 
 DISALLOW_IMPLICIT_CONSTRUCTORS (IC)
 

Private Attributes

Isolateisolate_
 
bool vector_set_
 
State old_state_
 
State state_
 
FeedbackSlotKind kind_
 
Handle< Maplookup_start_object_map_
 
MaybeHandle< Objectaccessor_
 
MapHandles target_maps_
 
bool target_maps_set_
 
const char * slow_stub_reason_
 
FeedbackNexus nexus_
 

Detailed Description

Definition at line 27 of file ic.h.

Member Typedef Documentation

◆ State

Definition at line 30 of file ic.h.

Constructor & Destructor Documentation

◆ IC()

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

Definition at line 181 of file ic.cc.

Here is the call graph for this function:

◆ ~IC()

virtual v8::internal::IC::~IC ( )
virtualdefault

Member Function Documentation

◆ accessor()

MaybeHandle< Object > v8::internal::IC::accessor ( ) const
inlineprotected

Definition at line 76 of file ic.h.

Here is the caller graph for this function:

◆ ConfigureVectorState() [1/5]

void v8::internal::IC::ConfigureVectorState ( DirectHandle< Name > name,
DirectHandle< Map > map,
const MaybeObjectDirectHandle & handler )
protected

Definition at line 351 of file ic.cc.

Here is the call graph for this function:

◆ ConfigureVectorState() [2/5]

void v8::internal::IC::ConfigureVectorState ( DirectHandle< Name > name,
DirectHandle< Map > map,
DirectHandle< Object > handler )
protected

Definition at line 346 of file ic.cc.

Here is the call graph for this function:

◆ ConfigureVectorState() [3/5]

void v8::internal::IC::ConfigureVectorState ( DirectHandle< Name > name,
MapHandlesSpan maps,
MaybeObjectHandles * handlers )
protected

Definition at line 364 of file ic.cc.

Here is the call graph for this function:

◆ ConfigureVectorState() [4/5]

void v8::internal::IC::ConfigureVectorState ( DirectHandle< Name > name,
MapsAndHandlers const & maps_and_handlers )
protected

Definition at line 376 of file ic.cc.

Here is the call graph for this function:

◆ ConfigureVectorState() [5/5]

bool v8::internal::IC::ConfigureVectorState ( IC::State new_state,
DirectHandle< Object > key )
protected

Definition at line 335 of file ic.cc.

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

◆ CopyICToMegamorphicCache()

void v8::internal::IC::CopyICToMegamorphicCache ( DirectHandle< Name > name)
protected

Definition at line 712 of file ic.cc.

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

◆ DISALLOW_IMPLICIT_CONSTRUCTORS()

v8::internal::IC::DISALLOW_IMPLICIT_CONSTRUCTORS ( IC )
private

◆ FindTargetMaps()

void v8::internal::IC::FindTargetMaps ( )
inlineprivate

Definition at line 160 of file ic.h.

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

◆ FirstTargetMap()

Tagged< Map > v8::internal::IC::FirstTargetMap ( )
inlineprotected

Definition at line 151 of file ic.h.

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

◆ is_keyed()

bool v8::internal::IC::is_keyed ( ) const
inlineprotected

Definition at line 135 of file ic.h.

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

◆ is_vector_set()

bool v8::internal::IC::is_vector_set ( )
inlineprotected

Definition at line 80 of file ic.h.

Here is the caller graph for this function:

◆ IsAnyDefineOwn()

bool v8::internal::IC::IsAnyDefineOwn ( ) const
inline

Definition at line 61 of file ic.h.

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

◆ IsAnyHas()

bool v8::internal::IC::IsAnyHas ( ) const
inline

Definition at line 52 of file ic.h.

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

◆ IsAnyLoad()

bool v8::internal::IC::IsAnyLoad ( ) const
inline

Definition at line 53 of file ic.h.

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

◆ IsAnyStore()

bool v8::internal::IC::IsAnyStore ( ) const
inline

Definition at line 56 of file ic.h.

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

◆ IsDefineKeyedOwnIC()

bool v8::internal::IC::IsDefineKeyedOwnIC ( ) const
inlineprotected

Definition at line 134 of file ic.h.

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

◆ IsDefineNamedOwnIC()

bool v8::internal::IC::IsDefineNamedOwnIC ( ) const
inlineprotected

Definition at line 128 of file ic.h.

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

◆ IsGlobalIC()

bool v8::internal::IC::IsGlobalIC ( ) const
inlineprotected

Definition at line 122 of file ic.h.

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

◆ IsHandler()

bool v8::internal::IC::IsHandler ( Tagged< MaybeObject > object)
inlinestatic

Definition at line 29 of file ic-inl.h.

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

◆ IsKeyedHasIC()

bool v8::internal::IC::IsKeyedHasIC ( ) const
inlineprotected

Definition at line 133 of file ic.h.

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

◆ IsKeyedLoadIC()

bool v8::internal::IC::IsKeyedLoadIC ( ) const
inlineprotected

Definition at line 125 of file ic.h.

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

◆ IsKeyedStoreIC()

bool v8::internal::IC::IsKeyedStoreIC ( ) const
inlineprotected

Definition at line 132 of file ic.h.

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

◆ IsLoadGlobalIC()

bool v8::internal::IC::IsLoadGlobalIC ( ) const
inlineprotected

Definition at line 124 of file ic.h.

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

◆ IsLoadIC()

bool v8::internal::IC::IsLoadIC ( ) const
inlineprotected

Definition at line 123 of file ic.h.

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

◆ isolate()

Isolate * v8::internal::IC::isolate ( ) const
inlineprotected

Definition at line 78 of file ic.h.

Here is the caller graph for this function:

◆ IsSetNamedIC()

bool v8::internal::IC::IsSetNamedIC ( ) const
inlineprotected

Definition at line 127 of file ic.h.

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

◆ IsStoreGlobalIC()

bool v8::internal::IC::IsStoreGlobalIC ( ) const
inlineprotected

Definition at line 126 of file ic.h.

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

◆ IsStoreInArrayLiteralIC()

bool v8::internal::IC::IsStoreInArrayLiteralIC ( ) const
inlineprotected

Definition at line 129 of file ic.h.

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

◆ IsTransitionOfMonomorphicTarget()

bool v8::internal::IC::IsTransitionOfMonomorphicTarget ( Tagged< Map > source_map,
Tagged< Map > target_map )
protected

Definition at line 720 of file ic.cc.

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

◆ kind()

FeedbackSlotKind v8::internal::IC::kind ( ) const
inlineprotected

Definition at line 121 of file ic.h.

Here is the caller graph for this function:

◆ lookup_start_object_map()

Handle< Map > v8::internal::IC::lookup_start_object_map ( )
inlineprotected

Definition at line 141 of file ic.h.

Here is the caller graph for this function:

◆ MarkRecomputeHandler()

void v8::internal::IC::MarkRecomputeHandler ( DirectHandle< Object > name)
inline

Definition at line 46 of file ic.h.

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

◆ nexus() [1/2]

FeedbackNexus * v8::internal::IC::nexus ( )
inlineprotected

Definition at line 157 of file ic.h.

◆ nexus() [2/2]

const FeedbackNexus * v8::internal::IC::nexus ( ) const
inlineprotected

Definition at line 156 of file ic.h.

Here is the caller graph for this function:

◆ OnFeedbackChanged() [1/2]

void v8::internal::IC::OnFeedbackChanged ( const char * reason)

Definition at line 304 of file ic.cc.

Here is the call graph for this function:

◆ OnFeedbackChanged() [2/2]

void v8::internal::IC::OnFeedbackChanged ( Isolate * isolate,
Tagged< FeedbackVector > vector,
FeedbackSlot slot,
const char * reason )
static

Definition at line 312 of file ic.cc.

Here is the caller graph for this function:

◆ RecomputeHandlerForName()

bool v8::internal::IC::RecomputeHandlerForName ( DirectHandle< Object > name)

Definition at line 264 of file ic.cc.

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

◆ ReferenceError()

MaybeDirectHandle< Object > v8::internal::IC::ReferenceError ( Handle< Name > name)
protected

Definition at line 298 of file ic.cc.

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

◆ set_accessor()

void v8::internal::IC::set_accessor ( Handle< Object > accessor)
inlineprotected

Definition at line 75 of file ic.h.

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

◆ set_slow_stub_reason()

void v8::internal::IC::set_slow_stub_reason ( const char * reason)
inlineprotected

Definition at line 74 of file ic.h.

Here is the caller graph for this function:

◆ SetCache() [1/2]

void v8::internal::IC::SetCache ( DirectHandle< Name > name,
const MaybeObjectHandle & handler )
protected

Definition at line 741 of file ic.cc.

Here is the call graph for this function:

◆ SetCache() [2/2]

void v8::internal::IC::SetCache ( DirectHandle< Name > name,
Handle< Object > handler )
protected

Definition at line 737 of file ic.cc.

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

◆ ShouldRecomputeHandler()

bool v8::internal::IC::ShouldRecomputeHandler ( DirectHandle< String > name)
protected

Definition at line 236 of file ic.cc.

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

◆ state()

State v8::internal::IC::state ( ) const
inline

Definition at line 38 of file ic.h.

Here is the caller graph for this function:

◆ stub_cache()

StubCache * v8::internal::IC::stub_cache ( )
protected

Definition at line 825 of file ic.cc.

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

◆ TargetMaps()

void v8::internal::IC::TargetMaps ( MapHandles * list)
inlineprotected

Definition at line 144 of file ic.h.

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

◆ TraceIC() [1/2]

void v8::internal::IC::TraceIC ( const char * type,
DirectHandle< Object > name )
protected

Definition at line 108 of file ic.cc.

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

◆ TraceIC() [2/2]

void v8::internal::IC::TraceIC ( const char * type,
DirectHandle< Object > name,
State old_state,
State new_state )
protected

Definition at line 115 of file ic.cc.

Here is the call graph for this function:

◆ TransitionMarkFromState()

char v8::internal::IC::TransitionMarkFromState ( IC::State state)
protected

Definition at line 55 of file ic.cc.

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

◆ TypeError()

MaybeDirectHandle< Object > v8::internal::IC::TypeError ( MessageTemplate index,
Handle< Object > object,
Handle< Object > key )
protected

Definition at line 291 of file ic.cc.

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

◆ update_lookup_start_object_map()

void v8::internal::IC::update_lookup_start_object_map ( DirectHandle< Object > object)
inlineprotected

Definition at line 20 of file ic-inl.h.

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

◆ UpdateMegaDOMIC()

bool v8::internal::IC::UpdateMegaDOMIC ( const MaybeObjectDirectHandle & handler,
DirectHandle< Name > name )
protected

Definition at line 561 of file ic.cc.

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

◆ UpdateMegamorphicCache()

void v8::internal::IC::UpdateMegamorphicCache ( DirectHandle< Map > map,
DirectHandle< Name > name,
const MaybeObjectDirectHandle & handler )
protected

Definition at line 839 of file ic.cc.

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

◆ UpdateMonomorphicIC()

void v8::internal::IC::UpdateMonomorphicIC ( const MaybeObjectDirectHandle & handler,
DirectHandle< Name > name )
protected

Definition at line 706 of file ic.cc.

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

◆ UpdatePolymorphicIC()

bool v8::internal::IC::UpdatePolymorphicIC ( DirectHandle< Name > name,
const MaybeObjectDirectHandle & handler )
protected

Definition at line 620 of file ic.cc.

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

◆ UpdateState()

void v8::internal::IC::UpdateState ( DirectHandle< Object > lookup_start_object,
DirectHandle< Object > name )

Definition at line 275 of file ic.cc.

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

◆ vector_needs_update()

bool v8::internal::IC::vector_needs_update ( )
inlineprotected

Definition at line 39 of file ic-inl.h.

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

Member Data Documentation

◆ accessor_

MaybeHandle<Object> v8::internal::IC::accessor_
private

Definition at line 173 of file ic.h.

◆ isolate_

Isolate* v8::internal::IC::isolate_
private

Definition at line 166 of file ic.h.

◆ kind_

FeedbackSlotKind v8::internal::IC::kind_
private

Definition at line 171 of file ic.h.

◆ lookup_start_object_map_

Handle<Map> v8::internal::IC::lookup_start_object_map_
private

Definition at line 172 of file ic.h.

◆ nexus_

FeedbackNexus v8::internal::IC::nexus_
private

Definition at line 179 of file ic.h.

◆ old_state_

State v8::internal::IC::old_state_
private

Definition at line 169 of file ic.h.

◆ slow_stub_reason_

const char* v8::internal::IC::slow_stub_reason_
private

Definition at line 177 of file ic.h.

◆ state_

State v8::internal::IC::state_
private

Definition at line 170 of file ic.h.

◆ target_maps_

MapHandles v8::internal::IC::target_maps_
private

Definition at line 174 of file ic.h.

◆ target_maps_set_

bool v8::internal::IC::target_maps_set_
private

Definition at line 175 of file ic.h.

◆ vector_set_

bool v8::internal::IC::vector_set_
private

Definition at line 168 of file ic.h.


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