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