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/free-space.h"
10 : #include "src/objects/js-generator.h"
11 : #include "src/objects/js-promise.h"
12 : #include "src/objects/js-regexp-string-iterator.h"
13 : #include "src/objects/module.h"
14 : #include "src/objects/stack-frame-info.h"
15 : #include "src/builtins/builtins-regexp-gen.h"
16 : #include "src/builtins/builtins-array-gen.h"
17 : #include "src/builtins/builtins-collections-gen.h"
18 : #include "src/builtins/builtins-data-view-gen.h"
19 : #include "src/builtins/builtins-iterator-gen.h"
20 : #include "src/builtins/builtins-proxy-gen.h"
21 : #include "src/builtins/builtins-proxy-gen.h"
22 : #include "src/builtins/builtins-regexp-gen.h"
23 : #include "src/builtins/builtins-regexp-gen.h"
24 : #include "src/builtins/builtins-regexp-gen.h"
25 : #include "src/builtins/builtins-typed-array-gen.h"
26 : #include "src/builtins/builtins-constructor-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 "src/builtins/builtins-typed-array-gen.h"
31 : #include "src/builtins/builtins-typed-array-gen.h"
32 : #include "src/builtins/builtins-typed-array-gen.h"
33 : #include "src/builtins/builtins-typed-array-gen.h"
34 : #include "src/builtins/builtins-typed-array-gen.h"
35 : #include "torque-generated/builtins-base-from-dsl-gen.h"
36 : #include "torque-generated/builtins-growable-fixed-array-from-dsl-gen.h"
37 : #include "torque-generated/builtins-arguments-from-dsl-gen.h"
38 : #include "torque-generated/builtins-array-from-dsl-gen.h"
39 : #include "torque-generated/builtins-array-copywithin-from-dsl-gen.h"
40 : #include "torque-generated/builtins-array-filter-from-dsl-gen.h"
41 : #include "torque-generated/builtins-array-find-from-dsl-gen.h"
42 : #include "torque-generated/builtins-array-findindex-from-dsl-gen.h"
43 : #include "torque-generated/builtins-array-foreach-from-dsl-gen.h"
44 : #include "torque-generated/builtins-array-join-from-dsl-gen.h"
45 : #include "torque-generated/builtins-array-lastindexof-from-dsl-gen.h"
46 : #include "torque-generated/builtins-array-of-from-dsl-gen.h"
47 : #include "torque-generated/builtins-array-map-from-dsl-gen.h"
48 : #include "torque-generated/builtins-array-reverse-from-dsl-gen.h"
49 : #include "torque-generated/builtins-array-shift-from-dsl-gen.h"
50 : #include "torque-generated/builtins-array-slice-from-dsl-gen.h"
51 : #include "torque-generated/builtins-array-splice-from-dsl-gen.h"
52 : #include "torque-generated/builtins-array-unshift-from-dsl-gen.h"
53 : #include "torque-generated/builtins-collections-from-dsl-gen.h"
54 : #include "torque-generated/builtins-data-view-from-dsl-gen.h"
55 : #include "torque-generated/builtins-extras-utils-from-dsl-gen.h"
56 : #include "torque-generated/builtins-iterator-from-dsl-gen.h"
57 : #include "torque-generated/builtins-object-from-dsl-gen.h"
58 : #include "torque-generated/builtins-proxy-from-dsl-gen.h"
59 : #include "torque-generated/builtins-regexp-from-dsl-gen.h"
60 : #include "torque-generated/builtins-regexp-replace-from-dsl-gen.h"
61 : #include "torque-generated/builtins-string-from-dsl-gen.h"
62 : #include "torque-generated/builtins-string-html-from-dsl-gen.h"
63 : #include "torque-generated/builtins-string-repeat-from-dsl-gen.h"
64 : #include "torque-generated/builtins-typed-array-from-dsl-gen.h"
65 : #include "torque-generated/builtins-typed-array-createtypedarray-from-dsl-gen.h"
66 : #include "torque-generated/builtins-typed-array-every-from-dsl-gen.h"
67 : #include "torque-generated/builtins-typed-array-filter-from-dsl-gen.h"
68 : #include "torque-generated/builtins-typed-array-find-from-dsl-gen.h"
69 : #include "torque-generated/builtins-typed-array-findindex-from-dsl-gen.h"
70 : #include "torque-generated/builtins-typed-array-foreach-from-dsl-gen.h"
71 : #include "torque-generated/builtins-typed-array-reduce-from-dsl-gen.h"
72 : #include "torque-generated/builtins-typed-array-reduceright-from-dsl-gen.h"
73 : #include "torque-generated/builtins-typed-array-slice-from-dsl-gen.h"
74 : #include "torque-generated/builtins-typed-array-some-from-dsl-gen.h"
75 : #include "torque-generated/builtins-typed-array-subarray-from-dsl-gen.h"
76 : #include "torque-generated/builtins-test-from-dsl-gen.h"
77 :
78 : namespace v8 {
79 : namespace internal {
80 :
81 56 : const char* StringRepeatBuiltinsFromDSLAssembler::kBuiltinName() {
82 56 : compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
83 : ca_.Goto(&block0);
84 :
85 : ca_.Bind(&block0);
86 56 : return "String.prototype.repeat";
87 : }
88 :
89 224 : TF_BUILTIN(StringRepeat, CodeStubAssembler) {
90 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
91 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
92 : USE(parameter0);
93 : compiler::TNode<String> parameter1 = UncheckedCast<String>(Parameter(Descriptor::kString));
94 : USE(parameter1);
95 : compiler::TNode<Smi> parameter2 = UncheckedCast<Smi>(Parameter(Descriptor::kCount));
96 : USE(parameter2);
97 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
98 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
99 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
100 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
101 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
102 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
103 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
104 : compiler::CodeAssemblerParameterizedLabel<Context, String, Smi, String, String, IntPtrT> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
105 : ca_.Goto(&block0, parameter0, parameter1, parameter2);
106 :
107 56 : if (block0.is_used()) {
108 : compiler::TNode<Context> tmp0;
109 : compiler::TNode<String> tmp1;
110 : compiler::TNode<Smi> tmp2;
111 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
112 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 13);
113 : compiler::TNode<String> tmp3;
114 : USE(tmp3);
115 112 : tmp3 = BaseBuiltinsFromDSLAssembler(state_).kEmptyString();
116 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 14);
117 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 15);
118 : compiler::TNode<IntPtrT> tmp4;
119 : USE(tmp4);
120 112 : tmp4 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp2}));
121 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 17);
122 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp1, tmp4);
123 : }
124 :
125 56 : if (block3.is_used()) {
126 : compiler::TNode<Context> tmp5;
127 : compiler::TNode<String> tmp6;
128 : compiler::TNode<Smi> tmp7;
129 : compiler::TNode<String> tmp8;
130 : compiler::TNode<String> tmp9;
131 : compiler::TNode<IntPtrT> tmp10;
132 : ca_.Bind(&block3, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9, &tmp10);
133 : compiler::TNode<BoolT> tmp11;
134 : USE(tmp11);
135 112 : tmp11 = ca_.UncheckedCast<BoolT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr6ATbool16ATconstexpr_bool(true));
136 56 : ca_.Branch(tmp11, &block1, &block2, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10);
137 : }
138 :
139 56 : if (block1.is_used()) {
140 : compiler::TNode<Context> tmp12;
141 : compiler::TNode<String> tmp13;
142 : compiler::TNode<Smi> tmp14;
143 : compiler::TNode<String> tmp15;
144 : compiler::TNode<String> tmp16;
145 : compiler::TNode<IntPtrT> tmp17;
146 : ca_.Bind(&block1, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17);
147 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 18);
148 : compiler::TNode<IntPtrT> tmp18;
149 : USE(tmp18);
150 112 : tmp18 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
151 : compiler::TNode<IntPtrT> tmp19;
152 : USE(tmp19);
153 112 : tmp19 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).WordAnd(compiler::TNode<IntPtrT>{tmp17}, compiler::TNode<IntPtrT>{tmp18}));
154 : compiler::TNode<IntPtrT> tmp20;
155 : USE(tmp20);
156 112 : tmp20 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
157 : compiler::TNode<BoolT> tmp21;
158 : USE(tmp21);
159 112 : tmp21 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<IntPtrT>{tmp19}, compiler::TNode<IntPtrT>{tmp20}));
160 56 : ca_.Branch(tmp21, &block4, &block5, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17);
161 : }
162 :
163 56 : if (block4.is_used()) {
164 : compiler::TNode<Context> tmp22;
165 : compiler::TNode<String> tmp23;
166 : compiler::TNode<Smi> tmp24;
167 : compiler::TNode<String> tmp25;
168 : compiler::TNode<String> tmp26;
169 : compiler::TNode<IntPtrT> tmp27;
170 : ca_.Bind(&block4, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27);
171 : compiler::TNode<String> tmp28;
172 : USE(tmp28);
173 112 : tmp28 = ca_.UncheckedCast<String>(BaseBuiltinsFromDSLAssembler(state_).StringAdd(compiler::TNode<Context>{tmp22}, compiler::TNode<String>{tmp25}, compiler::TNode<String>{tmp26}));
174 : ca_.Goto(&block5, tmp22, tmp23, tmp24, tmp28, tmp26, tmp27);
175 : }
176 :
177 56 : if (block5.is_used()) {
178 : compiler::TNode<Context> tmp29;
179 : compiler::TNode<String> tmp30;
180 : compiler::TNode<Smi> tmp31;
181 : compiler::TNode<String> tmp32;
182 : compiler::TNode<String> tmp33;
183 : compiler::TNode<IntPtrT> tmp34;
184 : ca_.Bind(&block5, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33, &tmp34);
185 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 20);
186 : compiler::TNode<IntPtrT> tmp35;
187 : USE(tmp35);
188 112 : tmp35 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
189 : compiler::TNode<IntPtrT> tmp36;
190 : USE(tmp36);
191 112 : tmp36 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).WordSar(compiler::TNode<IntPtrT>{tmp34}, compiler::TNode<IntPtrT>{tmp35}));
192 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 21);
193 : compiler::TNode<IntPtrT> tmp37;
194 : USE(tmp37);
195 112 : tmp37 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(0));
196 : compiler::TNode<BoolT> tmp38;
197 : USE(tmp38);
198 112 : tmp38 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<IntPtrT>{tmp36}, compiler::TNode<IntPtrT>{tmp37}));
199 56 : ca_.Branch(tmp38, &block6, &block7, tmp29, tmp30, tmp31, tmp32, tmp33, tmp36);
200 : }
201 :
202 56 : if (block6.is_used()) {
203 : compiler::TNode<Context> tmp39;
204 : compiler::TNode<String> tmp40;
205 : compiler::TNode<Smi> tmp41;
206 : compiler::TNode<String> tmp42;
207 : compiler::TNode<String> tmp43;
208 : compiler::TNode<IntPtrT> tmp44;
209 : ca_.Bind(&block6, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44);
210 : ca_.Goto(&block2, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44);
211 : }
212 :
213 56 : if (block7.is_used()) {
214 : compiler::TNode<Context> tmp45;
215 : compiler::TNode<String> tmp46;
216 : compiler::TNode<Smi> tmp47;
217 : compiler::TNode<String> tmp48;
218 : compiler::TNode<String> tmp49;
219 : compiler::TNode<IntPtrT> tmp50;
220 : ca_.Bind(&block7, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50);
221 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 23);
222 : compiler::TNode<String> tmp51;
223 : USE(tmp51);
224 112 : tmp51 = ca_.UncheckedCast<String>(BaseBuiltinsFromDSLAssembler(state_).StringAdd(compiler::TNode<Context>{tmp45}, compiler::TNode<String>{tmp49}, compiler::TNode<String>{tmp49}));
225 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 17);
226 : ca_.Goto(&block3, tmp45, tmp46, tmp47, tmp48, tmp51, tmp50);
227 : }
228 :
229 56 : if (block2.is_used()) {
230 : compiler::TNode<Context> tmp52;
231 : compiler::TNode<String> tmp53;
232 : compiler::TNode<Smi> tmp54;
233 : compiler::TNode<String> tmp55;
234 : compiler::TNode<String> tmp56;
235 : compiler::TNode<IntPtrT> tmp57;
236 : ca_.Bind(&block2, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57);
237 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 26);
238 112 : CodeStubAssembler(state_).Return(tmp55);
239 : }
240 56 : }
241 :
242 224 : TF_BUILTIN(StringPrototypeRepeat, CodeStubAssembler) {
243 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
244 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
245 : USE(parameter0);
246 : compiler::TNode<Object> parameter1 = UncheckedCast<Object>(Parameter(Descriptor::kReceiver));
247 : USE(parameter1);
248 : compiler::TNode<Object> parameter2 = UncheckedCast<Object>(Parameter(Descriptor::kCount));
249 : USE(parameter2);
250 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
251 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Number> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
252 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Number, Smi> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
253 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
254 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
255 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block15(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
256 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
257 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block14(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
258 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block16(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
259 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, Smi> block17(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
260 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
261 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, HeapNumber, Float64T> block20(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
262 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, HeapNumber, Float64T> block18(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
263 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, HeapNumber, Float64T> block19(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
264 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, HeapNumber, Float64T> block21(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
265 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String, Number, HeapNumber, Float64T> block22(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
266 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
267 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String> block4(&ca_, compiler::CodeAssemblerLabel::kDeferred);
268 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, String> block2(&ca_, compiler::CodeAssemblerLabel::kDeferred);
269 : ca_.Goto(&block0, parameter0, parameter1, parameter2);
270 :
271 56 : if (block0.is_used()) {
272 : compiler::TNode<Context> tmp0;
273 : compiler::TNode<Object> tmp1;
274 : compiler::TNode<Object> tmp2;
275 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
276 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 34);
277 : compiler::TNode<String> tmp3;
278 : USE(tmp3);
279 224 : tmp3 = ca_.UncheckedCast<String>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr6String18ATconstexpr_string(StringRepeatBuiltinsFromDSLAssembler(state_).kBuiltinName()));
280 : compiler::TNode<String> tmp4;
281 : USE(tmp4);
282 112 : tmp4 = ca_.UncheckedCast<String>(CodeStubAssembler(state_).ToThisString(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, compiler::TNode<String>{tmp3}));
283 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 38);
284 : compiler::TNode<Number> tmp5;
285 : USE(tmp5);
286 224 : tmp5 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).ToInteger_Inline(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp2}, CodeStubAssembler::ToIntegerTruncationMode::kTruncateMinusZero));
287 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 39);
288 : compiler::TNode<Smi> tmp6;
289 : USE(tmp6);
290 56 : compiler::CodeAssemblerLabel label0(&ca_);
291 112 : tmp6 = BaseBuiltinsFromDSLAssembler(state_).Cast5ATSmi(compiler::TNode<Object>{tmp5}, &label0);
292 : ca_.Goto(&block9, tmp0, tmp1, tmp2, tmp4, tmp5, tmp5, tmp6);
293 56 : if (label0.is_used()) {
294 56 : ca_.Bind(&label0);
295 : ca_.Goto(&block10, tmp0, tmp1, tmp2, tmp4, tmp5, tmp5);
296 : }
297 : }
298 :
299 56 : if (block10.is_used()) {
300 : compiler::TNode<Context> tmp7;
301 : compiler::TNode<Object> tmp8;
302 : compiler::TNode<Object> tmp9;
303 : compiler::TNode<String> tmp10;
304 : compiler::TNode<Number> tmp11;
305 : compiler::TNode<Number> tmp12;
306 : ca_.Bind(&block10, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11, &tmp12);
307 : ca_.Goto(&block8, tmp7, tmp8, tmp9, tmp10, tmp11);
308 : }
309 :
310 56 : if (block9.is_used()) {
311 : compiler::TNode<Context> tmp13;
312 : compiler::TNode<Object> tmp14;
313 : compiler::TNode<Object> tmp15;
314 : compiler::TNode<String> tmp16;
315 : compiler::TNode<Number> tmp17;
316 : compiler::TNode<Number> tmp18;
317 : compiler::TNode<Smi> tmp19;
318 : ca_.Bind(&block9, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19);
319 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 41);
320 : compiler::TNode<Smi> tmp20;
321 : USE(tmp20);
322 112 : tmp20 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
323 : compiler::TNode<BoolT> tmp21;
324 : USE(tmp21);
325 112 : tmp21 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiLessThan(compiler::TNode<Smi>{tmp19}, compiler::TNode<Smi>{tmp20}));
326 56 : ca_.Branch(tmp21, &block11, &block12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp19);
327 : }
328 :
329 56 : if (block11.is_used()) {
330 : compiler::TNode<Context> tmp22;
331 : compiler::TNode<Object> tmp23;
332 : compiler::TNode<Object> tmp24;
333 : compiler::TNode<String> tmp25;
334 : compiler::TNode<Number> tmp26;
335 : compiler::TNode<Smi> tmp27;
336 : ca_.Bind(&block11, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27);
337 : ca_.Goto(&block4, tmp22, tmp23, tmp24, tmp25);
338 : }
339 :
340 56 : if (block12.is_used()) {
341 : compiler::TNode<Context> tmp28;
342 : compiler::TNode<Object> tmp29;
343 : compiler::TNode<Object> tmp30;
344 : compiler::TNode<String> tmp31;
345 : compiler::TNode<Number> tmp32;
346 : compiler::TNode<Smi> tmp33;
347 : ca_.Bind(&block12, &tmp28, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33);
348 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 44);
349 : compiler::TNode<Smi> tmp34;
350 : USE(tmp34);
351 112 : tmp34 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
352 : compiler::TNode<BoolT> tmp35;
353 : USE(tmp35);
354 112 : tmp35 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiEqual(compiler::TNode<Smi>{tmp33}, compiler::TNode<Smi>{tmp34}));
355 56 : ca_.Branch(tmp35, &block13, &block15, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33);
356 : }
357 :
358 56 : if (block15.is_used()) {
359 : compiler::TNode<Context> tmp36;
360 : compiler::TNode<Object> tmp37;
361 : compiler::TNode<Object> tmp38;
362 : compiler::TNode<String> tmp39;
363 : compiler::TNode<Number> tmp40;
364 : compiler::TNode<Smi> tmp41;
365 : ca_.Bind(&block15, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40, &tmp41);
366 : compiler::TNode<Uint32T> tmp42;
367 : USE(tmp42);
368 168 : tmp42 = ca_.UncheckedCast<Uint32T>(CodeStubAssembler(state_).LoadStringLengthAsWord32(compiler::TNode<String>{tmp39}));
369 : compiler::TNode<Uint32T> tmp43;
370 : USE(tmp43);
371 112 : tmp43 = ca_.UncheckedCast<Uint32T>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATuint3217ATconstexpr_int31(0));
372 : compiler::TNode<BoolT> tmp44;
373 : USE(tmp44);
374 112 : tmp44 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Word32Equal(compiler::TNode<Uint32T>{tmp42}, compiler::TNode<Uint32T>{tmp43}));
375 56 : ca_.Branch(tmp44, &block13, &block14, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41);
376 : }
377 :
378 56 : if (block13.is_used()) {
379 : compiler::TNode<Context> tmp45;
380 : compiler::TNode<Object> tmp46;
381 : compiler::TNode<Object> tmp47;
382 : compiler::TNode<String> tmp48;
383 : compiler::TNode<Number> tmp49;
384 : compiler::TNode<Smi> tmp50;
385 : ca_.Bind(&block13, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50);
386 : ca_.Goto(&block6, tmp45, tmp46, tmp47, tmp48);
387 : }
388 :
389 56 : if (block14.is_used()) {
390 : compiler::TNode<Context> tmp51;
391 : compiler::TNode<Object> tmp52;
392 : compiler::TNode<Object> tmp53;
393 : compiler::TNode<String> tmp54;
394 : compiler::TNode<Number> tmp55;
395 : compiler::TNode<Smi> tmp56;
396 : ca_.Bind(&block14, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56);
397 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 46);
398 : compiler::TNode<Smi> tmp57;
399 : USE(tmp57);
400 112 : tmp57 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(String::kMaxLength));
401 : compiler::TNode<BoolT> tmp58;
402 : USE(tmp58);
403 112 : tmp58 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThan(compiler::TNode<Smi>{tmp56}, compiler::TNode<Smi>{tmp57}));
404 56 : ca_.Branch(tmp58, &block16, &block17, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56);
405 : }
406 :
407 56 : if (block16.is_used()) {
408 : compiler::TNode<Context> tmp59;
409 : compiler::TNode<Object> tmp60;
410 : compiler::TNode<Object> tmp61;
411 : compiler::TNode<String> tmp62;
412 : compiler::TNode<Number> tmp63;
413 : compiler::TNode<Smi> tmp64;
414 : ca_.Bind(&block16, &tmp59, &tmp60, &tmp61, &tmp62, &tmp63, &tmp64);
415 : ca_.Goto(&block2, tmp59, tmp60, tmp61, tmp62);
416 : }
417 :
418 56 : if (block17.is_used()) {
419 : compiler::TNode<Context> tmp65;
420 : compiler::TNode<Object> tmp66;
421 : compiler::TNode<Object> tmp67;
422 : compiler::TNode<String> tmp68;
423 : compiler::TNode<Number> tmp69;
424 : compiler::TNode<Smi> tmp70;
425 : ca_.Bind(&block17, &tmp65, &tmp66, &tmp67, &tmp68, &tmp69, &tmp70);
426 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 50);
427 : compiler::TNode<String> tmp71;
428 112 : tmp71 = TORQUE_CAST(CodeStubAssembler(state_).CallBuiltin(Builtins::kStringRepeat, tmp65, tmp68, tmp70));
429 : USE(tmp71);
430 112 : CodeStubAssembler(state_).Return(tmp71);
431 : }
432 :
433 56 : if (block8.is_used()) {
434 : compiler::TNode<Context> tmp72;
435 : compiler::TNode<Object> tmp73;
436 : compiler::TNode<Object> tmp74;
437 : compiler::TNode<String> tmp75;
438 : compiler::TNode<Number> tmp76;
439 : ca_.Bind(&block8, &tmp72, &tmp73, &tmp74, &tmp75, &tmp76);
440 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 52);
441 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 54);
442 : compiler::TNode<Float64T> tmp77;
443 : USE(tmp77);
444 112 : tmp77 = ca_.UncheckedCast<Float64T>(BaseBuiltinsFromDSLAssembler(state_).LoadHeapNumberValue(compiler::TNode<HeapNumber>{ca_.UncheckedCast<HeapNumber>(tmp76)}));
445 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 58);
446 : compiler::TNode<Float64T> tmp78;
447 : USE(tmp78);
448 112 : tmp78 = ca_.UncheckedCast<Float64T>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr9ATfloat6419ATconstexpr_float64(V8_INFINITY));
449 : compiler::TNode<BoolT> tmp79;
450 : USE(tmp79);
451 112 : tmp79 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Float64Equal(compiler::TNode<Float64T>{tmp77}, compiler::TNode<Float64T>{tmp78}));
452 56 : ca_.Branch(tmp79, &block18, &block20, tmp72, tmp73, tmp74, tmp75, tmp76, ca_.UncheckedCast<HeapNumber>(tmp76), tmp77);
453 : }
454 :
455 56 : if (block20.is_used()) {
456 : compiler::TNode<Context> tmp80;
457 : compiler::TNode<Object> tmp81;
458 : compiler::TNode<Object> tmp82;
459 : compiler::TNode<String> tmp83;
460 : compiler::TNode<Number> tmp84;
461 : compiler::TNode<HeapNumber> tmp85;
462 : compiler::TNode<Float64T> tmp86;
463 : ca_.Bind(&block20, &tmp80, &tmp81, &tmp82, &tmp83, &tmp84, &tmp85, &tmp86);
464 : compiler::TNode<Float64T> tmp87;
465 : USE(tmp87);
466 112 : tmp87 = ca_.UncheckedCast<Float64T>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr9ATfloat6417ATconstexpr_int31(0.0));
467 : compiler::TNode<BoolT> tmp88;
468 : USE(tmp88);
469 168 : tmp88 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Float64LessThan(compiler::TNode<Float64T>{tmp86}, compiler::TNode<Float64T>{tmp87}));
470 56 : ca_.Branch(tmp88, &block18, &block19, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86);
471 : }
472 :
473 56 : if (block18.is_used()) {
474 : compiler::TNode<Context> tmp89;
475 : compiler::TNode<Object> tmp90;
476 : compiler::TNode<Object> tmp91;
477 : compiler::TNode<String> tmp92;
478 : compiler::TNode<Number> tmp93;
479 : compiler::TNode<HeapNumber> tmp94;
480 : compiler::TNode<Float64T> tmp95;
481 : ca_.Bind(&block18, &tmp89, &tmp90, &tmp91, &tmp92, &tmp93, &tmp94, &tmp95);
482 : ca_.Goto(&block4, tmp89, tmp90, tmp91, tmp92);
483 : }
484 :
485 56 : if (block19.is_used()) {
486 : compiler::TNode<Context> tmp96;
487 : compiler::TNode<Object> tmp97;
488 : compiler::TNode<Object> tmp98;
489 : compiler::TNode<String> tmp99;
490 : compiler::TNode<Number> tmp100;
491 : compiler::TNode<HeapNumber> tmp101;
492 : compiler::TNode<Float64T> tmp102;
493 : ca_.Bind(&block19, &tmp96, &tmp97, &tmp98, &tmp99, &tmp100, &tmp101, &tmp102);
494 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 61);
495 : compiler::TNode<Uint32T> tmp103;
496 : USE(tmp103);
497 168 : tmp103 = ca_.UncheckedCast<Uint32T>(CodeStubAssembler(state_).LoadStringLengthAsWord32(compiler::TNode<String>{tmp99}));
498 : compiler::TNode<Uint32T> tmp104;
499 : USE(tmp104);
500 112 : tmp104 = ca_.UncheckedCast<Uint32T>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATuint3217ATconstexpr_int31(0));
501 : compiler::TNode<BoolT> tmp105;
502 : USE(tmp105);
503 112 : tmp105 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Word32Equal(compiler::TNode<Uint32T>{tmp103}, compiler::TNode<Uint32T>{tmp104}));
504 56 : ca_.Branch(tmp105, &block21, &block22, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101, tmp102);
505 : }
506 :
507 56 : if (block21.is_used()) {
508 : compiler::TNode<Context> tmp106;
509 : compiler::TNode<Object> tmp107;
510 : compiler::TNode<Object> tmp108;
511 : compiler::TNode<String> tmp109;
512 : compiler::TNode<Number> tmp110;
513 : compiler::TNode<HeapNumber> tmp111;
514 : compiler::TNode<Float64T> tmp112;
515 : ca_.Bind(&block21, &tmp106, &tmp107, &tmp108, &tmp109, &tmp110, &tmp111, &tmp112);
516 : ca_.Goto(&block6, tmp106, tmp107, tmp108, tmp109);
517 : }
518 :
519 56 : if (block22.is_used()) {
520 : compiler::TNode<Context> tmp113;
521 : compiler::TNode<Object> tmp114;
522 : compiler::TNode<Object> tmp115;
523 : compiler::TNode<String> tmp116;
524 : compiler::TNode<Number> tmp117;
525 : compiler::TNode<HeapNumber> tmp118;
526 : compiler::TNode<Float64T> tmp119;
527 : ca_.Bind(&block22, &tmp113, &tmp114, &tmp115, &tmp116, &tmp117, &tmp118, &tmp119);
528 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 63);
529 : ca_.Goto(&block2, tmp113, tmp114, tmp115, tmp116);
530 : }
531 :
532 56 : if (block6.is_used()) {
533 : compiler::TNode<Context> tmp120;
534 : compiler::TNode<Object> tmp121;
535 : compiler::TNode<Object> tmp122;
536 : compiler::TNode<String> tmp123;
537 : ca_.Bind(&block6, &tmp120, &tmp121, &tmp122, &tmp123);
538 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 68);
539 : compiler::TNode<String> tmp124;
540 : USE(tmp124);
541 112 : tmp124 = BaseBuiltinsFromDSLAssembler(state_).kEmptyString();
542 112 : CodeStubAssembler(state_).Return(tmp124);
543 : }
544 :
545 56 : if (block4.is_used()) {
546 : compiler::TNode<Context> tmp125;
547 : compiler::TNode<Object> tmp126;
548 : compiler::TNode<Object> tmp127;
549 : compiler::TNode<String> tmp128;
550 : ca_.Bind(&block4, &tmp125, &tmp126, &tmp127, &tmp128);
551 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 71);
552 112 : CodeStubAssembler(state_).ThrowRangeError(compiler::TNode<Context>{tmp125}, MessageTemplate::kInvalidCountValue, compiler::TNode<Object>{tmp127});
553 : }
554 :
555 56 : if (block2.is_used()) {
556 : compiler::TNode<Context> tmp129;
557 : compiler::TNode<Object> tmp130;
558 : compiler::TNode<Object> tmp131;
559 : compiler::TNode<String> tmp132;
560 : ca_.Bind(&block2, &tmp129, &tmp130, &tmp131, &tmp132);
561 56 : ca_.SetSourcePosition("../../src/builtins/string-repeat.tq", 74);
562 112 : CodeStubAssembler(state_).CallRuntime(Runtime::kThrowInvalidStringLength, tmp129);
563 112 : CodeStubAssembler(state_).Unreachable();
564 : }
565 56 : }
566 :
567 : } // namespace internal
568 59456 : } // namespace v8
569 :
|