v8  3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KeyedIC Class Referenceabstract

#include <ic.h>

Inheritance diagram for KeyedIC:
Collaboration diagram for KeyedIC:

Public Types

enum  StubKind {
  LOAD, STORE_NO_TRANSITION, STORE_TRANSITION_SMI_TO_OBJECT, STORE_TRANSITION_SMI_TO_DOUBLE,
  STORE_TRANSITION_DOUBLE_TO_OBJECT, STORE_TRANSITION_HOLEY_SMI_TO_OBJECT, STORE_TRANSITION_HOLEY_SMI_TO_DOUBLE, STORE_TRANSITION_HOLEY_DOUBLE_TO_OBJECT,
  STORE_AND_GROW_NO_TRANSITION, STORE_AND_GROW_TRANSITION_SMI_TO_OBJECT, STORE_AND_GROW_TRANSITION_SMI_TO_DOUBLE, STORE_AND_GROW_TRANSITION_DOUBLE_TO_OBJECT,
  STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_OBJECT, STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_DOUBLE, STORE_AND_GROW_TRANSITION_HOLEY_DOUBLE_TO_OBJECT
}
 
- Public Types inherited from IC
enum  UtilityId { kUtilityCount }
 
enum  FrameDepth { NO_EXTRA_FRAME = 0, EXTRA_CALL_FRAME = 1 }
 
typedef InlineCacheState State
 

Public Member Functions

 STATIC_ASSERT (kGrowICDelta==STORE_AND_GROW_TRANSITION_SMI_TO_OBJECT-STORE_TRANSITION_SMI_TO_OBJECT)
 
 STATIC_ASSERT (kGrowICDelta==STORE_AND_GROW_TRANSITION_SMI_TO_DOUBLE-STORE_TRANSITION_SMI_TO_DOUBLE)
 
 STATIC_ASSERT (kGrowICDelta==STORE_AND_GROW_TRANSITION_DOUBLE_TO_OBJECT-STORE_TRANSITION_DOUBLE_TO_OBJECT)
 
 KeyedIC (Isolate *isolate)
 
virtual ~KeyedIC ()
 
virtual Handle< CodeGetElementStubWithoutMapCheck (bool is_js_array, ElementsKind elements_kind, KeyedAccessGrowMode grow_mode)=0
 
- Public Member Functions inherited from IC
 IC (FrameDepth depth, Isolate *isolate)
 
virtual ~IC ()
 
Codetarget () const
 
Address address () const
 
virtual bool IsGeneric () const
 
RelocInfo::Mode ComputeMode ()
 
bool IsContextual (Handle< Object > receiver)
 
bool SlowIsContextual ()
 

Static Public Member Functions

static KeyedAccessGrowMode GetGrowModeFromStubKind (StubKind stub_kind)
 
static StubKind GetGrowStubKind (StubKind stub_kind)
 
- Static Public Member Functions inherited from IC
static Address AddressFromUtilityId (UtilityId id)
 
static State StateFrom (Code *target, Object *receiver, Object *name)
 
static void Clear (Address address)
 
static InlineCacheHolderFlag GetCodeCacheForObject (Object *object, JSObject *holder)
 
static InlineCacheHolderFlag GetCodeCacheForObject (JSObject *object, JSObject *holder)
 
static JSObjectGetCodeCacheHolder (Object *object, InlineCacheHolderFlag holder)
 

Static Public Attributes

static const int kGrowICDelta
 

Protected Member Functions

virtual Handle< Codestring_stub ()
 
virtual Code::Kind kind () const =0
 
Handle< CodeComputeStub (Handle< JSObject > receiver, StubKind stub_kind, StrictModeFlag strict_mode, Handle< Code > default_stub)
 
virtual Handle< CodeComputePolymorphicStub (MapHandleList *receiver_maps, StrictModeFlag strict_mode, KeyedAccessGrowMode grow_mode)=0
 
Handle< CodeComputeMonomorphicStubWithoutMapCheck (Handle< Map > receiver_map, StrictModeFlag strict_mode, KeyedAccessGrowMode grow_mode)
 
- Protected Member Functions inherited from IC
Address fp () const
 
Address pc () const
 
Isolateisolate () const
 
void set_target (Code *code)
 
FailureTypeError (const char *type, Handle< Object > object, Handle< Object > key)
 
FailureReferenceError (const char *type, Handle< String > name)
 

Additional Inherited Members

- Static Protected Member Functions inherited from IC
static CodeGetTargetAtAddress (Address address)
 
static void SetTargetAtAddress (Address address, Code *target)
 
static void PostPatching (Address address, Code *target, Code *old_target)
 

Detailed Description

Definition at line 373 of file ic.h.

Member Enumeration Documentation

enum StubKind
Enumerator
LOAD 
STORE_NO_TRANSITION 
STORE_TRANSITION_SMI_TO_OBJECT 
STORE_TRANSITION_SMI_TO_DOUBLE 
STORE_TRANSITION_DOUBLE_TO_OBJECT 
STORE_TRANSITION_HOLEY_SMI_TO_OBJECT 
STORE_TRANSITION_HOLEY_SMI_TO_DOUBLE 
STORE_TRANSITION_HOLEY_DOUBLE_TO_OBJECT 
STORE_AND_GROW_NO_TRANSITION 
STORE_AND_GROW_TRANSITION_SMI_TO_OBJECT 
STORE_AND_GROW_TRANSITION_SMI_TO_DOUBLE 
STORE_AND_GROW_TRANSITION_DOUBLE_TO_OBJECT 
STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_OBJECT 
STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_DOUBLE 
STORE_AND_GROW_TRANSITION_HOLEY_DOUBLE_TO_OBJECT 

Definition at line 375 of file ic.h.

Constructor & Destructor Documentation

KeyedIC ( Isolate isolate)
inlineexplicit

Definition at line 405 of file ic.h.

virtual ~KeyedIC ( )
inlinevirtual

Definition at line 406 of file ic.h.

Member Function Documentation

Handle< Code > ComputeMonomorphicStubWithoutMapCheck ( Handle< Map receiver_map,
StrictModeFlag  strict_mode,
KeyedAccessGrowMode  grow_mode 
)
protected
virtual Handle<Code> ComputePolymorphicStub ( MapHandleList receiver_maps,
StrictModeFlag  strict_mode,
KeyedAccessGrowMode  grow_mode 
)
protectedpure virtual

Implemented in KeyedStoreIC, and KeyedLoadIC.

Referenced by KeyedIC::ComputeStub().

virtual Handle<Code> GetElementStubWithoutMapCheck ( bool  is_js_array,
ElementsKind  elements_kind,
KeyedAccessGrowMode  grow_mode 
)
pure virtual
static KeyedAccessGrowMode GetGrowModeFromStubKind ( StubKind  stub_kind)
inlinestatic
static StubKind GetGrowStubKind ( StubKind  stub_kind)
inlinestatic
virtual Code::Kind kind ( ) const
protectedpure virtual

Implemented in KeyedStoreIC, and KeyedLoadIC.

Referenced by KeyedIC::ComputeStub().

virtual Handle<Code> string_stub ( )
inlineprotectedvirtual

Reimplemented in KeyedLoadIC.

Definition at line 430 of file ic.h.

References Handle< T >::null().

Referenced by KeyedIC::ComputeMonomorphicStubWithoutMapCheck().

Field Documentation

const int kGrowICDelta
static
Initial value:

Definition at line 393 of file ic.h.

Referenced by KeyedIC::GetGrowStubKind().


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