Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: src/code-stubs.h

Issue 1902823002: [ignition] Inline the binary op TurboFan code stubs in the bytecode handlers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/code-stubs.cc » ('j') | src/interpreter/interpreter.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CODE_STUBS_H_ 5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_ 6 #define V8_CODE_STUBS_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/code-stub-assembler.h" 10 #include "src/code-stub-assembler.h"
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 public: \ 393 public: \
394 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \ 394 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \
395 Handle<Code> GenerateCode() override; \ 395 Handle<Code> GenerateCode() override; \
396 DEFINE_CODE_STUB(NAME, SUPER) 396 DEFINE_CODE_STUB(NAME, SUPER)
397 397
398 #define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \ 398 #define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \
399 public: \ 399 public: \
400 void GenerateAssembly(CodeStubAssembler* assembler) const override; \ 400 void GenerateAssembly(CodeStubAssembler* assembler) const override; \
401 DEFINE_CODE_STUB(NAME, SUPER) 401 DEFINE_CODE_STUB(NAME, SUPER)
402 402
403 #define DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(NAME, SUPER) \
404 public: \
405 static compiler::Node* Generate(CodeStubAssembler* assembler, \
406 compiler::Node* left, compiler::Node* right, \
407 compiler::Node* context); \
408 void GenerateAssembly(CodeStubAssembler* assembler) const override { \
409 assembler->Return(Generate(assembler, assembler->Parameter(0), \
410 assembler->Parameter(1), \
411 assembler->Parameter(2))); \
412 } \
413 DEFINE_CODE_STUB(NAME, SUPER)
414
403 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \ 415 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \
404 public: \ 416 public: \
405 Handle<Code> GenerateCode() override; \ 417 Handle<Code> GenerateCode() override; \
406 DEFINE_CODE_STUB(NAME, SUPER) 418 DEFINE_CODE_STUB(NAME, SUPER)
407 419
408 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \ 420 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \
409 public: \ 421 public: \
410 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { \ 422 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override { \
411 return NAME##Descriptor(isolate()); \ 423 return NAME##Descriptor(isolate()); \
412 } 424 }
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 684
673 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); 685 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
674 DEFINE_TURBOFAN_CODE_STUB(StringLength, TurboFanCodeStub); 686 DEFINE_TURBOFAN_CODE_STUB(StringLength, TurboFanCodeStub);
675 }; 687 };
676 688
677 class AddStub final : public TurboFanCodeStub { 689 class AddStub final : public TurboFanCodeStub {
678 public: 690 public:
679 explicit AddStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 691 explicit AddStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
680 692
681 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 693 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
682 DEFINE_TURBOFAN_CODE_STUB(Add, TurboFanCodeStub); 694 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(Add, TurboFanCodeStub);
683 }; 695 };
684 696
685 class SubtractStub final : public TurboFanCodeStub { 697 class SubtractStub final : public TurboFanCodeStub {
686 public: 698 public:
687 explicit SubtractStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 699 explicit SubtractStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
688 700
689 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 701 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
690 DEFINE_TURBOFAN_CODE_STUB(Subtract, TurboFanCodeStub); 702 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(Subtract, TurboFanCodeStub);
691 }; 703 };
692 704
693 class MultiplyStub final : public TurboFanCodeStub { 705 class MultiplyStub final : public TurboFanCodeStub {
694 public: 706 public:
695 explicit MultiplyStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 707 explicit MultiplyStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
696 708
697 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 709 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
698 DEFINE_TURBOFAN_CODE_STUB(Multiply, TurboFanCodeStub); 710 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(Multiply, TurboFanCodeStub);
699 }; 711 };
700 712
701 class DivideStub final : public TurboFanCodeStub { 713 class DivideStub final : public TurboFanCodeStub {
702 public: 714 public:
703 explicit DivideStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 715 explicit DivideStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
704 716
705 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 717 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
706 DEFINE_TURBOFAN_CODE_STUB(Divide, TurboFanCodeStub); 718 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(Divide, TurboFanCodeStub);
707 }; 719 };
708 720
709 class ModulusStub final : public TurboFanCodeStub { 721 class ModulusStub final : public TurboFanCodeStub {
710 public: 722 public:
711 explicit ModulusStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 723 explicit ModulusStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
712 724
713 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 725 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
714 DEFINE_TURBOFAN_CODE_STUB(Modulus, TurboFanCodeStub); 726 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(Modulus, TurboFanCodeStub);
715 }; 727 };
716 728
717 class ShiftRightStub final : public TurboFanCodeStub { 729 class ShiftRightStub final : public TurboFanCodeStub {
718 public: 730 public:
719 explicit ShiftRightStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 731 explicit ShiftRightStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
720 732
721 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 733 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
722 DEFINE_TURBOFAN_CODE_STUB(ShiftRight, TurboFanCodeStub); 734 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(ShiftRight, TurboFanCodeStub);
723 }; 735 };
724 736
725 class ShiftRightLogicalStub final : public TurboFanCodeStub { 737 class ShiftRightLogicalStub final : public TurboFanCodeStub {
726 public: 738 public:
727 explicit ShiftRightLogicalStub(Isolate* isolate) 739 explicit ShiftRightLogicalStub(Isolate* isolate)
728 : TurboFanCodeStub(isolate) {} 740 : TurboFanCodeStub(isolate) {}
729 741
730 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 742 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
731 DEFINE_TURBOFAN_CODE_STUB(ShiftRightLogical, TurboFanCodeStub); 743 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(ShiftRightLogical, TurboFanCodeStub);
732 }; 744 };
733 745
734 class ShiftLeftStub final : public TurboFanCodeStub { 746 class ShiftLeftStub final : public TurboFanCodeStub {
735 public: 747 public:
736 explicit ShiftLeftStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 748 explicit ShiftLeftStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
737 749
738 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 750 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
739 DEFINE_TURBOFAN_CODE_STUB(ShiftLeft, TurboFanCodeStub); 751 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(ShiftLeft, TurboFanCodeStub);
740 }; 752 };
741 753
742 class BitwiseAndStub final : public TurboFanCodeStub { 754 class BitwiseAndStub final : public TurboFanCodeStub {
743 public: 755 public:
744 explicit BitwiseAndStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 756 explicit BitwiseAndStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
745 757
746 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 758 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
747 DEFINE_TURBOFAN_CODE_STUB(BitwiseAnd, TurboFanCodeStub); 759 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(BitwiseAnd, TurboFanCodeStub);
748 }; 760 };
749 761
750 class BitwiseOrStub final : public TurboFanCodeStub { 762 class BitwiseOrStub final : public TurboFanCodeStub {
751 public: 763 public:
752 explicit BitwiseOrStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 764 explicit BitwiseOrStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
753 765
754 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 766 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
755 DEFINE_TURBOFAN_CODE_STUB(BitwiseOr, TurboFanCodeStub); 767 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(BitwiseOr, TurboFanCodeStub);
756 }; 768 };
757 769
758 class BitwiseXorStub final : public TurboFanCodeStub { 770 class BitwiseXorStub final : public TurboFanCodeStub {
759 public: 771 public:
760 explicit BitwiseXorStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 772 explicit BitwiseXorStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
761 773
762 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); 774 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp);
763 DEFINE_TURBOFAN_CODE_STUB(BitwiseXor, TurboFanCodeStub); 775 DEFINE_TURBOFAN_BINARY_OP_CODE_STUB(BitwiseXor, TurboFanCodeStub);
764 }; 776 };
765 777
766 class LessThanStub final : public TurboFanCodeStub { 778 class LessThanStub final : public TurboFanCodeStub {
767 public: 779 public:
768 explicit LessThanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 780 explicit LessThanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
769 781
770 DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare); 782 DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
771 DEFINE_TURBOFAN_CODE_STUB(LessThan, TurboFanCodeStub); 783 DEFINE_TURBOFAN_CODE_STUB(LessThan, TurboFanCodeStub);
772 }; 784 };
773 785
(...skipping 2377 matching lines...) Expand 10 before | Expand all | Expand 10 after
3151 #undef DEFINE_HYDROGEN_CODE_STUB 3163 #undef DEFINE_HYDROGEN_CODE_STUB
3152 #undef DEFINE_CODE_STUB 3164 #undef DEFINE_CODE_STUB
3153 #undef DEFINE_CODE_STUB_BASE 3165 #undef DEFINE_CODE_STUB_BASE
3154 3166
3155 extern Representation RepresentationFromType(Type* type); 3167 extern Representation RepresentationFromType(Type* type);
3156 3168
3157 } // namespace internal 3169 } // namespace internal
3158 } // namespace v8 3170 } // namespace v8
3159 3171
3160 #endif // V8_CODE_STUBS_H_ 3172 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « no previous file | src/code-stubs.cc » ('j') | src/interpreter/interpreter.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698