| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 450d0c12c29215c3b1af2c8f29037547a063e23c..0168683298db8dffd957d3d8b35fa4c6589d4ea0 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -370,7 +370,6 @@ class CodeStub BASE_EMBEDDED {
|
| public: \
|
| inline Major MajorKey() const override { return NAME; }; \
|
| \
|
| - protected: \
|
| DEFINE_CODE_STUB_BASE(NAME##Stub, SUPER)
|
|
|
|
|
| @@ -386,59 +385,27 @@ class CodeStub BASE_EMBEDDED {
|
| Handle<Code> GenerateCode() override; \
|
| DEFINE_CODE_STUB(NAME, SUPER)
|
|
|
| -#define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \
|
| - public: \
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override; \
|
| - DEFINE_CODE_STUB(NAME, SUPER)
|
| -
|
| -#define DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(NAME, SUPER) \
|
| - public: \
|
| - static compiler::Node* Generate(CodeStubAssembler* assembler, \
|
| - compiler::Node* left, compiler::Node* right, \
|
| - compiler::Node* context); \
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override { \
|
| - assembler->Return(Generate(assembler, assembler->Parameter(0), \
|
| - assembler->Parameter(1), \
|
| - assembler->Parameter(2))); \
|
| - } \
|
| - DEFINE_CODE_STUB(NAME, SUPER)
|
| -
|
| -#define DEFINE_TURBOFAN_BINARY_OP_CODE_STUB_WITH_FEEDBACK(NAME, SUPER) \
|
| - public: \
|
| - static compiler::Node* Generate( \
|
| - CodeStubAssembler* assembler, compiler::Node* left, \
|
| - compiler::Node* right, compiler::Node* slot_id, \
|
| - compiler::Node* type_feedback_vector, compiler::Node* context); \
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override { \
|
| - assembler->Return( \
|
| - Generate(assembler, assembler->Parameter(0), assembler->Parameter(1), \
|
| - assembler->Parameter(2), assembler->Parameter(3), \
|
| - assembler->Parameter(4))); \
|
| - } \
|
| +#define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \
|
| + public: \
|
| + void GenerateAssembly(compiler::CodeAssemblerState* state) const override; \
|
| DEFINE_CODE_STUB(NAME, SUPER)
|
|
|
| -#define DEFINE_TURBOFAN_UNARY_OP_CODE_STUB(NAME, SUPER) \
|
| - public: \
|
| - static compiler::Node* Generate(CodeStubAssembler* assembler, \
|
| - compiler::Node* value, \
|
| - compiler::Node* context); \
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override { \
|
| - assembler->Return(Generate(assembler, assembler->Parameter(0), \
|
| - assembler->Parameter(1))); \
|
| - } \
|
| +#define DEFINE_TURBOFAN_BINARY_OP_CODE_STUB_WITH_FEEDBACK(NAME, SUPER) \
|
| + public: \
|
| + static compiler::Node* Generate( \
|
| + CodeStubAssembler* assembler, compiler::Node* left, \
|
| + compiler::Node* right, compiler::Node* slot_id, \
|
| + compiler::Node* type_feedback_vector, compiler::Node* context); \
|
| + void GenerateAssembly(compiler::CodeAssemblerState* state) const override; \
|
| DEFINE_CODE_STUB(NAME, SUPER)
|
|
|
| -#define DEFINE_TURBOFAN_UNARY_OP_CODE_STUB_WITH_FEEDBACK(NAME, SUPER) \
|
| - public: \
|
| - static compiler::Node* Generate( \
|
| - CodeStubAssembler* assembler, compiler::Node* value, \
|
| - compiler::Node* context, compiler::Node* type_feedback_vector, \
|
| - compiler::Node* slot_id); \
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override { \
|
| - assembler->Return( \
|
| - Generate(assembler, assembler->Parameter(0), assembler->Parameter(1), \
|
| - assembler->Parameter(2), assembler->Parameter(3))); \
|
| - } \
|
| +#define DEFINE_TURBOFAN_UNARY_OP_CODE_STUB_WITH_FEEDBACK(NAME, SUPER) \
|
| + public: \
|
| + static compiler::Node* Generate( \
|
| + CodeStubAssembler* assembler, compiler::Node* value, \
|
| + compiler::Node* context, compiler::Node* type_feedback_vector, \
|
| + compiler::Node* slot_id); \
|
| + void GenerateAssembly(compiler::CodeAssemblerState* state) const override; \
|
| DEFINE_CODE_STUB(NAME, SUPER)
|
|
|
| #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \
|
| @@ -638,7 +605,7 @@ class TurboFanCodeStub : public CodeStub {
|
| protected:
|
| explicit TurboFanCodeStub(Isolate* isolate) : CodeStub(isolate) {}
|
|
|
| - virtual void GenerateAssembly(CodeStubAssembler* assembler) const = 0;
|
| + virtual void GenerateAssembly(compiler::CodeAssemblerState* state) const = 0;
|
|
|
| private:
|
| DEFINE_CODE_STUB_BASE(TurboFanCodeStub, CodeStub);
|
| @@ -794,13 +761,11 @@ class StoreInterceptorStub : public TurboFanCodeStub {
|
| public:
|
| explicit StoreInterceptorStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assember) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::HANDLER; }
|
| ExtraICState GetExtraICState() const override { return Code::STORE_IC; }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector);
|
| - DEFINE_CODE_STUB(StoreInterceptor, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StoreInterceptor, TurboFanCodeStub);
|
| };
|
|
|
| class LoadIndexedInterceptorStub : public TurboFanCodeStub {
|
| @@ -1975,12 +1940,10 @@ class LoadICTrampolineStub : public TurboFanCodeStub {
|
| public:
|
| explicit LoadICTrampolineStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Load);
|
| - DEFINE_CODE_STUB(LoadICTrampoline, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(LoadICTrampoline, TurboFanCodeStub);
|
| };
|
|
|
| class LoadGlobalICTrampolineStub : public TurboFanCodeStub {
|
| @@ -1991,8 +1954,6 @@ class LoadGlobalICTrampolineStub : public TurboFanCodeStub {
|
| minor_key_ = state.GetExtraICState();
|
| }
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::LOAD_GLOBAL_IC; }
|
|
|
| ExtraICState GetExtraICState() const final {
|
| @@ -2000,7 +1961,7 @@ class LoadGlobalICTrampolineStub : public TurboFanCodeStub {
|
| }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadGlobal);
|
| - DEFINE_CODE_STUB(LoadGlobalICTrampoline, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(LoadGlobalICTrampoline, TurboFanCodeStub);
|
| };
|
|
|
| class KeyedLoadICTrampolineTFStub : public LoadICTrampolineStub {
|
| @@ -2008,11 +1969,9 @@ class KeyedLoadICTrampolineTFStub : public LoadICTrampolineStub {
|
| explicit KeyedLoadICTrampolineTFStub(Isolate* isolate)
|
| : LoadICTrampolineStub(isolate) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
|
|
|
| - DEFINE_CODE_STUB(KeyedLoadICTrampolineTF, LoadICTrampolineStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(KeyedLoadICTrampolineTF, LoadICTrampolineStub);
|
| };
|
|
|
| class StoreICTrampolineStub : public TurboFanCodeStub {
|
| @@ -2022,8 +1981,6 @@ class StoreICTrampolineStub : public TurboFanCodeStub {
|
| minor_key_ = state.GetExtraICState();
|
| }
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::STORE_IC; }
|
|
|
| ExtraICState GetExtraICState() const final {
|
| @@ -2034,7 +1991,7 @@ class StoreICTrampolineStub : public TurboFanCodeStub {
|
| StoreICState state() const { return StoreICState(GetExtraICState()); }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Store);
|
| - DEFINE_CODE_STUB(StoreICTrampoline, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StoreICTrampoline, TurboFanCodeStub);
|
| };
|
|
|
| class KeyedStoreICTrampolineStub : public PlatformCodeStub {
|
| @@ -2063,11 +2020,9 @@ class KeyedStoreICTrampolineTFStub : public StoreICTrampolineStub {
|
| KeyedStoreICTrampolineTFStub(Isolate* isolate, const StoreICState& state)
|
| : StoreICTrampolineStub(isolate, state) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_STORE_IC; }
|
|
|
| - DEFINE_CODE_STUB(KeyedStoreICTrampolineTF, StoreICTrampolineStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(KeyedStoreICTrampolineTF, StoreICTrampolineStub);
|
| };
|
|
|
| class CallICTrampolineStub : public PlatformCodeStub {
|
| @@ -2096,22 +2051,18 @@ class LoadICStub : public TurboFanCodeStub {
|
| public:
|
| explicit LoadICStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
|
| - DEFINE_CODE_STUB(LoadIC, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(LoadIC, TurboFanCodeStub);
|
| };
|
|
|
| class LoadICProtoArrayStub : public TurboFanCodeStub {
|
| public:
|
| explicit LoadICProtoArrayStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadICProtoArray);
|
| - DEFINE_CODE_STUB(LoadICProtoArray, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(LoadICProtoArray, TurboFanCodeStub);
|
| };
|
|
|
| class LoadGlobalICStub : public TurboFanCodeStub {
|
| @@ -2121,8 +2072,6 @@ class LoadGlobalICStub : public TurboFanCodeStub {
|
| minor_key_ = state.GetExtraICState();
|
| }
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::LOAD_GLOBAL_IC; }
|
|
|
| ExtraICState GetExtraICState() const final {
|
| @@ -2130,18 +2079,16 @@ class LoadGlobalICStub : public TurboFanCodeStub {
|
| }
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadGlobalWithVector);
|
| - DEFINE_CODE_STUB(LoadGlobalIC, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(LoadGlobalIC, TurboFanCodeStub);
|
| };
|
|
|
| class KeyedLoadICTFStub : public LoadICStub {
|
| public:
|
| explicit KeyedLoadICTFStub(Isolate* isolate) : LoadICStub(isolate) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
|
|
|
| - DEFINE_CODE_STUB(KeyedLoadICTF, LoadICStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(KeyedLoadICTF, LoadICStub);
|
| };
|
|
|
| class StoreICStub : public TurboFanCodeStub {
|
| @@ -2151,15 +2098,13 @@ class StoreICStub : public TurboFanCodeStub {
|
| 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(StoreIC, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StoreIC, TurboFanCodeStub);
|
| };
|
|
|
| class KeyedStoreICStub : public PlatformCodeStub {
|
| @@ -2189,11 +2134,9 @@ class KeyedStoreICTFStub : public StoreICStub {
|
| KeyedStoreICTFStub(Isolate* isolate, const StoreICState& state)
|
| : StoreICStub(isolate, state) {}
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
| -
|
| Code::Kind GetCodeKind() const override { return Code::KEYED_STORE_IC; }
|
|
|
| - DEFINE_CODE_STUB(KeyedStoreICTF, StoreICStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(KeyedStoreICTF, StoreICStub);
|
| };
|
|
|
| class DoubleToIStub : public PlatformCodeStub {
|
| @@ -2398,23 +2341,22 @@ class AllocateHeapNumberStub : public TurboFanCodeStub {
|
| : TurboFanCodeStub(isolate) {}
|
|
|
| void InitializeDescriptor(CodeStubDescriptor* descriptor) override;
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override;
|
|
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(AllocateHeapNumber);
|
| - DEFINE_CODE_STUB(AllocateHeapNumber, TurboFanCodeStub);
|
| -};
|
| -
|
| -#define SIMD128_ALLOC_STUB(TYPE, Type, type, lane_count, lane_type) \
|
| - class Allocate##Type##Stub : public TurboFanCodeStub { \
|
| - public: \
|
| - explicit Allocate##Type##Stub(Isolate* isolate) \
|
| - : TurboFanCodeStub(isolate) {} \
|
| - \
|
| - void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override; \
|
| - \
|
| - DEFINE_CALL_INTERFACE_DESCRIPTOR(Allocate##Type); \
|
| - DEFINE_CODE_STUB(Allocate##Type, TurboFanCodeStub); \
|
| + DEFINE_TURBOFAN_CODE_STUB(AllocateHeapNumber, TurboFanCodeStub);
|
| +};
|
| +
|
| +#define SIMD128_ALLOC_STUB(TYPE, Type, type, lane_count, lane_type) \
|
| + class Allocate##Type##Stub : public TurboFanCodeStub { \
|
| + public: \
|
| + explicit Allocate##Type##Stub(Isolate* isolate) \
|
| + : TurboFanCodeStub(isolate) {} \
|
| + \
|
| + void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \
|
| + void GenerateAssembly(compiler::CodeAssemblerState* state) const override; \
|
| + \
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(Allocate##Type); \
|
| + DEFINE_CODE_STUB(Allocate##Type, TurboFanCodeStub); \
|
| };
|
| SIMD128_TYPES(SIMD128_ALLOC_STUB)
|
| #undef SIMD128_ALLOC_STUB
|
| @@ -2713,16 +2655,8 @@ class SubStringStub : public TurboFanCodeStub {
|
| compiler::Node* string, compiler::Node* from,
|
| compiler::Node* to, compiler::Node* context);
|
|
|
| - void GenerateAssembly(CodeStubAssembler* assembler) const override {
|
| - assembler->Return(Generate(assembler,
|
| - assembler->Parameter(Descriptor::kString),
|
| - assembler->Parameter(Descriptor::kFrom),
|
| - assembler->Parameter(Descriptor::kTo),
|
| - assembler->Parameter(Descriptor::kContext)));
|
| - }
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(SubString);
|
| - DEFINE_CODE_STUB(SubString, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(SubString, TurboFanCodeStub);
|
| };
|
|
|
|
|
|
|