V8 Project
|
#include <ic.h>
Classes | |
class | ExtraICStateKeyedAccessStoreMode |
Public Member Functions | |
KeyedStoreIC (FrameDepth depth, Isolate *isolate) | |
MUST_USE_RESULT MaybeHandle< Object > | Store (Handle< Object > object, Handle< Object > name, Handle< Object > value) |
![]() | |
StoreIC (FrameDepth depth, Isolate *isolate) | |
StrictMode | strict_mode () const |
MUST_USE_RESULT MaybeHandle< Object > | Store (Handle< Object > object, Handle< Name > name, Handle< Object > value, JSReceiver::StoreFromKeyed store_mode=JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED) |
bool | LookupForWrite (LookupIterator *it, Handle< Object > value, JSReceiver::StoreFromKeyed store_mode) |
![]() | |
IC (FrameDepth depth, Isolate *isolate) | |
virtual | ~IC () |
State | state () const |
Address | address () const |
void | UpdateState (Handle< Object > receiver, Handle< Object > name) |
bool | IsNameCompatibleWithPrototypeFailure (Handle< Object > name) |
void | MarkPrototypeFailure (Handle< Object > name) |
Static Protected Member Functions | |
static Handle< Code > | pre_monomorphic_stub (Isolate *isolate, StrictMode strict_mode) |
![]() | |
static Handle< Code > | pre_monomorphic_stub (Isolate *isolate, StrictMode strict_mode) |
![]() | |
static Code * | GetTargetAtAddress (Address address, ConstantPoolArray *constant_pool) |
static void | SetTargetAtAddress (Address address, Code *target, ConstantPoolArray *constant_pool) |
static void | OnTypeFeedbackChanged (Isolate *isolate, Address address, State old_state, State new_state, bool target_remains_ic_stub) |
static void | PostPatching (Address address, Code *target, Code *old_target) |
Private Member Functions | |
void | set_target (Code *code) |
Handle< Code > | sloppy_arguments_stub () |
KeyedAccessStoreMode | GetStoreMode (Handle< JSObject > receiver, Handle< Object > key, Handle< Object > value) |
Handle< Map > | ComputeTransitionedMap (Handle< Map > map, KeyedAccessStoreMode store_mode) |
Static Private Member Functions | |
static void | Clear (Isolate *isolate, Address address, Code *target, ConstantPoolArray *constant_pool) |
Friends | |
class | IC |
Additional Inherited Members | |
![]() | |
enum | UtilityId { kUtilityCount } |
enum | FrameDepth { NO_EXTRA_FRAME = 0 , EXTRA_CALL_FRAME = 1 } |
typedef InlineCacheState | State |
![]() | |
static const ExtraICState | kStrictModeState = 1 << StrictModeState::kShift |
|
inline |
Definition at line 548 of file ic.h.
References DCHECK, and v8::internal::IC::target().
|
staticprivate |
Definition at line 545 of file ic.cc.
References v8::internal::IC::address(), v8::internal::IC::constant_pool(), v8::internal::StoreIC::GetStrictMode(), v8::internal::IC::IsCleared(), v8::internal::IC::isolate(), pre_monomorphic_stub(), v8::internal::IC::SetTargetAtAddress(), and v8::internal::IC::target().
Referenced by v8::internal::IC::Clear().
|
inlinestatic |
Definition at line 537 of file ic.h.
References v8::internal::flag, and mode().
Referenced by v8::internal::PropertyICCompiler::ComputeKeyedStoreMonomorphic(), and v8::internal::PropertyICCompiler::ComputeKeyedStorePolymorphic().
|
private |
Definition at line 1666 of file ic.cc.
References DCHECK, v8::internal::FAST_DOUBLE_ELEMENTS, v8::internal::FAST_ELEMENTS, v8::internal::FAST_HOLEY_DOUBLE_ELEMENTS, v8::internal::FAST_HOLEY_ELEMENTS, map, v8::internal::STANDARD_STORE, v8::internal::STORE_AND_GROW_NO_TRANSITION, v8::internal::STORE_AND_GROW_TRANSITION_DOUBLE_TO_OBJECT, v8::internal::STORE_AND_GROW_TRANSITION_HOLEY_DOUBLE_TO_OBJECT, v8::internal::STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_DOUBLE, v8::internal::STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_OBJECT, v8::internal::STORE_AND_GROW_TRANSITION_SMI_TO_DOUBLE, v8::internal::STORE_AND_GROW_TRANSITION_SMI_TO_OBJECT, v8::internal::STORE_NO_TRANSITION_HANDLE_COW, v8::internal::STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS, v8::internal::STORE_TRANSITION_DOUBLE_TO_OBJECT, v8::internal::STORE_TRANSITION_HOLEY_DOUBLE_TO_OBJECT, v8::internal::STORE_TRANSITION_HOLEY_SMI_TO_DOUBLE, v8::internal::STORE_TRANSITION_HOLEY_SMI_TO_OBJECT, v8::internal::STORE_TRANSITION_SMI_TO_DOUBLE, v8::internal::STORE_TRANSITION_SMI_TO_OBJECT, v8::internal::Map::TransitionElementsTo(), and UNREACHABLE.
Referenced by StoreElementStub().
|
static |
Referenced by v8::internal::Generate_KeyedStoreIC_Generic(), and v8::internal::Generate_KeyedStoreIC_Generic_Strict().
|
inlinestatic |
Definition at line 557 of file ic.h.
References v8::internal::LoadIC::GenerateMiss().
Referenced by v8::internal::Generate_KeyedStoreIC_Initialize(), and v8::internal::Generate_KeyedStoreIC_Initialize_Strict().
|
static |
Referenced by v8::internal::Generate_KeyedStoreIC_Miss().
|
inlinestatic |
Definition at line 558 of file ic.h.
References v8::internal::LoadIC::GenerateMiss().
Referenced by v8::internal::Generate_KeyedStoreIC_PreMonomorphic(), and v8::internal::Generate_KeyedStoreIC_PreMonomorphic_Strict().
|
static |
Referenced by v8::internal::Generate_KeyedStoreIC_SloppyArguments().
|
static |
|
inlinestatic |
Definition at line 543 of file ic.h.
Referenced by v8::internal::PropertyICCompiler::ComputeKeyedStoreMonomorphic(), v8::internal::PropertyICCompiler::ComputeMonomorphic(), v8::internal::TypeFeedbackOracle::GetStoreMode(), StoreElementStub(), and v8::internal::IC::TraceIC().
|
private |
Definition at line 1707 of file ic.cc.
References v8::internal::IC::isolate(), v8::internal::IsOutOfBoundsAccess(), v8::internal::STANDARD_STORE, v8::internal::STORE_AND_GROW_NO_TRANSITION, v8::internal::STORE_AND_GROW_TRANSITION_DOUBLE_TO_OBJECT, v8::internal::STORE_AND_GROW_TRANSITION_HOLEY_DOUBLE_TO_OBJECT, v8::internal::STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_DOUBLE, v8::internal::STORE_AND_GROW_TRANSITION_HOLEY_SMI_TO_OBJECT, v8::internal::STORE_AND_GROW_TRANSITION_SMI_TO_DOUBLE, v8::internal::STORE_AND_GROW_TRANSITION_SMI_TO_OBJECT, v8::internal::STORE_NO_TRANSITION_HANDLE_COW, v8::internal::STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS, v8::internal::STORE_TRANSITION_DOUBLE_TO_OBJECT, v8::internal::STORE_TRANSITION_HOLEY_DOUBLE_TO_OBJECT, v8::internal::STORE_TRANSITION_HOLEY_SMI_TO_DOUBLE, v8::internal::STORE_TRANSITION_HOLEY_SMI_TO_OBJECT, v8::internal::STORE_TRANSITION_SMI_TO_DOUBLE, v8::internal::STORE_TRANSITION_SMI_TO_OBJECT, and v8::internal::Object::ToSmi().
Referenced by Store().
|
inlineprotectedvirtual |
Reimplemented from v8::internal::StoreIC.
Definition at line 567 of file ic.h.
References v8::internal::IC::isolate(), and v8::internal::LoadIC::pre_monomorphic_stub().
Referenced by Clear().
|
inlinestaticprotected |
Definition at line 570 of file ic.h.
References v8::internal::Isolate::builtins(), v8::internal::IC::isolate(), and v8::internal::STRICT.
|
inlineprivate |
Definition at line 147 of file ic-inl.h.
References DCHECK, v8::internal::Code::extra_ic_state(), v8::internal::StoreIC::GetStrictMode(), v8::internal::IC::set_target(), and v8::internal::StoreIC::strict_mode().
Referenced by Store().
Definition at line 586 of file ic.h.
References v8::internal::Isolate::builtins(), and v8::internal::IC::isolate().
Referenced by Store().
MaybeHandle< Object > v8::internal::KeyedStoreIC::Store | ( | Handle< Object > | object, |
Handle< Object > | name, | ||
Handle< Object > | value | ||
) |
Definition at line 1783 of file ic.cc.
References ASSIGN_RETURN_ON_EXCEPTION, v8::internal::Handle< T >::cast(), DCHECK, v8::internal::StoreIC::generic_stub(), GetStoreMode(), v8::internal::Handle< T >::is_null(), v8::internal::IC::is_target_set(), v8::internal::IC::isolate(), v8::internal::Object::MAY_BE_STORE_FROM_KEYED, v8::internal::MigrateDeprecated(), set_target(), v8::internal::Runtime::SetObjectProperty(), v8::internal::SLOPPY, sloppy_arguments_stub(), v8::internal::StoreIC::slow_stub(), v8::internal::StoreIC::Store(), StoreElementStub(), v8::internal::StoreIC::strict_mode(), v8::internal::IC::target(), v8::internal::Object::ToSmi(), TRACE_GENERIC_IC, TRACE_IC, and v8::internal::TryConvertKey().
Referenced by v8::internal::RUNTIME_FUNCTION().
|
protected |
Definition at line 1547 of file ic.cc.
References v8::internal::AddOneReceiverMapIfMissing(), v8::internal::List< T, AllocationPolicy >::at(), v8::internal::PropertyICCompiler::ComputeKeyedStoreMonomorphic(), v8::internal::PropertyICCompiler::ComputeKeyedStorePolymorphic(), ComputeTransitionedMap(), DCHECK, v8::internal::IC::extra_ic_state(), v8::internal::GENERIC, v8::internal::StoreIC::generic_stub(), GetKeyedAccessStoreMode(), v8::internal::GetNonTransitioningStoreMode(), v8::internal::IC::isolate(), v8::internal::IC::IsTransitionOfMonomorphicTarget(), v8::internal::IsTransitionStoreMode(), v8::internal::kMaxKeyedPolymorphism, v8::internal::MONOMORPHIC, v8::internal::Code::NORMAL, v8::internal::STANDARD_STORE, v8::internal::IC::state(), v8::internal::STORE_AND_GROW_NO_TRANSITION, v8::internal::STORE_NO_TRANSITION_HANDLE_COW, v8::internal::STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS, v8::internal::StoreIC::strict_mode(), v8::internal::IC::target(), v8::internal::IC::TargetMaps(), and TRACE_GENERIC_IC.
Referenced by Store().