22 template <
typename Derived>
30 zone, interface_descriptor,
34 Derived::kProperties, call_mode);
36 Derived::Verify(descriptor);
41 lazy_deopt_on_throw, zone);
46 using results_t =
typename Derived::results_t;
47 using arguments_t =
typename Derived::arguments_t;
48 DCHECK_EQ(desc->ReturnCount(), std::tuple_size_v<results_t>);
49 if constexpr (std::tuple_size_v<results_t> >= 1) {
50 using result0_t = std::tuple_element_t<0, results_t>;
51 DCHECK(AllowsRepresentation<result0_t>(
53 desc->GetReturnType(0).representation())));
55 if constexpr (std::tuple_size_v<results_t> >= 2) {
56 using result1_t = std::tuple_element_t<1, results_t>;
57 DCHECK(AllowsRepresentation<result1_t>(
59 desc->GetReturnType(1).representation())));
61 DCHECK_EQ(desc->NeedsFrameState(), Derived::kNeedsFrameState);
62 DCHECK_EQ(desc->properties(), Derived::kProperties);
63 DCHECK_EQ(desc->ParameterCount(), std::tuple_size_v<arguments_t> +
64 (Derived::kNeedsContext ? 1 : 0));
65 DCHECK(VerifyArguments<arguments_t>(desc));
68 template <
typename Arguments>
69 static bool VerifyArguments(
const CallDescriptor* desc) {
70 return VerifyArgumentsImpl<Arguments>(
71 desc, std::make_index_sequence<std::tuple_size_v<Arguments>>());
76 static bool AllowsRepresentation(RegisterRepresentation rep) {
77 if constexpr (std::is_same_v<T, OpIndex>) {
81 return T::allows_representation(rep);
84 template <
typename Arguments,
size_t... Indices>
85 static bool VerifyArgumentsImpl(
const CallDescriptor* desc,
86 std::index_sequence<Indices...>) {
87 return (AllowsRepresentation<std::tuple_element_t<Indices, Arguments>>(
89 desc->GetParameterType(Indices).representation())) &&
100 using Void = std::tuple<OpIndex>;
105 static constexpr auto kFunction = Builtin::kCheckTurbofanType;
117#define DECL_GENERIC_BINOP(Name) \
118 struct Name : public Descriptor<Name> { \
119 static constexpr auto kFunction = Builtin::k##Name; \
120 using arguments_t = std::tuple<V<Object>, V<Object>>; \
121 using results_t = std::tuple<V<Object>>; \
123 static constexpr bool kNeedsFrameState = true; \
124 static constexpr bool kNeedsContext = true; \
125 static constexpr Operator::Properties kProperties = \
126 Operator::kNoProperties; \
127 static constexpr OpEffects kEffects = base_effects.CanCallAnything(); \
130#undef DECL_GENERIC_BINOP
132#define DECL_GENERIC_UNOP(Name) \
133 struct Name : public Descriptor<Name> { \
134 static constexpr auto kFunction = Builtin::k##Name; \
135 using arguments_t = std::tuple<V<Object>>; \
136 using results_t = std::tuple<V<Object>>; \
138 static constexpr bool kNeedsFrameState = true; \
139 static constexpr bool kNeedsContext = true; \
140 static constexpr Operator::Properties kProperties = \
141 Operator::kNoProperties; \
142 static constexpr OpEffects kEffects = base_effects.CanCallAnything(); \
145#undef DECL_GENERIC_UNOP
159 static constexpr auto kFunction = Builtin::kNonNumberToNumber;
181 static constexpr auto kFunction = Builtin::kNonNumberToNumeric;
192 :
public Descriptor<CopyFastSmiOrObjectElements> {
193 static constexpr auto kFunction = Builtin::kCopyFastSmiOrObjectElements;
204 template <Builtin B,
typename Input>
274 static constexpr auto kFunction = Builtin::kNumberToString;
297 static constexpr auto kFunction = Builtin::kPlainPrimitiveToNumber;
321 static constexpr auto kFunction = Builtin::kSameValueNumbersOnly;
332 static constexpr auto kFunction = Builtin::kStringAdd_CheckNone;
347 static constexpr auto kFunction = Builtin::kStringEqual;
361 static constexpr auto kFunction = Builtin::kStringFromCodePointAt;
373 static constexpr auto kFunction = Builtin::kStringIndexOf;
387 static constexpr auto kFunction = Builtin::kStringCompare;
415 static constexpr auto kFunction = Builtin::kStringSubstring;
426#ifdef V8_INTL_SUPPORT
427 struct StringToLowerCaseIntl :
public Descriptor<StringToLowerCaseIntl> {
428 static constexpr auto kFunction = Builtin::kStringToLowerCaseIntl;
429 using arguments_t = std::tuple<V<String>>;
430 using results_t = std::tuple<V<String>>;
432 static constexpr bool kNeedsFrameState =
false;
433 static constexpr bool kNeedsContext =
true;
435 Operator::kNoDeopt | Operator::kNoThrow;
442 static constexpr auto kFunction = Builtin::kStringToNumber;
495 static constexpr auto kFunction = Builtin::kFastNewClosure;
519 :
public Descriptor<CheckTurboshaftWord32Type> {
520 static constexpr auto kFunction = Builtin::kCheckTurboshaftWord32Type;
530 :
public Descriptor<CheckTurboshaftWord64Type> {
531 static constexpr auto kFunction = Builtin::kCheckTurboshaftWord64Type;
542 :
public Descriptor<CheckTurboshaftFloat32Type> {
543 static constexpr auto kFunction = Builtin::kCheckTurboshaftFloat32Type;
554 :
public Descriptor<CheckTurboshaftFloat64Type> {
555 static constexpr auto kFunction = Builtin::kCheckTurboshaftFloat64Type;
565#ifdef V8_ENABLE_WEBASSEMBLY
567 struct WasmStringAsWtf8 :
public Descriptor<WasmStringAsWtf8> {
568 static constexpr auto kFunction = Builtin::kWasmStringAsWtf8;
569 using arguments_t = std::tuple<V<String>>;
570 using results_t = std::tuple<V<ByteArray>>;
572 static constexpr bool kNeedsFrameState =
false;
573 static constexpr bool kNeedsContext =
false;
579 struct WasmStringAsWtf16 :
public Descriptor<WasmStringAsWtf16> {
580 static constexpr auto kFunction = Builtin::kWasmStringAsWtf16;
581 using arguments_t = std::tuple<V<String>>;
582 using results_t = std::tuple<V<String>>;
584 static constexpr bool kNeedsFrameState =
false;
585 static constexpr bool kNeedsContext =
false;
591 struct WasmInt32ToHeapNumber :
public Descriptor<WasmInt32ToHeapNumber> {
592 static constexpr auto kFunction = Builtin::kWasmInt32ToHeapNumber;
593 using arguments_t = std::tuple<V<Word32>>;
594 using results_t = std::tuple<V<HeapNumber>>;
596 static constexpr bool kNeedsFrameState =
false;
597 static constexpr bool kNeedsContext =
false;
603 struct WasmRefFunc :
public Descriptor<WasmRefFunc> {
604 static constexpr auto kFunction = Builtin::kWasmRefFunc;
605 using arguments_t = std::tuple<V<Word32>,
V<Word32>>;
606 using results_t = std::tuple<V<WasmFuncRef>>;
608 static constexpr bool kNeedsFrameState =
false;
609 static constexpr bool kNeedsContext =
false;
610 static constexpr Operator::Properties kProperties = Operator::kNoThrow;
615 struct WasmAllocateDescriptorStruct
616 :
public Descriptor<WasmAllocateDescriptorStruct> {
617 static constexpr auto kFunction = Builtin::kWasmAllocateDescriptorStruct;
618 using arguments_t = std::tuple<V<Map>,
V<Word32>>;
619 using results_t = std::tuple<V<WasmStruct>>;
621 static constexpr bool kNeedsFrameState =
false;
622 static constexpr bool kNeedsContext =
false;
623 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
624 static constexpr OpEffects kEffects = base_effects.
CanAllocate();
627 struct WasmGetOwnProperty :
public Descriptor<WasmGetOwnProperty> {
628 static constexpr auto kFunction = Builtin::kWasmGetOwnProperty;
629 using arguments_t = std::tuple<V<Object>,
V<Symbol>>;
630 using results_t = std::tuple<V<Object>>;
632 static constexpr bool kNeedsFrameState =
false;
633 static constexpr bool kNeedsContext =
true;
634 static constexpr Operator::Properties kProperties = Operator::kNoThrow;
638 struct WasmRethrow :
public Descriptor<WasmRethrow> {
639 static constexpr auto kFunction = Builtin::kWasmRethrow;
640 using arguments_t = std::tuple<V<Object>>;
641 using results_t = std::tuple<OpIndex>;
643 static constexpr bool kNeedsFrameState =
false;
644 static constexpr bool kNeedsContext =
false;
645 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
649 struct WasmThrowRef :
public Descriptor<WasmThrowRef> {
650 static constexpr auto kFunction = Builtin::kWasmThrowRef;
651 using arguments_t = std::tuple<V<Object>>;
652 using results_t = std::tuple<OpIndex>;
654 static constexpr bool kNeedsFrameState =
false;
655 static constexpr bool kNeedsContext =
false;
656 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
660 struct WasmMemoryGrow :
public Descriptor<WasmMemoryGrow> {
661 static constexpr auto kFunction = Builtin::kWasmMemoryGrow;
662 using arguments_t = std::tuple<V<Word32>,
V<Word32>>;
663 using results_t = std::tuple<V<Word32>>;
665 static constexpr bool kNeedsFrameState =
false;
666 static constexpr bool kNeedsContext =
false;
667 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
668 static constexpr OpEffects kEffects =
672 struct WasmStringFromCodePoint :
public Descriptor<WasmStringFromCodePoint> {
673 static constexpr auto kFunction = Builtin::kWasmStringFromCodePoint;
674 using arguments_t = std::tuple<V<Word32>>;
675 using results_t = std::tuple<V<String>>;
677 static constexpr bool kNeedsFrameState =
false;
678 static constexpr bool kNeedsContext =
false;
679 static constexpr Operator::Properties kProperties =
680 Operator::kNoDeopt | Operator::kNoWrite;
681 static constexpr OpEffects kEffects =
685 struct WasmStringNewWtf8Array :
public Descriptor<WasmStringNewWtf8Array> {
686 static constexpr auto kFunction = Builtin::kWasmStringNewWtf8Array;
688 using results_t = std::tuple<V<WasmStringRefNullable>>;
690 static constexpr bool kNeedsFrameState =
false;
691 static constexpr bool kNeedsContext =
false;
692 static constexpr Operator::Properties kProperties =
693 Operator::kNoDeopt | Operator::kNoThrow;
699 struct WasmStringNewWtf16Array :
public Descriptor<WasmStringNewWtf16Array> {
700 static constexpr auto kFunction = Builtin::kWasmStringNewWtf16Array;
702 using results_t = std::tuple<V<String>>;
704 static constexpr bool kNeedsFrameState =
false;
705 static constexpr bool kNeedsContext =
false;
706 static constexpr Operator::Properties kProperties =
707 Operator::kNoDeopt | Operator::kNoThrow;
713 struct WasmStringViewWtf8Slice :
public Descriptor<WasmStringViewWtf8Slice> {
714 static constexpr auto kFunction = Builtin::kWasmStringViewWtf8Slice;
716 using results_t = std::tuple<V<String>>;
718 static constexpr bool kNeedsFrameState =
false;
719 static constexpr bool kNeedsContext =
false;
720 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
721 static constexpr OpEffects kEffects =
725 struct WasmStringViewWtf16Slice
726 :
public Descriptor<WasmStringViewWtf16Slice> {
727 static constexpr auto kFunction = Builtin::kWasmStringViewWtf16Slice;
729 using results_t = std::tuple<V<String>>;
731 static constexpr bool kNeedsFrameState =
false;
732 static constexpr bool kNeedsContext =
false;
733 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
734 static constexpr OpEffects kEffects =
738 struct WasmStringEncodeWtf8Array
739 :
public Descriptor<WasmStringEncodeWtf8Array> {
740 static constexpr auto kFunction = Builtin::kWasmStringEncodeWtf8Array;
742 using results_t = std::tuple<V<Word32>>;
744 static constexpr bool kNeedsFrameState =
false;
745 static constexpr bool kNeedsContext =
false;
746 static constexpr Operator::Properties kProperties =
747 Operator::kNoDeopt | Operator::kNoThrow;
748 static constexpr OpEffects kEffects =
752 struct WasmStringToUtf8Array :
public Descriptor<WasmStringToUtf8Array> {
753 static constexpr auto kFunction = Builtin::kWasmStringToUtf8Array;
754 using arguments_t = std::tuple<V<String>>;
755 using results_t = std::tuple<V<WasmArray>>;
756 static constexpr bool kNeedsFrameState =
false;
757 static constexpr bool kNeedsContext =
false;
758 static constexpr Operator::Properties kProperties =
759 Operator::kNoDeopt | Operator::kNoThrow;
760 static constexpr OpEffects kEffects =
764 struct WasmStringEncodeWtf16Array
765 :
public Descriptor<WasmStringEncodeWtf16Array> {
766 static constexpr auto kFunction = Builtin::kWasmStringEncodeWtf16Array;
768 using results_t = std::tuple<V<Word32>>;
770 static constexpr bool kNeedsFrameState =
false;
771 static constexpr bool kNeedsContext =
false;
772 static constexpr Operator::Properties kProperties =
773 Operator::kNoDeopt | Operator::kNoThrow;
774 static constexpr OpEffects kEffects = base_effects.
CanReadMemory()
779 struct WasmFloat64ToString :
public Descriptor<WasmFloat64ToString> {
780 static constexpr auto kFunction = Builtin::kWasmFloat64ToString;
781 using arguments_t = std::tuple<V<Float64>>;
782 using results_t = std::tuple<V<String>>;
784 static constexpr bool kNeedsFrameState =
false;
785 static constexpr bool kNeedsContext =
false;
786 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
787 static constexpr OpEffects kEffects =
791 struct WasmIntToString :
public Descriptor<WasmIntToString> {
792 static constexpr auto kFunction = Builtin::kWasmIntToString;
793 using arguments_t = std::tuple<V<Word32>,
V<Word32>>;
794 using results_t = std::tuple<V<String>>;
796 static constexpr bool kNeedsFrameState =
false;
797 static constexpr bool kNeedsContext =
false;
798 static constexpr Operator::Properties kProperties = Operator::kNoDeopt;
799 static constexpr OpEffects kEffects =
803 struct WasmStringToDouble :
public Descriptor<WasmStringToDouble> {
804 static constexpr auto kFunction = Builtin::kWasmStringToDouble;
805 using arguments_t = std::tuple<V<String>>;
806 using results_t = std::tuple<V<Float64>>;
808 static constexpr bool kNeedsFrameState =
false;
809 static constexpr bool kNeedsContext =
false;
810 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
811 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
814 struct WasmAllocateFixedArray :
public Descriptor<WasmAllocateFixedArray> {
815 static constexpr auto kFunction = Builtin::kWasmAllocateFixedArray;
816 using arguments_t = std::tuple<V<WordPtr>>;
817 using results_t = std::tuple<V<FixedArray>>;
819 static constexpr bool kNeedsFrameState =
false;
820 static constexpr bool kNeedsContext =
false;
821 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
822 static constexpr OpEffects kEffects = base_effects.
CanAllocate();
825 struct WasmThrow :
public Descriptor<WasmThrow> {
826 static constexpr auto kFunction = Builtin::kWasmThrow;
828 using results_t = std::tuple<OpIndex>;
830 static constexpr bool kNeedsFrameState =
false;
831 static constexpr bool kNeedsContext =
false;
832 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
833 static constexpr OpEffects kEffects =
837 struct WasmI32AtomicWait :
public Descriptor<WasmI32AtomicWait> {
838 static constexpr auto kFunction = Builtin::kWasmI32AtomicWait;
840 using results_t = std::tuple<V<Word32>>;
842 static constexpr bool kNeedsFrameState =
false;
843 static constexpr bool kNeedsContext =
false;
844 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
848 struct WasmI64AtomicWait :
public Descriptor<WasmI64AtomicWait> {
849 static constexpr auto kFunction = Builtin::kWasmI64AtomicWait;
851 using results_t = std::tuple<V<Word32>>;
853 static constexpr bool kNeedsFrameState =
false;
854 static constexpr bool kNeedsContext =
false;
855 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
859 struct WasmFunctionTableGet :
public Descriptor<WasmFunctionTableGet> {
860 static constexpr auto kFunction = Builtin::kWasmFunctionTableGet;
861 using arguments_t = std::tuple<V<WordPtr>, V<WordPtr>,
V<Word32>>;
862 using results_t = std::tuple<V<Object>>;
864 static constexpr bool kNeedsFrameState =
false;
865 static constexpr bool kNeedsContext =
false;
866 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
867 static constexpr OpEffects kEffects =
871 struct WasmTableSetFuncRef :
public Descriptor<WasmTableSetFuncRef> {
872 static constexpr auto kFunction = Builtin::kWasmTableSetFuncRef;
875 using results_t = std::tuple<V<Object>>;
877 static constexpr bool kNeedsFrameState =
false;
878 static constexpr bool kNeedsContext =
false;
879 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
880 static constexpr OpEffects kEffects = base_effects.
CanWriteMemory();
883 struct WasmTableSet :
public Descriptor<WasmTableSet> {
884 static constexpr auto kFunction = Builtin::kWasmTableSet;
887 using results_t = std::tuple<V<Object>>;
889 static constexpr bool kNeedsFrameState =
false;
890 static constexpr bool kNeedsContext =
false;
891 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
892 static constexpr OpEffects kEffects = base_effects.
CanWriteMemory();
895 struct WasmTableInit :
public Descriptor<WasmTableInit> {
896 static constexpr auto kFunction = Builtin::kWasmTableInit;
899 using results_t = std::tuple<V<Object>>;
901 static constexpr bool kNeedsFrameState =
false;
902 static constexpr bool kNeedsContext =
false;
903 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
904 static constexpr OpEffects kEffects = base_effects.
CanWriteMemory();
907 struct WasmTableCopy :
public Descriptor<WasmTableCopy> {
908 static constexpr auto kFunction = Builtin::kWasmTableCopy;
911 using results_t = std::tuple<V<Object>>;
913 static constexpr bool kNeedsFrameState =
false;
914 static constexpr bool kNeedsContext =
false;
915 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
916 static constexpr OpEffects kEffects =
920 struct WasmTableGrow :
public Descriptor<WasmTableGrow> {
921 static constexpr auto kFunction = Builtin::kWasmTableGrow;
923 using results_t = std::tuple<V<Smi>>;
925 static constexpr bool kNeedsFrameState =
false;
926 static constexpr bool kNeedsContext =
false;
927 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
928 static constexpr OpEffects kEffects =
932 struct WasmTableFill :
public Descriptor<WasmTableFill> {
933 static constexpr auto kFunction = Builtin::kWasmTableFill;
936 using results_t = std::tuple<V<Object>>;
938 static constexpr bool kNeedsFrameState =
false;
939 static constexpr bool kNeedsContext =
false;
940 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
941 static constexpr OpEffects kEffects = base_effects.
CanWriteMemory();
944 struct WasmArrayNewSegment :
public Descriptor<WasmArrayNewSegment> {
945 static constexpr auto kFunction = Builtin::kWasmArrayNewSegment;
948 using results_t = std::tuple<V<WasmArray>>;
950 static constexpr bool kNeedsFrameState =
false;
951 static constexpr bool kNeedsContext =
false;
952 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
953 static constexpr OpEffects kEffects =
957 struct WasmArrayInitSegment :
public Descriptor<WasmArrayInitSegment> {
958 static constexpr auto kFunction = Builtin::kWasmArrayInitSegment;
961 using results_t = std::tuple<V<Object>>;
963 static constexpr bool kNeedsFrameState =
false;
964 static constexpr bool kNeedsContext =
false;
965 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
966 static constexpr OpEffects kEffects =
970 struct WasmStringNewWtf8 :
public Descriptor<WasmStringNewWtf8> {
971 static constexpr auto kFunction = Builtin::kWasmStringNewWtf8;
973 using results_t = std::tuple<V<WasmStringRefNullable>>;
975 static constexpr bool kNeedsFrameState =
false;
976 static constexpr bool kNeedsContext =
false;
977 static constexpr Operator::Properties kProperties =
978 Operator::kNoDeopt | Operator::kNoThrow;
979 static constexpr OpEffects kEffects = base_effects.
CanReadMemory()
984 struct WasmStringNewWtf16 :
public Descriptor<WasmStringNewWtf16> {
985 static constexpr auto kFunction = Builtin::kWasmStringNewWtf16;
986 using arguments_t = std::tuple<V<Word32>, V<WordPtr>,
V<Word32>>;
987 using results_t = std::tuple<V<String>>;
989 static constexpr bool kNeedsFrameState =
false;
990 static constexpr bool kNeedsContext =
false;
991 static constexpr Operator::Properties kProperties =
992 Operator::kNoDeopt | Operator::kNoThrow;
998 struct WasmStringFromDataSegment
999 :
public Descriptor<WasmStringFromDataSegment> {
1000 static constexpr auto kFunction = Builtin::kWasmStringFromDataSegment;
1003 using results_t = std::tuple<V<WasmStringRefNullable>>;
1005 static constexpr bool kNeedsFrameState =
false;
1006 static constexpr bool kNeedsContext =
false;
1007 static constexpr Operator::Properties kProperties = Operator::kNoDeopt;
1009 static constexpr OpEffects kEffects =
1013 struct WasmStringConst :
public Descriptor<WasmStringConst> {
1014 static constexpr auto kFunction = Builtin::kWasmStringConst;
1015 using arguments_t = std::tuple<V<Word32>>;
1016 using results_t = std::tuple<V<String>>;
1018 static constexpr bool kNeedsFrameState =
false;
1019 static constexpr bool kNeedsContext =
false;
1020 static constexpr Operator::Properties kProperties =
1021 Operator::kNoDeopt | Operator::kNoThrow;
1022 static constexpr OpEffects kEffects =
1026 struct WasmStringMeasureUtf8 :
public Descriptor<WasmStringMeasureUtf8> {
1027 static constexpr auto kFunction = Builtin::kWasmStringMeasureUtf8;
1028 using arguments_t = std::tuple<V<String>>;
1029 using results_t = std::tuple<V<Word32>>;
1031 static constexpr bool kNeedsFrameState =
false;
1032 static constexpr bool kNeedsContext =
false;
1033 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1034 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1037 struct WasmStringMeasureWtf8 :
public Descriptor<WasmStringMeasureWtf8> {
1038 static constexpr auto kFunction = Builtin::kWasmStringMeasureWtf8;
1039 using arguments_t = std::tuple<V<String>>;
1040 using results_t = std::tuple<V<Word32>>;
1042 static constexpr bool kNeedsFrameState =
false;
1043 static constexpr bool kNeedsContext =
false;
1044 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1045 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1048 struct WasmStringEncodeWtf8 :
public Descriptor<WasmStringEncodeWtf8> {
1049 static constexpr auto kFunction = Builtin::kWasmStringEncodeWtf8;
1051 using results_t = std::tuple<V<Word32>>;
1053 static constexpr bool kNeedsFrameState =
false;
1054 static constexpr bool kNeedsContext =
false;
1055 static constexpr Operator::Properties kProperties =
1056 Operator::kNoDeopt | Operator::kNoThrow;
1057 static constexpr OpEffects kEffects =
1061 struct WasmStringEncodeWtf16 :
public Descriptor<WasmStringEncodeWtf16> {
1062 static constexpr auto kFunction = Builtin::kWasmStringEncodeWtf16;
1063 using arguments_t = std::tuple<V<String>, V<WordPtr>,
V<Word32>>;
1064 using results_t = std::tuple<V<Word32>>;
1066 static constexpr bool kNeedsFrameState =
false;
1067 static constexpr bool kNeedsContext =
false;
1068 static constexpr Operator::Properties kProperties =
1069 Operator::kNoDeopt | Operator::kNoThrow;
1070 static constexpr OpEffects kEffects =
1074 struct WasmStringEqual :
public Descriptor<WasmStringEqual> {
1075 static constexpr auto kFunction = Builtin::kWasmStringEqual;
1076 using arguments_t = std::tuple<V<String>,
V<String>>;
1077 using results_t = std::tuple<V<Word32>>;
1079 static constexpr bool kNeedsFrameState =
false;
1080 static constexpr bool kNeedsContext =
false;
1081 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1082 static constexpr OpEffects kEffects =
1086 struct WasmStringIsUSVSequence :
public Descriptor<WasmStringIsUSVSequence> {
1087 static constexpr auto kFunction = Builtin::kWasmStringIsUSVSequence;
1088 using arguments_t = std::tuple<V<String>>;
1089 using results_t = std::tuple<V<Word32>>;
1091 static constexpr bool kNeedsFrameState =
false;
1092 static constexpr bool kNeedsContext =
false;
1093 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1094 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1097 struct WasmStringViewWtf8Advance
1098 :
public Descriptor<WasmStringViewWtf8Advance> {
1099 static constexpr auto kFunction = Builtin::kWasmStringViewWtf8Advance;
1101 using results_t = std::tuple<V<Word32>>;
1103 static constexpr bool kNeedsFrameState =
false;
1104 static constexpr bool kNeedsContext =
false;
1105 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1106 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1109 struct WasmStringViewWtf8Encode
1110 :
public Descriptor<WasmStringViewWtf8Encode> {
1111 static constexpr auto kFunction = Builtin::kWasmStringViewWtf8Encode;
1114 using results_t = std::tuple<V<Word32>,
V<Word32>>;
1116 static constexpr bool kNeedsFrameState =
false;
1117 static constexpr bool kNeedsContext =
false;
1118 static constexpr Operator::Properties kProperties =
1119 Operator::kNoDeopt | Operator::kNoThrow;
1120 static constexpr OpEffects kEffects =
1124 struct WasmStringViewWtf16Encode
1125 :
public Descriptor<WasmStringViewWtf16Encode> {
1126 static constexpr auto kFunction = Builtin::kWasmStringViewWtf16Encode;
1129 using results_t = std::tuple<V<Word32>>;
1131 static constexpr bool kNeedsFrameState =
false;
1132 static constexpr bool kNeedsContext =
false;
1133 static constexpr Operator::Properties kProperties =
1134 Operator::kNoDeopt | Operator::kNoThrow;
1135 static constexpr OpEffects kEffects =
1139 struct WasmStringViewWtf16GetCodeUnit
1140 :
public Descriptor<WasmStringViewWtf16GetCodeUnit> {
1141 static constexpr auto kFunction = Builtin::kWasmStringViewWtf16GetCodeUnit;
1142 using arguments_t = std::tuple<V<String>,
V<Word32>>;
1143 using results_t = std::tuple<V<Word32>>;
1145 static constexpr bool kNeedsFrameState =
false;
1146 static constexpr bool kNeedsContext =
false;
1147 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1148 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1151 struct WasmStringCodePointAt :
public Descriptor<WasmStringCodePointAt> {
1152 static constexpr auto kFunction = Builtin::kWasmStringCodePointAt;
1153 using arguments_t = std::tuple<V<String>,
V<Word32>>;
1154 using results_t = std::tuple<V<Word32>>;
1156 static constexpr bool kNeedsFrameState =
false;
1157 static constexpr bool kNeedsContext =
false;
1158 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1159 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1162 struct WasmStringAsIter :
public Descriptor<WasmStringAsIter> {
1163 static constexpr auto kFunction = Builtin::kWasmStringAsIter;
1164 using arguments_t = std::tuple<V<String>>;
1165 using results_t = std::tuple<V<WasmStringViewIter>>;
1167 static constexpr bool kNeedsFrameState =
false;
1168 static constexpr bool kNeedsContext =
false;
1169 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1170 static constexpr OpEffects kEffects = base_effects.
CanAllocate();
1173 struct WasmStringViewIterNext :
public Descriptor<WasmStringViewIterNext> {
1174 static constexpr auto kFunction = Builtin::kWasmStringViewIterNext;
1175 using arguments_t = std::tuple<V<WasmStringViewIter>>;
1176 using results_t = std::tuple<V<Word32>>;
1178 static constexpr bool kNeedsFrameState =
false;
1179 static constexpr bool kNeedsContext =
false;
1180 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1181 static constexpr OpEffects kEffects =
1185 struct WasmStringViewIterAdvance
1186 :
public Descriptor<WasmStringViewIterAdvance> {
1187 static constexpr auto kFunction = Builtin::kWasmStringViewIterAdvance;
1188 using arguments_t = std::tuple<V<WasmStringViewIter>,
V<Word32>>;
1189 using results_t = std::tuple<V<Word32>>;
1191 static constexpr bool kNeedsFrameState =
false;
1192 static constexpr bool kNeedsContext =
false;
1193 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1194 static constexpr OpEffects kEffects =
1198 struct WasmStringViewIterRewind
1199 :
public Descriptor<WasmStringViewIterRewind> {
1200 static constexpr auto kFunction = Builtin::kWasmStringViewIterRewind;
1201 using arguments_t = std::tuple<V<WasmStringViewIter>,
V<Word32>>;
1202 using results_t = std::tuple<V<Word32>>;
1204 static constexpr bool kNeedsFrameState =
false;
1205 static constexpr bool kNeedsContext =
false;
1206 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1207 static constexpr OpEffects kEffects =
1211 struct WasmStringViewIterSlice :
public Descriptor<WasmStringViewIterSlice> {
1212 static constexpr auto kFunction = Builtin::kWasmStringViewIterSlice;
1213 using arguments_t = std::tuple<V<WasmStringViewIter>,
V<Word32>>;
1214 using results_t = std::tuple<V<String>>;
1216 static constexpr bool kNeedsFrameState =
false;
1217 static constexpr bool kNeedsContext =
false;
1218 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1219 static constexpr OpEffects kEffects =
1223 struct WasmStringHash :
public Descriptor<WasmStringHash> {
1224 static constexpr auto kFunction = Builtin::kWasmStringHash;
1225 using arguments_t = std::tuple<V<String>>;
1226 using results_t = std::tuple<V<Word32>>;
1228 static constexpr bool kNeedsFrameState =
false;
1229 static constexpr bool kNeedsContext =
false;
1230 static constexpr Operator::Properties kProperties = Operator::kEliminatable;
1231 static constexpr OpEffects kEffects = base_effects.
CanReadMemory();
1234 struct ThrowDataViewDetachedError
1235 :
public Descriptor<ThrowDataViewDetachedError> {
1236 static constexpr auto kFunction = Builtin::kThrowDataViewDetachedError;
1237 using arguments_t = std::tuple<>;
1238 using results_t = std::tuple<OpIndex>;
1240 static constexpr bool kNeedsFrameState =
false;
1241 static constexpr bool kNeedsContext =
false;
1242 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
1246 struct ThrowDataViewOutOfBounds
1247 :
public Descriptor<ThrowDataViewOutOfBounds> {
1248 static constexpr auto kFunction = Builtin::kThrowDataViewOutOfBounds;
1249 using arguments_t = std::tuple<>;
1250 using results_t = Never;
1252 static constexpr bool kNeedsFrameState =
false;
1253 static constexpr bool kNeedsContext =
false;
1254 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
1258 struct ThrowDataViewTypeError :
public Descriptor<ThrowDataViewTypeError> {
1259 static constexpr auto kFunction = Builtin::kThrowDataViewTypeError;
1260 using arguments_t = std::tuple<V<JSDataView>>;
1261 using results_t = Never;
1263 static constexpr bool kNeedsFrameState =
false;
1264 static constexpr bool kNeedsContext =
false;
1265 static constexpr Operator::Properties kProperties = Operator::kNoProperties;
1266 static constexpr OpEffects kEffects =
1270 struct ThrowIndexOfCalledOnNull
1271 :
public Descriptor<ThrowIndexOfCalledOnNull> {
1272 static constexpr auto kFunction = Builtin::kThrowIndexOfCalledOnNull;
1273 using arguments_t = std::tuple<>;
1274 using results_t = Never;
1276 static constexpr bool kNeedsFrameState =
false;
1277 static constexpr bool kNeedsContext =
false;
1278 static constexpr Operator::Properties kProperties = Operator::kNoWrite;
1282 struct ThrowToLowerCaseCalledOnNull
1283 :
public Descriptor<ThrowToLowerCaseCalledOnNull> {
1284 static constexpr auto kFunction = Builtin::kThrowToLowerCaseCalledOnNull;
1285 using arguments_t = std::tuple<>;
1286 using results_t = Never;
1288 static constexpr bool kNeedsFrameState =
false;
1289 static constexpr bool kNeedsContext =
false;
1290 static constexpr Operator::Properties kProperties = Operator::kNoWrite;
1294 struct WasmFastApiCallTypeCheckAndUpdateIC
1295 :
public Descriptor<WasmFastApiCallTypeCheckAndUpdateIC> {
1297 Builtin::kWasmFastApiCallTypeCheckAndUpdateIC;
1298 using arguments_t = std::tuple<V<Object>,
V<Object>>;
1299 using results_t = std::tuple<V<Smi>>;
1301 static constexpr bool kNeedsFrameState =
false;
1302 static constexpr bool kNeedsContext =
true;
1303 static constexpr Operator::Properties kProperties = Operator::kNoWrite;
1304 static constexpr OpEffects kEffects =
1308 struct WasmPropagateException :
public Descriptor<WasmPropagateException> {
1309 static constexpr auto kFunction = Builtin::kWasmPropagateException;
1310 using arguments_t = std::tuple<>;
1311 using results_t = Never;
1313 static constexpr bool kNeedsFrameState =
false;
1314 static constexpr bool kNeedsContext =
false;
1315 static constexpr Operator::Properties kProperties = Operator::kNoProperties;