Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 0168683298db8dffd957d3d8b35fa4c6589d4ea0..450d0c12c29215c3b1af2c8f29037547a063e23c 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -370,6 +370,7 @@ |
public: \ |
inline Major MajorKey() const override { return NAME; }; \ |
\ |
+ protected: \ |
DEFINE_CODE_STUB_BASE(NAME##Stub, SUPER) |
@@ -385,27 +386,59 @@ |
Handle<Code> GenerateCode() override; \ |
DEFINE_CODE_STUB(NAME, SUPER) |
-#define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \ |
- public: \ |
- void GenerateAssembly(compiler::CodeAssemblerState* state) const override; \ |
+#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_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 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_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 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_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_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_CODE_STUB(NAME, SUPER) |
#define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \ |
@@ -605,7 +638,7 @@ |
protected: |
explicit TurboFanCodeStub(Isolate* isolate) : CodeStub(isolate) {} |
- virtual void GenerateAssembly(compiler::CodeAssemblerState* state) const = 0; |
+ virtual void GenerateAssembly(CodeStubAssembler* assembler) const = 0; |
private: |
DEFINE_CODE_STUB_BASE(TurboFanCodeStub, CodeStub); |
@@ -761,11 +794,13 @@ |
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_TURBOFAN_CODE_STUB(StoreInterceptor, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(StoreInterceptor, TurboFanCodeStub); |
}; |
class LoadIndexedInterceptorStub : public TurboFanCodeStub { |
@@ -1940,10 +1975,12 @@ |
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_TURBOFAN_CODE_STUB(LoadICTrampoline, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(LoadICTrampoline, TurboFanCodeStub); |
}; |
class LoadGlobalICTrampolineStub : public TurboFanCodeStub { |
@@ -1954,6 +1991,8 @@ |
minor_key_ = state.GetExtraICState(); |
} |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
+ |
Code::Kind GetCodeKind() const override { return Code::LOAD_GLOBAL_IC; } |
ExtraICState GetExtraICState() const final { |
@@ -1961,7 +2000,7 @@ |
} |
DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadGlobal); |
- DEFINE_TURBOFAN_CODE_STUB(LoadGlobalICTrampoline, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(LoadGlobalICTrampoline, TurboFanCodeStub); |
}; |
class KeyedLoadICTrampolineTFStub : public LoadICTrampolineStub { |
@@ -1969,9 +2008,11 @@ |
explicit KeyedLoadICTrampolineTFStub(Isolate* isolate) |
: LoadICTrampolineStub(isolate) {} |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
+ |
Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |
- DEFINE_TURBOFAN_CODE_STUB(KeyedLoadICTrampolineTF, LoadICTrampolineStub); |
+ DEFINE_CODE_STUB(KeyedLoadICTrampolineTF, LoadICTrampolineStub); |
}; |
class StoreICTrampolineStub : public TurboFanCodeStub { |
@@ -1981,6 +2022,8 @@ |
minor_key_ = state.GetExtraICState(); |
} |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
+ |
Code::Kind GetCodeKind() const override { return Code::STORE_IC; } |
ExtraICState GetExtraICState() const final { |
@@ -1991,7 +2034,7 @@ |
StoreICState state() const { return StoreICState(GetExtraICState()); } |
DEFINE_CALL_INTERFACE_DESCRIPTOR(Store); |
- DEFINE_TURBOFAN_CODE_STUB(StoreICTrampoline, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(StoreICTrampoline, TurboFanCodeStub); |
}; |
class KeyedStoreICTrampolineStub : public PlatformCodeStub { |
@@ -2020,9 +2063,11 @@ |
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_TURBOFAN_CODE_STUB(KeyedStoreICTrampolineTF, StoreICTrampolineStub); |
+ DEFINE_CODE_STUB(KeyedStoreICTrampolineTF, StoreICTrampolineStub); |
}; |
class CallICTrampolineStub : public PlatformCodeStub { |
@@ -2051,18 +2096,22 @@ |
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_TURBOFAN_CODE_STUB(LoadIC, TurboFanCodeStub); |
+ DEFINE_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_TURBOFAN_CODE_STUB(LoadICProtoArray, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(LoadICProtoArray, TurboFanCodeStub); |
}; |
class LoadGlobalICStub : public TurboFanCodeStub { |
@@ -2072,6 +2121,8 @@ |
minor_key_ = state.GetExtraICState(); |
} |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
+ |
Code::Kind GetCodeKind() const override { return Code::LOAD_GLOBAL_IC; } |
ExtraICState GetExtraICState() const final { |
@@ -2079,16 +2130,18 @@ |
} |
DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadGlobalWithVector); |
- DEFINE_TURBOFAN_CODE_STUB(LoadGlobalIC, TurboFanCodeStub); |
+ DEFINE_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_TURBOFAN_CODE_STUB(KeyedLoadICTF, LoadICStub); |
+ DEFINE_CODE_STUB(KeyedLoadICTF, LoadICStub); |
}; |
class StoreICStub : public TurboFanCodeStub { |
@@ -2098,13 +2151,15 @@ |
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_TURBOFAN_CODE_STUB(StoreIC, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(StoreIC, TurboFanCodeStub); |
}; |
class KeyedStoreICStub : public PlatformCodeStub { |
@@ -2134,9 +2189,11 @@ |
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_TURBOFAN_CODE_STUB(KeyedStoreICTF, StoreICStub); |
+ DEFINE_CODE_STUB(KeyedStoreICTF, StoreICStub); |
}; |
class DoubleToIStub : public PlatformCodeStub { |
@@ -2341,22 +2398,23 @@ |
: TurboFanCodeStub(isolate) {} |
void InitializeDescriptor(CodeStubDescriptor* descriptor) override; |
+ void GenerateAssembly(CodeStubAssembler* assembler) const override; |
DEFINE_CALL_INTERFACE_DESCRIPTOR(AllocateHeapNumber); |
- 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); \ |
+ 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); \ |
}; |
SIMD128_TYPES(SIMD128_ALLOC_STUB) |
#undef SIMD128_ALLOC_STUB |
@@ -2655,8 +2713,16 @@ |
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_TURBOFAN_CODE_STUB(SubString, TurboFanCodeStub); |
+ DEFINE_CODE_STUB(SubString, TurboFanCodeStub); |
}; |