| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index fbed23f84720b6ecb7af42346f844a00ca19fdd4..533641955c5ea9fa37be7a4ba4278d81bb221e7c 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -101,6 +101,10 @@ namespace internal {
|
| V(AllocateHeapNumber) \
|
| V(AllocateMutableHeapNumber) \
|
| V(StringLength) \
|
| + V(LessThan) \
|
| + V(LessThanOrEqual) \
|
| + V(GreaterThan) \
|
| + V(GreaterThanOrEqual) \
|
| V(StrictEqual) \
|
| V(StrictNotEqual) \
|
| V(StringEqual) \
|
| @@ -351,11 +355,10 @@ class CodeStub BASE_EMBEDDED {
|
| Handle<Code> GenerateCode() override; \
|
| DEFINE_CODE_STUB(NAME, SUPER)
|
|
|
| -#define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \
|
| - public: \
|
| - CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { \
|
| - return DESC##Descriptor(isolate()); \
|
| - }; \
|
| +#define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \
|
| + public: \
|
| + void GenerateAssembly(compiler::CodeStubAssembler* assembler) \
|
| + const override; \
|
| DEFINE_CODE_STUB(NAME, SUPER)
|
|
|
| #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \
|
| @@ -629,60 +632,81 @@ class StringLengthStub : public TurboFanCodeStub {
|
| InlineCacheState GetICState() const override { return MONOMORPHIC; }
|
| ExtraICState GetExtraICState() const override { return Code::LOAD_IC; }
|
|
|
| - void GenerateAssembly(compiler::CodeStubAssembler* assembler) const override;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
|
| - DEFINE_CODE_STUB(StringLength, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StringLength, TurboFanCodeStub);
|
| +};
|
| +
|
| +class LessThanStub final : public TurboFanCodeStub {
|
| + public:
|
| + explicit LessThanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| + DEFINE_TURBOFAN_CODE_STUB(LessThan, TurboFanCodeStub);
|
| +};
|
| +
|
| +class LessThanOrEqualStub final : public TurboFanCodeStub {
|
| + public:
|
| + explicit LessThanOrEqualStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| + DEFINE_TURBOFAN_CODE_STUB(LessThanOrEqual, TurboFanCodeStub);
|
| +};
|
| +
|
| +class GreaterThanStub final : public TurboFanCodeStub {
|
| + public:
|
| + explicit GreaterThanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| + DEFINE_TURBOFAN_CODE_STUB(GreaterThan, TurboFanCodeStub);
|
| +};
|
| +
|
| +class GreaterThanOrEqualStub final : public TurboFanCodeStub {
|
| + public:
|
| + explicit GreaterThanOrEqualStub(Isolate* isolate)
|
| + : TurboFanCodeStub(isolate) {}
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| + DEFINE_TURBOFAN_CODE_STUB(GreaterThanOrEqual, TurboFanCodeStub);
|
| };
|
|
|
| class StrictEqualStub final : public TurboFanCodeStub {
|
| public:
|
| explicit StrictEqualStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(compiler::CodeStubAssembler* assembler) const final;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| - DEFINE_CODE_STUB(StrictEqual, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StrictEqual, TurboFanCodeStub);
|
| };
|
|
|
| class StrictNotEqualStub final : public TurboFanCodeStub {
|
| public:
|
| explicit StrictNotEqualStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(compiler::CodeStubAssembler* assembler) const final;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| - DEFINE_CODE_STUB(StrictNotEqual, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StrictNotEqual, TurboFanCodeStub);
|
| };
|
|
|
| class StringEqualStub final : public TurboFanCodeStub {
|
| public:
|
| explicit StringEqualStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(compiler::CodeStubAssembler* assembler) const final;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| - DEFINE_CODE_STUB(StringEqual, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StringEqual, TurboFanCodeStub);
|
| };
|
|
|
| class StringNotEqualStub final : public TurboFanCodeStub {
|
| public:
|
| explicit StringNotEqualStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(compiler::CodeStubAssembler* assembler) const final;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
|
| - DEFINE_CODE_STUB(StringNotEqual, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StringNotEqual, TurboFanCodeStub);
|
| };
|
|
|
| class ToBooleanStub final : public TurboFanCodeStub {
|
| public:
|
| explicit ToBooleanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
|
|
|
| - void GenerateAssembly(compiler::CodeStubAssembler* assembler) const final;
|
| -
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(ToBoolean);
|
| - DEFINE_CODE_STUB(ToBoolean, TurboFanCodeStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(ToBoolean, TurboFanCodeStub);
|
| };
|
|
|
| enum StringAddFlags {
|
|
|