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

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

Issue 1823523002: [stubs] Unify the type conversion call interface descriptors. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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 | « src/arm64/interface-descriptors-arm64.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »
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/codegen.h" 10 #include "src/codegen.h"
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 : TurboFanCodeStub(isolate) {} 766 : TurboFanCodeStub(isolate) {}
767 767
768 DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare); 768 DEFINE_CALL_INTERFACE_DESCRIPTOR(Compare);
769 DEFINE_TURBOFAN_CODE_STUB(StringGreaterThanOrEqual, TurboFanCodeStub); 769 DEFINE_TURBOFAN_CODE_STUB(StringGreaterThanOrEqual, TurboFanCodeStub);
770 }; 770 };
771 771
772 class ToBooleanStub final : public TurboFanCodeStub { 772 class ToBooleanStub final : public TurboFanCodeStub {
773 public: 773 public:
774 explicit ToBooleanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} 774 explicit ToBooleanStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
775 775
776 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToBoolean); 776 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
777 DEFINE_TURBOFAN_CODE_STUB(ToBoolean, TurboFanCodeStub); 777 DEFINE_TURBOFAN_CODE_STUB(ToBoolean, TurboFanCodeStub);
778 }; 778 };
779 779
780 enum StringAddFlags { 780 enum StringAddFlags {
781 // Omit both parameter checks. 781 // Omit both parameter checks.
782 STRING_ADD_CHECK_NONE = 0, 782 STRING_ADD_CHECK_NONE = 0,
783 // Check left parameter. 783 // Check left parameter.
784 STRING_ADD_CHECK_LEFT = 1 << 0, 784 STRING_ADD_CHECK_LEFT = 1 << 0,
785 // Check right parameter. 785 // Check right parameter.
786 STRING_ADD_CHECK_RIGHT = 1 << 1, 786 STRING_ADD_CHECK_RIGHT = 1 << 1,
787 // Check both parameters. 787 // Check both parameters.
788 STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT, 788 STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT,
789 // Convert parameters when check fails (instead of throwing an exception). 789 // Convert parameters when check fails (instead of throwing an exception).
790 STRING_ADD_CONVERT = 1 << 2, 790 STRING_ADD_CONVERT = 1 << 2,
791 STRING_ADD_CONVERT_LEFT = STRING_ADD_CHECK_LEFT | STRING_ADD_CONVERT, 791 STRING_ADD_CONVERT_LEFT = STRING_ADD_CHECK_LEFT | STRING_ADD_CONVERT,
792 STRING_ADD_CONVERT_RIGHT = STRING_ADD_CHECK_RIGHT | STRING_ADD_CONVERT 792 STRING_ADD_CONVERT_RIGHT = STRING_ADD_CHECK_RIGHT | STRING_ADD_CONVERT
793 }; 793 };
794 794
795 795
796 std::ostream& operator<<(std::ostream& os, const StringAddFlags& flags); 796 std::ostream& operator<<(std::ostream& os, const StringAddFlags& flags);
797 797
798 798
799 class NumberToStringStub final : public HydrogenCodeStub { 799 class NumberToStringStub final : public HydrogenCodeStub {
800 public: 800 public:
801 explicit NumberToStringStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 801 explicit NumberToStringStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
802 802
803 // Parameters accessed via CodeStubGraphBuilder::GetParameter() 803 // Parameters accessed via CodeStubGraphBuilder::GetParameter()
804 static const int kNumber = 0; 804 static const int kNumber = 0;
805 805
806 DEFINE_CALL_INTERFACE_DESCRIPTOR(NumberToString); 806 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
807 DEFINE_HYDROGEN_CODE_STUB(NumberToString, HydrogenCodeStub); 807 DEFINE_HYDROGEN_CODE_STUB(NumberToString, HydrogenCodeStub);
808 }; 808 };
809 809
810 810
811 class TypeofStub final : public HydrogenCodeStub { 811 class TypeofStub final : public HydrogenCodeStub {
812 public: 812 public:
813 explicit TypeofStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 813 explicit TypeofStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
814 814
815 // Parameters accessed via CodeStubGraphBuilder::GetParameter() 815 // Parameters accessed via CodeStubGraphBuilder::GetParameter()
816 static const int kObject = 0; 816 static const int kObject = 0;
(...skipping 1996 matching lines...) Expand 10 before | Expand all | Expand 10 after
2813 return MONOMORPHIC; 2813 return MONOMORPHIC;
2814 } 2814 }
2815 } 2815 }
2816 2816
2817 private: 2817 private:
2818 ToBooleanICStub(Isolate* isolate, InitializationState init_state) 2818 ToBooleanICStub(Isolate* isolate, InitializationState init_state)
2819 : HydrogenCodeStub(isolate, init_state) {} 2819 : HydrogenCodeStub(isolate, init_state) {}
2820 2820
2821 class TypesBits : public BitField<uint16_t, 0, NUMBER_OF_TYPES> {}; 2821 class TypesBits : public BitField<uint16_t, 0, NUMBER_OF_TYPES> {};
2822 2822
2823 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToBoolean); 2823 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
2824 DEFINE_HYDROGEN_CODE_STUB(ToBooleanIC, HydrogenCodeStub); 2824 DEFINE_HYDROGEN_CODE_STUB(ToBooleanIC, HydrogenCodeStub);
2825 }; 2825 };
2826 2826
2827 std::ostream& operator<<(std::ostream& os, const ToBooleanICStub::Types& t); 2827 std::ostream& operator<<(std::ostream& os, const ToBooleanICStub::Types& t);
2828 2828
2829 class ElementsTransitionAndStoreStub : public HydrogenCodeStub { 2829 class ElementsTransitionAndStoreStub : public HydrogenCodeStub {
2830 public: 2830 public:
2831 ElementsTransitionAndStoreStub(Isolate* isolate, ElementsKind from_kind, 2831 ElementsTransitionAndStoreStub(Isolate* isolate, ElementsKind from_kind,
2832 ElementsKind to_kind, bool is_jsarray, 2832 ElementsKind to_kind, bool is_jsarray,
2833 KeyedAccessStoreMode store_mode) 2833 KeyedAccessStoreMode store_mode)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2925 2925
2926 DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly); 2926 DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly);
2927 DEFINE_PLATFORM_CODE_STUB(SubString, PlatformCodeStub); 2927 DEFINE_PLATFORM_CODE_STUB(SubString, PlatformCodeStub);
2928 }; 2928 };
2929 2929
2930 2930
2931 class ToNumberStub final : public PlatformCodeStub { 2931 class ToNumberStub final : public PlatformCodeStub {
2932 public: 2932 public:
2933 explicit ToNumberStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 2933 explicit ToNumberStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
2934 2934
2935 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToNumber); 2935 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
2936 DEFINE_PLATFORM_CODE_STUB(ToNumber, PlatformCodeStub); 2936 DEFINE_PLATFORM_CODE_STUB(ToNumber, PlatformCodeStub);
2937 }; 2937 };
2938 2938
2939 2939
2940 class ToLengthStub final : public PlatformCodeStub { 2940 class ToLengthStub final : public PlatformCodeStub {
2941 public: 2941 public:
2942 explicit ToLengthStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 2942 explicit ToLengthStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
2943 2943
2944 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToLength); 2944 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
2945 DEFINE_PLATFORM_CODE_STUB(ToLength, PlatformCodeStub); 2945 DEFINE_PLATFORM_CODE_STUB(ToLength, PlatformCodeStub);
2946 }; 2946 };
2947 2947
2948 2948
2949 class ToStringStub final : public PlatformCodeStub { 2949 class ToStringStub final : public PlatformCodeStub {
2950 public: 2950 public:
2951 explicit ToStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 2951 explicit ToStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
2952 2952
2953 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToString); 2953 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
2954 DEFINE_PLATFORM_CODE_STUB(ToString, PlatformCodeStub); 2954 DEFINE_PLATFORM_CODE_STUB(ToString, PlatformCodeStub);
2955 }; 2955 };
2956 2956
2957 2957
2958 class ToNameStub final : public PlatformCodeStub { 2958 class ToNameStub final : public PlatformCodeStub {
2959 public: 2959 public:
2960 explicit ToNameStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 2960 explicit ToNameStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
2961 2961
2962 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToName); 2962 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
2963 DEFINE_PLATFORM_CODE_STUB(ToName, PlatformCodeStub); 2963 DEFINE_PLATFORM_CODE_STUB(ToName, PlatformCodeStub);
2964 }; 2964 };
2965 2965
2966 2966
2967 class ToObjectStub final : public HydrogenCodeStub { 2967 class ToObjectStub final : public HydrogenCodeStub {
2968 public: 2968 public:
2969 explicit ToObjectStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 2969 explicit ToObjectStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
2970 2970
2971 DEFINE_CALL_INTERFACE_DESCRIPTOR(ToObject); 2971 DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
2972 DEFINE_HYDROGEN_CODE_STUB(ToObject, HydrogenCodeStub); 2972 DEFINE_HYDROGEN_CODE_STUB(ToObject, HydrogenCodeStub);
2973 }; 2973 };
2974 2974
2975 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR 2975 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR
2976 #undef DEFINE_PLATFORM_CODE_STUB 2976 #undef DEFINE_PLATFORM_CODE_STUB
2977 #undef DEFINE_HANDLER_CODE_STUB 2977 #undef DEFINE_HANDLER_CODE_STUB
2978 #undef DEFINE_HYDROGEN_CODE_STUB 2978 #undef DEFINE_HYDROGEN_CODE_STUB
2979 #undef DEFINE_CODE_STUB 2979 #undef DEFINE_CODE_STUB
2980 #undef DEFINE_CODE_STUB_BASE 2980 #undef DEFINE_CODE_STUB_BASE
2981 2981
2982 extern Representation RepresentationFromType(Type* type); 2982 extern Representation RepresentationFromType(Type* type);
2983 2983
2984 } // namespace internal 2984 } // namespace internal
2985 } // namespace v8 2985 } // namespace v8
2986 2986
2987 #endif // V8_CODE_STUBS_H_ 2987 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/arm64/interface-descriptors-arm64.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698