Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 7ac7a4d07774fa82ece50f535cb9405a070643b0..7f35e98414b754c4d31ac4ec4bdf603fb9bac47d 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -139,6 +139,8 @@ namespace internal { |
V(ToInteger) \ |
V(ToLength) \ |
V(HasProperty) \ |
+ V(LoadICTrampolineTF) \ |
+ V(LoadICTF) \ |
/* IC Handler stubs */ \ |
V(ArrayBufferViewLoadField) \ |
V(KeyedLoadSloppyArguments) \ |
@@ -2384,6 +2386,31 @@ class LoadICTrampolineStub : public PlatformCodeStub { |
DEFINE_PLATFORM_CODE_STUB(LoadICTrampoline, PlatformCodeStub); |
}; |
+class LoadICTrampolineTFStub : public TurboFanCodeStub { |
+ public: |
+ LoadICTrampolineTFStub(Isolate* isolate, const LoadICState& state) |
+ : TurboFanCodeStub(isolate) { |
+ minor_key_ = state.GetExtraICState(); |
+ } |
+ |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
+ |
+ Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } |
+ |
+ InlineCacheState GetICState() const final { return GENERIC; } |
+ |
+ ExtraICState GetExtraICState() const final { |
+ return static_cast<ExtraICState>(minor_key_); |
+ } |
+ |
+ protected: |
+ LoadICState state() const { |
+ return LoadICState(static_cast<ExtraICState>(minor_key_)); |
+ } |
+ |
+ DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); |
+ DEFINE_CODE_STUB(LoadICTrampolineTF, TurboFanCodeStub); |
+}; |
class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { |
public: |
@@ -2481,6 +2508,24 @@ class LoadICStub : public PlatformCodeStub { |
void GenerateImpl(MacroAssembler* masm, bool in_frame); |
}; |
+class LoadICTFStub : public TurboFanCodeStub { |
+ public: |
+ explicit LoadICTFStub(Isolate* isolate, const LoadICState& state) |
+ : TurboFanCodeStub(isolate) { |
+ minor_key_ = state.GetExtraICState(); |
+ } |
+ |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
+ |
+ Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } |
+ InlineCacheState GetICState() const final { return GENERIC; } |
+ ExtraICState GetExtraICState() const final { |
+ return static_cast<ExtraICState>(minor_key_); |
+ } |
+ |
+ DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); |
+ DEFINE_CODE_STUB(LoadICTF, TurboFanCodeStub); |
+}; |
class KeyedLoadICStub : public PlatformCodeStub { |
public: |