Line data Source code
1 : #include "src/builtins/builtins-utils-gen.h"
2 : #include "src/builtins/builtins.h"
3 : #include "src/code-factory.h"
4 : #include "src/elements-kind.h"
5 : #include "src/heap/factory-inl.h"
6 : #include "src/objects.h"
7 : #include "src/objects/arguments.h"
8 : #include "src/objects/bigint.h"
9 : #include "src/objects/js-generator.h"
10 : #include "src/objects/js-promise.h"
11 : #include "src/objects/js-regexp-string-iterator.h"
12 : #include "src/objects/module.h"
13 : #include "src/objects/stack-frame-info.h"
14 : #include "src/builtins/builtins-array-gen.h"
15 : #include "src/builtins/builtins-collections-gen.h"
16 : #include "src/builtins/builtins-data-view-gen.h"
17 : #include "src/builtins/builtins-iterator-gen.h"
18 : #include "src/builtins/builtins-proxy-gen.h"
19 : #include "src/builtins/builtins-regexp-gen.h"
20 : #include "src/builtins/builtins-typed-array-gen.h"
21 : #include "src/builtins/builtins-constructor-gen.h"
22 : #include "src/builtins/builtins-typed-array-gen.h"
23 : #include "src/builtins/builtins-typed-array-gen.h"
24 : #include "src/builtins/builtins-typed-array-gen.h"
25 : #include "src/builtins/builtins-typed-array-gen.h"
26 : #include "src/builtins/builtins-typed-array-gen.h"
27 : #include "src/builtins/builtins-typed-array-gen.h"
28 : #include "src/builtins/builtins-typed-array-gen.h"
29 : #include "src/builtins/builtins-typed-array-gen.h"
30 : #include "torque-generated/builtins-base-from-dsl-gen.h"
31 : #include "torque-generated/builtins-growable-fixed-array-from-dsl-gen.h"
32 : #include "torque-generated/builtins-arguments-from-dsl-gen.h"
33 : #include "torque-generated/builtins-array-from-dsl-gen.h"
34 : #include "torque-generated/builtins-array-copywithin-from-dsl-gen.h"
35 : #include "torque-generated/builtins-array-filter-from-dsl-gen.h"
36 : #include "torque-generated/builtins-array-find-from-dsl-gen.h"
37 : #include "torque-generated/builtins-array-findindex-from-dsl-gen.h"
38 : #include "torque-generated/builtins-array-foreach-from-dsl-gen.h"
39 : #include "torque-generated/builtins-array-join-from-dsl-gen.h"
40 : #include "torque-generated/builtins-array-lastindexof-from-dsl-gen.h"
41 : #include "torque-generated/builtins-array-of-from-dsl-gen.h"
42 : #include "torque-generated/builtins-array-map-from-dsl-gen.h"
43 : #include "torque-generated/builtins-array-reverse-from-dsl-gen.h"
44 : #include "torque-generated/builtins-array-shift-from-dsl-gen.h"
45 : #include "torque-generated/builtins-array-slice-from-dsl-gen.h"
46 : #include "torque-generated/builtins-array-splice-from-dsl-gen.h"
47 : #include "torque-generated/builtins-array-unshift-from-dsl-gen.h"
48 : #include "torque-generated/builtins-collections-from-dsl-gen.h"
49 : #include "torque-generated/builtins-data-view-from-dsl-gen.h"
50 : #include "torque-generated/builtins-extras-utils-from-dsl-gen.h"
51 : #include "torque-generated/builtins-iterator-from-dsl-gen.h"
52 : #include "torque-generated/builtins-object-from-dsl-gen.h"
53 : #include "torque-generated/builtins-proxy-from-dsl-gen.h"
54 : #include "torque-generated/builtins-string-from-dsl-gen.h"
55 : #include "torque-generated/builtins-string-html-from-dsl-gen.h"
56 : #include "torque-generated/builtins-string-repeat-from-dsl-gen.h"
57 : #include "torque-generated/builtins-typed-array-from-dsl-gen.h"
58 : #include "torque-generated/builtins-typed-array-createtypedarray-from-dsl-gen.h"
59 : #include "torque-generated/builtins-typed-array-every-from-dsl-gen.h"
60 : #include "torque-generated/builtins-typed-array-filter-from-dsl-gen.h"
61 : #include "torque-generated/builtins-typed-array-find-from-dsl-gen.h"
62 : #include "torque-generated/builtins-typed-array-findindex-from-dsl-gen.h"
63 : #include "torque-generated/builtins-typed-array-foreach-from-dsl-gen.h"
64 : #include "torque-generated/builtins-typed-array-reduce-from-dsl-gen.h"
65 : #include "torque-generated/builtins-typed-array-reduceright-from-dsl-gen.h"
66 : #include "torque-generated/builtins-typed-array-slice-from-dsl-gen.h"
67 : #include "torque-generated/builtins-typed-array-some-from-dsl-gen.h"
68 : #include "torque-generated/builtins-typed-array-subarray-from-dsl-gen.h"
69 : #include "torque-generated/builtins-test-from-dsl-gen.h"
70 :
71 : namespace v8 {
72 : namespace internal {
73 :
74 392 : TF_BUILTIN(StringRepeat, CodeStubAssembler) {
75 112 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
76 56 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
77 56 : USE(parameter0);
78 56 : compiler::TNode<String> parameter1 = UncheckedCast<String>(Parameter(Descriptor::kString));
79 56 : USE(parameter1);
80 56 : compiler::TNode<Smi> parameter2 = UncheckedCast<Smi>(Parameter(Descriptor::kCount));
81 56 : USE(parameter2);
82 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
83 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
84 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
85 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
86 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
87 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
88 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
89 112 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
90 56 : ca_.Goto(&block0, parameter0, parameter1, parameter2);
91 :
92 56 : if (block0.is_used()) {
93 56 : compiler::TNode<Context> tmp0;
94 56 : compiler::TNode<String> tmp1;
95 56 : compiler::TNode<Smi> tmp2;
96 56 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
97 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 11);
98 56 : compiler::TNode<String> tmp3;
99 56 : USE(tmp3);
100 56 : tmp3 = BaseBuiltinsFromDSLAssembler(state_).kEmptyString();
101 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 12);
102 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 13);
103 56 : compiler::TNode<IntPtrT> tmp4;
104 56 : USE(tmp4);
105 56 : tmp4 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp2}));
106 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 15);
107 56 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp1, tmp4);
108 : }
109 :
110 56 : if (block3.is_used()) {
111 56 : compiler::TNode<Context> tmp5;
112 56 : compiler::TNode<String> tmp6;
113 56 : compiler::TNode<Smi> tmp7;
114 56 : compiler::TNode<String> tmp8;
115 56 : compiler::TNode<String> tmp9;
116 56 : compiler::TNode<IntPtrT> tmp10;
117 56 : ca_.Bind(&block3, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9, &tmp10);
118 56 : compiler::TNode<BoolT> tmp11;
119 56 : USE(tmp11);
120 56 : tmp11 = ca_.UncheckedCast<BoolT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr6ATbool16ATconstexpr_bool(true));
121 56 : ca_.Branch(tmp11, &block1, &block2, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10);
122 : }
123 :
124 56 : if (block1.is_used()) {
125 56 : compiler::TNode<Context> tmp12;
126 56 : compiler::TNode<String> tmp13;
127 56 : compiler::TNode<Smi> tmp14;
128 56 : compiler::TNode<String> tmp15;
129 56 : compiler::TNode<String> tmp16;
130 56 : compiler::TNode<IntPtrT> tmp17;
131 56 : ca_.Bind(&block1, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17);
132 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 16);
133 56 : compiler::TNode<IntPtrT> tmp18;
134 56 : USE(tmp18);
135 56 : tmp18 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
136 56 : compiler::TNode<IntPtrT> tmp19;
137 56 : USE(tmp19);
138 56 : tmp19 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).WordAnd(compiler::TNode<IntPtrT>{tmp17}, compiler::TNode<IntPtrT>{tmp18}));
139 56 : compiler::TNode<IntPtrT> tmp20;
140 56 : USE(tmp20);
141 56 : tmp20 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
142 56 : compiler::TNode<BoolT> tmp21;
143 56 : USE(tmp21);
144 56 : tmp21 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<IntPtrT>{tmp19}, compiler::TNode<IntPtrT>{tmp20}));
145 56 : ca_.Branch(tmp21, &block4, &block5, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17);
146 : }
147 :
148 56 : if (block4.is_used()) {
149 56 : compiler::TNode<Context> tmp22;
150 56 : compiler::TNode<String> tmp23;
151 56 : compiler::TNode<Smi> tmp24;
152 56 : compiler::TNode<String> tmp25;
153 56 : compiler::TNode<String> tmp26;
154 56 : compiler::TNode<IntPtrT> tmp27;
155 56 : ca_.Bind(&block4, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27);
156 56 : compiler::TNode<String> tmp28;
157 56 : USE(tmp28);
158 56 : tmp28 = ca_.UncheckedCast<String>(BaseBuiltinsFromDSLAssembler(state_).StringAdd(compiler::TNode<Context>{tmp22}, compiler::TNode<String>{tmp25}, compiler::TNode<String>{tmp26}));
159 56 : ca_.Goto(&block5, tmp22, tmp23, tmp24, tmp28, tmp26, tmp27);
160 : }
161 :
162 56 : if (block5.is_used()) {
163 56 : compiler::TNode<Context> tmp29;
164 56 : compiler::TNode<String> tmp30;
165 56 : compiler::TNode<Smi> tmp31;
166 56 : compiler::TNode<String> tmp32;
167 56 : compiler::TNode<String> tmp33;
168 56 : compiler::TNode<IntPtrT> tmp34;
169 56 : ca_.Bind(&block5, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33, &tmp34);
170 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 18);
171 56 : compiler::TNode<IntPtrT> tmp35;
172 56 : USE(tmp35);
173 56 : tmp35 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
174 56 : compiler::TNode<IntPtrT> tmp36;
175 56 : USE(tmp36);
176 56 : tmp36 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).WordSar(compiler::TNode<IntPtrT>{tmp34}, compiler::TNode<IntPtrT>{tmp35}));
177 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 19);
178 56 : compiler::TNode<IntPtrT> tmp37;
179 56 : USE(tmp37);
180 56 : tmp37 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(0));
181 56 : compiler::TNode<BoolT> tmp38;
182 56 : USE(tmp38);
183 56 : tmp38 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<IntPtrT>{tmp36}, compiler::TNode<IntPtrT>{tmp37}));
184 56 : ca_.Branch(tmp38, &block6, &block7, tmp29, tmp30, tmp31, tmp32, tmp33, tmp36);
185 : }
186 :
187 56 : if (block6.is_used()) {
188 56 : compiler::TNode<Context> tmp39;
189 56 : compiler::TNode<String> tmp40;
190 56 : compiler::TNode<Smi> tmp41;
191 56 : compiler::TNode<String> tmp42;
192 56 : compiler::TNode<String> tmp43;
193 56 : compiler::TNode<IntPtrT> tmp44;
194 56 : ca_.Bind(&block6, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44);
195 56 : ca_.Goto(&block2, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44);
196 : }
197 :
198 56 : if (block7.is_used()) {
199 56 : compiler::TNode<Context> tmp45;
200 56 : compiler::TNode<String> tmp46;
201 56 : compiler::TNode<Smi> tmp47;
202 56 : compiler::TNode<String> tmp48;
203 56 : compiler::TNode<String> tmp49;
204 56 : compiler::TNode<IntPtrT> tmp50;
205 56 : ca_.Bind(&block7, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50);
206 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 21);
207 56 : compiler::TNode<String> tmp51;
208 56 : USE(tmp51);
209 56 : tmp51 = ca_.UncheckedCast<String>(BaseBuiltinsFromDSLAssembler(state_).StringAdd(compiler::TNode<Context>{tmp45}, compiler::TNode<String>{tmp49}, compiler::TNode<String>{tmp49}));
210 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 15);
211 56 : ca_.Goto(&block3, tmp45, tmp46, tmp47, tmp48, tmp51, tmp50);
212 : }
213 :
214 56 : if (block2.is_used()) {
215 56 : compiler::TNode<Context> tmp52;
216 56 : compiler::TNode<String> tmp53;
217 56 : compiler::TNode<Smi> tmp54;
218 56 : compiler::TNode<String> tmp55;
219 56 : compiler::TNode<String> tmp56;
220 56 : compiler::TNode<IntPtrT> tmp57;
221 56 : ca_.Bind(&block2, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57);
222 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 24);
223 56 : CodeStubAssembler(state_).Return(tmp55);
224 : }
225 56 : }
226 :
227 : } // namespace internal
228 87414 : } // namespace v8
229 :
|