v8  3.25.30(node0.11.13)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
StoreIC Class Reference

#include <ic.h>

Inheritance diagram for StoreIC:
Collaboration diagram for StoreIC:

Data Structures

class  StrictModeState
 

Public Member Functions

 StoreIC (FrameDepth depth, Isolate *isolate)
 
StrictMode strict_mode () const
 
MUST_USE_RESULT MaybeObject * Store (Handle< Object > object, Handle< String > name, Handle< Object > value, JSReceiver::StoreFromKeyed store_mode=JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED)
 
- Public Member Functions inherited from IC
 IC (FrameDepth depth, Isolate *isolate)
 
virtual ~IC ()
 
State state () const
 
Address address () const
 
void UpdateState (Handle< Object > receiver, Handle< Object > name)
 
void MarkMonomorphicPrototypeFailure ()
 

Static Public Member Functions

static ExtraICState ComputeExtraICState (StrictMode flag)
 
static StrictMode GetStrictMode (ExtraICState state)
 
static void GenerateSlow (MacroAssembler *masm)
 
static void GenerateInitialize (MacroAssembler *masm)
 
static void GeneratePreMonomorphic (MacroAssembler *masm)
 
static void GenerateMiss (MacroAssembler *masm)
 
static void GenerateMegamorphic (MacroAssembler *masm)
 
static void GenerateNormal (MacroAssembler *masm)
 
static void GenerateRuntimeSetProperty (MacroAssembler *masm, StrictMode strict_mode)
 
static Handle< Codeinitialize_stub (Isolate *isolate, StrictMode strict_mode)
 
- Static Public Member Functions inherited from IC
static Address AddressFromUtilityId (UtilityId id)
 
static void Clear (Isolate *isolate, Address address, ConstantPoolArray *constant_pool)
 
static InlineCacheHolderFlag GetCodeCacheForObject (Object *object)
 
static HeapObjectGetCodeCacheHolder (Isolate *isolate, Object *object, InlineCacheHolderFlag holder)
 
static InlineCacheHolderFlag GetCodeCacheFlag (HeapType *type)
 
static Handle< MapGetCodeCacheHolder (InlineCacheHolderFlag flag, HeapType *type, Isolate *isolate)
 
static bool IsCleared (Code *code)
 
static Handle< MapTypeToMap (HeapType *type, Isolate *isolate)
 
template<class T >
static T::TypeHandle MapToType (Handle< Map > map, typename T::Region *region)
 
static Handle< HeapTypeCurrentTypeOf (Handle< Object > object, Isolate *isolate)
 

Static Public Attributes

static const ExtraICState kStrictModeState
 

Protected Member Functions

virtual Code::Kind kind () const
 
virtual Handle< Codemegamorphic_stub ()
 
virtual Handle< Codegeneric_stub () const
 
virtual Handle< Codeslow_stub () const
 
virtual Handle< Codepre_monomorphic_stub ()
 
void UpdateCaches (LookupResult *lookup, Handle< JSObject > receiver, Handle< String > name, Handle< Object > value)
 
virtual Handle< CodeCompileHandler (LookupResult *lookup, Handle< Object > object, Handle< String > name, Handle< Object > value, InlineCacheHolderFlag cache_holder)
 
- Protected Member Functions inherited from IC
Handle< Codetarget () const
 
Address fp () const
 
Address pc () const
 
Isolateisolate () const
 
void set_target (Code *code)
 
bool is_target_set ()
 
FailureTypeError (const char *type, Handle< Object > object, Handle< Object > key)
 
FailureReferenceError (const char *type, Handle< String > name)
 
Handle< CodeComputeHandler (LookupResult *lookup, Handle< Object > object, Handle< String > name, Handle< Object > value=Handle< Code >::null())
 
void UpdateMonomorphicIC (Handle< HeapType > type, Handle< Code > handler, Handle< String > name)
 
bool UpdatePolymorphicIC (Handle< HeapType > type, Handle< String > name, Handle< Code > code)
 
virtual void UpdateMegamorphicCache (HeapType *type, Name *name, Code *code)
 
void CopyICToMegamorphicCache (Handle< String > name)
 
bool IsTransitionOfMonomorphicTarget (Map *source_map, Map *target_map)
 
void PatchCache (Handle< HeapType > type, Handle< String > name, Handle< Code > code)
 
bool TryRemoveInvalidPrototypeDependentStub (Handle< Object > receiver, Handle< String > name)
 
void TryRemoveInvalidHandlers (Handle< Map > map, Handle< String > name)
 
