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 112 : compiler::TNode<Oddball> StringBuiltinsFromDSLAssembler::TryFastStringCompareSequence(compiler::TNode<String> p_string, compiler::TNode<String> p_searchStr, compiler::TNode<Number> p_start, compiler::TNode<Smi> p_searchLength, compiler::CodeAssemblerLabel* label_Slow) {
84 112 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
85 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
86 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
87 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
88 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, String> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
89 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
90 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Number, Smi> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
91 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Smi, IntPtrT, IntPtrT, IntPtrT> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
92 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Smi, IntPtrT, IntPtrT, IntPtrT> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
93 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Smi, IntPtrT, IntPtrT, IntPtrT> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
94 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Smi, IntPtrT, IntPtrT, IntPtrT> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
95 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, String, String, Smi, IntPtrT, IntPtrT, IntPtrT> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
96 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, Oddball> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
97 : compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
98 : compiler::CodeAssemblerParameterizedLabel<String, String, Number, Smi, Oddball> block14(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
99 : ca_.Goto(&block0, p_string, p_searchStr, p_start, p_searchLength);
100 :
101 112 : if (block0.is_used()) {
102 : compiler::TNode<String> tmp0;
103 : compiler::TNode<String> tmp1;
104 : compiler::TNode<Number> tmp2;
105 : compiler::TNode<Smi> tmp3;
106 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3);
107 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 9);
108 : compiler::TNode<String> tmp4;
109 : USE(tmp4);
110 112 : compiler::CodeAssemblerLabel label0(&ca_);
111 336 : tmp4 = BaseBuiltinsFromDSLAssembler(state_).Cast14ATDirectString(compiler::TNode<HeapObject>{tmp0}, &label0);
112 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp0, tmp4);
113 112 : if (label0.is_used()) {
114 112 : ca_.Bind(&label0);
115 : ca_.Goto(&block4, tmp0, tmp1, tmp2, tmp3, tmp0);
116 : }
117 : }
118 :
119 112 : if (block4.is_used()) {
120 : compiler::TNode<String> tmp5;
121 : compiler::TNode<String> tmp6;
122 : compiler::TNode<Number> tmp7;
123 : compiler::TNode<Smi> tmp8;
124 : compiler::TNode<String> tmp9;
125 : ca_.Bind(&block4, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9);
126 : ca_.Goto(&block1);
127 : }
128 :
129 112 : if (block3.is_used()) {
130 : compiler::TNode<String> tmp10;
131 : compiler::TNode<String> tmp11;
132 : compiler::TNode<Number> tmp12;
133 : compiler::TNode<Smi> tmp13;
134 : compiler::TNode<String> tmp14;
135 : compiler::TNode<String> tmp15;
136 : ca_.Bind(&block3, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15);
137 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 10);
138 : compiler::TNode<String> tmp16;
139 : USE(tmp16);
140 112 : compiler::CodeAssemblerLabel label0(&ca_);
141 336 : tmp16 = BaseBuiltinsFromDSLAssembler(state_).Cast14ATDirectString(compiler::TNode<HeapObject>{tmp11}, &label0);
142 : ca_.Goto(&block5, tmp10, tmp11, tmp12, tmp13, tmp15, tmp11, tmp16);
143 112 : if (label0.is_used()) {
144 112 : ca_.Bind(&label0);
145 : ca_.Goto(&block6, tmp10, tmp11, tmp12, tmp13, tmp15, tmp11);
146 : }
147 : }
148 :
149 112 : if (block6.is_used()) {
150 : compiler::TNode<String> tmp17;
151 : compiler::TNode<String> tmp18;
152 : compiler::TNode<Number> tmp19;
153 : compiler::TNode<Smi> tmp20;
154 : compiler::TNode<String> tmp21;
155 : compiler::TNode<String> tmp22;
156 : ca_.Bind(&block6, &tmp17, &tmp18, &tmp19, &tmp20, &tmp21, &tmp22);
157 : ca_.Goto(&block1);
158 : }
159 :
160 112 : if (block5.is_used()) {
161 : compiler::TNode<String> tmp23;
162 : compiler::TNode<String> tmp24;
163 : compiler::TNode<Number> tmp25;
164 : compiler::TNode<Smi> tmp26;
165 : compiler::TNode<String> tmp27;
166 : compiler::TNode<String> tmp28;
167 : compiler::TNode<String> tmp29;
168 : ca_.Bind(&block5, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29);
169 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 11);
170 : compiler::TNode<Smi> tmp30;
171 : USE(tmp30);
172 112 : compiler::CodeAssemblerLabel label0(&ca_);
173 336 : tmp30 = BaseBuiltinsFromDSLAssembler(state_).Cast5ATSmi(compiler::TNode<Object>{tmp25}, &label0);
174 : ca_.Goto(&block7, tmp23, tmp24, tmp25, tmp26, tmp27, tmp29, tmp25, tmp30);
175 112 : if (label0.is_used()) {
176 112 : ca_.Bind(&label0);
177 : ca_.Goto(&block8, tmp23, tmp24, tmp25, tmp26, tmp27, tmp29, tmp25);
178 : }
179 : }
180 :
181 112 : if (block8.is_used()) {
182 : compiler::TNode<String> tmp31;
183 : compiler::TNode<String> tmp32;
184 : compiler::TNode<Number> tmp33;
185 : compiler::TNode<Smi> tmp34;
186 : compiler::TNode<String> tmp35;
187 : compiler::TNode<String> tmp36;
188 : compiler::TNode<Number> tmp37;
189 : ca_.Bind(&block8, &tmp31, &tmp32, &tmp33, &tmp34, &tmp35, &tmp36, &tmp37);
190 : ca_.Goto(&block1);
191 : }
192 :
193 112 : if (block7.is_used()) {
194 : compiler::TNode<String> tmp38;
195 : compiler::TNode<String> tmp39;
196 : compiler::TNode<Number> tmp40;
197 : compiler::TNode<Smi> tmp41;
198 : compiler::TNode<String> tmp42;
199 : compiler::TNode<String> tmp43;
200 : compiler::TNode<Number> tmp44;
201 : compiler::TNode<Smi> tmp45;
202 : ca_.Bind(&block7, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45);
203 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 13);
204 : compiler::TNode<IntPtrT> tmp46;
205 : USE(tmp46);
206 336 : tmp46 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(0));
207 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 14);
208 : compiler::TNode<IntPtrT> tmp47;
209 : USE(tmp47);
210 336 : tmp47 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp45}));
211 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 15);
212 : compiler::TNode<IntPtrT> tmp48;
213 : USE(tmp48);
214 336 : tmp48 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp41}));
215 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 17);
216 : ca_.Goto(&block11, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp45, tmp46, tmp47, tmp48);
217 : }
218 :
219 112 : if (block11.is_used()) {
220 : compiler::TNode<String> tmp49;
221 : compiler::TNode<String> tmp50;
222 : compiler::TNode<Number> tmp51;
223 : compiler::TNode<Smi> tmp52;
224 : compiler::TNode<String> tmp53;
225 : compiler::TNode<String> tmp54;
226 : compiler::TNode<Smi> tmp55;
227 : compiler::TNode<IntPtrT> tmp56;
228 : compiler::TNode<IntPtrT> tmp57;
229 : compiler::TNode<IntPtrT> tmp58;
230 : ca_.Bind(&block11, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58);
231 : compiler::TNode<BoolT> tmp59;
232 : USE(tmp59);
233 448 : tmp59 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).IntPtrLessThan(compiler::TNode<IntPtrT>{tmp56}, compiler::TNode<IntPtrT>{tmp58}));
234 112 : ca_.Branch(tmp59, &block9, &block10, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58);
235 : }
236 :
237 112 : if (block9.is_used()) {
238 : compiler::TNode<String> tmp60;
239 : compiler::TNode<String> tmp61;
240 : compiler::TNode<Number> tmp62;
241 : compiler::TNode<Smi> tmp63;
242 : compiler::TNode<String> tmp64;
243 : compiler::TNode<String> tmp65;
244 : compiler::TNode<Smi> tmp66;
245 : compiler::TNode<IntPtrT> tmp67;
246 : compiler::TNode<IntPtrT> tmp68;
247 : compiler::TNode<IntPtrT> tmp69;
248 : ca_.Bind(&block9, &tmp60, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68, &tmp69);
249 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 18);
250 : compiler::TNode<Int32T> tmp70;
251 : USE(tmp70);
252 448 : tmp70 = ca_.UncheckedCast<Int32T>(CodeStubAssembler(state_).StringCharCodeAt(compiler::TNode<String>{tmp65}, compiler::TNode<IntPtrT>{tmp67}));
253 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 19);
254 : compiler::TNode<Int32T> tmp71;
255 : USE(tmp71);
256 448 : tmp71 = ca_.UncheckedCast<Int32T>(CodeStubAssembler(state_).StringCharCodeAt(compiler::TNode<String>{tmp64}, compiler::TNode<IntPtrT>{tmp68}));
257 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 18);
258 : compiler::TNode<BoolT> tmp72;
259 : USE(tmp72);
260 224 : tmp72 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Word32NotEqual(compiler::TNode<Int32T>{tmp70}, compiler::TNode<Int32T>{tmp71}));
261 112 : ca_.Branch(tmp72, &block12, &block13, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67, tmp68, tmp69);
262 : }
263 :
264 112 : if (block12.is_used()) {
265 : compiler::TNode<String> tmp73;
266 : compiler::TNode<String> tmp74;
267 : compiler::TNode<Number> tmp75;
268 : compiler::TNode<Smi> tmp76;
269 : compiler::TNode<String> tmp77;
270 : compiler::TNode<String> tmp78;
271 : compiler::TNode<Smi> tmp79;
272 : compiler::TNode<IntPtrT> tmp80;
273 : compiler::TNode<IntPtrT> tmp81;
274 : compiler::TNode<IntPtrT> tmp82;
275 : ca_.Bind(&block12, &tmp73, &tmp74, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81, &tmp82);
276 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 20);
277 : compiler::TNode<Oddball> tmp83;
278 : USE(tmp83);
279 336 : tmp83 = BaseBuiltinsFromDSLAssembler(state_).False();
280 : ca_.Goto(&block2, tmp73, tmp74, tmp75, tmp76, tmp83);
281 : }
282 :
283 112 : if (block13.is_used()) {
284 : compiler::TNode<String> tmp84;
285 : compiler::TNode<String> tmp85;
286 : compiler::TNode<Number> tmp86;
287 : compiler::TNode<Smi> tmp87;
288 : compiler::TNode<String> tmp88;
289 : compiler::TNode<String> tmp89;
290 : compiler::TNode<Smi> tmp90;
291 : compiler::TNode<IntPtrT> tmp91;
292 : compiler::TNode<IntPtrT> tmp92;
293 : compiler::TNode<IntPtrT> tmp93;
294 : ca_.Bind(&block13, &tmp84, &tmp85, &tmp86, &tmp87, &tmp88, &tmp89, &tmp90, &tmp91, &tmp92, &tmp93);
295 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 23);
296 : compiler::TNode<IntPtrT> tmp94;
297 : USE(tmp94);
298 336 : tmp94 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
299 : compiler::TNode<IntPtrT> tmp95;
300 : USE(tmp95);
301 224 : tmp95 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).IntPtrAdd(compiler::TNode<IntPtrT>{tmp91}, compiler::TNode<IntPtrT>{tmp94}));
302 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 24);
303 : compiler::TNode<IntPtrT> tmp96;
304 : USE(tmp96);
305 336 : tmp96 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
306 : compiler::TNode<IntPtrT> tmp97;
307 : USE(tmp97);
308 224 : tmp97 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).IntPtrAdd(compiler::TNode<IntPtrT>{tmp92}, compiler::TNode<IntPtrT>{tmp96}));
309 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 17);
310 : ca_.Goto(&block11, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp95, tmp97, tmp93);
311 : }
312 :
313 112 : if (block10.is_used()) {
314 : compiler::TNode<String> tmp98;
315 : compiler::TNode<String> tmp99;
316 : compiler::TNode<Number> tmp100;
317 : compiler::TNode<Smi> tmp101;
318 : compiler::TNode<String> tmp102;
319 : compiler::TNode<String> tmp103;
320 : compiler::TNode<Smi> tmp104;
321 : compiler::TNode<IntPtrT> tmp105;
322 : compiler::TNode<IntPtrT> tmp106;
323 : compiler::TNode<IntPtrT> tmp107;
324 : ca_.Bind(&block10, &tmp98, &tmp99, &tmp100, &tmp101, &tmp102, &tmp103, &tmp104, &tmp105, &tmp106, &tmp107);
325 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 26);
326 : compiler::TNode<Oddball> tmp108;
327 : USE(tmp108);
328 336 : tmp108 = BaseBuiltinsFromDSLAssembler(state_).True();
329 : ca_.Goto(&block2, tmp98, tmp99, tmp100, tmp101, tmp108);
330 : }
331 :
332 112 : if (block2.is_used()) {
333 : compiler::TNode<String> tmp109;
334 : compiler::TNode<String> tmp110;
335 : compiler::TNode<Number> tmp111;
336 : compiler::TNode<Smi> tmp112;
337 : compiler::TNode<Oddball> tmp113;
338 : ca_.Bind(&block2, &tmp109, &tmp110, &tmp111, &tmp112, &tmp113);
339 112 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 6);
340 : ca_.Goto(&block14, tmp109, tmp110, tmp111, tmp112, tmp113);
341 : }
342 :
343 112 : if (block1.is_used()) {
344 : ca_.Bind(&block1);
345 112 : ca_.Goto(label_Slow);
346 : }
347 :
348 : compiler::TNode<String> tmp114;
349 : compiler::TNode<String> tmp115;
350 : compiler::TNode<Number> tmp116;
351 : compiler::TNode<Smi> tmp117;
352 : compiler::TNode<Oddball> tmp118;
353 : ca_.Bind(&block14, &tmp114, &tmp115, &tmp116, &tmp117, &tmp118);
354 224 : return compiler::TNode<Oddball>{tmp118};
355 : }
356 :
357 224 : TF_BUILTIN(StringPrototypeEndsWith, CodeStubAssembler) {
358 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
359 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
360 : USE(parameter0);
361 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
362 56 : TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(argc));
363 56 : TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer());
364 56 : BaseBuiltinsFromDSLAssembler::Arguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length));
365 : CodeStubArguments arguments(this, torque_arguments);
366 56 : TNode<Object> parameter1 = arguments.GetReceiver();
367 : USE(parameter1);
368 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
369 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
370 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
371 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
372 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
373 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
374 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
375 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number, Number> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
376 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number, Number> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
377 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
378 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
379 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number, String, String, Number, Smi> block14(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
380 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number, String, String, Number, Smi, Oddball> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
381 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
382 : ca_.Goto(&block0, parameter0, parameter1, torque_arguments.frame, torque_arguments.base, torque_arguments.length);
383 :
384 56 : if (block0.is_used()) {
385 : compiler::TNode<Context> tmp0;
386 : compiler::TNode<Object> tmp1;
387 : compiler::TNode<RawPtrT> tmp2;
388 : compiler::TNode<RawPtrT> tmp3;
389 : compiler::TNode<IntPtrT> tmp4;
390 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
391 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 32);
392 : compiler::TNode<IntPtrT> tmp5;
393 : USE(tmp5);
394 112 : tmp5 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(0));
395 : compiler::TNode<Object> tmp6;
396 : USE(tmp6);
397 112 : tmp6 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp2}, compiler::TNode<RawPtrT>{tmp3}, compiler::TNode<IntPtrT>{tmp4}}, compiler::TNode<IntPtrT>{tmp5}));
398 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 33);
399 : compiler::TNode<IntPtrT> tmp7;
400 : USE(tmp7);
401 112 : tmp7 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
402 : compiler::TNode<Object> tmp8;
403 : USE(tmp8);
404 112 : tmp8 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp2}, compiler::TNode<RawPtrT>{tmp3}, compiler::TNode<IntPtrT>{tmp4}}, compiler::TNode<IntPtrT>{tmp7}));
405 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 36);
406 : compiler::TNode<Object> tmp9;
407 : USE(tmp9);
408 112 : tmp9 = ca_.UncheckedCast<Object>(StringBuiltinsFromDSLAssembler(state_).RequireObjectCoercible(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
409 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 39);
410 : compiler::TNode<String> tmp10;
411 : USE(tmp10);
412 168 : tmp10 = ca_.UncheckedCast<String>(CodeStubAssembler(state_).ToString_Inline(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp9}));
413 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 43);
414 : compiler::TNode<BoolT> tmp11;
415 : USE(tmp11);
416 112 : tmp11 = ca_.UncheckedCast<BoolT>(RegExpBuiltinsAssembler(state_).IsRegExp(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp6}));
417 56 : ca_.Branch(tmp11, &block1, &block2, tmp0, tmp1, tmp2, tmp3, tmp4, tmp6, tmp8, tmp9, tmp10);
418 : }
419 :
420 56 : if (block1.is_used()) {
421 : compiler::TNode<Context> tmp12;
422 : compiler::TNode<Object> tmp13;
423 : compiler::TNode<RawPtrT> tmp14;
424 : compiler::TNode<RawPtrT> tmp15;
425 : compiler::TNode<IntPtrT> tmp16;
426 : compiler::TNode<Object> tmp17;
427 : compiler::TNode<Object> tmp18;
428 : compiler::TNode<Object> tmp19;
429 : compiler::TNode<String> tmp20;
430 : ca_.Bind(&block1, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19, &tmp20);
431 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 44);
432 112 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp12}, MessageTemplate::kFirstArgumentNotRegExp, "String.prototype.endsWith");
433 : }
434 :
435 56 : if (block2.is_used()) {
436 : compiler::TNode<Context> tmp21;
437 : compiler::TNode<Object> tmp22;
438 : compiler::TNode<RawPtrT> tmp23;
439 : compiler::TNode<RawPtrT> tmp24;
440 : compiler::TNode<IntPtrT> tmp25;
441 : compiler::TNode<Object> tmp26;
442 : compiler::TNode<Object> tmp27;
443 : compiler::TNode<Object> tmp28;
444 : compiler::TNode<String> tmp29;
445 : ca_.Bind(&block2, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29);
446 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 48);
447 : compiler::TNode<String> tmp30;
448 : USE(tmp30);
449 224 : tmp30 = ca_.UncheckedCast<String>(CodeStubAssembler(state_).ToString_Inline(compiler::TNode<Context>{tmp21}, compiler::TNode<Object>{tmp26}));
450 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 51);
451 : compiler::TNode<Smi> tmp31;
452 : USE(tmp31);
453 168 : tmp31 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).LoadStringLengthAsSmi(compiler::TNode<String>{tmp29}));
454 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 55);
455 : compiler::TNode<Oddball> tmp32;
456 : USE(tmp32);
457 112 : tmp32 = BaseBuiltinsFromDSLAssembler(state_).Undefined();
458 : compiler::TNode<BoolT> tmp33;
459 : USE(tmp33);
460 112 : tmp33 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<Object>{tmp27}, compiler::TNode<HeapObject>{tmp32}));
461 56 : ca_.Branch(tmp33, &block3, &block4, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29, tmp30, tmp31);
462 : }
463 :
464 56 : if (block3.is_used()) {
465 : compiler::TNode<Context> tmp34;
466 : compiler::TNode<Object> tmp35;
467 : compiler::TNode<RawPtrT> tmp36;
468 : compiler::TNode<RawPtrT> tmp37;
469 : compiler::TNode<IntPtrT> tmp38;
470 : compiler::TNode<Object> tmp39;
471 : compiler::TNode<Object> tmp40;
472 : compiler::TNode<Object> tmp41;
473 : compiler::TNode<String> tmp42;
474 : compiler::TNode<String> tmp43;
475 : compiler::TNode<Number> tmp44;
476 : ca_.Bind(&block3, &tmp34, &tmp35, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44);
477 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 56);
478 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 55);
479 : ca_.Goto(&block6, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp44);
480 : }
481 :
482 56 : if (block4.is_used()) {
483 : compiler::TNode<Context> tmp45;
484 : compiler::TNode<Object> tmp46;
485 : compiler::TNode<RawPtrT> tmp47;
486 : compiler::TNode<RawPtrT> tmp48;
487 : compiler::TNode<IntPtrT> tmp49;
488 : compiler::TNode<Object> tmp50;
489 : compiler::TNode<Object> tmp51;
490 : compiler::TNode<Object> tmp52;
491 : compiler::TNode<String> tmp53;
492 : compiler::TNode<String> tmp54;
493 : compiler::TNode<Number> tmp55;
494 : ca_.Bind(&block4, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55);
495 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 57);
496 : compiler::TNode<Number> tmp56;
497 : USE(tmp56);
498 224 : tmp56 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).ToInteger_Inline(compiler::TNode<Context>{tmp45}, compiler::TNode<Object>{tmp51}));
499 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 55);
500 : ca_.Goto(&block5, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56);
501 : }
502 :
503 56 : if (block6.is_used()) {
504 : compiler::TNode<Context> tmp57;
505 : compiler::TNode<Object> tmp58;
506 : compiler::TNode<RawPtrT> tmp59;
507 : compiler::TNode<RawPtrT> tmp60;
508 : compiler::TNode<IntPtrT> tmp61;
509 : compiler::TNode<Object> tmp62;
510 : compiler::TNode<Object> tmp63;
511 : compiler::TNode<Object> tmp64;
512 : compiler::TNode<String> tmp65;
513 : compiler::TNode<String> tmp66;
514 : compiler::TNode<Number> tmp67;
515 : compiler::TNode<Number> tmp68;
516 : ca_.Bind(&block6, &tmp57, &tmp58, &tmp59, &tmp60, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68);
517 : ca_.Goto(&block5, tmp57, tmp58, tmp59, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67, tmp68);
518 : }
519 :
520 56 : if (block5.is_used()) {
521 : compiler::TNode<Context> tmp69;
522 : compiler::TNode<Object> tmp70;
523 : compiler::TNode<RawPtrT> tmp71;
524 : compiler::TNode<RawPtrT> tmp72;
525 : compiler::TNode<IntPtrT> tmp73;
526 : compiler::TNode<Object> tmp74;
527 : compiler::TNode<Object> tmp75;
528 : compiler::TNode<Object> tmp76;
529 : compiler::TNode<String> tmp77;
530 : compiler::TNode<String> tmp78;
531 : compiler::TNode<Number> tmp79;
532 : compiler::TNode<Number> tmp80;
533 : ca_.Bind(&block5, &tmp69, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80);
534 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 60);
535 : compiler::TNode<Number> tmp81;
536 : USE(tmp81);
537 112 : tmp81 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(0));
538 : compiler::TNode<Number> tmp82;
539 : USE(tmp82);
540 168 : tmp82 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberMax(compiler::TNode<Number>{tmp80}, compiler::TNode<Number>{tmp81}));
541 : compiler::TNode<Number> tmp83;
542 : USE(tmp83);
543 168 : tmp83 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberMin(compiler::TNode<Number>{tmp82}, compiler::TNode<Number>{tmp79}));
544 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 63);
545 : compiler::TNode<Smi> tmp84;
546 : USE(tmp84);
547 168 : tmp84 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).LoadStringLengthAsSmi(compiler::TNode<String>{tmp78}));
548 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 66);
549 : compiler::TNode<Number> tmp85;
550 : USE(tmp85);
551 112 : tmp85 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp83}, compiler::TNode<Number>{tmp84}));
552 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 69);
553 : compiler::TNode<Number> tmp86;
554 : USE(tmp86);
555 112 : tmp86 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(0));
556 56 : compiler::CodeAssemblerLabel label0(&ca_);
557 56 : compiler::CodeAssemblerLabel label1(&ca_);
558 112 : CodeStubAssembler(state_).BranchIfNumberLessThan(compiler::TNode<Number>{tmp85}, compiler::TNode<Number>{tmp86}, &label0, &label1);
559 56 : if (label0.is_used()) {
560 56 : ca_.Bind(&label0);
561 : ca_.Goto(&block9, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp83, tmp84, tmp85, tmp85);
562 : }
563 56 : if (label1.is_used()) {
564 56 : ca_.Bind(&label1);
565 : ca_.Goto(&block10, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp83, tmp84, tmp85, tmp85);
566 : }
567 : }
568 :
569 56 : if (block9.is_used()) {
570 : compiler::TNode<Context> tmp87;
571 : compiler::TNode<Object> tmp88;
572 : compiler::TNode<RawPtrT> tmp89;
573 : compiler::TNode<RawPtrT> tmp90;
574 : compiler::TNode<IntPtrT> tmp91;
575 : compiler::TNode<Object> tmp92;
576 : compiler::TNode<Object> tmp93;
577 : compiler::TNode<Object> tmp94;
578 : compiler::TNode<String> tmp95;
579 : compiler::TNode<String> tmp96;
580 : compiler::TNode<Number> tmp97;
581 : compiler::TNode<Number> tmp98;
582 : compiler::TNode<Number> tmp99;
583 : compiler::TNode<Smi> tmp100;
584 : compiler::TNode<Number> tmp101;
585 : compiler::TNode<Number> tmp102;
586 : ca_.Bind(&block9, &tmp87, &tmp88, &tmp89, &tmp90, &tmp91, &tmp92, &tmp93, &tmp94, &tmp95, &tmp96, &tmp97, &tmp98, &tmp99, &tmp100, &tmp101, &tmp102);
587 : ca_.Goto(&block7, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101);
588 : }
589 :
590 56 : if (block10.is_used()) {
591 : compiler::TNode<Context> tmp103;
592 : compiler::TNode<Object> tmp104;
593 : compiler::TNode<RawPtrT> tmp105;
594 : compiler::TNode<RawPtrT> tmp106;
595 : compiler::TNode<IntPtrT> tmp107;
596 : compiler::TNode<Object> tmp108;
597 : compiler::TNode<Object> tmp109;
598 : compiler::TNode<Object> tmp110;
599 : compiler::TNode<String> tmp111;
600 : compiler::TNode<String> tmp112;
601 : compiler::TNode<Number> tmp113;
602 : compiler::TNode<Number> tmp114;
603 : compiler::TNode<Number> tmp115;
604 : compiler::TNode<Smi> tmp116;
605 : compiler::TNode<Number> tmp117;
606 : compiler::TNode<Number> tmp118;
607 : ca_.Bind(&block10, &tmp103, &tmp104, &tmp105, &tmp106, &tmp107, &tmp108, &tmp109, &tmp110, &tmp111, &tmp112, &tmp113, &tmp114, &tmp115, &tmp116, &tmp117, &tmp118);
608 : ca_.Goto(&block8, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117);
609 : }
610 :
611 56 : if (block7.is_used()) {
612 : compiler::TNode<Context> tmp119;
613 : compiler::TNode<Object> tmp120;
614 : compiler::TNode<RawPtrT> tmp121;
615 : compiler::TNode<RawPtrT> tmp122;
616 : compiler::TNode<IntPtrT> tmp123;
617 : compiler::TNode<Object> tmp124;
618 : compiler::TNode<Object> tmp125;
619 : compiler::TNode<Object> tmp126;
620 : compiler::TNode<String> tmp127;
621 : compiler::TNode<String> tmp128;
622 : compiler::TNode<Number> tmp129;
623 : compiler::TNode<Number> tmp130;
624 : compiler::TNode<Number> tmp131;
625 : compiler::TNode<Smi> tmp132;
626 : compiler::TNode<Number> tmp133;
627 : ca_.Bind(&block7, &tmp119, &tmp120, &tmp121, &tmp122, &tmp123, &tmp124, &tmp125, &tmp126, &tmp127, &tmp128, &tmp129, &tmp130, &tmp131, &tmp132, &tmp133);
628 : compiler::TNode<Oddball> tmp134;
629 : USE(tmp134);
630 112 : tmp134 = BaseBuiltinsFromDSLAssembler(state_).False();
631 56 : arguments.PopAndReturn(tmp134);
632 : }
633 :
634 56 : if (block8.is_used()) {
635 : compiler::TNode<Context> tmp135;
636 : compiler::TNode<Object> tmp136;
637 : compiler::TNode<RawPtrT> tmp137;
638 : compiler::TNode<RawPtrT> tmp138;
639 : compiler::TNode<IntPtrT> tmp139;
640 : compiler::TNode<Object> tmp140;
641 : compiler::TNode<Object> tmp141;
642 : compiler::TNode<Object> tmp142;
643 : compiler::TNode<String> tmp143;
644 : compiler::TNode<String> tmp144;
645 : compiler::TNode<Number> tmp145;
646 : compiler::TNode<Number> tmp146;
647 : compiler::TNode<Number> tmp147;
648 : compiler::TNode<Smi> tmp148;
649 : compiler::TNode<Number> tmp149;
650 : ca_.Bind(&block8, &tmp135, &tmp136, &tmp137, &tmp138, &tmp139, &tmp140, &tmp141, &tmp142, &tmp143, &tmp144, &tmp145, &tmp146, &tmp147, &tmp148, &tmp149);
651 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 78);
652 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 77);
653 : compiler::TNode<Oddball> tmp150;
654 : USE(tmp150);
655 56 : compiler::CodeAssemblerLabel label0(&ca_);
656 112 : tmp150 = StringBuiltinsFromDSLAssembler(state_).TryFastStringCompareSequence(compiler::TNode<String>{tmp143}, compiler::TNode<String>{tmp144}, compiler::TNode<Number>{tmp149}, compiler::TNode<Smi>{tmp148}, &label0);
657 : ca_.Goto(&block13, tmp135, tmp136, tmp137, tmp138, tmp139, tmp140, tmp141, tmp142, tmp143, tmp144, tmp145, tmp146, tmp147, tmp148, tmp149, tmp143, tmp144, tmp149, tmp148, tmp150);
658 56 : if (label0.is_used()) {
659 56 : ca_.Bind(&label0);
660 : ca_.Goto(&block14, tmp135, tmp136, tmp137, tmp138, tmp139, tmp140, tmp141, tmp142, tmp143, tmp144, tmp145, tmp146, tmp147, tmp148, tmp149, tmp143, tmp144, tmp149, tmp148);
661 : }
662 : }
663 :
664 56 : if (block14.is_used()) {
665 : compiler::TNode<Context> tmp151;
666 : compiler::TNode<Object> tmp152;
667 : compiler::TNode<RawPtrT> tmp153;
668 : compiler::TNode<RawPtrT> tmp154;
669 : compiler::TNode<IntPtrT> tmp155;
670 : compiler::TNode<Object> tmp156;
671 : compiler::TNode<Object> tmp157;
672 : compiler::TNode<Object> tmp158;
673 : compiler::TNode<String> tmp159;
674 : compiler::TNode<String> tmp160;
675 : compiler::TNode<Number> tmp161;
676 : compiler::TNode<Number> tmp162;
677 : compiler::TNode<Number> tmp163;
678 : compiler::TNode<Smi> tmp164;
679 : compiler::TNode<Number> tmp165;
680 : compiler::TNode<String> tmp166;
681 : compiler::TNode<String> tmp167;
682 : compiler::TNode<Number> tmp168;
683 : compiler::TNode<Smi> tmp169;
684 : ca_.Bind(&block14, &tmp151, &tmp152, &tmp153, &tmp154, &tmp155, &tmp156, &tmp157, &tmp158, &tmp159, &tmp160, &tmp161, &tmp162, &tmp163, &tmp164, &tmp165, &tmp166, &tmp167, &tmp168, &tmp169);
685 : ca_.Goto(&block12, tmp151, tmp152, tmp153, tmp154, tmp155, tmp156, tmp157, tmp158, tmp159, tmp160, tmp161, tmp162, tmp163, tmp164, tmp165);
686 : }
687 :
688 56 : if (block13.is_used()) {
689 : compiler::TNode<Context> tmp170;
690 : compiler::TNode<Object> tmp171;
691 : compiler::TNode<RawPtrT> tmp172;
692 : compiler::TNode<RawPtrT> tmp173;
693 : compiler::TNode<IntPtrT> tmp174;
694 : compiler::TNode<Object> tmp175;
695 : compiler::TNode<Object> tmp176;
696 : compiler::TNode<Object> tmp177;
697 : compiler::TNode<String> tmp178;
698 : compiler::TNode<String> tmp179;
699 : compiler::TNode<Number> tmp180;
700 : compiler::TNode<Number> tmp181;
701 : compiler::TNode<Number> tmp182;
702 : compiler::TNode<Smi> tmp183;
703 : compiler::TNode<Number> tmp184;
704 : compiler::TNode<String> tmp185;
705 : compiler::TNode<String> tmp186;
706 : compiler::TNode<Number> tmp187;
707 : compiler::TNode<Smi> tmp188;
708 : compiler::TNode<Oddball> tmp189;
709 : ca_.Bind(&block13, &tmp170, &tmp171, &tmp172, &tmp173, &tmp174, &tmp175, &tmp176, &tmp177, &tmp178, &tmp179, &tmp180, &tmp181, &tmp182, &tmp183, &tmp184, &tmp185, &tmp186, &tmp187, &tmp188, &tmp189);
710 56 : arguments.PopAndReturn(tmp189);
711 : }
712 :
713 56 : if (block12.is_used()) {
714 : compiler::TNode<Context> tmp190;
715 : compiler::TNode<Object> tmp191;
716 : compiler::TNode<RawPtrT> tmp192;
717 : compiler::TNode<RawPtrT> tmp193;
718 : compiler::TNode<IntPtrT> tmp194;
719 : compiler::TNode<Object> tmp195;
720 : compiler::TNode<Object> tmp196;
721 : compiler::TNode<Object> tmp197;
722 : compiler::TNode<String> tmp198;
723 : compiler::TNode<String> tmp199;
724 : compiler::TNode<Number> tmp200;
725 : compiler::TNode<Number> tmp201;
726 : compiler::TNode<Number> tmp202;
727 : compiler::TNode<Smi> tmp203;
728 : compiler::TNode<Number> tmp204;
729 : ca_.Bind(&block12, &tmp190, &tmp191, &tmp192, &tmp193, &tmp194, &tmp195, &tmp196, &tmp197, &tmp198, &tmp199, &tmp200, &tmp201, &tmp202, &tmp203, &tmp204);
730 56 : ca_.SetSourcePosition("../../src/builtins/string-endswith.tq", 82);
731 : compiler::TNode<Oddball> tmp205;
732 112 : tmp205 = TORQUE_CAST(CodeStubAssembler(state_).CallRuntime(Runtime::kStringCompareSequence, tmp190, tmp198, tmp199, tmp204));
733 : USE(tmp205);
734 56 : arguments.PopAndReturn(tmp205);
735 : }
736 56 : }
737 :
738 112 : compiler::TNode<Object> StringBuiltinsFromDSLAssembler::RequireObjectCoercible(compiler::TNode<Context> p_context, compiler::TNode<Object> p_argument) {
739 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
740 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
741 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
742 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
743 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
744 : ca_.Goto(&block0, p_context, p_argument);
745 :
746 112 : if (block0.is_used()) {
747 : compiler::TNode<Context> tmp0;
748 : compiler::TNode<Object> tmp1;
749 : ca_.Bind(&block0, &tmp0, &tmp1);
750 112 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 14);
751 : compiler::TNode<BoolT> tmp2;
752 : USE(tmp2);
753 336 : tmp2 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).IsNullOrUndefined(compiler::TNode<Object>{tmp1}));
754 112 : ca_.Branch(tmp2, &block2, &block3, tmp0, tmp1);
755 : }
756 :
757 112 : if (block2.is_used()) {
758 : compiler::TNode<Context> tmp3;
759 : compiler::TNode<Object> tmp4;
760 : ca_.Bind(&block2, &tmp3, &tmp4);
761 112 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 15);
762 224 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp3}, MessageTemplate::kCalledOnNullOrUndefined, "String.prototype.startsWith");
763 : }
764 :
765 112 : if (block3.is_used()) {
766 : compiler::TNode<Context> tmp5;
767 : compiler::TNode<Object> tmp6;
768 : ca_.Bind(&block3, &tmp5, &tmp6);
769 112 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 17);
770 : ca_.Goto(&block1, tmp5, tmp6, tmp6);
771 : }
772 :
773 112 : if (block1.is_used()) {
774 : compiler::TNode<Context> tmp7;
775 : compiler::TNode<Object> tmp8;
776 : compiler::TNode<Object> tmp9;
777 : ca_.Bind(&block1, &tmp7, &tmp8, &tmp9);
778 112 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 12);
779 : ca_.Goto(&block4, tmp7, tmp8, tmp9);
780 : }
781 :
782 : compiler::TNode<Context> tmp10;
783 : compiler::TNode<Object> tmp11;
784 : compiler::TNode<Object> tmp12;
785 : ca_.Bind(&block4, &tmp10, &tmp11, &tmp12);
786 224 : return compiler::TNode<Object>{tmp12};
787 : }
788 :
789 224 : TF_BUILTIN(StringPrototypeStartsWith, CodeStubAssembler) {
790 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
791 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
792 : USE(parameter0);
793 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
794 56 : TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(argc));
795 56 : TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer());
796 56 : BaseBuiltinsFromDSLAssembler::Arguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length));
797 : CodeStubArguments arguments(this, torque_arguments);
798 56 : TNode<Object> parameter1 = arguments.GetReceiver();
799 : USE(parameter1);
800 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
801 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
802 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
803 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number, Number> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
804 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, Number, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
805 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
806 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
807 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, String, String, Number, Smi> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
808 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi, String, String, Number, Smi, Oddball> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
809 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, Object, Object, String, String, Number, Number, Number, Smi> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
810 : ca_.Goto(&block0, parameter0, parameter1, torque_arguments.frame, torque_arguments.base, torque_arguments.length);
811 :
812 56 : if (block0.is_used()) {
813 : compiler::TNode<Context> tmp0;
814 : compiler::TNode<Object> tmp1;
815 : compiler::TNode<RawPtrT> tmp2;
816 : compiler::TNode<RawPtrT> tmp3;
817 : compiler::TNode<IntPtrT> tmp4;
818 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
819 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 23);
820 : compiler::TNode<IntPtrT> tmp5;
821 : USE(tmp5);
822 112 : tmp5 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(0));
823 : compiler::TNode<Object> tmp6;
824 : USE(tmp6);
825 112 : tmp6 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp2}, compiler::TNode<RawPtrT>{tmp3}, compiler::TNode<IntPtrT>{tmp4}}, compiler::TNode<IntPtrT>{tmp5}));
826 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 24);
827 : compiler::TNode<IntPtrT> tmp7;
828 : USE(tmp7);
829 112 : tmp7 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
830 : compiler::TNode<Object> tmp8;
831 : USE(tmp8);
832 112 : tmp8 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp2}, compiler::TNode<RawPtrT>{tmp3}, compiler::TNode<IntPtrT>{tmp4}}, compiler::TNode<IntPtrT>{tmp7}));
833 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 27);
834 : compiler::TNode<Object> tmp9;
835 : USE(tmp9);
836 112 : tmp9 = ca_.UncheckedCast<Object>(StringBuiltinsFromDSLAssembler(state_).RequireObjectCoercible(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
837 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 30);
838 : compiler::TNode<String> tmp10;
839 : USE(tmp10);
840 168 : tmp10 = ca_.UncheckedCast<String>(CodeStubAssembler(state_).ToString_Inline(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp9}));
841 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 34);
842 : compiler::TNode<BoolT> tmp11;
843 : USE(tmp11);
844 112 : tmp11 = ca_.UncheckedCast<BoolT>(RegExpBuiltinsAssembler(state_).IsRegExp(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp6}));
845 56 : ca_.Branch(tmp11, &block1, &block2, tmp0, tmp1, tmp2, tmp3, tmp4, tmp6, tmp8, tmp9, tmp10);
846 : }
847 :
848 56 : if (block1.is_used()) {
849 : compiler::TNode<Context> tmp12;
850 : compiler::TNode<Object> tmp13;
851 : compiler::TNode<RawPtrT> tmp14;
852 : compiler::TNode<RawPtrT> tmp15;
853 : compiler::TNode<IntPtrT> tmp16;
854 : compiler::TNode<Object> tmp17;
855 : compiler::TNode<Object> tmp18;
856 : compiler::TNode<Object> tmp19;
857 : compiler::TNode<String> tmp20;
858 : ca_.Bind(&block1, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19, &tmp20);
859 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 35);
860 112 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp12}, MessageTemplate::kFirstArgumentNotRegExp, "String.prototype.startsWith");
861 : }
862 :
863 56 : if (block2.is_used()) {
864 : compiler::TNode<Context> tmp21;
865 : compiler::TNode<Object> tmp22;
866 : compiler::TNode<RawPtrT> tmp23;
867 : compiler::TNode<RawPtrT> tmp24;
868 : compiler::TNode<IntPtrT> tmp25;
869 : compiler::TNode<Object> tmp26;
870 : compiler::TNode<Object> tmp27;
871 : compiler::TNode<Object> tmp28;
872 : compiler::TNode<String> tmp29;
873 : ca_.Bind(&block2, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29);
874 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 39);
875 : compiler::TNode<String> tmp30;
876 : USE(tmp30);
877 224 : tmp30 = ca_.UncheckedCast<String>(CodeStubAssembler(state_).ToString_Inline(compiler::TNode<Context>{tmp21}, compiler::TNode<Object>{tmp26}));
878 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 42);
879 : compiler::TNode<Number> tmp31;
880 : USE(tmp31);
881 224 : tmp31 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).ToInteger_Inline(compiler::TNode<Context>{tmp21}, compiler::TNode<Object>{tmp27}));
882 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 46);
883 : compiler::TNode<Smi> tmp32;
884 : USE(tmp32);
885 168 : tmp32 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).LoadStringLengthAsSmi(compiler::TNode<String>{tmp29}));
886 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 49);
887 : compiler::TNode<Number> tmp33;
888 : USE(tmp33);
889 112 : tmp33 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(0));
890 : compiler::TNode<Number> tmp34;
891 : USE(tmp34);
892 112 : tmp34 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberMax(compiler::TNode<Number>{tmp31}, compiler::TNode<Number>{tmp33}));
893 : compiler::TNode<Number> tmp35;
894 : USE(tmp35);
895 112 : tmp35 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberMin(compiler::TNode<Number>{tmp34}, compiler::TNode<Number>{tmp32}));
896 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 52);
897 : compiler::TNode<Smi> tmp36;
898 : USE(tmp36);
899 112 : tmp36 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).LoadStringLengthAsSmi(compiler::TNode<String>{tmp30}));
900 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 55);
901 : compiler::TNode<Number> tmp37;
902 : USE(tmp37);
903 112 : tmp37 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp36}, compiler::TNode<Number>{tmp35}));
904 56 : compiler::CodeAssemblerLabel label0(&ca_);
905 56 : compiler::CodeAssemblerLabel label1(&ca_);
906 112 : CodeStubAssembler(state_).BranchIfNumberGreaterThan(compiler::TNode<Number>{tmp37}, compiler::TNode<Number>{tmp32}, &label0, &label1);
907 56 : if (label0.is_used()) {
908 56 : ca_.Bind(&label0);
909 : ca_.Goto(&block5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp35, tmp36, tmp37, tmp32);
910 : }
911 56 : if (label1.is_used()) {
912 56 : ca_.Bind(&label1);
913 : ca_.Goto(&block6, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp35, tmp36, tmp37, tmp32);
914 : }
915 : }
916 :
917 56 : if (block5.is_used()) {
918 : compiler::TNode<Context> tmp38;
919 : compiler::TNode<Object> tmp39;
920 : compiler::TNode<RawPtrT> tmp40;
921 : compiler::TNode<RawPtrT> tmp41;
922 : compiler::TNode<IntPtrT> tmp42;
923 : compiler::TNode<Object> tmp43;
924 : compiler::TNode<Object> tmp44;
925 : compiler::TNode<Object> tmp45;
926 : compiler::TNode<String> tmp46;
927 : compiler::TNode<String> tmp47;
928 : compiler::TNode<Number> tmp48;
929 : compiler::TNode<Number> tmp49;
930 : compiler::TNode<Number> tmp50;
931 : compiler::TNode<Smi> tmp51;
932 : compiler::TNode<Number> tmp52;
933 : compiler::TNode<Number> tmp53;
934 : ca_.Bind(&block5, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53);
935 : ca_.Goto(&block3, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51);
936 : }
937 :
938 56 : if (block6.is_used()) {
939 : compiler::TNode<Context> tmp54;
940 : compiler::TNode<Object> tmp55;
941 : compiler::TNode<RawPtrT> tmp56;
942 : compiler::TNode<RawPtrT> tmp57;
943 : compiler::TNode<IntPtrT> tmp58;
944 : compiler::TNode<Object> tmp59;
945 : compiler::TNode<Object> tmp60;
946 : compiler::TNode<Object> tmp61;
947 : compiler::TNode<String> tmp62;
948 : compiler::TNode<String> tmp63;
949 : compiler::TNode<Number> tmp64;
950 : compiler::TNode<Number> tmp65;
951 : compiler::TNode<Number> tmp66;
952 : compiler::TNode<Smi> tmp67;
953 : compiler::TNode<Number> tmp68;
954 : compiler::TNode<Number> tmp69;
955 : ca_.Bind(&block6, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58, &tmp59, &tmp60, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68, &tmp69);
956 : ca_.Goto(&block4, tmp54, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67);
957 : }
958 :
959 56 : if (block3.is_used()) {
960 : compiler::TNode<Context> tmp70;
961 : compiler::TNode<Object> tmp71;
962 : compiler::TNode<RawPtrT> tmp72;
963 : compiler::TNode<RawPtrT> tmp73;
964 : compiler::TNode<IntPtrT> tmp74;
965 : compiler::TNode<Object> tmp75;
966 : compiler::TNode<Object> tmp76;
967 : compiler::TNode<Object> tmp77;
968 : compiler::TNode<String> tmp78;
969 : compiler::TNode<String> tmp79;
970 : compiler::TNode<Number> tmp80;
971 : compiler::TNode<Number> tmp81;
972 : compiler::TNode<Number> tmp82;
973 : compiler::TNode<Smi> tmp83;
974 : ca_.Bind(&block3, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81, &tmp82, &tmp83);
975 : compiler::TNode<Oddball> tmp84;
976 : USE(tmp84);
977 112 : tmp84 = BaseBuiltinsFromDSLAssembler(state_).False();
978 56 : arguments.PopAndReturn(tmp84);
979 : }
980 :
981 56 : if (block4.is_used()) {
982 : compiler::TNode<Context> tmp85;
983 : compiler::TNode<Object> tmp86;
984 : compiler::TNode<RawPtrT> tmp87;
985 : compiler::TNode<RawPtrT> tmp88;
986 : compiler::TNode<IntPtrT> tmp89;
987 : compiler::TNode<Object> tmp90;
988 : compiler::TNode<Object> tmp91;
989 : compiler::TNode<Object> tmp92;
990 : compiler::TNode<String> tmp93;
991 : compiler::TNode<String> tmp94;
992 : compiler::TNode<Number> tmp95;
993 : compiler::TNode<Number> tmp96;
994 : compiler::TNode<Number> tmp97;
995 : compiler::TNode<Smi> tmp98;
996 : ca_.Bind(&block4, &tmp85, &tmp86, &tmp87, &tmp88, &tmp89, &tmp90, &tmp91, &tmp92, &tmp93, &tmp94, &tmp95, &tmp96, &tmp97, &tmp98);
997 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 64);
998 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 63);
999 : compiler::TNode<Oddball> tmp99;
1000 : USE(tmp99);
1001 56 : compiler::CodeAssemblerLabel label0(&ca_);
1002 112 : tmp99 = StringBuiltinsFromDSLAssembler(state_).TryFastStringCompareSequence(compiler::TNode<String>{tmp93}, compiler::TNode<String>{tmp94}, compiler::TNode<Number>{tmp97}, compiler::TNode<Smi>{tmp98}, &label0);
1003 : ca_.Goto(&block9, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp93, tmp94, tmp97, tmp98, tmp99);
1004 56 : if (label0.is_used()) {
1005 56 : ca_.Bind(&label0);
1006 : ca_.Goto(&block10, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp93, tmp94, tmp97, tmp98);
1007 : }
1008 : }
1009 :
1010 56 : if (block10.is_used()) {
1011 : compiler::TNode<Context> tmp100;
1012 : compiler::TNode<Object> tmp101;
1013 : compiler::TNode<RawPtrT> tmp102;
1014 : compiler::TNode<RawPtrT> tmp103;
1015 : compiler::TNode<IntPtrT> tmp104;
1016 : compiler::TNode<Object> tmp105;
1017 : compiler::TNode<Object> tmp106;
1018 : compiler::TNode<Object> tmp107;
1019 : compiler::TNode<String> tmp108;
1020 : compiler::TNode<String> tmp109;
1021 : compiler::TNode<Number> tmp110;
1022 : compiler::TNode<Number> tmp111;
1023 : compiler::TNode<Number> tmp112;
1024 : compiler::TNode<Smi> tmp113;
1025 : compiler::TNode<String> tmp114;
1026 : compiler::TNode<String> tmp115;
1027 : compiler::TNode<Number> tmp116;
1028 : compiler::TNode<Smi> tmp117;
1029 : ca_.Bind(&block10, &tmp100, &tmp101, &tmp102, &tmp103, &tmp104, &tmp105, &tmp106, &tmp107, &tmp108, &tmp109, &tmp110, &tmp111, &tmp112, &tmp113, &tmp114, &tmp115, &tmp116, &tmp117);
1030 : ca_.Goto(&block8, tmp100, tmp101, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113);
1031 : }
1032 :
1033 56 : if (block9.is_used()) {
1034 : compiler::TNode<Context> tmp118;
1035 : compiler::TNode<Object> tmp119;
1036 : compiler::TNode<RawPtrT> tmp120;
1037 : compiler::TNode<RawPtrT> tmp121;
1038 : compiler::TNode<IntPtrT> tmp122;
1039 : compiler::TNode<Object> tmp123;
1040 : compiler::TNode<Object> tmp124;
1041 : compiler::TNode<Object> tmp125;
1042 : compiler::TNode<String> tmp126;
1043 : compiler::TNode<String> tmp127;
1044 : compiler::TNode<Number> tmp128;
1045 : compiler::TNode<Number> tmp129;
1046 : compiler::TNode<Number> tmp130;
1047 : compiler::TNode<Smi> tmp131;
1048 : compiler::TNode<String> tmp132;
1049 : compiler::TNode<String> tmp133;
1050 : compiler::TNode<Number> tmp134;
1051 : compiler::TNode<Smi> tmp135;
1052 : compiler::TNode<Oddball> tmp136;
1053 : ca_.Bind(&block9, &tmp118, &tmp119, &tmp120, &tmp121, &tmp122, &tmp123, &tmp124, &tmp125, &tmp126, &tmp127, &tmp128, &tmp129, &tmp130, &tmp131, &tmp132, &tmp133, &tmp134, &tmp135, &tmp136);
1054 56 : arguments.PopAndReturn(tmp136);
1055 : }
1056 :
1057 56 : if (block8.is_used()) {
1058 : compiler::TNode<Context> tmp137;
1059 : compiler::TNode<Object> tmp138;
1060 : compiler::TNode<RawPtrT> tmp139;
1061 : compiler::TNode<RawPtrT> tmp140;
1062 : compiler::TNode<IntPtrT> tmp141;
1063 : compiler::TNode<Object> tmp142;
1064 : compiler::TNode<Object> tmp143;
1065 : compiler::TNode<Object> tmp144;
1066 : compiler::TNode<String> tmp145;
1067 : compiler::TNode<String> tmp146;
1068 : compiler::TNode<Number> tmp147;
1069 : compiler::TNode<Number> tmp148;
1070 : compiler::TNode<Number> tmp149;
1071 : compiler::TNode<Smi> tmp150;
1072 : ca_.Bind(&block8, &tmp137, &tmp138, &tmp139, &tmp140, &tmp141, &tmp142, &tmp143, &tmp144, &tmp145, &tmp146, &tmp147, &tmp148, &tmp149, &tmp150);
1073 56 : ca_.SetSourcePosition("../../src/builtins/string-startswith.tq", 68);
1074 : compiler::TNode<Oddball> tmp151;
1075 112 : tmp151 = TORQUE_CAST(CodeStubAssembler(state_).CallRuntime(Runtime::kStringCompareSequence, tmp137, tmp145, tmp146, tmp149));
1076 : USE(tmp151);
1077 56 : arguments.PopAndReturn(tmp151);
1078 : }
1079 56 : }
1080 :
1081 : } // namespace internal
1082 59480 : } // namespace v8
1083 :
|