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