ExtraICState extra_ic_state () const
 
void set_extra_ic_state (ExtraICState state)
 
void UpdateTarget ()
 

Static Protected Member Functions

static Handle< Codepre_monomorphic_stub (Isolate *isolate, StrictMode strict_mode)
 
- Static Protected Member Functions inherited from IC
static CodeGetTargetAtAddress (Address address, ConstantPoolArray *constant_pool)
 
static void SetTargetAtAddress (Address address, Code *target, ConstantPoolArray *constant_pool)
 
static void PostPatching (Address address, Code *target, Code *old_target)
 

Friends

class IC
 

Additional Inherited Members

- Public Types inherited from IC
enum  UtilityId { kUtilityCount }
 
enum  FrameDepth { NO_EXTRA_FRAME = 0, EXTRA_CALL_FRAME = 1 }
 
typedef InlineCacheState State
 

Detailed Description

Definition at line 479 of file ic.h.

Constructor & Destructor Documentation

StoreIC ( FrameDepth  depth,
Isolate isolate 
)
inline

Definition at line 494 of file ic.h.

References ASSERT.

Member Function Documentation

static ExtraICState ComputeExtraICState ( StrictMode  flag)
inlinestatic
static void GenerateInitialize ( MacroAssembler masm)
inlinestatic

Definition at line 505 of file ic.h.

References StoreIC::GenerateMiss().

static void GenerateMegamorphic ( MacroAssembler masm)
static
static void GenerateMiss ( MacroAssembler masm)
static
static void GenerateNormal ( MacroAssembler masm)
static
static void GeneratePreMonomorphic ( MacroAssembler masm)
inlinestatic

Definition at line 506 of file ic.h.

References StoreIC::GenerateMiss().

static void GenerateRuntimeSetProperty ( MacroAssembler masm,
StrictMode  strict_mode 
)
static
static void GenerateSlow ( MacroAssembler masm)
static
Handle< Code > generic_stub ( ) const
protectedvirtual

Reimplemented from IC.

Definition at line 1281 of file ic.cc.

References StubCache::ComputeStore(), IC::extra_ic_state(), v8::internal::GENERIC, IC::isolate(), and Isolate::stub_cache().

Referenced by StoreIC::Store().

static StrictMode GetStrictMode ( ExtraICState  state)
inlinestatic

Definition at line 485 of file ic.h.

References BitFieldBase< StrictMode, shift, size, uint32_t >::decode().

Referenced by IC::SetTargetAtAddress().

Handle< Code > initialize_stub ( Isolate isolate,
StrictMode  strict_mode 
)
static
virtual Code::Kind kind ( ) const
inlineprotectedvirtual

Reimplemented from IC.

Reimplemented in KeyedStoreIC.

Definition at line 526 of file ic.h.

Referenced by StoreIC::CompileHandler().

Handle< Code > megamorphic_stub ( )
protectedvirtual

Reimplemented from IC.

Reimplemented in KeyedStoreIC.

Definition at line 1276 of file ic.cc.

References StubCache::ComputeStore(), IC::extra_ic_state(), IC::isolate(), v8::internal::MEGAMORPHIC, and Isolate::stub_cache().

virtual Handle<Code> pre_monomorphic_stub ( )
inlineprotectedvirtual

Reimplemented in KeyedStoreIC.

Definition at line 536 of file ic.h.

References IC::isolate(), and StoreIC::strict_mode().

Referenced by StoreIC::Store().

Handle< Code > pre_monomorphic_stub ( Isolate isolate,
StrictMode  strict_mode 
)
staticprotected
virtual Handle<Code> slow_stub ( ) const
inlineprotectedvirtual

Reimplemented from IC.

Reimplemented in KeyedStoreIC.

Definition at line 532 of file ic.h.

References Isolate::builtins(), and IC::isolate().

Referenced by StoreIC::CompileHandler().

void UpdateCaches ( LookupResult *  lookup,
Handle< JSObject receiver,
Handle< String name,
Handle< Object value 
)
protected

Definition at line 1293 of file ic.cc.

References ASSERT, IC::ComputeHandler(), IC::CurrentTypeOf(), IC::isolate(), IC::PatchCache(), and TRACE_IC.

Referenced by StoreIC::Store().

Friends And Related Function Documentation

friend class IC
friend

Definition at line 568 of file ic.h.

Field Documentation

const ExtraICState kStrictModeState
static
Initial value:

Definition at line 491 of file ic.h.


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