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 : void ArrayUnshiftBuiltinsFromDSLAssembler::TryFastArrayUnshift(compiler::TNode<Context> p_context, compiler::TNode<Object> p_receiver, BaseBuiltinsFromDSLAssembler::Arguments p_arguments, compiler::CodeAssemblerLabel* label_Slow) {
82 56 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
83 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
84 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Object, JSArray> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
85 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSArray, Map> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
86 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSArray, Map> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
87 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSArray, Map, Map> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
88 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSArray, Map, Map> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
89 : compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
90 : ca_.Goto(&block0, p_context, p_receiver, p_arguments.frame, p_arguments.base, p_arguments.length);
91 :
92 56 : if (block0.is_used()) {
93 : compiler::TNode<Context> tmp0;
94 : compiler::TNode<Object> tmp1;
95 : compiler::TNode<RawPtrT> tmp2;
96 : compiler::TNode<RawPtrT> tmp3;
97 : compiler::TNode<IntPtrT> tmp4;
98 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
99 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 11);
100 : compiler::TNode<JSArray> tmp5;
101 : USE(tmp5);
102 56 : compiler::CodeAssemblerLabel label0(&ca_);
103 168 : tmp5 = BaseBuiltinsFromDSLAssembler(state_).Cast13ATFastJSArray(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, &label0);
104 : ca_.Goto(&block2, tmp0, tmp1, tmp2, tmp3, tmp4, tmp1, tmp5);
105 56 : if (label0.is_used()) {
106 56 : ca_.Bind(&label0);
107 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp4, tmp1);
108 : }
109 : }
110 :
111 56 : if (block3.is_used()) {
112 : compiler::TNode<Context> tmp6;
113 : compiler::TNode<Object> tmp7;
114 : compiler::TNode<RawPtrT> tmp8;
115 : compiler::TNode<RawPtrT> tmp9;
116 : compiler::TNode<IntPtrT> tmp10;
117 : compiler::TNode<Object> tmp11;
118 : ca_.Bind(&block3, &tmp6, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11);
119 : ca_.Goto(&block1);
120 : }
121 :
122 56 : if (block2.is_used()) {
123 : compiler::TNode<Context> tmp12;
124 : compiler::TNode<Object> tmp13;
125 : compiler::TNode<RawPtrT> tmp14;
126 : compiler::TNode<RawPtrT> tmp15;
127 : compiler::TNode<IntPtrT> tmp16;
128 : compiler::TNode<Object> tmp17;
129 : compiler::TNode<JSArray> tmp18;
130 : ca_.Bind(&block2, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18);
131 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 12);
132 168 : ArrayBuiltinsFromDSLAssembler(state_).EnsureWriteableFastElements(compiler::TNode<Context>{tmp12}, compiler::TNode<JSArray>{tmp18});
133 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 14);
134 56 : compiler::TNode<IntPtrT> tmp19 = ca_.IntPtrConstant(HeapObject::kMapOffset);
135 : USE(tmp19);
136 112 : compiler::TNode<Map>tmp20 = CodeStubAssembler(state_).LoadReference<Map>(CodeStubAssembler::Reference{tmp18, tmp19});
137 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 15);
138 : compiler::TNode<BoolT> tmp21;
139 : USE(tmp21);
140 112 : tmp21 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).IsExtensibleMap(compiler::TNode<Map>{tmp20}));
141 : compiler::TNode<BoolT> tmp22;
142 : USE(tmp22);
143 112 : tmp22 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Word32BinaryNot(compiler::TNode<BoolT>{tmp21}));
144 56 : ca_.Branch(tmp22, &block4, &block5, tmp12, tmp13, tmp14, tmp15, tmp16, tmp18, tmp20);
145 : }
146 :
147 56 : if (block4.is_used()) {
148 : compiler::TNode<Context> tmp23;
149 : compiler::TNode<Object> tmp24;
150 : compiler::TNode<RawPtrT> tmp25;
151 : compiler::TNode<RawPtrT> tmp26;
152 : compiler::TNode<IntPtrT> tmp27;
153 : compiler::TNode<JSArray> tmp28;
154 : compiler::TNode<Map> tmp29;
155 : ca_.Bind(&block4, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29);
156 : ca_.Goto(&block1);
157 : }
158 :
159 56 : if (block5.is_used()) {
160 : compiler::TNode<Context> tmp30;
161 : compiler::TNode<Object> tmp31;
162 : compiler::TNode<RawPtrT> tmp32;
163 : compiler::TNode<RawPtrT> tmp33;
164 : compiler::TNode<IntPtrT> tmp34;
165 : compiler::TNode<JSArray> tmp35;
166 : compiler::TNode<Map> tmp36;
167 : ca_.Bind(&block5, &tmp30, &tmp31, &tmp32, &tmp33, &tmp34, &tmp35, &tmp36);
168 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 16);
169 56 : compiler::CodeAssemblerLabel label0(&ca_);
170 112 : CodeStubAssembler(state_).EnsureArrayLengthWritable(compiler::TNode<Map>{tmp36}, &label0);
171 : ca_.Goto(&block6, tmp30, tmp31, tmp32, tmp33, tmp34, tmp35, tmp36, tmp36);
172 56 : if (label0.is_used()) {
173 56 : ca_.Bind(&label0);
174 : ca_.Goto(&block7, tmp30, tmp31, tmp32, tmp33, tmp34, tmp35, tmp36, tmp36);
175 : }
176 : }
177 :
178 56 : if (block7.is_used()) {
179 : compiler::TNode<Context> tmp37;
180 : compiler::TNode<Object> tmp38;
181 : compiler::TNode<RawPtrT> tmp39;
182 : compiler::TNode<RawPtrT> tmp40;
183 : compiler::TNode<IntPtrT> tmp41;
184 : compiler::TNode<JSArray> tmp42;
185 : compiler::TNode<Map> tmp43;
186 : compiler::TNode<Map> tmp44;
187 : ca_.Bind(&block7, &tmp37, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44);
188 : ca_.Goto(&block1);
189 : }
190 :
191 56 : if (block6.is_used()) {
192 : compiler::TNode<Context> tmp45;
193 : compiler::TNode<Object> tmp46;
194 : compiler::TNode<RawPtrT> tmp47;
195 : compiler::TNode<RawPtrT> tmp48;
196 : compiler::TNode<IntPtrT> tmp49;
197 : compiler::TNode<JSArray> tmp50;
198 : compiler::TNode<Map> tmp51;
199 : compiler::TNode<Map> tmp52;
200 : ca_.Bind(&block6, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52);
201 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 19);
202 : compiler::TNode<JSFunction> tmp53;
203 : USE(tmp53);
204 168 : tmp53 = ca_.UncheckedCast<JSFunction>(BaseBuiltinsFromDSLAssembler(state_).LoadTargetFromFrame());
205 : compiler::TNode<Oddball> tmp54;
206 : USE(tmp54);
207 168 : tmp54 = BaseBuiltinsFromDSLAssembler(state_).Undefined();
208 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 20);
209 : compiler::TNode<Int32T> tmp55;
210 : USE(tmp55);
211 168 : tmp55 = ca_.UncheckedCast<Int32T>(BaseBuiltinsFromDSLAssembler(state_).Convert7ATint328ATintptr(compiler::TNode<IntPtrT>{tmp49}));
212 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 18);
213 112 : CodeStubAssembler(state_).TailCallBuiltin(Builtins::kArrayUnshift, tmp45, tmp53, tmp54, tmp55);
214 : }
215 :
216 56 : if (block1.is_used()) {
217 : ca_.Bind(&block1);
218 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 8);
219 56 : ca_.Goto(label_Slow);
220 : }
221 56 : }
222 :
223 56 : compiler::TNode<Number> ArrayUnshiftBuiltinsFromDSLAssembler::GenericArrayUnshift(compiler::TNode<Context> p_context, compiler::TNode<Object> p_receiver, BaseBuiltinsFromDSLAssembler::Arguments p_arguments) {
224 56 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
225 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
226 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
227 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
228 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
229 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
230 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
231 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Number> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
232 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Number> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
233 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
234 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Number, Number, Oddball> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
235 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Number, Number, Oddball> block14(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
236 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Number, Number, Oddball> block15(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
237 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
238 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Smi> block18(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
239 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Smi> block16(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
240 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi, Number, Smi> block17(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
241 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, JSReceiver, Number, Smi> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
242 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Number> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
243 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Number> block19(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
244 : ca_.Goto(&block0, p_context, p_receiver, p_arguments.frame, p_arguments.base, p_arguments.length);
245 :
246 56 : if (block0.is_used()) {
247 : compiler::TNode<Context> tmp0;
248 : compiler::TNode<Object> tmp1;
249 : compiler::TNode<RawPtrT> tmp2;
250 : compiler::TNode<RawPtrT> tmp3;
251 : compiler::TNode<IntPtrT> tmp4;
252 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
253 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 26);
254 : compiler::TNode<JSReceiver> tmp5;
255 : USE(tmp5);
256 112 : tmp5 = ca_.UncheckedCast<JSReceiver>(CodeStubAssembler(state_).ToObject_Inline(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
257 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 29);
258 : compiler::TNode<Number> tmp6;
259 : USE(tmp6);
260 168 : tmp6 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).GetLengthProperty(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp5}));
261 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 32);
262 : compiler::TNode<Smi> tmp7;
263 : USE(tmp7);
264 168 : tmp7 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).Convert5ATSmi8ATintptr(compiler::TNode<IntPtrT>{tmp4}));
265 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 35);
266 : compiler::TNode<Smi> tmp8;
267 : USE(tmp8);
268 168 : tmp8 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
269 : compiler::TNode<BoolT> tmp9;
270 : USE(tmp9);
271 112 : tmp9 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThan(compiler::TNode<Smi>{tmp7}, compiler::TNode<Smi>{tmp8}));
272 56 : ca_.Branch(tmp9, &block2, &block3, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7);
273 : }
274 :
275 56 : if (block2.is_used()) {
276 : compiler::TNode<Context> tmp10;
277 : compiler::TNode<Object> tmp11;
278 : compiler::TNode<RawPtrT> tmp12;
279 : compiler::TNode<RawPtrT> tmp13;
280 : compiler::TNode<IntPtrT> tmp14;
281 : compiler::TNode<JSReceiver> tmp15;
282 : compiler::TNode<Number> tmp16;
283 : compiler::TNode<Smi> tmp17;
284 : ca_.Bind(&block2, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17);
285 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 37);
286 : compiler::TNode<Number> tmp18;
287 : USE(tmp18);
288 168 : tmp18 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp16}, compiler::TNode<Number>{tmp17}));
289 : compiler::TNode<Number> tmp19;
290 : USE(tmp19);
291 168 : tmp19 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber19ATconstexpr_float64(kMaxSafeInteger));
292 56 : compiler::CodeAssemblerLabel label0(&ca_);
293 56 : compiler::CodeAssemblerLabel label1(&ca_);
294 112 : CodeStubAssembler(state_).BranchIfNumberGreaterThan(compiler::TNode<Number>{tmp18}, compiler::TNode<Number>{tmp19}, &label0, &label1);
295 56 : if (label0.is_used()) {
296 56 : ca_.Bind(&label0);
297 : ca_.Goto(&block6, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18);
298 : }
299 56 : if (label1.is_used()) {
300 56 : ca_.Bind(&label1);
301 : ca_.Goto(&block7, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18);
302 : }
303 : }
304 :
305 56 : if (block6.is_used()) {
306 : compiler::TNode<Context> tmp20;
307 : compiler::TNode<Object> tmp21;
308 : compiler::TNode<RawPtrT> tmp22;
309 : compiler::TNode<RawPtrT> tmp23;
310 : compiler::TNode<IntPtrT> tmp24;
311 : compiler::TNode<JSReceiver> tmp25;
312 : compiler::TNode<Number> tmp26;
313 : compiler::TNode<Smi> tmp27;
314 : compiler::TNode<Number> tmp28;
315 : ca_.Bind(&block6, &tmp20, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27, &tmp28);
316 : ca_.Goto(&block4, tmp20, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27);
317 : }
318 :
319 56 : if (block7.is_used()) {
320 : compiler::TNode<Context> tmp29;
321 : compiler::TNode<Object> tmp30;
322 : compiler::TNode<RawPtrT> tmp31;
323 : compiler::TNode<RawPtrT> tmp32;
324 : compiler::TNode<IntPtrT> tmp33;
325 : compiler::TNode<JSReceiver> tmp34;
326 : compiler::TNode<Number> tmp35;
327 : compiler::TNode<Smi> tmp36;
328 : compiler::TNode<Number> tmp37;
329 : ca_.Bind(&block7, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33, &tmp34, &tmp35, &tmp36, &tmp37);
330 : ca_.Goto(&block5, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tmp35, tmp36);
331 : }
332 :
333 56 : if (block4.is_used()) {
334 : compiler::TNode<Context> tmp38;
335 : compiler::TNode<Object> tmp39;
336 : compiler::TNode<RawPtrT> tmp40;
337 : compiler::TNode<RawPtrT> tmp41;
338 : compiler::TNode<IntPtrT> tmp42;
339 : compiler::TNode<JSReceiver> tmp43;
340 : compiler::TNode<Number> tmp44;
341 : compiler::TNode<Smi> tmp45;
342 : ca_.Bind(&block4, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45);
343 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 38);
344 112 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp38}, MessageTemplate::kInvalidArrayLength);
345 : }
346 :
347 56 : if (block5.is_used()) {
348 : compiler::TNode<Context> tmp46;
349 : compiler::TNode<Object> tmp47;
350 : compiler::TNode<RawPtrT> tmp48;
351 : compiler::TNode<RawPtrT> tmp49;
352 : compiler::TNode<IntPtrT> tmp50;
353 : compiler::TNode<JSReceiver> tmp51;
354 : compiler::TNode<Number> tmp52;
355 : compiler::TNode<Smi> tmp53;
356 : ca_.Bind(&block5, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53);
357 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 42);
358 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 45);
359 : ca_.Goto(&block10, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp52);
360 : }
361 :
362 56 : if (block10.is_used()) {
363 : compiler::TNode<Context> tmp54;
364 : compiler::TNode<Object> tmp55;
365 : compiler::TNode<RawPtrT> tmp56;
366 : compiler::TNode<RawPtrT> tmp57;
367 : compiler::TNode<IntPtrT> tmp58;
368 : compiler::TNode<JSReceiver> tmp59;
369 : compiler::TNode<Number> tmp60;
370 : compiler::TNode<Smi> tmp61;
371 : compiler::TNode<Number> tmp62;
372 : ca_.Bind(&block10, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58, &tmp59, &tmp60, &tmp61, &tmp62);
373 : compiler::TNode<Number> tmp63;
374 : USE(tmp63);
375 168 : tmp63 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(0));
376 56 : compiler::CodeAssemblerLabel label0(&ca_);
377 56 : compiler::CodeAssemblerLabel label1(&ca_);
378 112 : CodeStubAssembler(state_).BranchIfNumberGreaterThan(compiler::TNode<Number>{tmp62}, compiler::TNode<Number>{tmp63}, &label0, &label1);
379 56 : if (label0.is_used()) {
380 56 : ca_.Bind(&label0);
381 : ca_.Goto(&block11, tmp54, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60, tmp61, tmp62, tmp62);
382 : }
383 56 : if (label1.is_used()) {
384 56 : ca_.Bind(&label1);
385 : ca_.Goto(&block12, tmp54, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60, tmp61, tmp62, tmp62);
386 : }
387 : }
388 :
389 56 : if (block11.is_used()) {
390 : compiler::TNode<Context> tmp64;
391 : compiler::TNode<Object> tmp65;
392 : compiler::TNode<RawPtrT> tmp66;
393 : compiler::TNode<RawPtrT> tmp67;
394 : compiler::TNode<IntPtrT> tmp68;
395 : compiler::TNode<JSReceiver> tmp69;
396 : compiler::TNode<Number> tmp70;
397 : compiler::TNode<Smi> tmp71;
398 : compiler::TNode<Number> tmp72;
399 : compiler::TNode<Number> tmp73;
400 : ca_.Bind(&block11, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68, &tmp69, &tmp70, &tmp71, &tmp72, &tmp73);
401 : ca_.Goto(&block8, tmp64, tmp65, tmp66, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72);
402 : }
403 :
404 56 : if (block12.is_used()) {
405 : compiler::TNode<Context> tmp74;
406 : compiler::TNode<Object> tmp75;
407 : compiler::TNode<RawPtrT> tmp76;
408 : compiler::TNode<RawPtrT> tmp77;
409 : compiler::TNode<IntPtrT> tmp78;
410 : compiler::TNode<JSReceiver> tmp79;
411 : compiler::TNode<Number> tmp80;
412 : compiler::TNode<Smi> tmp81;
413 : compiler::TNode<Number> tmp82;
414 : compiler::TNode<Number> tmp83;
415 : ca_.Bind(&block12, &tmp74, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81, &tmp82, &tmp83);
416 : ca_.Goto(&block9, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82);
417 : }
418 :
419 56 : if (block8.is_used()) {
420 : compiler::TNode<Context> tmp84;
421 : compiler::TNode<Object> tmp85;
422 : compiler::TNode<RawPtrT> tmp86;
423 : compiler::TNode<RawPtrT> tmp87;
424 : compiler::TNode<IntPtrT> tmp88;
425 : compiler::TNode<JSReceiver> tmp89;
426 : compiler::TNode<Number> tmp90;
427 : compiler::TNode<Smi> tmp91;
428 : compiler::TNode<Number> tmp92;
429 : ca_.Bind(&block8, &tmp84, &tmp85, &tmp86, &tmp87, &tmp88, &tmp89, &tmp90, &tmp91, &tmp92);
430 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 47);
431 : compiler::TNode<Number> tmp93;
432 : USE(tmp93);
433 168 : tmp93 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(1));
434 : compiler::TNode<Number> tmp94;
435 : USE(tmp94);
436 168 : tmp94 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp92}, compiler::TNode<Number>{tmp93}));
437 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 50);
438 : compiler::TNode<Number> tmp95;
439 : USE(tmp95);
440 168 : tmp95 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp92}, compiler::TNode<Number>{tmp91}));
441 : compiler::TNode<Number> tmp96;
442 : USE(tmp96);
443 168 : tmp96 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(1));
444 : compiler::TNode<Number> tmp97;
445 : USE(tmp97);
446 112 : tmp97 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp95}, compiler::TNode<Number>{tmp96}));
447 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 53);
448 : compiler::TNode<Oddball> tmp98;
449 112 : tmp98 = TORQUE_CAST(CodeStubAssembler(state_).CallBuiltin(Builtins::kHasProperty, tmp84, tmp89, tmp94));
450 : USE(tmp98);
451 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 56);
452 : compiler::TNode<Oddball> tmp99;
453 : USE(tmp99);
454 168 : tmp99 = BaseBuiltinsFromDSLAssembler(state_).True();
455 : compiler::TNode<BoolT> tmp100;
456 : USE(tmp100);
457 112 : tmp100 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<HeapObject>{tmp98}, compiler::TNode<HeapObject>{tmp99}));
458 56 : ca_.Branch(tmp100, &block13, &block14, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp94, tmp97, tmp98);
459 : }
460 :
461 56 : if (block13.is_used()) {
462 : compiler::TNode<Context> tmp101;
463 : compiler::TNode<Object> tmp102;
464 : compiler::TNode<RawPtrT> tmp103;
465 : compiler::TNode<RawPtrT> tmp104;
466 : compiler::TNode<IntPtrT> tmp105;
467 : compiler::TNode<JSReceiver> tmp106;
468 : compiler::TNode<Number> tmp107;
469 : compiler::TNode<Smi> tmp108;
470 : compiler::TNode<Number> tmp109;
471 : compiler::TNode<Number> tmp110;
472 : compiler::TNode<Number> tmp111;
473 : compiler::TNode<Oddball> tmp112;
474 : ca_.Bind(&block13, &tmp101, &tmp102, &tmp103, &tmp104, &tmp105, &tmp106, &tmp107, &tmp108, &tmp109, &tmp110, &tmp111, &tmp112);
475 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 58);
476 : compiler::TNode<Object> tmp113;
477 : USE(tmp113);
478 112 : tmp113 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetProperty(compiler::TNode<Context>{tmp101}, compiler::TNode<Object>{tmp106}, compiler::TNode<Object>{tmp110}));
479 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 61);
480 112 : CodeStubAssembler(state_).CallBuiltin(Builtins::kSetProperty, tmp101, tmp106, tmp111, tmp113);
481 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 56);
482 : ca_.Goto(&block15, tmp101, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112);
483 : }
484 :
485 56 : if (block14.is_used()) {
486 : compiler::TNode<Context> tmp115;
487 : compiler::TNode<Object> tmp116;
488 : compiler::TNode<RawPtrT> tmp117;
489 : compiler::TNode<RawPtrT> tmp118;
490 : compiler::TNode<IntPtrT> tmp119;
491 : compiler::TNode<JSReceiver> tmp120;
492 : compiler::TNode<Number> tmp121;
493 : compiler::TNode<Smi> tmp122;
494 : compiler::TNode<Number> tmp123;
495 : compiler::TNode<Number> tmp124;
496 : compiler::TNode<Number> tmp125;
497 : compiler::TNode<Oddball> tmp126;
498 : ca_.Bind(&block14, &tmp115, &tmp116, &tmp117, &tmp118, &tmp119, &tmp120, &tmp121, &tmp122, &tmp123, &tmp124, &tmp125, &tmp126);
499 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 64);
500 : compiler::TNode<Smi> tmp127;
501 : USE(tmp127);
502 168 : tmp127 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr14ATLanguageMode24ATconstexpr_LanguageMode(LanguageMode::kStrict));
503 112 : CodeStubAssembler(state_).CallBuiltin(Builtins::kDeleteProperty, tmp115, tmp120, tmp125, tmp127);
504 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 56);
505 : ca_.Goto(&block15, tmp115, tmp116, tmp117, tmp118, tmp119, tmp120, tmp121, tmp122, tmp123, tmp124, tmp125, tmp126);
506 : }
507 :
508 56 : if (block15.is_used()) {
509 : compiler::TNode<Context> tmp129;
510 : compiler::TNode<Object> tmp130;
511 : compiler::TNode<RawPtrT> tmp131;
512 : compiler::TNode<RawPtrT> tmp132;
513 : compiler::TNode<IntPtrT> tmp133;
514 : compiler::TNode<JSReceiver> tmp134;
515 : compiler::TNode<Number> tmp135;
516 : compiler::TNode<Smi> tmp136;
517 : compiler::TNode<Number> tmp137;
518 : compiler::TNode<Number> tmp138;
519 : compiler::TNode<Number> tmp139;
520 : compiler::TNode<Oddball> tmp140;
521 : ca_.Bind(&block15, &tmp129, &tmp130, &tmp131, &tmp132, &tmp133, &tmp134, &tmp135, &tmp136, &tmp137, &tmp138, &tmp139, &tmp140);
522 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 68);
523 : compiler::TNode<Number> tmp141;
524 : USE(tmp141);
525 168 : tmp141 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr20UT5ATSmi10HeapNumber17ATconstexpr_int31(1));
526 : compiler::TNode<Number> tmp142;
527 : USE(tmp142);
528 168 : tmp142 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp137}, compiler::TNode<Number>{tmp141}));
529 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 45);
530 : ca_.Goto(&block10, tmp129, tmp130, tmp131, tmp132, tmp133, tmp134, tmp135, tmp136, tmp142);
531 : }
532 :
533 56 : if (block9.is_used()) {
534 : compiler::TNode<Context> tmp143;
535 : compiler::TNode<Object> tmp144;
536 : compiler::TNode<RawPtrT> tmp145;
537 : compiler::TNode<RawPtrT> tmp146;
538 : compiler::TNode<IntPtrT> tmp147;
539 : compiler::TNode<JSReceiver> tmp148;
540 : compiler::TNode<Number> tmp149;
541 : compiler::TNode<Smi> tmp150;
542 : compiler::TNode<Number> tmp151;
543 : ca_.Bind(&block9, &tmp143, &tmp144, &tmp145, &tmp146, &tmp147, &tmp148, &tmp149, &tmp150, &tmp151);
544 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 72);
545 : compiler::TNode<Smi> tmp152;
546 : USE(tmp152);
547 168 : tmp152 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
548 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 77);
549 : ca_.Goto(&block18, tmp143, tmp144, tmp145, tmp146, tmp147, tmp148, tmp149, tmp150, tmp151, tmp152);
550 : }
551 :
552 56 : if (block18.is_used()) {
553 : compiler::TNode<Context> tmp153;
554 : compiler::TNode<Object> tmp154;
555 : compiler::TNode<RawPtrT> tmp155;
556 : compiler::TNode<RawPtrT> tmp156;
557 : compiler::TNode<IntPtrT> tmp157;
558 : compiler::TNode<JSReceiver> tmp158;
559 : compiler::TNode<Number> tmp159;
560 : compiler::TNode<Smi> tmp160;
561 : compiler::TNode<Number> tmp161;
562 : compiler::TNode<Smi> tmp162;
563 : ca_.Bind(&block18, &tmp153, &tmp154, &tmp155, &tmp156, &tmp157, &tmp158, &tmp159, &tmp160, &tmp161, &tmp162);
564 : compiler::TNode<BoolT> tmp163;
565 : USE(tmp163);
566 112 : tmp163 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiLessThan(compiler::TNode<Smi>{tmp162}, compiler::TNode<Smi>{tmp160}));
567 56 : ca_.Branch(tmp163, &block16, &block17, tmp153, tmp154, tmp155, tmp156, tmp157, tmp158, tmp159, tmp160, tmp161, tmp162);
568 : }
569 :
570 56 : if (block16.is_used()) {
571 : compiler::TNode<Context> tmp164;
572 : compiler::TNode<Object> tmp165;
573 : compiler::TNode<RawPtrT> tmp166;
574 : compiler::TNode<RawPtrT> tmp167;
575 : compiler::TNode<IntPtrT> tmp168;
576 : compiler::TNode<JSReceiver> tmp169;
577 : compiler::TNode<Number> tmp170;
578 : compiler::TNode<Smi> tmp171;
579 : compiler::TNode<Number> tmp172;
580 : compiler::TNode<Smi> tmp173;
581 : ca_.Bind(&block16, &tmp164, &tmp165, &tmp166, &tmp167, &tmp168, &tmp169, &tmp170, &tmp171, &tmp172, &tmp173);
582 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 79);
583 : compiler::TNode<IntPtrT> tmp174;
584 : USE(tmp174);
585 168 : tmp174 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp173}));
586 : compiler::TNode<Object> tmp175;
587 : USE(tmp175);
588 112 : tmp175 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp166}, compiler::TNode<RawPtrT>{tmp167}, compiler::TNode<IntPtrT>{tmp168}}, compiler::TNode<IntPtrT>{tmp174}));
589 112 : CodeStubAssembler(state_).CallBuiltin(Builtins::kSetProperty, tmp164, tmp169, tmp173, tmp175);
590 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 82);
591 : compiler::TNode<Smi> tmp177;
592 : USE(tmp177);
593 168 : tmp177 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
594 : compiler::TNode<Smi> tmp178;
595 : USE(tmp178);
596 112 : tmp178 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiAdd(compiler::TNode<Smi>{tmp173}, compiler::TNode<Smi>{tmp177}));
597 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 77);
598 : ca_.Goto(&block18, tmp164, tmp165, tmp166, tmp167, tmp168, tmp169, tmp170, tmp171, tmp172, tmp178);
599 : }
600 :
601 56 : if (block17.is_used()) {
602 : compiler::TNode<Context> tmp179;
603 : compiler::TNode<Object> tmp180;
604 : compiler::TNode<RawPtrT> tmp181;
605 : compiler::TNode<RawPtrT> tmp182;
606 : compiler::TNode<IntPtrT> tmp183;
607 : compiler::TNode<JSReceiver> tmp184;
608 : compiler::TNode<Number> tmp185;
609 : compiler::TNode<Smi> tmp186;
610 : compiler::TNode<Number> tmp187;
611 : compiler::TNode<Smi> tmp188;
612 : ca_.Bind(&block17, &tmp179, &tmp180, &tmp181, &tmp182, &tmp183, &tmp184, &tmp185, &tmp186, &tmp187, &tmp188);
613 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 35);
614 : ca_.Goto(&block3, tmp179, tmp180, tmp181, tmp182, tmp183, tmp184, tmp185, tmp186);
615 : }
616 :
617 56 : if (block3.is_used()) {
618 : compiler::TNode<Context> tmp189;
619 : compiler::TNode<Object> tmp190;
620 : compiler::TNode<RawPtrT> tmp191;
621 : compiler::TNode<RawPtrT> tmp192;
622 : compiler::TNode<IntPtrT> tmp193;
623 : compiler::TNode<JSReceiver> tmp194;
624 : compiler::TNode<Number> tmp195;
625 : compiler::TNode<Smi> tmp196;
626 : ca_.Bind(&block3, &tmp189, &tmp190, &tmp191, &tmp192, &tmp193, &tmp194, &tmp195, &tmp196);
627 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 87);
628 : compiler::TNode<Number> tmp197;
629 : USE(tmp197);
630 168 : tmp197 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp195}, compiler::TNode<Number>{tmp196}));
631 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 88);
632 : compiler::TNode<String> tmp198;
633 : USE(tmp198);
634 168 : tmp198 = BaseBuiltinsFromDSLAssembler(state_).kLengthString();
635 112 : CodeStubAssembler(state_).CallBuiltin(Builtins::kSetProperty, tmp189, tmp194, tmp198, tmp197);
636 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 91);
637 : ca_.Goto(&block1, tmp189, tmp190, tmp191, tmp192, tmp193, tmp197);
638 : }
639 :
640 56 : if (block1.is_used()) {
641 : compiler::TNode<Context> tmp200;
642 : compiler::TNode<Object> tmp201;
643 : compiler::TNode<RawPtrT> tmp202;
644 : compiler::TNode<RawPtrT> tmp203;
645 : compiler::TNode<IntPtrT> tmp204;
646 : compiler::TNode<Number> tmp205;
647 : ca_.Bind(&block1, &tmp200, &tmp201, &tmp202, &tmp203, &tmp204, &tmp205);
648 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 23);
649 : ca_.Goto(&block19, tmp200, tmp201, tmp202, tmp203, tmp204, tmp205);
650 : }
651 :
652 : compiler::TNode<Context> tmp206;
653 : compiler::TNode<Object> tmp207;
654 : compiler::TNode<RawPtrT> tmp208;
655 : compiler::TNode<RawPtrT> tmp209;
656 : compiler::TNode<IntPtrT> tmp210;
657 : compiler::TNode<Number> tmp211;
658 : ca_.Bind(&block19, &tmp206, &tmp207, &tmp208, &tmp209, &tmp210, &tmp211);
659 112 : return compiler::TNode<Number>{tmp211};
660 : }
661 :
662 224 : TF_BUILTIN(ArrayPrototypeUnshift, CodeStubAssembler) {
663 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
664 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
665 : USE(parameter0);
666 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
667 56 : TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(argc));
668 56 : TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer());
669 56 : BaseBuiltinsFromDSLAssembler::Arguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length));
670 : CodeStubArguments arguments(this, torque_arguments);
671 56 : TNode<Object> parameter1 = arguments.GetReceiver();
672 : USE(parameter1);
673 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
674 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Context, Object, RawPtrT, RawPtrT, IntPtrT> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
675 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
676 : ca_.Goto(&block0, parameter0, parameter1, torque_arguments.frame, torque_arguments.base, torque_arguments.length);
677 :
678 56 : if (block0.is_used()) {
679 : compiler::TNode<Context> tmp0;
680 : compiler::TNode<Object> tmp1;
681 : compiler::TNode<RawPtrT> tmp2;
682 : compiler::TNode<RawPtrT> tmp3;
683 : compiler::TNode<IntPtrT> tmp4;
684 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
685 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 98);
686 56 : compiler::CodeAssemblerLabel label0(&ca_);
687 168 : ArrayUnshiftBuiltinsFromDSLAssembler(state_).TryFastArrayUnshift(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp2}, compiler::TNode<RawPtrT>{tmp3}, compiler::TNode<IntPtrT>{tmp4}}, &label0);
688 56 : if (label0.is_used()) {
689 56 : ca_.Bind(&label0);
690 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp4, tmp0, tmp1, tmp2, tmp3, tmp4);
691 : }
692 : }
693 :
694 56 : if (block3.is_used()) {
695 : compiler::TNode<Context> tmp5;
696 : compiler::TNode<Object> tmp6;
697 : compiler::TNode<RawPtrT> tmp7;
698 : compiler::TNode<RawPtrT> tmp8;
699 : compiler::TNode<IntPtrT> tmp9;
700 : compiler::TNode<Context> tmp10;
701 : compiler::TNode<Object> tmp11;
702 : compiler::TNode<RawPtrT> tmp12;
703 : compiler::TNode<RawPtrT> tmp13;
704 : compiler::TNode<IntPtrT> tmp14;
705 : ca_.Bind(&block3, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14);
706 : ca_.Goto(&block2, tmp5, tmp6, tmp7, tmp8, tmp9);
707 : }
708 :
709 56 : if (block2.is_used()) {
710 : compiler::TNode<Context> tmp15;
711 : compiler::TNode<Object> tmp16;
712 : compiler::TNode<RawPtrT> tmp17;
713 : compiler::TNode<RawPtrT> tmp18;
714 : compiler::TNode<IntPtrT> tmp19;
715 : ca_.Bind(&block2, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19);
716 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 101);
717 : compiler::TNode<Number> tmp20;
718 : USE(tmp20);
719 168 : tmp20 = ca_.UncheckedCast<Number>(ArrayUnshiftBuiltinsFromDSLAssembler(state_).GenericArrayUnshift(compiler::TNode<Context>{tmp15}, compiler::TNode<Object>{tmp16}, BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp17}, compiler::TNode<RawPtrT>{tmp18}, compiler::TNode<IntPtrT>{tmp19}}));
720 56 : arguments.PopAndReturn(tmp20);
721 : }
722 56 : }
723 :
724 : } // namespace internal
725 59456 : } // namespace v8
726 :
|