| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 0486c676fb4e494448aead544ca45c92ecb8abe9..9b188f33b616642f44fe4ecc83209d33c1dba922 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -164,6 +164,7 @@ class ObjectLiteral;
|
| V(StoreFastElement) \
|
| V(StoreField) \
|
| V(StoreGlobal) \
|
| + V(StoreICTF) \
|
| V(StoreInterceptor) \
|
| V(StoreTransition) \
|
| V(LoadApiGetter) \
|
| @@ -176,7 +177,8 @@ class ObjectLiteral;
|
| /* only */ \
|
| V(LoadICTrampolineTF) \
|
| V(LoadGlobalICTrampoline) \
|
| - V(KeyedLoadICTrampolineTF)
|
| + V(KeyedLoadICTrampolineTF) \
|
| + V(StoreICTrampolineTF)
|
|
|
| // List of code stubs only used on ARM 32 bits platforms.
|
| #if V8_TARGET_ARCH_ARM
|
| @@ -2414,15 +2416,34 @@ class StoreICTrampolineStub : public PlatformCodeStub {
|
| }
|
|
|
| protected:
|
| - StoreICState state() const {
|
| - return StoreICState(static_cast<ExtraICState>(minor_key_));
|
| - }
|
| + StoreICState state() const { return StoreICState(GetExtraICState()); }
|
|
|
| private:
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Store);
|
| DEFINE_PLATFORM_CODE_STUB(StoreICTrampoline, PlatformCodeStub);
|
| };
|
|
|
| +class StoreICTrampolineTFStub : public TurboFanCodeStub {
|
| + public:
|
| + StoreICTrampolineTFStub(Isolate* isolate, const StoreICState& state)
|
| + : TurboFanCodeStub(isolate) {
|
| + minor_key_ = state.GetExtraICState();
|
| + }
|
| +
|
| + void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| +
|
| + Code::Kind GetCodeKind() const override { return Code::STORE_IC; }
|
| + ExtraICState GetExtraICState() const final {
|
| + return static_cast<ExtraICState>(minor_key_);
|
| + }
|
| +
|
| + protected:
|
| + StoreICState state() const { return StoreICState(GetExtraICState()); }
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(Store);
|
| + DEFINE_CODE_STUB(StoreICTrampolineTF, TurboFanCodeStub);
|
| +};
|
| +
|
| class KeyedStoreICTrampolineStub : public StoreICTrampolineStub {
|
| public:
|
| KeyedStoreICTrampolineStub(Isolate* isolate, const StoreICState& state)
|
| @@ -2551,6 +2572,24 @@ class StoreICStub : public PlatformCodeStub {
|
| void GenerateImpl(MacroAssembler* masm, bool in_frame);
|
| };
|
|
|
| +class StoreICTFStub : public TurboFanCodeStub {
|
| + public:
|
| + StoreICTFStub(Isolate* isolate, const StoreICState& state)
|
| + : TurboFanCodeStub(isolate) {
|
| + minor_key_ = state.GetExtraICState();
|
| + }
|
| +
|
| + void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| +
|
| + Code::Kind GetCodeKind() const override { return Code::STORE_IC; }
|
| + ExtraICState GetExtraICState() const final {
|
| + return static_cast<ExtraICState>(minor_key_);
|
| + }
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector);
|
| + DEFINE_CODE_STUB(StoreICTF, TurboFanCodeStub);
|
| +};
|
| +
|
| class KeyedStoreICStub : public PlatformCodeStub {
|
| public:
|
| KeyedStoreICStub(Isolate* isolate, const StoreICState& state)
|
|
|