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