diff --git a/src/builtins/builtins-handler.cc b/src/builtins/builtins-handler.cc index 002152c7a8..cef523719f 100644 --- a/src/builtins/builtins-handler.cc +++ b/src/builtins/builtins-handler.cc @@ -45,12 +45,34 @@ void Builtins::Generate_KeyedStoreIC_Megamorphic_Strict( KeyedStoreGenericGenerator::Generate(state, STRICT); } -void Builtins::Generate_KeyedStoreIC_Miss(MacroAssembler* masm) { - KeyedStoreIC::GenerateMiss(masm); +TF_BUILTIN(KeyedStoreIC_Miss, CodeStubAssembler) { + typedef StoreWithVectorDescriptor Descriptor; + + Node* receiver = Parameter(Descriptor::kReceiver); + Node* name = Parameter(Descriptor::kName); + Node* value = Parameter(Descriptor::kValue); + Node* slot = Parameter(Descriptor::kSlot); + Node* vector = Parameter(Descriptor::kVector); + Node* context = Parameter(Descriptor::kContext); + + TailCallRuntime(Runtime::kKeyedStoreIC_Miss, context, value, slot, vector, + receiver, name); } -void Builtins::Generate_KeyedStoreIC_Slow(MacroAssembler* masm) { - KeyedStoreIC::GenerateSlow(masm); +TF_BUILTIN(KeyedStoreIC_Slow, CodeStubAssembler) { + typedef StoreWithVectorDescriptor Descriptor; + + Node* receiver = Parameter(Descriptor::kReceiver); + Node* name = Parameter(Descriptor::kName); + Node* value = Parameter(Descriptor::kValue); + Node* slot = Parameter(Descriptor::kSlot); + Node* vector = Parameter(Descriptor::kVector); + Node* context = Parameter(Descriptor::kContext); + + // The slow case calls into the runtime to complete the store without causing + // an IC miss that would otherwise cause a transition to the generic stub. + TailCallRuntime(Runtime::kKeyedStoreIC_Slow, context, value, slot, vector, + receiver, name); } TF_BUILTIN(LoadGlobalIC_Miss, CodeStubAssembler) { diff --git a/src/builtins/builtins.h b/src/builtins/builtins.h index 1e15cdeece..96ac20fff1 100644 --- a/src/builtins/builtins.h +++ b/src/builtins/builtins.h @@ -234,8 +234,8 @@ class Isolate; StoreWithVector) \ TFS(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, kNoExtraICState, \ StoreWithVector) \ - ASM(KeyedStoreIC_Miss) \ - ASH(KeyedStoreIC_Slow, HANDLER, Code::KEYED_STORE_IC) \ + TFS(KeyedStoreIC_Miss, BUILTIN, kNoExtraICState, StoreWithVector) \ + TFS(KeyedStoreIC_Slow, HANDLER, Code::KEYED_STORE_IC, StoreWithVector) \ TFS(LoadGlobalIC_Miss, BUILTIN, kNoExtraICState, LoadGlobalWithVector) \ TFS(LoadGlobalIC_Slow, HANDLER, Code::LOAD_GLOBAL_IC, LoadGlobalWithVector) \ TFS(LoadField, HANDLER, Code::LOAD_IC, LoadField) \ diff --git a/src/code-stubs.cc b/src/code-stubs.cc index 73b9c1c8c3..3da26d68d4 100644 --- a/src/code-stubs.cc +++ b/src/code-stubs.cc @@ -1499,23 +1499,6 @@ void SubStringStub::GenerateAssembly( assembler.Parameter(Descriptor::kContext))); } -void LoadApiGetterStub::GenerateAssembly( - compiler::CodeAssemblerState* state) const { - typedef compiler::Node Node; - CodeStubAssembler assembler(state); - Node* context = assembler.Parameter(Descriptor::kContext); - Node* receiver = assembler.Parameter(Descriptor::kReceiver); - // For now we only support receiver_is_holder. - DCHECK(receiver_is_holder()); - Node* holder = receiver; - Node* map = assembler.LoadMap(receiver); - Node* descriptors = assembler.LoadMapDescriptors(map); - Node* callback = assembler.LoadFixedArrayElement( - descriptors, DescriptorArray::ToValueIndex(index())); - assembler.TailCallStub(CodeFactory::ApiGetter(isolate()), context, receiver, - holder, callback); -} - void StoreGlobalStub::GenerateAssembly( compiler::CodeAssemblerState* state) const { typedef CodeStubAssembler::Label Label; @@ -2076,10 +2059,20 @@ void CreateWeakCellStub::GenerateAheadOfTime(Isolate* isolate) { stub.GetCode(); } +void StoreSlowElementStub::GenerateAssembly( + compiler::CodeAssemblerState* state) const { + typedef compiler::Node Node; + CodeStubAssembler assembler(state); -void StoreElementStub::Generate(MacroAssembler* masm) { - DCHECK_EQ(DICTIONARY_ELEMENTS, elements_kind()); - KeyedStoreIC::GenerateSlow(masm); + Node* receiver = assembler.Parameter(Descriptor::kReceiver); + Node* name = assembler.Parameter(Descriptor::kName); + Node* value = assembler.Parameter(Descriptor::kValue); + Node* slot = assembler.Parameter(Descriptor::kSlot); + Node* vector = assembler.Parameter(Descriptor::kVector); + Node* context = assembler.Parameter(Descriptor::kContext); + + assembler.TailCallRuntime(Runtime::kKeyedStoreIC_Slow, context, value, slot, + vector, receiver, name); } void StoreFastElementStub::GenerateAssembly( diff --git a/src/code-stubs.h b/src/code-stubs.h index 019676ead0..b5d6b045c3 100644 --- a/src/code-stubs.h +++ b/src/code-stubs.h @@ -47,7 +47,7 @@ class Node; V(RecordWrite) \ V(RegExpExec) \ V(StoreBufferOverflow) \ - V(StoreElement) \ + V(StoreSlowElement) \ V(SubString) \ V(FastNewRestParameter) \ V(FastNewSloppyArguments) \ @@ -105,7 +105,6 @@ class Node; V(StoreFastElement) \ V(StoreGlobal) \ V(StoreInterceptor) \ - V(LoadApiGetter) \ V(LoadIndexedInterceptor) \ V(GrowArrayElements) @@ -1005,33 +1004,6 @@ class KeyedStoreSloppyArgumentsStub : public TurboFanCodeStub { DEFINE_TURBOFAN_CODE_STUB(KeyedStoreSloppyArguments, TurboFanCodeStub); }; -class LoadApiGetterStub : public TurboFanCodeStub { - public: - LoadApiGetterStub(Isolate* isolate, bool receiver_is_holder, int index) - : TurboFanCodeStub(isolate) { - // If that's not true, we need to ensure that the receiver is actually a - // JSReceiver. http://crbug.com/609134 - DCHECK(receiver_is_holder); - minor_key_ = IndexBits::encode(index) | - ReceiverIsHolderBits::encode(receiver_is_holder); - } - - Code::Kind GetCodeKind() const override { return Code::HANDLER; } - ExtraICState GetExtraICState() const override { return Code::LOAD_IC; } - - int index() const { return IndexBits::decode(minor_key_); } - bool receiver_is_holder() const { - return ReceiverIsHolderBits::decode(minor_key_); - } - - private: - class ReceiverIsHolderBits : public BitField {}; - class IndexBits : public BitField {}; - - DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); - DEFINE_TURBOFAN_CODE_STUB(LoadApiGetter, TurboFanCodeStub); -}; - class StoreGlobalStub : public TurboFanCodeStub { public: StoreGlobalStub(Isolate* isolate, PropertyCellType type, @@ -1928,31 +1900,19 @@ class ArrayNArgumentsConstructorStub : public PlatformCodeStub { DEFINE_PLATFORM_CODE_STUB(ArrayNArgumentsConstructor, PlatformCodeStub); }; -class StoreElementStub : public PlatformCodeStub { +class StoreSlowElementStub : public TurboFanCodeStub { public: - StoreElementStub(Isolate* isolate, ElementsKind elements_kind, - KeyedAccessStoreMode mode) - : PlatformCodeStub(isolate) { - // TODO(jkummerow): Rename this stub to StoreSlowElementStub, - // drop elements_kind parameter. - DCHECK_EQ(DICTIONARY_ELEMENTS, elements_kind); - minor_key_ = ElementsKindBits::encode(elements_kind) | - CommonStoreModeBits::encode(mode); + StoreSlowElementStub(Isolate* isolate, KeyedAccessStoreMode mode) + : TurboFanCodeStub(isolate) { + minor_key_ = CommonStoreModeBits::encode(mode); } Code::Kind GetCodeKind() const override { return Code::HANDLER; } ExtraICState GetExtraICState() const override { return Code::KEYED_STORE_IC; } private: - ElementsKind elements_kind() const { - return ElementsKindBits::decode(minor_key_); - } - - class ElementsKindBits - : public BitField {}; - DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); - DEFINE_PLATFORM_CODE_STUB(StoreElement, PlatformCodeStub); + DEFINE_TURBOFAN_CODE_STUB(StoreSlowElement, TurboFanCodeStub); }; class ToBooleanICStub : public HydrogenCodeStub { diff --git a/src/ic/arm/ic-arm.cc b/src/ic/arm/ic-arm.cc index fad0737a1c..96fcc36d92 100644 --- a/src/ic/arm/ic-arm.cc +++ b/src/ic/arm/ic-arm.cc @@ -13,38 +13,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - __ Push(StoreWithVectorDescriptor::ValueRegister(), - StoreWithVectorDescriptor::SlotRegister(), - StoreWithVectorDescriptor::VectorRegister(), - StoreWithVectorDescriptor::ReceiverRegister(), - StoreWithVectorDescriptor::NameRegister()); -} - - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - // The slow case calls into the runtime to complete the store without causing - // an IC miss that would otherwise cause a transition to the generic stub. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { case Token::EQ_STRICT: diff --git a/src/ic/arm64/ic-arm64.cc b/src/ic/arm64/ic-arm64.cc index 04fdff76e1..eb8dabc2aa 100644 --- a/src/ic/arm64/ic-arm64.cc +++ b/src/ic/arm64/ic-arm64.cc @@ -13,32 +13,6 @@ namespace v8 { namespace internal { -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - __ Push(StoreWithVectorDescriptor::ValueRegister(), - StoreWithVectorDescriptor::SlotRegister(), - StoreWithVectorDescriptor::VectorRegister(), - StoreWithVectorDescriptor::ReceiverRegister(), - StoreWithVectorDescriptor::NameRegister()); -} - - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - ASM_LOCATION("KeyedStoreIC::GenerateMiss"); - StoreIC_PushArgs(masm); - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - ASM_LOCATION("KeyedStoreIC::GenerateSlow"); - StoreIC_PushArgs(masm); - - // The slow case calls into the runtime to complete the store without causing - // an IC miss that would otherwise cause a transition to the generic stub. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { case Token::EQ_STRICT: diff --git a/src/ic/ia32/ic-ia32.cc b/src/ic/ia32/ic-ia32.cc index 4bf0eaee92..6f99cb3be9 100644 --- a/src/ic/ia32/ic-ia32.cc +++ b/src/ic/ia32/ic-ia32.cc @@ -12,48 +12,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - Register receiver = StoreWithVectorDescriptor::ReceiverRegister(); - Register name = StoreWithVectorDescriptor::NameRegister(); - - STATIC_ASSERT(StoreWithVectorDescriptor::kStackArgumentsCount == 3); - // Current stack layout: - // - esp[12] -- value - // - esp[8] -- slot - // - esp[4] -- vector - // - esp[0] -- return address - - Register return_address = StoreWithVectorDescriptor::SlotRegister(); - __ pop(return_address); - __ push(receiver); - __ push(name); - __ push(return_address); -} - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { diff --git a/src/ic/ic-compiler.cc b/src/ic/ic-compiler.cc index fcda0c1fa3..0c96390eac 100644 --- a/src/ic/ic-compiler.cc +++ b/src/ic/ic-compiler.cc @@ -105,7 +105,8 @@ Handle PropertyICCompiler::CompileKeyedStoreMonomorphicHandler( store_mode).GetCode(); } else { TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_StoreElementStub); - stub = StoreElementStub(isolate(), elements_kind, store_mode).GetCode(); + DCHECK_EQ(DICTIONARY_ELEMENTS, elements_kind); + stub = StoreSlowElementStub(isolate(), store_mode).GetCode(); } Handle validity_cell = Map::GetOrCreatePrototypeChainValidityCell(receiver_map, isolate()); diff --git a/src/ic/ic.h b/src/ic/ic.h index 206778f8a8..1bf0a81a91 100644 --- a/src/ic/ic.h +++ b/src/ic/ic.h @@ -432,12 +432,6 @@ class KeyedStoreIC : public StoreIC { Handle name, Handle value); - // Code generators for stub routines. Only called once at startup. - static void GenerateMiss(MacroAssembler* masm); - static void GenerateSlow(MacroAssembler* masm); - static void GenerateMegamorphic(MacroAssembler* masm, - LanguageMode language_mode); - static void Clear(Isolate* isolate, Code* host, KeyedStoreICNexus* nexus); protected: diff --git a/src/ic/mips/ic-mips.cc b/src/ic/mips/ic-mips.cc index e31aab1d76..240b315b74 100644 --- a/src/ic/mips/ic-mips.cc +++ b/src/ic/mips/ic-mips.cc @@ -13,38 +13,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - __ Push(StoreWithVectorDescriptor::ValueRegister(), - StoreWithVectorDescriptor::SlotRegister(), - StoreWithVectorDescriptor::VectorRegister(), - StoreWithVectorDescriptor::ReceiverRegister(), - StoreWithVectorDescriptor::NameRegister()); -} - - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - // The slow case calls into the runtime to complete the store without causing - // an IC miss that would otherwise cause a transition to the generic stub. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { case Token::EQ_STRICT: diff --git a/src/ic/mips64/ic-mips64.cc b/src/ic/mips64/ic-mips64.cc index fa351ba5a3..32eda8e5fc 100644 --- a/src/ic/mips64/ic-mips64.cc +++ b/src/ic/mips64/ic-mips64.cc @@ -13,38 +13,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - __ Push(StoreWithVectorDescriptor::ValueRegister(), - StoreWithVectorDescriptor::SlotRegister(), - StoreWithVectorDescriptor::VectorRegister(), - StoreWithVectorDescriptor::ReceiverRegister(), - StoreWithVectorDescriptor::NameRegister()); -} - - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - // The slow case calls into the runtime to complete the store without causing - // an IC miss that would otherwise cause a transition to the generic stub. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { case Token::EQ_STRICT: diff --git a/src/ic/ppc/ic-ppc.cc b/src/ic/ppc/ic-ppc.cc index 3c325d8f92..75415e821f 100644 --- a/src/ic/ppc/ic-ppc.cc +++ b/src/ic/ppc/ic-ppc.cc @@ -13,38 +13,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - __ Push(StoreWithVectorDescriptor::ValueRegister(), - StoreWithVectorDescriptor::SlotRegister(), - StoreWithVectorDescriptor::VectorRegister(), - StoreWithVectorDescriptor::ReceiverRegister(), - StoreWithVectorDescriptor::NameRegister()); -} - - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - // The slow case calls into the runtime to complete the store without causing - // an IC miss that would otherwise cause a transition to the generic stub. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { case Token::EQ_STRICT: diff --git a/src/ic/s390/ic-s390.cc b/src/ic/s390/ic-s390.cc index 6438cfca47..1d5d394ae2 100644 --- a/src/ic/s390/ic-s390.cc +++ b/src/ic/s390/ic-s390.cc @@ -12,35 +12,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - __ Push(StoreWithVectorDescriptor::ValueRegister(), - StoreWithVectorDescriptor::SlotRegister(), - StoreWithVectorDescriptor::VectorRegister(), - StoreWithVectorDescriptor::ReceiverRegister(), - StoreWithVectorDescriptor::NameRegister()); -} - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - StoreIC_PushArgs(masm); - - // The slow case calls into the runtime to complete the store without causing - // an IC miss that would otherwise cause a transition to the generic stub. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { diff --git a/src/ic/x64/ic-x64.cc b/src/ic/x64/ic-x64.cc index 587ebd3daa..add2b7dff0 100644 --- a/src/ic/x64/ic-x64.cc +++ b/src/ic/x64/ic-x64.cc @@ -12,48 +12,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - Register receiver = StoreWithVectorDescriptor::ReceiverRegister(); - Register name = StoreWithVectorDescriptor::NameRegister(); - Register value = StoreWithVectorDescriptor::ValueRegister(); - Register slot = StoreWithVectorDescriptor::SlotRegister(); - Register vector = StoreWithVectorDescriptor::VectorRegister(); - Register temp = r11; - DCHECK(!AreAliased(receiver, name, value, slot, vector, temp)); - - __ PopReturnAddressTo(temp); - __ Push(value); - __ Push(slot); - __ Push(vector); - __ Push(receiver); - __ Push(name); - __ PushReturnAddressFrom(temp); -} - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { diff --git a/src/ic/x87/ic-x87.cc b/src/ic/x87/ic-x87.cc index 049a85e92e..8c65b71f27 100644 --- a/src/ic/x87/ic-x87.cc +++ b/src/ic/x87/ic-x87.cc @@ -12,48 +12,6 @@ namespace v8 { namespace internal { -// ---------------------------------------------------------------------------- -// Static IC stub generators. -// - -#define __ ACCESS_MASM(masm) - -static void StoreIC_PushArgs(MacroAssembler* masm) { - Register receiver = StoreWithVectorDescriptor::ReceiverRegister(); - Register name = StoreWithVectorDescriptor::NameRegister(); - - STATIC_ASSERT(StoreWithVectorDescriptor::kStackArgumentsCount == 3); - // Current stack layout: - // - esp[12] -- value - // - esp[8] -- slot - // - esp[4] -- vector - // - esp[0] -- return address - - Register return_address = StoreWithVectorDescriptor::SlotRegister(); - __ pop(return_address); - __ push(receiver); - __ push(name); - __ push(return_address); -} - -void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); -} - -void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - -#undef __ - Condition CompareIC::ComputeCondition(Token::Value op) { switch (op) { diff --git a/src/type-feedback-vector.cc b/src/type-feedback-vector.cc index b03e95d6ee..48f21a37a9 100644 --- a/src/type-feedback-vector.cc +++ b/src/type-feedback-vector.cc @@ -973,7 +973,7 @@ KeyedAccessStoreMode KeyedStoreICNexus::GetKeyedAccessStoreMode() const { uint32_t minor_key = CodeStub::MinorKeyFromKey(handler->stub_key()); CHECK(major_key == CodeStub::KeyedStoreSloppyArguments || major_key == CodeStub::StoreFastElement || - major_key == CodeStub::StoreElement || + major_key == CodeStub::StoreSlowElement || major_key == CodeStub::ElementsTransitionAndStore || major_key == CodeStub::NoCache); if (major_key != CodeStub::NoCache) {