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 : compiler::TNode<Object> ArrayLastindexofBuiltinsFromDSLAssembler::LoadWithHoleCheck10FixedArray(compiler::TNode<Context> p_context, compiler::TNode<FixedArrayBase> p_elements, compiler::TNode<Smi> p_index, compiler::CodeAssemblerLabel* label_IfHole) {
82 56 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
83 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, FixedArray, Object> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
84 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, FixedArray, Object> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
85 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
86 : compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
87 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, Object> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
88 : ca_.Goto(&block0, p_context, p_elements, p_index);
89 :
90 56 : if (block0.is_used()) {
91 : compiler::TNode<Context> tmp0;
92 : compiler::TNode<FixedArrayBase> tmp1;
93 : compiler::TNode<Smi> tmp2;
94 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
95 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 13);
96 : compiler::TNode<FixedArray> tmp3;
97 : USE(tmp3);
98 168 : tmp3 = ca_.UncheckedCast<FixedArray>(BaseBuiltinsFromDSLAssembler(state_).UnsafeCast10FixedArray(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
99 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 14);
100 : compiler::TNode<Object> tmp4;
101 : USE(tmp4);
102 112 : tmp4 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).LoadFixedArrayElement(compiler::TNode<FixedArray>{tmp3}, compiler::TNode<Smi>{tmp2}));
103 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 15);
104 : compiler::TNode<Oddball> tmp5;
105 : USE(tmp5);
106 168 : tmp5 = BaseBuiltinsFromDSLAssembler(state_).Hole();
107 : compiler::TNode<BoolT> tmp6;
108 : USE(tmp6);
109 112 : tmp6 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<Object>{tmp4}, compiler::TNode<HeapObject>{tmp5}));
110 56 : ca_.Branch(tmp6, &block3, &block4, tmp0, tmp1, tmp2, tmp3, tmp4);
111 : }
112 :
113 56 : if (block3.is_used()) {
114 : compiler::TNode<Context> tmp7;
115 : compiler::TNode<FixedArrayBase> tmp8;
116 : compiler::TNode<Smi> tmp9;
117 : compiler::TNode<FixedArray> tmp10;
118 : compiler::TNode<Object> tmp11;
119 : ca_.Bind(&block3, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11);
120 : ca_.Goto(&block1);
121 : }
122 :
123 56 : if (block4.is_used()) {
124 : compiler::TNode<Context> tmp12;
125 : compiler::TNode<FixedArrayBase> tmp13;
126 : compiler::TNode<Smi> tmp14;
127 : compiler::TNode<FixedArray> tmp15;
128 : compiler::TNode<Object> tmp16;
129 : ca_.Bind(&block4, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16);
130 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 16);
131 : ca_.Goto(&block2, tmp12, tmp13, tmp14, tmp16);
132 : }
133 :
134 56 : if (block2.is_used()) {
135 : compiler::TNode<Context> tmp17;
136 : compiler::TNode<FixedArrayBase> tmp18;
137 : compiler::TNode<Smi> tmp19;
138 : compiler::TNode<Object> tmp20;
139 : ca_.Bind(&block2, &tmp17, &tmp18, &tmp19, &tmp20);
140 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 6);
141 : ca_.Goto(&block5, tmp17, tmp18, tmp19, tmp20);
142 : }
143 :
144 56 : if (block1.is_used()) {
145 : ca_.Bind(&block1);
146 56 : ca_.Goto(label_IfHole);
147 : }
148 :
149 : compiler::TNode<Context> tmp21;
150 : compiler::TNode<FixedArrayBase> tmp22;
151 : compiler::TNode<Smi> tmp23;
152 : compiler::TNode<Object> tmp24;
153 : ca_.Bind(&block5, &tmp21, &tmp22, &tmp23, &tmp24);
154 112 : return compiler::TNode<Object>{tmp24};
155 : }
156 :
157 56 : compiler::TNode<Object> ArrayLastindexofBuiltinsFromDSLAssembler::LoadWithHoleCheck16FixedDoubleArray(compiler::TNode<Context> p_context, compiler::TNode<FixedArrayBase> p_elements, compiler::TNode<Smi> p_index, compiler::CodeAssemblerLabel* label_IfHole) {
158 56 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
159 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, FixedDoubleArray, FixedDoubleArray, Smi> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
160 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, FixedDoubleArray, FixedDoubleArray, Smi, Float64T> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
161 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
162 : compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
163 : compiler::CodeAssemblerParameterizedLabel<Context, FixedArrayBase, Smi, Object> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
164 : ca_.Goto(&block0, p_context, p_elements, p_index);
165 :
166 56 : if (block0.is_used()) {
167 : compiler::TNode<Context> tmp0;
168 : compiler::TNode<FixedArrayBase> tmp1;
169 : compiler::TNode<Smi> tmp2;
170 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
171 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 22);
172 : compiler::TNode<FixedDoubleArray> tmp3;
173 : USE(tmp3);
174 168 : tmp3 = ca_.UncheckedCast<FixedDoubleArray>(BaseBuiltinsFromDSLAssembler(state_).UnsafeCast16FixedDoubleArray(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
175 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 23);
176 : compiler::TNode<Float64T> tmp4;
177 : USE(tmp4);
178 56 : compiler::CodeAssemblerLabel label0(&ca_);
179 112 : tmp4 = CodeStubAssembler(state_).LoadDoubleWithHoleCheck(compiler::TNode<FixedDoubleArray>{tmp3}, compiler::TNode<Smi>{tmp2}, &label0);
180 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp3, tmp2, tmp4);
181 56 : if (label0.is_used()) {
182 56 : ca_.Bind(&label0);
183 : ca_.Goto(&block4, tmp0, tmp1, tmp2, tmp3, tmp3, tmp2);
184 : }
185 : }
186 :
187 56 : if (block4.is_used()) {
188 : compiler::TNode<Context> tmp5;
189 : compiler::TNode<FixedArrayBase> tmp6;
190 : compiler::TNode<Smi> tmp7;
191 : compiler::TNode<FixedDoubleArray> tmp8;
192 : compiler::TNode<FixedDoubleArray> tmp9;
193 : compiler::TNode<Smi> tmp10;
194 : ca_.Bind(&block4, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9, &tmp10);
195 : ca_.Goto(&block1);
196 : }
197 :
198 56 : if (block3.is_used()) {
199 : compiler::TNode<Context> tmp11;
200 : compiler::TNode<FixedArrayBase> tmp12;
201 : compiler::TNode<Smi> tmp13;
202 : compiler::TNode<FixedDoubleArray> tmp14;
203 : compiler::TNode<FixedDoubleArray> tmp15;
204 : compiler::TNode<Smi> tmp16;
205 : compiler::TNode<Float64T> tmp17;
206 : ca_.Bind(&block3, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17);
207 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 25);
208 : compiler::TNode<HeapNumber> tmp18;
209 : USE(tmp18);
210 168 : tmp18 = ca_.UncheckedCast<HeapNumber>(CodeStubAssembler(state_).AllocateHeapNumberWithValue(compiler::TNode<Float64T>{tmp17}));
211 : ca_.Goto(&block2, tmp11, tmp12, tmp13, tmp18);
212 : }
213 :
214 56 : if (block2.is_used()) {
215 : compiler::TNode<Context> tmp19;
216 : compiler::TNode<FixedArrayBase> tmp20;
217 : compiler::TNode<Smi> tmp21;
218 : compiler::TNode<Object> tmp22;
219 : ca_.Bind(&block2, &tmp19, &tmp20, &tmp21, &tmp22);
220 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 6);
221 : ca_.Goto(&block5, tmp19, tmp20, tmp21, tmp22);
222 : }
223 :
224 56 : if (block1.is_used()) {
225 : ca_.Bind(&block1);
226 56 : ca_.Goto(label_IfHole);
227 : }
228 :
229 : compiler::TNode<Context> tmp23;
230 : compiler::TNode<FixedArrayBase> tmp24;
231 : compiler::TNode<Smi> tmp25;
232 : compiler::TNode<Object> tmp26;
233 : ca_.Bind(&block5, &tmp23, &tmp24, &tmp25, &tmp26);
234 112 : return compiler::TNode<Object>{tmp26};
235 : }
236 :
237 56 : compiler::TNode<Number> ArrayLastindexofBuiltinsFromDSLAssembler::GetFromIndex(compiler::TNode<Context> p_context, compiler::TNode<Number> p_length, BaseBuiltinsFromDSLAssembler::Arguments p_arguments) {
238 56 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
239 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
240 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
241 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
242 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
243 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number, Number, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
244 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number, Number, Number> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
245 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
246 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number, Number> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
247 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number, Number> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
248 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
249 : compiler::CodeAssemblerParameterizedLabel<Context, Number, RawPtrT, RawPtrT, IntPtrT, Number> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
250 : ca_.Goto(&block0, p_context, p_length, p_arguments.frame, p_arguments.base, p_arguments.length);
251 :
252 56 : if (block0.is_used()) {
253 : compiler::TNode<Context> tmp0;
254 : compiler::TNode<Number> tmp1;
255 : compiler::TNode<RawPtrT> tmp2;
256 : compiler::TNode<RawPtrT> tmp3;
257 : compiler::TNode<IntPtrT> tmp4;
258 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
259 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 65);
260 : compiler::TNode<IntPtrT> tmp5;
261 : USE(tmp5);
262 168 : tmp5 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(2));
263 : compiler::TNode<BoolT> tmp6;
264 : USE(tmp6);
265 168 : tmp6 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).IntPtrLessThan(compiler::TNode<IntPtrT>{tmp4}, compiler::TNode<IntPtrT>{tmp5}));
266 56 : ca_.Branch(tmp6, &block2, &block3, tmp0, tmp1, tmp2, tmp3, tmp4);
267 : }
268 :
269 56 : if (block2.is_used()) {
270 : compiler::TNode<Context> tmp7;
271 : compiler::TNode<Number> tmp8;
272 : compiler::TNode<RawPtrT> tmp9;
273 : compiler::TNode<RawPtrT> tmp10;
274 : compiler::TNode<IntPtrT> tmp11;
275 : ca_.Bind(&block2, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11);
276 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 66);
277 : compiler::TNode<Number> tmp12;
278 : USE(tmp12);
279 168 : tmp12 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(1));
280 : compiler::TNode<Number> tmp13;
281 : USE(tmp13);
282 168 : tmp13 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp8}, compiler::TNode<Number>{tmp12}));
283 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 65);
284 : ca_.Goto(&block5, tmp7, tmp8, tmp9, tmp10, tmp11, tmp13);
285 : }
286 :
287 56 : if (block3.is_used()) {
288 : compiler::TNode<Context> tmp14;
289 : compiler::TNode<Number> tmp15;
290 : compiler::TNode<RawPtrT> tmp16;
291 : compiler::TNode<RawPtrT> tmp17;
292 : compiler::TNode<IntPtrT> tmp18;
293 : ca_.Bind(&block3, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18);
294 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 67);
295 : compiler::TNode<IntPtrT> tmp19;
296 : USE(tmp19);
297 168 : tmp19 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(1));
298 : compiler::TNode<Object> tmp20;
299 : USE(tmp20);
300 112 : tmp20 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp16}, compiler::TNode<RawPtrT>{tmp17}, compiler::TNode<IntPtrT>{tmp18}}, compiler::TNode<IntPtrT>{tmp19}));
301 : compiler::TNode<Number> tmp21;
302 : USE(tmp21);
303 168 : tmp21 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).ToInteger_Inline(compiler::TNode<Context>{tmp14}, compiler::TNode<Object>{tmp20}, CodeStubAssembler::ToIntegerTruncationMode::kTruncateMinusZero));
304 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 65);
305 : ca_.Goto(&block4, tmp14, tmp15, tmp16, tmp17, tmp18, tmp21);
306 : }
307 :
308 56 : if (block5.is_used()) {
309 : compiler::TNode<Context> tmp22;
310 : compiler::TNode<Number> tmp23;
311 : compiler::TNode<RawPtrT> tmp24;
312 : compiler::TNode<RawPtrT> tmp25;
313 : compiler::TNode<IntPtrT> tmp26;
314 : compiler::TNode<Number> tmp27;
315 : ca_.Bind(&block5, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27);
316 : ca_.Goto(&block4, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27);
317 : }
318 :
319 56 : if (block4.is_used()) {
320 : compiler::TNode<Context> tmp28;
321 : compiler::TNode<Number> tmp29;
322 : compiler::TNode<RawPtrT> tmp30;
323 : compiler::TNode<RawPtrT> tmp31;
324 : compiler::TNode<IntPtrT> tmp32;
325 : compiler::TNode<Number> tmp33;
326 : ca_.Bind(&block4, &tmp28, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33);
327 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 70);
328 : compiler::TNode<Smi> tmp34;
329 : USE(tmp34);
330 112 : tmp34 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiConstant(0));
331 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 71);
332 : compiler::TNode<Number> tmp35;
333 : USE(tmp35);
334 168 : tmp35 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(0));
335 56 : compiler::CodeAssemblerLabel label0(&ca_);
336 56 : compiler::CodeAssemblerLabel label1(&ca_);
337 112 : CodeStubAssembler(state_).BranchIfNumberGreaterThanOrEqual(compiler::TNode<Number>{tmp33}, compiler::TNode<Number>{tmp35}, &label0, &label1);
338 56 : if (label0.is_used()) {
339 56 : ca_.Bind(&label0);
340 : ca_.Goto(&block8, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tmp33);
341 : }
342 56 : if (label1.is_used()) {
343 56 : ca_.Bind(&label1);
344 : ca_.Goto(&block9, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tmp33);
345 : }
346 : }
347 :
348 56 : if (block8.is_used()) {
349 : compiler::TNode<Context> tmp36;
350 : compiler::TNode<Number> tmp37;
351 : compiler::TNode<RawPtrT> tmp38;
352 : compiler::TNode<RawPtrT> tmp39;
353 : compiler::TNode<IntPtrT> tmp40;
354 : compiler::TNode<Number> tmp41;
355 : compiler::TNode<Number> tmp42;
356 : compiler::TNode<Number> tmp43;
357 : ca_.Bind(&block8, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43);
358 : ca_.Goto(&block6, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42);
359 : }
360 :
361 56 : if (block9.is_used()) {
362 : compiler::TNode<Context> tmp44;
363 : compiler::TNode<Number> tmp45;
364 : compiler::TNode<RawPtrT> tmp46;
365 : compiler::TNode<RawPtrT> tmp47;
366 : compiler::TNode<IntPtrT> tmp48;
367 : compiler::TNode<Number> tmp49;
368 : compiler::TNode<Number> tmp50;
369 : compiler::TNode<Number> tmp51;
370 : ca_.Bind(&block9, &tmp44, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50, &tmp51);
371 : ca_.Goto(&block7, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50);
372 : }
373 :
374 56 : if (block6.is_used()) {
375 : compiler::TNode<Context> tmp52;
376 : compiler::TNode<Number> tmp53;
377 : compiler::TNode<RawPtrT> tmp54;
378 : compiler::TNode<RawPtrT> tmp55;
379 : compiler::TNode<IntPtrT> tmp56;
380 : compiler::TNode<Number> tmp57;
381 : compiler::TNode<Number> tmp58;
382 : ca_.Bind(&block6, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58);
383 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 74);
384 : compiler::TNode<Number> tmp59;
385 : USE(tmp59);
386 168 : tmp59 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(1));
387 : compiler::TNode<Number> tmp60;
388 : USE(tmp60);
389 168 : tmp60 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp53}, compiler::TNode<Number>{tmp59}));
390 : compiler::TNode<Number> tmp61;
391 : USE(tmp61);
392 168 : tmp61 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).Min(compiler::TNode<Number>{tmp57}, compiler::TNode<Number>{tmp60}));
393 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 71);
394 : ca_.Goto(&block10, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp61);
395 : }
396 :
397 56 : if (block7.is_used()) {
398 : compiler::TNode<Context> tmp62;
399 : compiler::TNode<Number> tmp63;
400 : compiler::TNode<RawPtrT> tmp64;
401 : compiler::TNode<RawPtrT> tmp65;
402 : compiler::TNode<IntPtrT> tmp66;
403 : compiler::TNode<Number> tmp67;
404 : compiler::TNode<Number> tmp68;
405 : ca_.Bind(&block7, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68);
406 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 77);
407 : compiler::TNode<Number> tmp69;
408 : USE(tmp69);
409 224 : tmp69 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp63}, compiler::TNode<Number>{tmp67}));
410 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 71);
411 : ca_.Goto(&block10, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67, tmp69);
412 : }
413 :
414 56 : if (block10.is_used()) {
415 : compiler::TNode<Context> tmp70;
416 : compiler::TNode<Number> tmp71;
417 : compiler::TNode<RawPtrT> tmp72;
418 : compiler::TNode<RawPtrT> tmp73;
419 : compiler::TNode<IntPtrT> tmp74;
420 : compiler::TNode<Number> tmp75;
421 : compiler::TNode<Number> tmp76;
422 : ca_.Bind(&block10, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74, &tmp75, &tmp76);
423 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 79);
424 : ca_.Goto(&block1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp76);
425 : }
426 :
427 56 : if (block1.is_used()) {
428 : compiler::TNode<Context> tmp77;
429 : compiler::TNode<Number> tmp78;
430 : compiler::TNode<RawPtrT> tmp79;
431 : compiler::TNode<RawPtrT> tmp80;
432 : compiler::TNode<IntPtrT> tmp81;
433 : compiler::TNode<Number> tmp82;
434 : ca_.Bind(&block1, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81, &tmp82);
435 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 61);
436 : ca_.Goto(&block11, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82);
437 : }
438 :
439 : compiler::TNode<Context> tmp83;
440 : compiler::TNode<Number> tmp84;
441 : compiler::TNode<RawPtrT> tmp85;
442 : compiler::TNode<RawPtrT> tmp86;
443 : compiler::TNode<IntPtrT> tmp87;
444 : compiler::TNode<Number> tmp88;
445 : ca_.Bind(&block11, &tmp83, &tmp84, &tmp85, &tmp86, &tmp87, &tmp88);
446 112 : return compiler::TNode<Number>{tmp88};
447 : }
448 :
449 56 : compiler::TNode<Object> ArrayLastindexofBuiltinsFromDSLAssembler::TryFastArrayLastIndexOf(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_receiver, compiler::TNode<Object> p_searchElement, compiler::TNode<Number> p_from, compiler::CodeAssemblerLabel* label_Slow) {
450 56 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
451 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSReceiver> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
452 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSReceiver, JSArray> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
453 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSArray, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
454 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSArray, Smi> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
455 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSArray, Smi, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
456 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSArray, Smi, Number, Smi> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
457 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSArray, Smi, Smi, Int32T> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
458 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, JSArray, Smi, Smi, Int32T> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
459 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
460 : compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
461 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Object> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
462 : ca_.Goto(&block0, p_context, p_receiver, p_searchElement, p_from);
463 :
464 56 : if (block0.is_used()) {
465 : compiler::TNode<Context> tmp0;
466 : compiler::TNode<JSReceiver> tmp1;
467 : compiler::TNode<Object> tmp2;
468 : compiler::TNode<Number> tmp3;
469 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3);
470 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 86);
471 : compiler::TNode<JSArray> tmp4;
472 : USE(tmp4);
473 56 : compiler::CodeAssemblerLabel label0(&ca_);
474 168 : tmp4 = BaseBuiltinsFromDSLAssembler(state_).Cast13ATFastJSArray(compiler::TNode<Context>{tmp0}, compiler::TNode<HeapObject>{tmp1}, &label0);
475 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp1, tmp4);
476 56 : if (label0.is_used()) {
477 56 : ca_.Bind(&label0);
478 : ca_.Goto(&block4, tmp0, tmp1, tmp2, tmp3, tmp1);
479 : }
480 : }
481 :
482 56 : if (block4.is_used()) {
483 : compiler::TNode<Context> tmp5;
484 : compiler::TNode<JSReceiver> tmp6;
485 : compiler::TNode<Object> tmp7;
486 : compiler::TNode<Number> tmp8;
487 : compiler::TNode<JSReceiver> tmp9;
488 : ca_.Bind(&block4, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9);
489 : ca_.Goto(&block1);
490 : }
491 :
492 56 : if (block3.is_used()) {
493 : compiler::TNode<Context> tmp10;
494 : compiler::TNode<JSReceiver> tmp11;
495 : compiler::TNode<Object> tmp12;
496 : compiler::TNode<Number> tmp13;
497 : compiler::TNode<JSReceiver> tmp14;
498 : compiler::TNode<JSArray> tmp15;
499 : ca_.Bind(&block3, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15);
500 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 87);
501 : compiler::TNode<Smi> tmp16;
502 : USE(tmp16);
503 168 : tmp16 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).LoadFastJSArrayLength(compiler::TNode<JSArray>{tmp15}));
504 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 88);
505 : compiler::TNode<Smi> tmp17;
506 : USE(tmp17);
507 168 : tmp17 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
508 : compiler::TNode<BoolT> tmp18;
509 : USE(tmp18);
510 112 : tmp18 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiEqual(compiler::TNode<Smi>{tmp16}, compiler::TNode<Smi>{tmp17}));
511 56 : ca_.Branch(tmp18, &block5, &block6, tmp10, tmp11, tmp12, tmp13, tmp15, tmp16);
512 : }
513 :
514 56 : if (block5.is_used()) {
515 : compiler::TNode<Context> tmp19;
516 : compiler::TNode<JSReceiver> tmp20;
517 : compiler::TNode<Object> tmp21;
518 : compiler::TNode<Number> tmp22;
519 : compiler::TNode<JSArray> tmp23;
520 : compiler::TNode<Smi> tmp24;
521 : ca_.Bind(&block5, &tmp19, &tmp20, &tmp21, &tmp22, &tmp23, &tmp24);
522 : compiler::TNode<Smi> tmp25;
523 : USE(tmp25);
524 112 : tmp25 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiConstant(-1));
525 : ca_.Goto(&block2, tmp19, tmp20, tmp21, tmp22, tmp25);
526 : }
527 :
528 56 : if (block6.is_used()) {
529 : compiler::TNode<Context> tmp26;
530 : compiler::TNode<JSReceiver> tmp27;
531 : compiler::TNode<Object> tmp28;
532 : compiler::TNode<Number> tmp29;
533 : compiler::TNode<JSArray> tmp30;
534 : compiler::TNode<Smi> tmp31;
535 : ca_.Bind(&block6, &tmp26, &tmp27, &tmp28, &tmp29, &tmp30, &tmp31);
536 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 90);
537 : compiler::TNode<Smi> tmp32;
538 : USE(tmp32);
539 56 : compiler::CodeAssemblerLabel label0(&ca_);
540 168 : tmp32 = BaseBuiltinsFromDSLAssembler(state_).Cast5ATSmi(compiler::TNode<Object>{tmp29}, &label0);
541 : ca_.Goto(&block7, tmp26, tmp27, tmp28, tmp29, tmp30, tmp31, tmp29, tmp32);
542 56 : if (label0.is_used()) {
543 56 : ca_.Bind(&label0);
544 : ca_.Goto(&block8, tmp26, tmp27, tmp28, tmp29, tmp30, tmp31, tmp29);
545 : }
546 : }
547 :
548 56 : if (block8.is_used()) {
549 : compiler::TNode<Context> tmp33;
550 : compiler::TNode<JSReceiver> tmp34;
551 : compiler::TNode<Object> tmp35;
552 : compiler::TNode<Number> tmp36;
553 : compiler::TNode<JSArray> tmp37;
554 : compiler::TNode<Smi> tmp38;
555 : compiler::TNode<Number> tmp39;
556 : ca_.Bind(&block8, &tmp33, &tmp34, &tmp35, &tmp36, &tmp37, &tmp38, &tmp39);
557 : ca_.Goto(&block1);
558 : }
559 :
560 56 : if (block7.is_used()) {
561 : compiler::TNode<Context> tmp40;
562 : compiler::TNode<JSReceiver> tmp41;
563 : compiler::TNode<Object> tmp42;
564 : compiler::TNode<Number> tmp43;
565 : compiler::TNode<JSArray> tmp44;
566 : compiler::TNode<Smi> tmp45;
567 : compiler::TNode<Number> tmp46;
568 : compiler::TNode<Smi> tmp47;
569 : ca_.Bind(&block7, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47);
570 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 91);
571 56 : compiler::TNode<IntPtrT> tmp48 = ca_.IntPtrConstant(HeapObject::kMapOffset);
572 : USE(tmp48);
573 112 : compiler::TNode<Map>tmp49 = CodeStubAssembler(state_).LoadReference<Map>(CodeStubAssembler::Reference{tmp44, tmp48});
574 : compiler::TNode<Int32T> tmp50;
575 : USE(tmp50);
576 112 : tmp50 = ca_.UncheckedCast<Int32T>(CodeStubAssembler(state_).LoadMapElementsKind(compiler::TNode<Map>{tmp49}));
577 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 92);
578 : compiler::TNode<BoolT> tmp51;
579 : USE(tmp51);
580 112 : tmp51 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).IsFastSmiOrTaggedElementsKind(compiler::TNode<Int32T>{tmp50}));
581 56 : ca_.Branch(tmp51, &block9, &block10, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tmp47, tmp50);
582 : }
583 :
584 56 : if (block9.is_used()) {
585 : compiler::TNode<Context> tmp52;
586 : compiler::TNode<JSReceiver> tmp53;
587 : compiler::TNode<Object> tmp54;
588 : compiler::TNode<Number> tmp55;
589 : compiler::TNode<JSArray> tmp56;
590 : compiler::TNode<Smi> tmp57;
591 : compiler::TNode<Smi> tmp58;
592 : compiler::TNode<Int32T> tmp59;
593 : ca_.Bind(&block9, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58, &tmp59);
594 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 94);
595 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 93);
596 : compiler::TNode<Smi> tmp60;
597 : USE(tmp60);
598 168 : tmp60 = ca_.UncheckedCast<Smi>(ArrayLastindexofBuiltinsFromDSLAssembler(state_).FastArrayLastIndexOf10FixedArray(compiler::TNode<Context>{tmp52}, compiler::TNode<JSArray>{tmp56}, compiler::TNode<Smi>{tmp58}, compiler::TNode<Object>{tmp54}));
599 : ca_.Goto(&block2, tmp52, tmp53, tmp54, tmp55, tmp60);
600 : }
601 :
602 56 : if (block10.is_used()) {
603 : compiler::TNode<Context> tmp61;
604 : compiler::TNode<JSReceiver> tmp62;
605 : compiler::TNode<Object> tmp63;
606 : compiler::TNode<Number> tmp64;
607 : compiler::TNode<JSArray> tmp65;
608 : compiler::TNode<Smi> tmp66;
609 : compiler::TNode<Smi> tmp67;
610 : compiler::TNode<Int32T> tmp68;
611 : ca_.Bind(&block10, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68);
612 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 98);
613 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 97);
614 : compiler::TNode<Smi> tmp69;
615 : USE(tmp69);
616 168 : tmp69 = ca_.UncheckedCast<Smi>(ArrayLastindexofBuiltinsFromDSLAssembler(state_).FastArrayLastIndexOf16FixedDoubleArray(compiler::TNode<Context>{tmp61}, compiler::TNode<JSArray>{tmp65}, compiler::TNode<Smi>{tmp67}, compiler::TNode<Object>{tmp63}));
617 : ca_.Goto(&block2, tmp61, tmp62, tmp63, tmp64, tmp69);
618 : }
619 :
620 56 : if (block2.is_used()) {
621 : compiler::TNode<Context> tmp70;
622 : compiler::TNode<JSReceiver> tmp71;
623 : compiler::TNode<Object> tmp72;
624 : compiler::TNode<Number> tmp73;
625 : compiler::TNode<Object> tmp74;
626 : ca_.Bind(&block2, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74);
627 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 82);
628 : ca_.Goto(&block11, tmp70, tmp71, tmp72, tmp73, tmp74);
629 : }
630 :
631 56 : if (block1.is_used()) {
632 : ca_.Bind(&block1);
633 56 : ca_.Goto(label_Slow);
634 : }
635 :
636 : compiler::TNode<Context> tmp75;
637 : compiler::TNode<JSReceiver> tmp76;
638 : compiler::TNode<Object> tmp77;
639 : compiler::TNode<Number> tmp78;
640 : compiler::TNode<Object> tmp79;
641 : ca_.Bind(&block11, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79);
642 112 : return compiler::TNode<Object>{tmp79};
643 : }
644 :
645 56 : compiler::TNode<Object> ArrayLastindexofBuiltinsFromDSLAssembler::GenericArrayLastIndexOf(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_object, compiler::TNode<Object> p_searchElement, compiler::TNode<Number> p_from) {
646 56 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
647 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
648 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number, Number> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
649 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
650 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
651 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number, Oddball> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
652 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number, Oddball, Object, Oddball> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
653 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number, Oddball, Object, Oddball> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
654 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number, Oddball> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
655 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Number> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
656 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Object> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
657 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, Object, Number, Object> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
658 : ca_.Goto(&block0, p_context, p_object, p_searchElement, p_from);
659 :
660 56 : if (block0.is_used()) {
661 : compiler::TNode<Context> tmp0;
662 : compiler::TNode<JSReceiver> tmp1;
663 : compiler::TNode<Object> tmp2;
664 : compiler::TNode<Number> tmp3;
665 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3);
666 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 104);
667 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 107);
668 : ca_.Goto(&block4, tmp0, tmp1, tmp2, tmp3, tmp3);
669 : }
670 :
671 56 : if (block4.is_used()) {
672 : compiler::TNode<Context> tmp4;
673 : compiler::TNode<JSReceiver> tmp5;
674 : compiler::TNode<Object> tmp6;
675 : compiler::TNode<Number> tmp7;
676 : compiler::TNode<Number> tmp8;
677 : ca_.Bind(&block4, &tmp4, &tmp5, &tmp6, &tmp7, &tmp8);
678 : compiler::TNode<Number> tmp9;
679 : USE(tmp9);
680 168 : tmp9 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(0));
681 56 : compiler::CodeAssemblerLabel label0(&ca_);
682 56 : compiler::CodeAssemblerLabel label1(&ca_);
683 112 : CodeStubAssembler(state_).BranchIfNumberGreaterThanOrEqual(compiler::TNode<Number>{tmp8}, compiler::TNode<Number>{tmp9}, &label0, &label1);
684 56 : if (label0.is_used()) {
685 56 : ca_.Bind(&label0);
686 : ca_.Goto(&block5, tmp4, tmp5, tmp6, tmp7, tmp8, tmp8);
687 : }
688 56 : if (label1.is_used()) {
689 56 : ca_.Bind(&label1);
690 : ca_.Goto(&block6, tmp4, tmp5, tmp6, tmp7, tmp8, tmp8);
691 : }
692 : }
693 :
694 56 : if (block5.is_used()) {
695 : compiler::TNode<Context> tmp10;
696 : compiler::TNode<JSReceiver> tmp11;
697 : compiler::TNode<Object> tmp12;
698 : compiler::TNode<Number> tmp13;
699 : compiler::TNode<Number> tmp14;
700 : compiler::TNode<Number> tmp15;
701 : ca_.Bind(&block5, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15);
702 : ca_.Goto(&block2, tmp10, tmp11, tmp12, tmp13, tmp14);
703 : }
704 :
705 56 : if (block6.is_used()) {
706 : compiler::TNode<Context> tmp16;
707 : compiler::TNode<JSReceiver> tmp17;
708 : compiler::TNode<Object> tmp18;
709 : compiler::TNode<Number> tmp19;
710 : compiler::TNode<Number> tmp20;
711 : compiler::TNode<Number> tmp21;
712 : ca_.Bind(&block6, &tmp16, &tmp17, &tmp18, &tmp19, &tmp20, &tmp21);
713 : ca_.Goto(&block3, tmp16, tmp17, tmp18, tmp19, tmp20);
714 : }
715 :
716 56 : if (block2.is_used()) {
717 : compiler::TNode<Context> tmp22;
718 : compiler::TNode<JSReceiver> tmp23;
719 : compiler::TNode<Object> tmp24;
720 : compiler::TNode<Number> tmp25;
721 : compiler::TNode<Number> tmp26;
722 : ca_.Bind(&block2, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26);
723 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 109);
724 : compiler::TNode<Oddball> tmp27;
725 112 : tmp27 = TORQUE_CAST(CodeStubAssembler(state_).CallBuiltin(Builtins::kHasProperty, tmp22, tmp23, tmp26));
726 : USE(tmp27);
727 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 112);
728 : compiler::TNode<Oddball> tmp28;
729 : USE(tmp28);
730 168 : tmp28 = BaseBuiltinsFromDSLAssembler(state_).True();
731 : compiler::TNode<BoolT> tmp29;
732 : USE(tmp29);
733 112 : tmp29 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<HeapObject>{tmp27}, compiler::TNode<HeapObject>{tmp28}));
734 56 : ca_.Branch(tmp29, &block7, &block8, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27);
735 : }
736 :
737 56 : if (block7.is_used()) {
738 : compiler::TNode<Context> tmp30;
739 : compiler::TNode<JSReceiver> tmp31;
740 : compiler::TNode<Object> tmp32;
741 : compiler::TNode<Number> tmp33;
742 : compiler::TNode<Number> tmp34;
743 : compiler::TNode<Oddball> tmp35;
744 : ca_.Bind(&block7, &tmp30, &tmp31, &tmp32, &tmp33, &tmp34, &tmp35);
745 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 114);
746 : compiler::TNode<Object> tmp36;
747 : USE(tmp36);
748 112 : tmp36 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetProperty(compiler::TNode<Context>{tmp30}, compiler::TNode<Object>{tmp31}, compiler::TNode<Object>{tmp34}));
749 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 118);
750 : compiler::TNode<Oddball> tmp37;
751 : USE(tmp37);
752 112 : tmp37 = ca_.UncheckedCast<Oddball>(CodeStubAssembler(state_).StrictEqual(compiler::TNode<Object>{tmp32}, compiler::TNode<Object>{tmp36}));
753 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 121);
754 : compiler::TNode<Oddball> tmp38;
755 : USE(tmp38);
756 168 : tmp38 = BaseBuiltinsFromDSLAssembler(state_).True();
757 : compiler::TNode<BoolT> tmp39;
758 : USE(tmp39);
759 112 : tmp39 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<HeapObject>{tmp37}, compiler::TNode<HeapObject>{tmp38}));
760 56 : ca_.Branch(tmp39, &block9, &block10, tmp30, tmp31, tmp32, tmp33, tmp34, tmp35, tmp36, tmp37);
761 : }
762 :
763 56 : if (block9.is_used()) {
764 : compiler::TNode<Context> tmp40;
765 : compiler::TNode<JSReceiver> tmp41;
766 : compiler::TNode<Object> tmp42;
767 : compiler::TNode<Number> tmp43;
768 : compiler::TNode<Number> tmp44;
769 : compiler::TNode<Oddball> tmp45;
770 : compiler::TNode<Object> tmp46;
771 : compiler::TNode<Oddball> tmp47;
772 : ca_.Bind(&block9, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47);
773 : ca_.Goto(&block1, tmp40, tmp41, tmp42, tmp43, tmp44);
774 : }
775 :
776 56 : if (block10.is_used()) {
777 : compiler::TNode<Context> tmp48;
778 : compiler::TNode<JSReceiver> tmp49;
779 : compiler::TNode<Object> tmp50;
780 : compiler::TNode<Number> tmp51;
781 : compiler::TNode<Number> tmp52;
782 : compiler::TNode<Oddball> tmp53;
783 : compiler::TNode<Object> tmp54;
784 : compiler::TNode<Oddball> tmp55;
785 : ca_.Bind(&block10, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55);
786 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 112);
787 : ca_.Goto(&block8, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53);
788 : }
789 :
790 56 : if (block8.is_used()) {
791 : compiler::TNode<Context> tmp56;
792 : compiler::TNode<JSReceiver> tmp57;
793 : compiler::TNode<Object> tmp58;
794 : compiler::TNode<Number> tmp59;
795 : compiler::TNode<Number> tmp60;
796 : compiler::TNode<Oddball> tmp61;
797 : ca_.Bind(&block8, &tmp56, &tmp57, &tmp58, &tmp59, &tmp60, &tmp61);
798 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 125);
799 : compiler::TNode<Number> tmp62;
800 : USE(tmp62);
801 168 : tmp62 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(1));
802 : compiler::TNode<Number> tmp63;
803 : USE(tmp63);
804 168 : tmp63 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp60}, compiler::TNode<Number>{tmp62}));
805 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 107);
806 : ca_.Goto(&block4, tmp56, tmp57, tmp58, tmp59, tmp63);
807 : }
808 :
809 56 : if (block3.is_used()) {
810 : compiler::TNode<Context> tmp64;
811 : compiler::TNode<JSReceiver> tmp65;
812 : compiler::TNode<Object> tmp66;
813 : compiler::TNode<Number> tmp67;
814 : compiler::TNode<Number> tmp68;
815 : ca_.Bind(&block3, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68);
816 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 129);
817 : compiler::TNode<Smi> tmp69;
818 : USE(tmp69);
819 112 : tmp69 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiConstant(-1));
820 : ca_.Goto(&block1, tmp64, tmp65, tmp66, tmp67, tmp69);
821 : }
822 :
823 56 : if (block1.is_used()) {
824 : compiler::TNode<Context> tmp70;
825 : compiler::TNode<JSReceiver> tmp71;
826 : compiler::TNode<Object> tmp72;
827 : compiler::TNode<Number> tmp73;
828 : compiler::TNode<Object> tmp74;
829 : ca_.Bind(&block1, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74);
830 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 101);
831 : ca_.Goto(&block11, tmp70, tmp71, tmp72, tmp73, tmp74);
832 : }
833 :
834 : compiler::TNode<Context> tmp75;
835 : compiler::TNode<JSReceiver> tmp76;
836 : compiler::TNode<Object> tmp77;
837 : compiler::TNode<Number> tmp78;
838 : compiler::TNode<Object> tmp79;
839 : ca_.Bind(&block11, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79);
840 112 : return compiler::TNode<Object>{tmp79};
841 : }
842 :
843 224 : TF_BUILTIN(ArrayPrototypeLastIndexOf, CodeStubAssembler) {
844 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
845 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
846 : USE(parameter0);
847 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
848 56 : TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(argc));
849 56 : TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer());
850 56 : BaseBuiltinsFromDSLAssembler::Arguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length));
851 : CodeStubArguments arguments(this, torque_arguments);
852 56 : TNode<Object> parameter1 = arguments.GetReceiver();
853 : USE(parameter1);
854 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
855 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
856 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
857 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Number, Object, Context, JSReceiver, Object, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
858 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Number, Object, Context, JSReceiver, Object, Number, Object> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
859 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Number, Object> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
860 : ca_.Goto(&block0, parameter0, parameter1, torque_arguments.frame, torque_arguments.base, torque_arguments.length);
861 :
862 56 : if (block0.is_used()) {
863 : compiler::TNode<Context> tmp0;
864 : compiler::TNode<Object> tmp1;
865 : compiler::TNode<RawPtrT> tmp2;
866 : compiler::TNode<RawPtrT> tmp3;
867 : compiler::TNode<IntPtrT> tmp4;
868 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
869 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 136);
870 : compiler::TNode<JSReceiver> tmp5;
871 : USE(tmp5);
872 112 : tmp5 = ca_.UncheckedCast<JSReceiver>(CodeStubAssembler(state_).ToObject_Inline(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
873 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 139);
874 : compiler::TNode<Number> tmp6;
875 : USE(tmp6);
876 112 : tmp6 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).GetLengthProperty(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp5}));
877 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 142);
878 : compiler::TNode<Smi> tmp7;
879 : USE(tmp7);
880 112 : tmp7 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiConstant(0));
881 : compiler::TNode<BoolT> tmp8;
882 : USE(tmp8);
883 112 : tmp8 = ca_.UncheckedCast<BoolT>(BaseBuiltinsFromDSLAssembler(state_).IsNumberEqual(compiler::TNode<Number>{tmp6}, compiler::TNode<Number>{tmp7}));
884 56 : ca_.Branch(tmp8, &block1, &block2, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6);
885 : }
886 :
887 56 : if (block1.is_used()) {
888 : compiler::TNode<Context> tmp9;
889 : compiler::TNode<Object> tmp10;
890 : compiler::TNode<RawPtrT> tmp11;
891 : compiler::TNode<RawPtrT> tmp12;
892 : compiler::TNode<IntPtrT> tmp13;
893 : compiler::TNode<JSReceiver> tmp14;
894 : compiler::TNode<Number> tmp15;
895 : ca_.Bind(&block1, &tmp9, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15);
896 : compiler::TNode<Smi> tmp16;
897 : USE(tmp16);
898 112 : tmp16 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiConstant(-1));
899 56 : arguments.PopAndReturn(tmp16);
900 : }
901 :
902 56 : if (block2.is_used()) {
903 : compiler::TNode<Context> tmp17;
904 : compiler::TNode<Object> tmp18;
905 : compiler::TNode<RawPtrT> tmp19;
906 : compiler::TNode<RawPtrT> tmp20;
907 : compiler::TNode<IntPtrT> tmp21;
908 : compiler::TNode<JSReceiver> tmp22;
909 : compiler::TNode<Number> tmp23;
910 : ca_.Bind(&block2, &tmp17, &tmp18, &tmp19, &tmp20, &tmp21, &tmp22, &tmp23);
911 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 145);
912 : compiler::TNode<Number> tmp24;
913 : USE(tmp24);
914 168 : tmp24 = ca_.UncheckedCast<Number>(ArrayLastindexofBuiltinsFromDSLAssembler(state_).GetFromIndex(compiler::TNode<Context>{tmp17}, compiler::TNode<Number>{tmp23}, BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp19}, compiler::TNode<RawPtrT>{tmp20}, compiler::TNode<IntPtrT>{tmp21}}));
915 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 147);
916 : compiler::TNode<IntPtrT> tmp25;
917 : USE(tmp25);
918 112 : tmp25 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr8ATintptr17ATconstexpr_int31(0));
919 : compiler::TNode<Object> tmp26;
920 : USE(tmp26);
921 112 : tmp26 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp19}, compiler::TNode<RawPtrT>{tmp20}, compiler::TNode<IntPtrT>{tmp21}}, compiler::TNode<IntPtrT>{tmp25}));
922 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 150);
923 : compiler::TNode<Object> tmp27;
924 : USE(tmp27);
925 56 : compiler::CodeAssemblerLabel label0(&ca_);
926 112 : tmp27 = ArrayLastindexofBuiltinsFromDSLAssembler(state_).TryFastArrayLastIndexOf(compiler::TNode<Context>{tmp17}, compiler::TNode<JSReceiver>{tmp22}, compiler::TNode<Object>{tmp26}, compiler::TNode<Number>{tmp24}, &label0);
927 : ca_.Goto(&block5, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24, tmp26, tmp17, tmp22, tmp26, tmp24, tmp27);
928 56 : if (label0.is_used()) {
929 56 : ca_.Bind(&label0);
930 : ca_.Goto(&block6, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24, tmp26, tmp17, tmp22, tmp26, tmp24);
931 : }
932 : }
933 :
934 56 : if (block6.is_used()) {
935 : compiler::TNode<Context> tmp28;
936 : compiler::TNode<Object> tmp29;
937 : compiler::TNode<RawPtrT> tmp30;
938 : compiler::TNode<RawPtrT> tmp31;
939 : compiler::TNode<IntPtrT> tmp32;
940 : compiler::TNode<JSReceiver> tmp33;
941 : compiler::TNode<Number> tmp34;
942 : compiler::TNode<Number> tmp35;
943 : compiler::TNode<Object> tmp36;
944 : compiler::TNode<Context> tmp37;
945 : compiler::TNode<JSReceiver> tmp38;
946 : compiler::TNode<Object> tmp39;
947 : compiler::TNode<Number> tmp40;
948 : ca_.Bind(&block6, &tmp28, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33, &tmp34, &tmp35, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40);
949 : ca_.Goto(&block4, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tmp35, tmp36);
950 : }
951 :
952 56 : if (block5.is_used()) {
953 : compiler::TNode<Context> tmp41;
954 : compiler::TNode<Object> tmp42;
955 : compiler::TNode<RawPtrT> tmp43;
956 : compiler::TNode<RawPtrT> tmp44;
957 : compiler::TNode<IntPtrT> tmp45;
958 : compiler::TNode<JSReceiver> tmp46;
959 : compiler::TNode<Number> tmp47;
960 : compiler::TNode<Number> tmp48;
961 : compiler::TNode<Object> tmp49;
962 : compiler::TNode<Context> tmp50;
963 : compiler::TNode<JSReceiver> tmp51;
964 : compiler::TNode<Object> tmp52;
965 : compiler::TNode<Number> tmp53;
966 : compiler::TNode<Object> tmp54;
967 : ca_.Bind(&block5, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54);
968 56 : arguments.PopAndReturn(tmp54);
969 : }
970 :
971 56 : if (block4.is_used()) {
972 : compiler::TNode<Context> tmp55;
973 : compiler::TNode<Object> tmp56;
974 : compiler::TNode<RawPtrT> tmp57;
975 : compiler::TNode<RawPtrT> tmp58;
976 : compiler::TNode<IntPtrT> tmp59;
977 : compiler::TNode<JSReceiver> tmp60;
978 : compiler::TNode<Number> tmp61;
979 : compiler::TNode<Number> tmp62;
980 : compiler::TNode<Object> tmp63;
981 : ca_.Bind(&block4, &tmp55, &tmp56, &tmp57, &tmp58, &tmp59, &tmp60, &tmp61, &tmp62, &tmp63);
982 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 154);
983 : compiler::TNode<Object> tmp64;
984 : USE(tmp64);
985 112 : tmp64 = ca_.UncheckedCast<Object>(ArrayLastindexofBuiltinsFromDSLAssembler(state_).GenericArrayLastIndexOf(compiler::TNode<Context>{tmp55}, compiler::TNode<JSReceiver>{tmp60}, compiler::TNode<Object>{tmp63}, compiler::TNode<Number>{tmp62}));
986 56 : arguments.PopAndReturn(tmp64);
987 : }
988 56 : }
989 :
990 56 : compiler::TNode<Smi> ArrayLastindexofBuiltinsFromDSLAssembler::FastArrayLastIndexOf10FixedArray(compiler::TNode<Context> p_context, compiler::TNode<JSArray> p_array, compiler::TNode<Smi> p_from, compiler::TNode<Object> p_searchElement) {
991 56 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
992 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
993 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
994 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
995 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
996 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, FixedArrayBase, Smi> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
997 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, FixedArrayBase, Smi, Object> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
998 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, Object, Oddball> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
999 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, Object, Oddball> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1000 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1001 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1002 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1003 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, Smi> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1004 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, Smi> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1005 : ca_.Goto(&block0, p_context, p_array, p_from, p_searchElement);
1006 :
1007 56 : if (block0.is_used()) {
1008 : compiler::TNode<Context> tmp0;
1009 : compiler::TNode<JSArray> tmp1;
1010 : compiler::TNode<Smi> tmp2;
1011 : compiler::TNode<Object> tmp3;
1012 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3);
1013 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 30);
1014 56 : compiler::TNode<IntPtrT> tmp4 = ca_.IntPtrConstant(JSObject::kElementsOffset);
1015 : USE(tmp4);
1016 112 : compiler::TNode<FixedArrayBase>tmp5 = CodeStubAssembler(state_).LoadReference<FixedArrayBase>(CodeStubAssembler::Reference{tmp1, tmp4});
1017 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 31);
1018 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 37);
1019 56 : compiler::TNode<IntPtrT> tmp6 = ca_.IntPtrConstant(FixedArrayBase::kLengthOffset);
1020 : USE(tmp6);
1021 168 : compiler::TNode<Smi>tmp7 = CodeStubAssembler(state_).LoadReference<Smi>(CodeStubAssembler::Reference{tmp5, tmp6});
1022 : compiler::TNode<BoolT> tmp8;
1023 : USE(tmp8);
1024 112 : tmp8 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThanOrEqual(compiler::TNode<Smi>{tmp2}, compiler::TNode<Smi>{tmp7}));
1025 56 : ca_.Branch(tmp8, &block2, &block3, tmp0, tmp1, tmp2, tmp3, tmp5, tmp2);
1026 : }
1027 :
1028 56 : if (block2.is_used()) {
1029 : compiler::TNode<Context> tmp9;
1030 : compiler::TNode<JSArray> tmp10;
1031 : compiler::TNode<Smi> tmp11;
1032 : compiler::TNode<Object> tmp12;
1033 : compiler::TNode<FixedArrayBase> tmp13;
1034 : compiler::TNode<Smi> tmp14;
1035 : ca_.Bind(&block2, &tmp9, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14);
1036 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 38);
1037 56 : compiler::TNode<IntPtrT> tmp15 = ca_.IntPtrConstant(FixedArrayBase::kLengthOffset);
1038 : USE(tmp15);
1039 168 : compiler::TNode<Smi>tmp16 = CodeStubAssembler(state_).LoadReference<Smi>(CodeStubAssembler::Reference{tmp13, tmp15});
1040 : compiler::TNode<Smi> tmp17;
1041 : USE(tmp17);
1042 168 : tmp17 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
1043 : compiler::TNode<Smi> tmp18;
1044 : USE(tmp18);
1045 112 : tmp18 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiSub(compiler::TNode<Smi>{tmp16}, compiler::TNode<Smi>{tmp17}));
1046 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 37);
1047 : ca_.Goto(&block3, tmp9, tmp10, tmp11, tmp12, tmp13, tmp18);
1048 : }
1049 :
1050 56 : if (block3.is_used()) {
1051 : compiler::TNode<Context> tmp19;
1052 : compiler::TNode<JSArray> tmp20;
1053 : compiler::TNode<Smi> tmp21;
1054 : compiler::TNode<Object> tmp22;
1055 : compiler::TNode<FixedArrayBase> tmp23;
1056 : compiler::TNode<Smi> tmp24;
1057 : ca_.Bind(&block3, &tmp19, &tmp20, &tmp21, &tmp22, &tmp23, &tmp24);
1058 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 41);
1059 : ca_.Goto(&block6, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24);
1060 : }
1061 :
1062 56 : if (block6.is_used()) {
1063 : compiler::TNode<Context> tmp25;
1064 : compiler::TNode<JSArray> tmp26;
1065 : compiler::TNode<Smi> tmp27;
1066 : compiler::TNode<Object> tmp28;
1067 : compiler::TNode<FixedArrayBase> tmp29;
1068 : compiler::TNode<Smi> tmp30;
1069 : ca_.Bind(&block6, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29, &tmp30);
1070 : compiler::TNode<Smi> tmp31;
1071 : USE(tmp31);
1072 168 : tmp31 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
1073 : compiler::TNode<BoolT> tmp32;
1074 : USE(tmp32);
1075 112 : tmp32 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThanOrEqual(compiler::TNode<Smi>{tmp30}, compiler::TNode<Smi>{tmp31}));
1076 56 : ca_.Branch(tmp32, &block4, &block5, tmp25, tmp26, tmp27, tmp28, tmp29, tmp30);
1077 : }
1078 :
1079 56 : if (block4.is_used()) {
1080 : compiler::TNode<Context> tmp33;
1081 : compiler::TNode<JSArray> tmp34;
1082 : compiler::TNode<Smi> tmp35;
1083 : compiler::TNode<Object> tmp36;
1084 : compiler::TNode<FixedArrayBase> tmp37;
1085 : compiler::TNode<Smi> tmp38;
1086 : ca_.Bind(&block4, &tmp33, &tmp34, &tmp35, &tmp36, &tmp37, &tmp38);
1087 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 43);
1088 : compiler::TNode<Object> tmp39;
1089 : USE(tmp39);
1090 56 : compiler::CodeAssemblerLabel label0(&ca_);
1091 168 : tmp39 = ArrayLastindexofBuiltinsFromDSLAssembler(state_).LoadWithHoleCheck10FixedArray(compiler::TNode<Context>{tmp33}, compiler::TNode<FixedArrayBase>{tmp37}, compiler::TNode<Smi>{tmp38}, &label0);
1092 : ca_.Goto(&block9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp37, tmp38, tmp39);
1093 56 : if (label0.is_used()) {
1094 56 : ca_.Bind(&label0);
1095 : ca_.Goto(&block10, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp37, tmp38);
1096 : }
1097 : }
1098 :
1099 56 : if (block10.is_used()) {
1100 : compiler::TNode<Context> tmp40;
1101 : compiler::TNode<JSArray> tmp41;
1102 : compiler::TNode<Smi> tmp42;
1103 : compiler::TNode<Object> tmp43;
1104 : compiler::TNode<FixedArrayBase> tmp44;
1105 : compiler::TNode<Smi> tmp45;
1106 : compiler::TNode<FixedArrayBase> tmp46;
1107 : compiler::TNode<Smi> tmp47;
1108 : ca_.Bind(&block10, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47);
1109 : ca_.Goto(&block8, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45);
1110 : }
1111 :
1112 56 : if (block9.is_used()) {
1113 : compiler::TNode<Context> tmp48;
1114 : compiler::TNode<JSArray> tmp49;
1115 : compiler::TNode<Smi> tmp50;
1116 : compiler::TNode<Object> tmp51;
1117 : compiler::TNode<FixedArrayBase> tmp52;
1118 : compiler::TNode<Smi> tmp53;
1119 : compiler::TNode<FixedArrayBase> tmp54;
1120 : compiler::TNode<Smi> tmp55;
1121 : compiler::TNode<Object> tmp56;
1122 : ca_.Bind(&block9, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56);
1123 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 46);
1124 : compiler::TNode<Oddball> tmp57;
1125 : USE(tmp57);
1126 112 : tmp57 = ca_.UncheckedCast<Oddball>(CodeStubAssembler(state_).StrictEqual(compiler::TNode<Object>{tmp51}, compiler::TNode<Object>{tmp56}));
1127 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 47);
1128 : compiler::TNode<Oddball> tmp58;
1129 : USE(tmp58);
1130 168 : tmp58 = BaseBuiltinsFromDSLAssembler(state_).True();
1131 : compiler::TNode<BoolT> tmp59;
1132 : USE(tmp59);
1133 112 : tmp59 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<HeapObject>{tmp57}, compiler::TNode<HeapObject>{tmp58}));
1134 56 : ca_.Branch(tmp59, &block11, &block12, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp56, tmp57);
1135 : }
1136 :
1137 56 : if (block11.is_used()) {
1138 : compiler::TNode<Context> tmp60;
1139 : compiler::TNode<JSArray> tmp61;
1140 : compiler::TNode<Smi> tmp62;
1141 : compiler::TNode<Object> tmp63;
1142 : compiler::TNode<FixedArrayBase> tmp64;
1143 : compiler::TNode<Smi> tmp65;
1144 : compiler::TNode<Object> tmp66;
1145 : compiler::TNode<Oddball> tmp67;
1146 : ca_.Bind(&block11, &tmp60, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67);
1147 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 49);
1148 : ca_.Goto(&block1, tmp60, tmp61, tmp62, tmp63, tmp65);
1149 : }
1150 :
1151 56 : if (block12.is_used()) {
1152 : compiler::TNode<Context> tmp68;
1153 : compiler::TNode<JSArray> tmp69;
1154 : compiler::TNode<Smi> tmp70;
1155 : compiler::TNode<Object> tmp71;
1156 : compiler::TNode<FixedArrayBase> tmp72;
1157 : compiler::TNode<Smi> tmp73;
1158 : compiler::TNode<Object> tmp74;
1159 : compiler::TNode<Oddball> tmp75;
1160 : ca_.Bind(&block12, &tmp68, &tmp69, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74, &tmp75);
1161 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 42);
1162 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 52);
1163 : ca_.Goto(&block7, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73);
1164 : }
1165 :
1166 56 : if (block8.is_used()) {
1167 : compiler::TNode<Context> tmp76;
1168 : compiler::TNode<JSArray> tmp77;
1169 : compiler::TNode<Smi> tmp78;
1170 : compiler::TNode<Object> tmp79;
1171 : compiler::TNode<FixedArrayBase> tmp80;
1172 : compiler::TNode<Smi> tmp81;
1173 : ca_.Bind(&block8, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81);
1174 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 42);
1175 : ca_.Goto(&block7, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81);
1176 : }
1177 :
1178 56 : if (block7.is_used()) {
1179 : compiler::TNode<Context> tmp82;
1180 : compiler::TNode<JSArray> tmp83;
1181 : compiler::TNode<Smi> tmp84;
1182 : compiler::TNode<Object> tmp85;
1183 : compiler::TNode<FixedArrayBase> tmp86;
1184 : compiler::TNode<Smi> tmp87;
1185 : ca_.Bind(&block7, &tmp82, &tmp83, &tmp84, &tmp85, &tmp86, &tmp87);
1186 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 54);
1187 : compiler::TNode<Smi> tmp88;
1188 : USE(tmp88);
1189 168 : tmp88 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
1190 : compiler::TNode<Smi> tmp89;
1191 : USE(tmp89);
1192 112 : tmp89 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiSub(compiler::TNode<Smi>{tmp87}, compiler::TNode<Smi>{tmp88}));
1193 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 41);
1194 : ca_.Goto(&block6, tmp82, tmp83, tmp84, tmp85, tmp86, tmp89);
1195 : }
1196 :
1197 56 : if (block5.is_used()) {
1198 : compiler::TNode<Context> tmp90;
1199 : compiler::TNode<JSArray> tmp91;
1200 : compiler::TNode<Smi> tmp92;
1201 : compiler::TNode<Object> tmp93;
1202 : compiler::TNode<FixedArrayBase> tmp94;
1203 : compiler::TNode<Smi> tmp95;
1204 : ca_.Bind(&block5, &tmp90, &tmp91, &tmp92, &tmp93, &tmp94, &tmp95);
1205 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 58);
1206 : compiler::TNode<Smi> tmp96;
1207 : USE(tmp96);
1208 168 : tmp96 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(-1));
1209 : ca_.Goto(&block1, tmp90, tmp91, tmp92, tmp93, tmp96);
1210 : }
1211 :
1212 56 : if (block1.is_used()) {
1213 : compiler::TNode<Context> tmp97;
1214 : compiler::TNode<JSArray> tmp98;
1215 : compiler::TNode<Smi> tmp99;
1216 : compiler::TNode<Object> tmp100;
1217 : compiler::TNode<Smi> tmp101;
1218 : ca_.Bind(&block1, &tmp97, &tmp98, &tmp99, &tmp100, &tmp101);
1219 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 28);
1220 : ca_.Goto(&block13, tmp97, tmp98, tmp99, tmp100, tmp101);
1221 : }
1222 :
1223 : compiler::TNode<Context> tmp102;
1224 : compiler::TNode<JSArray> tmp103;
1225 : compiler::TNode<Smi> tmp104;
1226 : compiler::TNode<Object> tmp105;
1227 : compiler::TNode<Smi> tmp106;
1228 : ca_.Bind(&block13, &tmp102, &tmp103, &tmp104, &tmp105, &tmp106);
1229 112 : return compiler::TNode<Smi>{tmp106};
1230 : }
1231 :
1232 56 : compiler::TNode<Smi> ArrayLastindexofBuiltinsFromDSLAssembler::FastArrayLastIndexOf16FixedDoubleArray(compiler::TNode<Context> p_context, compiler::TNode<JSArray> p_array, compiler::TNode<Smi> p_from, compiler::TNode<Object> p_searchElement) {
1233 56 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1234 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1235 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1236 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1237 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1238 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, FixedArrayBase, Smi> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1239 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, FixedArrayBase, Smi, Object> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1240 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, Object, Oddball> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1241 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi, Object, Oddball> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1242 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1243 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1244 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, FixedArrayBase, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1245 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, Smi> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1246 : compiler::CodeAssemblerParameterizedLabel<Context, JSArray, Smi, Object, Smi> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
1247 : ca_.Goto(&block0, p_context, p_array, p_from, p_searchElement);
1248 :
1249 56 : if (block0.is_used()) {
1250 : compiler::TNode<Context> tmp0;
1251 : compiler::TNode<JSArray> tmp1;
1252 : compiler::TNode<Smi> tmp2;
1253 : compiler::TNode<Object> tmp3;
1254 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3);
1255 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 30);
1256 56 : compiler::TNode<IntPtrT> tmp4 = ca_.IntPtrConstant(JSObject::kElementsOffset);
1257 : USE(tmp4);
1258 112 : compiler::TNode<FixedArrayBase>tmp5 = CodeStubAssembler(state_).LoadReference<FixedArrayBase>(CodeStubAssembler::Reference{tmp1, tmp4});
1259 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 31);
1260 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 37);
1261 56 : compiler::TNode<IntPtrT> tmp6 = ca_.IntPtrConstant(FixedArrayBase::kLengthOffset);
1262 : USE(tmp6);
1263 168 : compiler::TNode<Smi>tmp7 = CodeStubAssembler(state_).LoadReference<Smi>(CodeStubAssembler::Reference{tmp5, tmp6});
1264 : compiler::TNode<BoolT> tmp8;
1265 : USE(tmp8);
1266 112 : tmp8 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThanOrEqual(compiler::TNode<Smi>{tmp2}, compiler::TNode<Smi>{tmp7}));
1267 56 : ca_.Branch(tmp8, &block2, &block3, tmp0, tmp1, tmp2, tmp3, tmp5, tmp2);
1268 : }
1269 :
1270 56 : if (block2.is_used()) {
1271 : compiler::TNode<Context> tmp9;
1272 : compiler::TNode<JSArray> tmp10;
1273 : compiler::TNode<Smi> tmp11;
1274 : compiler::TNode<Object> tmp12;
1275 : compiler::TNode<FixedArrayBase> tmp13;
1276 : compiler::TNode<Smi> tmp14;
1277 : ca_.Bind(&block2, &tmp9, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14);
1278 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 38);
1279 56 : compiler::TNode<IntPtrT> tmp15 = ca_.IntPtrConstant(FixedArrayBase::kLengthOffset);
1280 : USE(tmp15);
1281 168 : compiler::TNode<Smi>tmp16 = CodeStubAssembler(state_).LoadReference<Smi>(CodeStubAssembler::Reference{tmp13, tmp15});
1282 : compiler::TNode<Smi> tmp17;
1283 : USE(tmp17);
1284 168 : tmp17 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
1285 : compiler::TNode<Smi> tmp18;
1286 : USE(tmp18);
1287 112 : tmp18 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiSub(compiler::TNode<Smi>{tmp16}, compiler::TNode<Smi>{tmp17}));
1288 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 37);
1289 : ca_.Goto(&block3, tmp9, tmp10, tmp11, tmp12, tmp13, tmp18);
1290 : }
1291 :
1292 56 : if (block3.is_used()) {
1293 : compiler::TNode<Context> tmp19;
1294 : compiler::TNode<JSArray> tmp20;
1295 : compiler::TNode<Smi> tmp21;
1296 : compiler::TNode<Object> tmp22;
1297 : compiler::TNode<FixedArrayBase> tmp23;
1298 : compiler::TNode<Smi> tmp24;
1299 : ca_.Bind(&block3, &tmp19, &tmp20, &tmp21, &tmp22, &tmp23, &tmp24);
1300 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 41);
1301 : ca_.Goto(&block6, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24);
1302 : }
1303 :
1304 56 : if (block6.is_used()) {
1305 : compiler::TNode<Context> tmp25;
1306 : compiler::TNode<JSArray> tmp26;
1307 : compiler::TNode<Smi> tmp27;
1308 : compiler::TNode<Object> tmp28;
1309 : compiler::TNode<FixedArrayBase> tmp29;
1310 : compiler::TNode<Smi> tmp30;
1311 : ca_.Bind(&block6, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29, &tmp30);
1312 : compiler::TNode<Smi> tmp31;
1313 : USE(tmp31);
1314 168 : tmp31 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
1315 : compiler::TNode<BoolT> tmp32;
1316 : USE(tmp32);
1317 112 : tmp32 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThanOrEqual(compiler::TNode<Smi>{tmp30}, compiler::TNode<Smi>{tmp31}));
1318 56 : ca_.Branch(tmp32, &block4, &block5, tmp25, tmp26, tmp27, tmp28, tmp29, tmp30);
1319 : }
1320 :
1321 56 : if (block4.is_used()) {
1322 : compiler::TNode<Context> tmp33;
1323 : compiler::TNode<JSArray> tmp34;
1324 : compiler::TNode<Smi> tmp35;
1325 : compiler::TNode<Object> tmp36;
1326 : compiler::TNode<FixedArrayBase> tmp37;
1327 : compiler::TNode<Smi> tmp38;
1328 : ca_.Bind(&block4, &tmp33, &tmp34, &tmp35, &tmp36, &tmp37, &tmp38);
1329 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 43);
1330 : compiler::TNode<Object> tmp39;
1331 : USE(tmp39);
1332 56 : compiler::CodeAssemblerLabel label0(&ca_);
1333 168 : tmp39 = ArrayLastindexofBuiltinsFromDSLAssembler(state_).LoadWithHoleCheck16FixedDoubleArray(compiler::TNode<Context>{tmp33}, compiler::TNode<FixedArrayBase>{tmp37}, compiler::TNode<Smi>{tmp38}, &label0);
1334 : ca_.Goto(&block9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp37, tmp38, tmp39);
1335 56 : if (label0.is_used()) {
1336 56 : ca_.Bind(&label0);
1337 : ca_.Goto(&block10, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp37, tmp38);
1338 : }
1339 : }
1340 :
1341 56 : if (block10.is_used()) {
1342 : compiler::TNode<Context> tmp40;
1343 : compiler::TNode<JSArray> tmp41;
1344 : compiler::TNode<Smi> tmp42;
1345 : compiler::TNode<Object> tmp43;
1346 : compiler::TNode<FixedArrayBase> tmp44;
1347 : compiler::TNode<Smi> tmp45;
1348 : compiler::TNode<FixedArrayBase> tmp46;
1349 : compiler::TNode<Smi> tmp47;
1350 : ca_.Bind(&block10, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47);
1351 : ca_.Goto(&block8, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45);
1352 : }
1353 :
1354 56 : if (block9.is_used()) {
1355 : compiler::TNode<Context> tmp48;
1356 : compiler::TNode<JSArray> tmp49;
1357 : compiler::TNode<Smi> tmp50;
1358 : compiler::TNode<Object> tmp51;
1359 : compiler::TNode<FixedArrayBase> tmp52;
1360 : compiler::TNode<Smi> tmp53;
1361 : compiler::TNode<FixedArrayBase> tmp54;
1362 : compiler::TNode<Smi> tmp55;
1363 : compiler::TNode<Object> tmp56;
1364 : ca_.Bind(&block9, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56);
1365 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 46);
1366 : compiler::TNode<Oddball> tmp57;
1367 : USE(tmp57);
1368 112 : tmp57 = ca_.UncheckedCast<Oddball>(CodeStubAssembler(state_).StrictEqual(compiler::TNode<Object>{tmp51}, compiler::TNode<Object>{tmp56}));
1369 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 47);
1370 : compiler::TNode<Oddball> tmp58;
1371 : USE(tmp58);
1372 168 : tmp58 = BaseBuiltinsFromDSLAssembler(state_).True();
1373 : compiler::TNode<BoolT> tmp59;
1374 : USE(tmp59);
1375 112 : tmp59 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<HeapObject>{tmp57}, compiler::TNode<HeapObject>{tmp58}));
1376 56 : ca_.Branch(tmp59, &block11, &block12, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp56, tmp57);
1377 : }
1378 :
1379 56 : if (block11.is_used()) {
1380 : compiler::TNode<Context> tmp60;
1381 : compiler::TNode<JSArray> tmp61;
1382 : compiler::TNode<Smi> tmp62;
1383 : compiler::TNode<Object> tmp63;
1384 : compiler::TNode<FixedArrayBase> tmp64;
1385 : compiler::TNode<Smi> tmp65;
1386 : compiler::TNode<Object> tmp66;
1387 : compiler::TNode<Oddball> tmp67;
1388 : ca_.Bind(&block11, &tmp60, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67);
1389 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 49);
1390 : ca_.Goto(&block1, tmp60, tmp61, tmp62, tmp63, tmp65);
1391 : }
1392 :
1393 56 : if (block12.is_used()) {
1394 : compiler::TNode<Context> tmp68;
1395 : compiler::TNode<JSArray> tmp69;
1396 : compiler::TNode<Smi> tmp70;
1397 : compiler::TNode<Object> tmp71;
1398 : compiler::TNode<FixedArrayBase> tmp72;
1399 : compiler::TNode<Smi> tmp73;
1400 : compiler::TNode<Object> tmp74;
1401 : compiler::TNode<Oddball> tmp75;
1402 : ca_.Bind(&block12, &tmp68, &tmp69, &tmp70, &tmp71, &tmp72, &tmp73, &tmp74, &tmp75);
1403 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 42);
1404 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 52);
1405 : ca_.Goto(&block7, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73);
1406 : }
1407 :
1408 56 : if (block8.is_used()) {
1409 : compiler::TNode<Context> tmp76;
1410 : compiler::TNode<JSArray> tmp77;
1411 : compiler::TNode<Smi> tmp78;
1412 : compiler::TNode<Object> tmp79;
1413 : compiler::TNode<FixedArrayBase> tmp80;
1414 : compiler::TNode<Smi> tmp81;
1415 : ca_.Bind(&block8, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81);
1416 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 42);
1417 : ca_.Goto(&block7, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81);
1418 : }
1419 :
1420 56 : if (block7.is_used()) {
1421 : compiler::TNode<Context> tmp82;
1422 : compiler::TNode<JSArray> tmp83;
1423 : compiler::TNode<Smi> tmp84;
1424 : compiler::TNode<Object> tmp85;
1425 : compiler::TNode<FixedArrayBase> tmp86;
1426 : compiler::TNode<Smi> tmp87;
1427 : ca_.Bind(&block7, &tmp82, &tmp83, &tmp84, &tmp85, &tmp86, &tmp87);
1428 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 54);
1429 : compiler::TNode<Smi> tmp88;
1430 : USE(tmp88);
1431 168 : tmp88 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
1432 : compiler::TNode<Smi> tmp89;
1433 : USE(tmp89);
1434 112 : tmp89 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiSub(compiler::TNode<Smi>{tmp87}, compiler::TNode<Smi>{tmp88}));
1435 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 41);
1436 : ca_.Goto(&block6, tmp82, tmp83, tmp84, tmp85, tmp86, tmp89);
1437 : }
1438 :
1439 56 : if (block5.is_used()) {
1440 : compiler::TNode<Context> tmp90;
1441 : compiler::TNode<JSArray> tmp91;
1442 : compiler::TNode<Smi> tmp92;
1443 : compiler::TNode<Object> tmp93;
1444 : compiler::TNode<FixedArrayBase> tmp94;
1445 : compiler::TNode<Smi> tmp95;
1446 : ca_.Bind(&block5, &tmp90, &tmp91, &tmp92, &tmp93, &tmp94, &tmp95);
1447 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 58);
1448 : compiler::TNode<Smi> tmp96;
1449 : USE(tmp96);
1450 168 : tmp96 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(-1));
1451 : ca_.Goto(&block1, tmp90, tmp91, tmp92, tmp93, tmp96);
1452 : }
1453 :
1454 56 : if (block1.is_used()) {
1455 : compiler::TNode<Context> tmp97;
1456 : compiler::TNode<JSArray> tmp98;
1457 : compiler::TNode<Smi> tmp99;
1458 : compiler::TNode<Object> tmp100;
1459 : compiler::TNode<Smi> tmp101;
1460 : ca_.Bind(&block1, &tmp97, &tmp98, &tmp99, &tmp100, &tmp101);
1461 56 : ca_.SetSourcePosition("../../src/builtins/array-lastindexof.tq", 28);
1462 : ca_.Goto(&block13, tmp97, tmp98, tmp99, tmp100, tmp101);
1463 : }
1464 :
1465 : compiler::TNode<Context> tmp102;
1466 : compiler::TNode<JSArray> tmp103;
1467 : compiler::TNode<Smi> tmp104;
1468 : compiler::TNode<Object> tmp105;
1469 : compiler::TNode<Smi> tmp106;
1470 : ca_.Bind(&block13, &tmp102, &tmp103, &tmp104, &tmp105, &tmp106);
1471 112 : return compiler::TNode<Smi>{tmp106};
1472 : }
1473 :
1474 : } // namespace internal
1475 59456 : } // namespace v8
1476 :
|