Chromium Code Reviews| Index: src/code-stubs.h |
| diff --git a/src/code-stubs.h b/src/code-stubs.h |
| index 0486c676fb4e494448aead544ca45c92ecb8abe9..e2df9d0702f712002d7ce9de7ddb8a363fe17e6e 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: |
| + explicit StoreICTrampolineTFStub(Isolate* isolate, const StoreICState& state) |
|
Jakob Kummerow
2016/09/26 23:32:30
nit: "explicit" is unnecessary here
Igor Sheludko
2016/09/27 06:46:05
Done.
|
| + : 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: |
| + explicit StoreICTFStub(Isolate* isolate, const StoreICState& state) |
|
Jakob Kummerow
2016/09/26 23:32:30
nit: "explicit" is unnecessary here
Igor Sheludko
2016/09/27 06:46:05
Done.
|
| + : 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) |