| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 25d082bf4bac91859e07d10b6ccbffae1a71841f..c6f124ec6921ac4f6d503e2b581dc5c914445179 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -2105,24 +2105,37 @@ class StringCharAtGenerator {
|
|
|
| class LoadDictionaryElementStub : public HydrogenCodeStub {
|
| public:
|
| - explicit LoadDictionaryElementStub(Isolate* isolate)
|
| - : HydrogenCodeStub(isolate) {}
|
| + explicit LoadDictionaryElementStub(Isolate* isolate, const LoadICState& state)
|
| + : HydrogenCodeStub(isolate) {
|
| + minor_key_ = state.GetExtraICState();
|
| + }
|
|
|
| CallInterfaceDescriptor GetCallInterfaceDescriptor() override {
|
| return LoadWithVectorDescriptor(isolate());
|
| }
|
|
|
| + LanguageMode language_mode() const {
|
| + return LoadICState::GetLanguageMode(MinorKey());
|
| + }
|
| +
|
| DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub);
|
| };
|
|
|
|
|
| class KeyedLoadGenericStub : public HydrogenCodeStub {
|
| public:
|
| - explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
|
| + explicit KeyedLoadGenericStub(Isolate* isolate, const LoadICState& state)
|
| + : HydrogenCodeStub(isolate) {
|
| + minor_key_ = state.GetExtraICState();
|
| + }
|
|
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
|
| InlineCacheState GetICState() const override { return GENERIC; }
|
|
|
| + LanguageMode language_mode() const {
|
| + return LoadICState::GetLanguageMode(MinorKey());
|
| + }
|
| +
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Load);
|
|
|
| DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub);
|
| @@ -2144,7 +2157,7 @@ class LoadICTrampolineStub : public PlatformCodeStub {
|
| return static_cast<ExtraICState>(minor_key_);
|
| }
|
|
|
| - private:
|
| + protected:
|
| LoadICState state() const {
|
| return LoadICState(static_cast<ExtraICState>(minor_key_));
|
| }
|
| @@ -2156,8 +2169,8 @@ class LoadICTrampolineStub : public PlatformCodeStub {
|
|
|
| class KeyedLoadICTrampolineStub : public LoadICTrampolineStub {
|
| public:
|
| - explicit KeyedLoadICTrampolineStub(Isolate* isolate)
|
| - : LoadICTrampolineStub(isolate, LoadICState(0)) {}
|
| + explicit KeyedLoadICTrampolineStub(Isolate* isolate, const LoadICState& state)
|
| + : LoadICTrampolineStub(isolate, state) {}
|
|
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
|
|
|
| @@ -2263,12 +2276,18 @@ class LoadICStub : public PlatformCodeStub {
|
|
|
| class KeyedLoadICStub : public PlatformCodeStub {
|
| public:
|
| - explicit KeyedLoadICStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
|
| + explicit KeyedLoadICStub(Isolate* isolate, const LoadICState& state)
|
| + : PlatformCodeStub(isolate) {
|
| + minor_key_ = state.GetExtraICState();
|
| + }
|
|
|
| void GenerateForTrampoline(MacroAssembler* masm);
|
|
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
|
| InlineCacheState GetICState() const final { return DEFAULT; }
|
| + ExtraICState GetExtraICState() const final {
|
| + return static_cast<ExtraICState>(minor_key_);
|
| + }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
|
| DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub);
|
| @@ -2312,6 +2331,9 @@ class VectorKeyedStoreICStub : public PlatformCodeStub {
|
|
|
| Code::Kind GetCodeKind() const final { return Code::KEYED_STORE_IC; }
|
| InlineCacheState GetICState() const final { return DEFAULT; }
|
| + virtual ExtraICState GetExtraICState() const final {
|
| + return static_cast<ExtraICState>(minor_key_);
|
| + }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC);
|
| DEFINE_PLATFORM_CODE_STUB(VectorKeyedStoreIC, PlatformCodeStub);
|
|
|