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/js-generator.h"
10 : #include "src/objects/js-promise.h"
11 : #include "src/objects/js-regexp-string-iterator.h"
12 : #include "src/objects/module.h"
13 : #include "src/objects/stack-frame-info.h"
14 : #include "src/builtins/builtins-array-gen.h"
15 : #include "src/builtins/builtins-collections-gen.h"
16 : #include "src/builtins/builtins-data-view-gen.h"
17 : #include "src/builtins/builtins-iterator-gen.h"
18 : #include "src/builtins/builtins-proxy-gen.h"
19 : #include "src/builtins/builtins-regexp-gen.h"
20 : #include "src/builtins/builtins-typed-array-gen.h"
21 : #include "src/builtins/builtins-constructor-gen.h"
22 : #include "src/builtins/builtins-typed-array-gen.h"
23 : #include "src/builtins/builtins-typed-array-gen.h"
24 : #include "src/builtins/builtins-typed-array-gen.h"
25 : #include "src/builtins/builtins-typed-array-gen.h"
26 : #include "src/builtins/builtins-typed-array-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 "torque-generated/builtins-base-from-dsl-gen.h"
31 : #include "torque-generated/builtins-growable-fixed-array-from-dsl-gen.h"
32 : #include "torque-generated/builtins-arguments-from-dsl-gen.h"
33 : #include "torque-generated/builtins-array-from-dsl-gen.h"
34 : #include "torque-generated/builtins-array-copywithin-from-dsl-gen.h"
35 : #include "torque-generated/builtins-array-filter-from-dsl-gen.h"
36 : #include "torque-generated/builtins-array-find-from-dsl-gen.h"
37 : #include "torque-generated/builtins-array-findindex-from-dsl-gen.h"
38 : #include "torque-generated/builtins-array-foreach-from-dsl-gen.h"
39 : #include "torque-generated/builtins-array-join-from-dsl-gen.h"
40 : #include "torque-generated/builtins-array-lastindexof-from-dsl-gen.h"
41 : #include "torque-generated/builtins-array-of-from-dsl-gen.h"
42 : #include "torque-generated/builtins-array-map-from-dsl-gen.h"
43 : #include "torque-generated/builtins-array-reverse-from-dsl-gen.h"
44 : #include "torque-generated/builtins-array-shift-from-dsl-gen.h"
45 : #include "torque-generated/builtins-array-slice-from-dsl-gen.h"
46 : #include "torque-generated/builtins-array-splice-from-dsl-gen.h"
47 : #include "torque-generated/builtins-array-unshift-from-dsl-gen.h"
48 : #include "torque-generated/builtins-collections-from-dsl-gen.h"
49 : #include "torque-generated/builtins-data-view-from-dsl-gen.h"
50 : #include "torque-generated/builtins-extras-utils-from-dsl-gen.h"
51 : #include "torque-generated/builtins-iterator-from-dsl-gen.h"
52 : #include "torque-generated/builtins-object-from-dsl-gen.h"
53 : #include "torque-generated/builtins-proxy-from-dsl-gen.h"
54 : #include "torque-generated/builtins-string-from-dsl-gen.h"
55 : #include "torque-generated/builtins-string-html-from-dsl-gen.h"
56 : #include "torque-generated/builtins-string-repeat-from-dsl-gen.h"
57 : #include "torque-generated/builtins-typed-array-from-dsl-gen.h"
58 : #include "torque-generated/builtins-typed-array-createtypedarray-from-dsl-gen.h"
59 : #include "torque-generated/builtins-typed-array-every-from-dsl-gen.h"
60 : #include "torque-generated/builtins-typed-array-filter-from-dsl-gen.h"
61 : #include "torque-generated/builtins-typed-array-find-from-dsl-gen.h"
62 : #include "torque-generated/builtins-typed-array-findindex-from-dsl-gen.h"
63 : #include "torque-generated/builtins-typed-array-foreach-from-dsl-gen.h"
64 : #include "torque-generated/builtins-typed-array-reduce-from-dsl-gen.h"
65 : #include "torque-generated/builtins-typed-array-reduceright-from-dsl-gen.h"
66 : #include "torque-generated/builtins-typed-array-slice-from-dsl-gen.h"
67 : #include "torque-generated/builtins-typed-array-some-from-dsl-gen.h"
68 : #include "torque-generated/builtins-typed-array-subarray-from-dsl-gen.h"
69 : #include "torque-generated/builtins-test-from-dsl-gen.h"
70 :
71 : namespace v8 {
72 : namespace internal {
73 :
74 56 : void ArrayUnshiftBuiltinsFromDSLAssembler::TryFastArrayUnshift(compiler::TNode<Context> p_context, compiler::TNode<Object> p_receiver, CodeStubArguments* p_arguments, compiler::CodeAssemblerLabel* label_Slow) {
75 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
76 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
77 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, JSArray> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
78 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSArray, Map> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
79 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSArray, Map> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
80 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSArray, Map, Map> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
81 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSArray, Map, Map> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
82 112 : compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
83 56 : ca_.Goto(&block0, p_context, p_receiver);
84 :
85 56 : if (block0.is_used()) {
86 56 : compiler::TNode<Context> tmp0;
87 56 : compiler::TNode<Object> tmp1;
88 56 : ca_.Bind(&block0, &tmp0, &tmp1);
89 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 11);
90 56 : compiler::TNode<JSArray> tmp2;
91 56 : USE(tmp2);
92 112 : compiler::CodeAssemblerLabel label0(&ca_);
93 56 : tmp2 = BaseBuiltinsFromDSLAssembler(state_).Cast13ATFastJSArray(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, &label0);
94 56 : ca_.Goto(&block2, tmp0, tmp1, tmp1, tmp2);
95 56 : if (label0.is_used()) {
96 56 : ca_.Bind(&label0);
97 56 : ca_.Goto(&block3, tmp0, tmp1, tmp1);
98 : }
99 : }
100 :
101 56 : if (block3.is_used()) {
102 56 : compiler::TNode<Context> tmp3;
103 56 : compiler::TNode<Object> tmp4;
104 56 : compiler::TNode<Object> tmp5;
105 56 : ca_.Bind(&block3, &tmp3, &tmp4, &tmp5);
106 56 : ca_.Goto(&block1);
107 : }
108 :
109 56 : if (block2.is_used()) {
110 56 : compiler::TNode<Context> tmp6;
111 56 : compiler::TNode<Object> tmp7;
112 56 : compiler::TNode<Object> tmp8;
113 56 : compiler::TNode<JSArray> tmp9;
114 56 : ca_.Bind(&block2, &tmp6, &tmp7, &tmp8, &tmp9);
115 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 12);
116 56 : ArrayBuiltinsFromDSLAssembler(state_).EnsureWriteableFastElements(compiler::TNode<Context>{tmp6}, compiler::TNode<JSArray>{tmp9});
117 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 14);
118 56 : compiler::TNode<Map> tmp10;
119 56 : USE(tmp10);
120 56 : tmp10 = ca_.UncheckedCast<Map>(BaseBuiltinsFromDSLAssembler(state_).LoadHeapObjectMap(compiler::TNode<HeapObject>{tmp9}));
121 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 15);
122 56 : compiler::TNode<BoolT> tmp11;
123 56 : USE(tmp11);
124 56 : tmp11 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).IsExtensibleMap(compiler::TNode<Map>{tmp10}));
125 56 : compiler::TNode<BoolT> tmp12;
126 56 : USE(tmp12);
127 56 : tmp12 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).Word32BinaryNot(compiler::TNode<BoolT>{tmp11}));
128 56 : ca_.Branch(tmp12, &block4, &block5, tmp6, tmp7, tmp9, tmp10);
129 : }
130 :
131 56 : if (block4.is_used()) {
132 56 : compiler::TNode<Context> tmp13;
133 56 : compiler::TNode<Object> tmp14;
134 56 : compiler::TNode<JSArray> tmp15;
135 56 : compiler::TNode<Map> tmp16;
136 56 : ca_.Bind(&block4, &tmp13, &tmp14, &tmp15, &tmp16);
137 56 : ca_.Goto(&block1);
138 : }
139 :
140 56 : if (block5.is_used()) {
141 56 : compiler::TNode<Context> tmp17;
142 56 : compiler::TNode<Object> tmp18;
143 56 : compiler::TNode<JSArray> tmp19;
144 56 : compiler::TNode<Map> tmp20;
145 56 : ca_.Bind(&block5, &tmp17, &tmp18, &tmp19, &tmp20);
146 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 16);
147 112 : compiler::CodeAssemblerLabel label0(&ca_);
148 56 : CodeStubAssembler(state_).EnsureArrayLengthWritable(compiler::TNode<Map>{tmp20}, &label0);
149 56 : ca_.Goto(&block6, tmp17, tmp18, tmp19, tmp20, tmp20);
150 56 : if (label0.is_used()) {
151 56 : ca_.Bind(&label0);
152 56 : ca_.Goto(&block7, tmp17, tmp18, tmp19, tmp20, tmp20);
153 : }
154 : }
155 :
156 56 : if (block7.is_used()) {
157 56 : compiler::TNode<Context> tmp21;
158 56 : compiler::TNode<Object> tmp22;
159 56 : compiler::TNode<JSArray> tmp23;
160 56 : compiler::TNode<Map> tmp24;
161 56 : compiler::TNode<Map> tmp25;
162 56 : ca_.Bind(&block7, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25);
163 56 : ca_.Goto(&block1);
164 : }
165 :
166 56 : if (block6.is_used()) {
167 56 : compiler::TNode<Context> tmp26;
168 56 : compiler::TNode<Object> tmp27;
169 56 : compiler::TNode<JSArray> tmp28;
170 56 : compiler::TNode<Map> tmp29;
171 56 : compiler::TNode<Map> tmp30;
172 56 : ca_.Bind(&block6, &tmp26, &tmp27, &tmp28, &tmp29, &tmp30);
173 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 19);
174 56 : compiler::TNode<JSFunction> tmp31;
175 56 : USE(tmp31);
176 56 : tmp31 = ca_.UncheckedCast<JSFunction>(BaseBuiltinsFromDSLAssembler(state_).LoadTargetFromFrame());
177 56 : compiler::TNode<Oddball> tmp32;
178 56 : USE(tmp32);
179 56 : tmp32 = BaseBuiltinsFromDSLAssembler(state_).Undefined();
180 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 20);
181 56 : compiler::TNode<IntPtrT> tmp33;
182 56 : USE(tmp33);
183 56 : tmp33 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).GetArgumentsLength(p_arguments));
184 56 : compiler::TNode<Int32T> tmp34;
185 56 : USE(tmp34);
186 56 : tmp34 = ca_.UncheckedCast<Int32T>(BaseBuiltinsFromDSLAssembler(state_).Convert7ATint328ATintptr(compiler::TNode<IntPtrT>{tmp33}));
187 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 18);
188 56 : CodeStubAssembler(state_).TailCallBuiltin(Builtins::kArrayUnshift, tmp26, tmp31, tmp32, tmp34);
189 : }
190 :
191 56 : if (block1.is_used()) {
192 56 : ca_.Bind(&block1);
193 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 8);
194 56 : ca_.Goto(label_Slow);
195 : }
196 56 : }
197 :
198 56 : compiler::TNode<Number> ArrayUnshiftBuiltinsFromDSLAssembler::GenericArrayUnshift(compiler::TNode<Context> p_context, compiler::TNode<Object> p_receiver, CodeStubArguments* p_arguments) {
199 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
200 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
201 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
202 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
203 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
204 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
205 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
206 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Number> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
207 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Number> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
208 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
209 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Number, Number, Oddball> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
210 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Number, Number, Oddball> block14(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
211 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Number, Number, Oddball> block15(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
212 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
213 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Smi> block18(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
214 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Smi> block16(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
215 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi, Number, Smi> block17(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
216 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, JSReceiver, Number, Smi> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
217 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Number> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
218 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Number> block19(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
219 56 : ca_.Goto(&block0, p_context, p_receiver);
220 :
221 56 : if (block0.is_used()) {
222 56 : compiler::TNode<Context> tmp0;
223 56 : compiler::TNode<Object> tmp1;
224 56 : ca_.Bind(&block0, &tmp0, &tmp1);
225 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 27);
226 56 : compiler::TNode<JSReceiver> tmp2;
227 56 : USE(tmp2);
228 56 : tmp2 = ca_.UncheckedCast<JSReceiver>(CodeStubAssembler(state_).ToObject_Inline(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}));
229 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 30);
230 56 : compiler::TNode<Number> tmp3;
231 56 : USE(tmp3);
232 56 : tmp3 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).GetLengthProperty(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp2}));
233 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 33);
234 56 : compiler::TNode<IntPtrT> tmp4;
235 56 : USE(tmp4);
236 56 : tmp4 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).GetArgumentsLength(p_arguments));
237 56 : compiler::TNode<Smi> tmp5;
238 56 : USE(tmp5);
239 56 : tmp5 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).Convert5ATSmi8ATintptr(compiler::TNode<IntPtrT>{tmp4}));
240 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 36);
241 56 : compiler::TNode<Smi> tmp6;
242 56 : USE(tmp6);
243 56 : tmp6 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
244 56 : compiler::TNode<BoolT> tmp7;
245 56 : USE(tmp7);
246 56 : tmp7 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiGreaterThan(compiler::TNode<Smi>{tmp5}, compiler::TNode<Smi>{tmp6}));
247 56 : ca_.Branch(tmp7, &block2, &block3, tmp0, tmp1, tmp2, tmp3, tmp5);
248 : }
249 :
250 56 : if (block2.is_used()) {
251 56 : compiler::TNode<Context> tmp8;
252 56 : compiler::TNode<Object> tmp9;
253 56 : compiler::TNode<JSReceiver> tmp10;
254 56 : compiler::TNode<Number> tmp11;
255 56 : compiler::TNode<Smi> tmp12;
256 56 : ca_.Bind(&block2, &tmp8, &tmp9, &tmp10, &tmp11, &tmp12);
257 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 38);
258 56 : compiler::TNode<Number> tmp13;
259 56 : USE(tmp13);
260 56 : tmp13 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp11}, compiler::TNode<Number>{tmp12}));
261 56 : compiler::TNode<Number> tmp14;
262 56 : USE(tmp14);
263 56 : tmp14 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr22UT12ATHeapNumber5ATSmi19ATconstexpr_float64(kMaxSafeInteger));
264 112 : compiler::CodeAssemblerLabel label0(&ca_);
265 112 : compiler::CodeAssemblerLabel label1(&ca_);
266 56 : CodeStubAssembler(state_).BranchIfNumberGreaterThan(compiler::TNode<Number>{tmp13}, compiler::TNode<Number>{tmp14}, &label0, &label1);
267 56 : if (label0.is_used()) {
268 56 : ca_.Bind(&label0);
269 56 : ca_.Goto(&block6, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13);
270 : }
271 56 : if (label1.is_used()) {
272 56 : ca_.Bind(&label1);
273 56 : ca_.Goto(&block7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13);
274 : }
275 : }
276 :
277 56 : if (block6.is_used()) {
278 56 : compiler::TNode<Context> tmp15;
279 56 : compiler::TNode<Object> tmp16;
280 56 : compiler::TNode<JSReceiver> tmp17;
281 56 : compiler::TNode<Number> tmp18;
282 56 : compiler::TNode<Smi> tmp19;
283 56 : compiler::TNode<Number> tmp20;
284 56 : ca_.Bind(&block6, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19, &tmp20);
285 56 : ca_.Goto(&block4, tmp15, tmp16, tmp17, tmp18, tmp19);
286 : }
287 :
288 56 : if (block7.is_used()) {
289 56 : compiler::TNode<Context> tmp21;
290 56 : compiler::TNode<Object> tmp22;
291 56 : compiler::TNode<JSReceiver> tmp23;
292 56 : compiler::TNode<Number> tmp24;
293 56 : compiler::TNode<Smi> tmp25;
294 56 : compiler::TNode<Number> tmp26;
295 56 : ca_.Bind(&block7, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26);
296 56 : ca_.Goto(&block5, tmp21, tmp22, tmp23, tmp24, tmp25);
297 : }
298 :
299 56 : if (block4.is_used()) {
300 56 : compiler::TNode<Context> tmp27;
301 56 : compiler::TNode<Object> tmp28;
302 56 : compiler::TNode<JSReceiver> tmp29;
303 56 : compiler::TNode<Number> tmp30;
304 56 : compiler::TNode<Smi> tmp31;
305 56 : ca_.Bind(&block4, &tmp27, &tmp28, &tmp29, &tmp30, &tmp31);
306 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 39);
307 56 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp27}, MessageTemplate::kInvalidArrayLength);
308 : }
309 :
310 56 : if (block5.is_used()) {
311 56 : compiler::TNode<Context> tmp32;
312 56 : compiler::TNode<Object> tmp33;
313 56 : compiler::TNode<JSReceiver> tmp34;
314 56 : compiler::TNode<Number> tmp35;
315 56 : compiler::TNode<Smi> tmp36;
316 56 : ca_.Bind(&block5, &tmp32, &tmp33, &tmp34, &tmp35, &tmp36);
317 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 43);
318 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 46);
319 56 : ca_.Goto(&block10, tmp32, tmp33, tmp34, tmp35, tmp36, tmp35);
320 : }
321 :
322 56 : if (block10.is_used()) {
323 56 : compiler::TNode<Context> tmp37;
324 56 : compiler::TNode<Object> tmp38;
325 56 : compiler::TNode<JSReceiver> tmp39;
326 56 : compiler::TNode<Number> tmp40;
327 56 : compiler::TNode<Smi> tmp41;
328 56 : compiler::TNode<Number> tmp42;
329 56 : ca_.Bind(&block10, &tmp37, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42);
330 56 : compiler::TNode<Number> tmp43;
331 56 : USE(tmp43);
332 56 : tmp43 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr22UT12ATHeapNumber5ATSmi17ATconstexpr_int31(0));
333 112 : compiler::CodeAssemblerLabel label0(&ca_);
334 112 : compiler::CodeAssemblerLabel label1(&ca_);
335 56 : CodeStubAssembler(state_).BranchIfNumberGreaterThan(compiler::TNode<Number>{tmp42}, compiler::TNode<Number>{tmp43}, &label0, &label1);
336 56 : if (label0.is_used()) {
337 56 : ca_.Bind(&label0);
338 56 : ca_.Goto(&block11, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp42);
339 : }
340 56 : if (label1.is_used()) {
341 56 : ca_.Bind(&label1);
342 56 : ca_.Goto(&block12, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp42);
343 : }
344 : }
345 :
346 56 : if (block11.is_used()) {
347 56 : compiler::TNode<Context> tmp44;
348 56 : compiler::TNode<Object> tmp45;
349 56 : compiler::TNode<JSReceiver> tmp46;
350 56 : compiler::TNode<Number> tmp47;
351 56 : compiler::TNode<Smi> tmp48;
352 56 : compiler::TNode<Number> tmp49;
353 56 : compiler::TNode<Number> tmp50;
354 56 : ca_.Bind(&block11, &tmp44, &tmp45, &tmp46, &tmp47, &tmp48, &tmp49, &tmp50);
355 56 : ca_.Goto(&block8, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49);
356 : }
357 :
358 56 : if (block12.is_used()) {
359 56 : compiler::TNode<Context> tmp51;
360 56 : compiler::TNode<Object> tmp52;
361 56 : compiler::TNode<JSReceiver> tmp53;
362 56 : compiler::TNode<Number> tmp54;
363 56 : compiler::TNode<Smi> tmp55;
364 56 : compiler::TNode<Number> tmp56;
365 56 : compiler::TNode<Number> tmp57;
366 56 : ca_.Bind(&block12, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57);
367 56 : ca_.Goto(&block9, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56);
368 : }
369 :
370 56 : if (block8.is_used()) {
371 56 : compiler::TNode<Context> tmp58;
372 56 : compiler::TNode<Object> tmp59;
373 56 : compiler::TNode<JSReceiver> tmp60;
374 56 : compiler::TNode<Number> tmp61;
375 56 : compiler::TNode<Smi> tmp62;
376 56 : compiler::TNode<Number> tmp63;
377 56 : ca_.Bind(&block8, &tmp58, &tmp59, &tmp60, &tmp61, &tmp62, &tmp63);
378 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 48);
379 56 : compiler::TNode<Number> tmp64;
380 56 : USE(tmp64);
381 56 : tmp64 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr22UT12ATHeapNumber5ATSmi17ATconstexpr_int31(1));
382 56 : compiler::TNode<Number> tmp65;
383 56 : USE(tmp65);
384 56 : tmp65 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp63}, compiler::TNode<Number>{tmp64}));
385 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 51);
386 56 : compiler::TNode<Number> tmp66;
387 56 : USE(tmp66);
388 56 : tmp66 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp63}, compiler::TNode<Number>{tmp62}));
389 56 : compiler::TNode<Number> tmp67;
390 56 : USE(tmp67);
391 56 : tmp67 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr22UT12ATHeapNumber5ATSmi17ATconstexpr_int31(1));
392 56 : compiler::TNode<Number> tmp68;
393 56 : USE(tmp68);
394 56 : tmp68 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp66}, compiler::TNode<Number>{tmp67}));
395 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 54);
396 56 : compiler::TNode<Oddball> tmp69;
397 56 : tmp69 = TORQUE_CAST(CodeStubAssembler(state_).CallBuiltin(Builtins::kHasProperty, tmp58, tmp60, tmp65));
398 56 : USE(tmp69);
399 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 57);
400 56 : compiler::TNode<Oddball> tmp70;
401 56 : USE(tmp70);
402 56 : tmp70 = BaseBuiltinsFromDSLAssembler(state_).True();
403 56 : compiler::TNode<BoolT> tmp71;
404 56 : USE(tmp71);
405 56 : tmp71 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<HeapObject>{tmp69}, compiler::TNode<HeapObject>{tmp70}));
406 56 : ca_.Branch(tmp71, &block13, &block14, tmp58, tmp59, tmp60, tmp61, tmp62, tmp63, tmp65, tmp68, tmp69);
407 : }
408 :
409 56 : if (block13.is_used()) {
410 56 : compiler::TNode<Context> tmp72;
411 56 : compiler::TNode<Object> tmp73;
412 56 : compiler::TNode<JSReceiver> tmp74;
413 56 : compiler::TNode<Number> tmp75;
414 56 : compiler::TNode<Smi> tmp76;
415 56 : compiler::TNode<Number> tmp77;
416 56 : compiler::TNode<Number> tmp78;
417 56 : compiler::TNode<Number> tmp79;
418 56 : compiler::TNode<Oddball> tmp80;
419 56 : ca_.Bind(&block13, &tmp72, &tmp73, &tmp74, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80);
420 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 59);
421 56 : compiler::TNode<Object> tmp81;
422 56 : USE(tmp81);
423 56 : tmp81 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetProperty(compiler::TNode<Context>{tmp72}, compiler::TNode<Object>{tmp74}, compiler::TNode<Object>{tmp78}));
424 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 62);
425 56 : CodeStubAssembler(state_).CallBuiltin(Builtins::kSetProperty, tmp72, tmp74, tmp79, tmp81);
426 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 57);
427 56 : ca_.Goto(&block15, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80);
428 : }
429 :
430 56 : if (block14.is_used()) {
431 56 : compiler::TNode<Context> tmp83;
432 56 : compiler::TNode<Object> tmp84;
433 56 : compiler::TNode<JSReceiver> tmp85;
434 56 : compiler::TNode<Number> tmp86;
435 56 : compiler::TNode<Smi> tmp87;
436 56 : compiler::TNode<Number> tmp88;
437 56 : compiler::TNode<Number> tmp89;
438 56 : compiler::TNode<Number> tmp90;
439 56 : compiler::TNode<Oddball> tmp91;
440 56 : ca_.Bind(&block14, &tmp83, &tmp84, &tmp85, &tmp86, &tmp87, &tmp88, &tmp89, &tmp90, &tmp91);
441 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 65);
442 56 : compiler::TNode<Smi> tmp92;
443 56 : USE(tmp92);
444 56 : tmp92 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr14ATLanguageMode24ATconstexpr_LanguageMode(LanguageMode::kStrict));
445 56 : CodeStubAssembler(state_).CallBuiltin(Builtins::kDeleteProperty, tmp83, tmp85, tmp90, tmp92);
446 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 57);
447 56 : ca_.Goto(&block15, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91);
448 : }
449 :
450 56 : if (block15.is_used()) {
451 56 : compiler::TNode<Context> tmp94;
452 56 : compiler::TNode<Object> tmp95;
453 56 : compiler::TNode<JSReceiver> tmp96;
454 56 : compiler::TNode<Number> tmp97;
455 56 : compiler::TNode<Smi> tmp98;
456 56 : compiler::TNode<Number> tmp99;
457 56 : compiler::TNode<Number> tmp100;
458 56 : compiler::TNode<Number> tmp101;
459 56 : compiler::TNode<Oddball> tmp102;
460 56 : ca_.Bind(&block15, &tmp94, &tmp95, &tmp96, &tmp97, &tmp98, &tmp99, &tmp100, &tmp101, &tmp102);
461 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 69);
462 56 : compiler::TNode<Number> tmp103;
463 56 : USE(tmp103);
464 56 : tmp103 = ca_.UncheckedCast<Number>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr22UT12ATHeapNumber5ATSmi17ATconstexpr_int31(1));
465 56 : compiler::TNode<Number> tmp104;
466 56 : USE(tmp104);
467 56 : tmp104 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberSub(compiler::TNode<Number>{tmp99}, compiler::TNode<Number>{tmp103}));
468 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 46);
469 56 : ca_.Goto(&block10, tmp94, tmp95, tmp96, tmp97, tmp98, tmp104);
470 : }
471 :
472 56 : if (block9.is_used()) {
473 56 : compiler::TNode<Context> tmp105;
474 56 : compiler::TNode<Object> tmp106;
475 56 : compiler::TNode<JSReceiver> tmp107;
476 56 : compiler::TNode<Number> tmp108;
477 56 : compiler::TNode<Smi> tmp109;
478 56 : compiler::TNode<Number> tmp110;
479 56 : ca_.Bind(&block9, &tmp105, &tmp106, &tmp107, &tmp108, &tmp109, &tmp110);
480 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 73);
481 56 : compiler::TNode<Smi> tmp111;
482 56 : USE(tmp111);
483 56 : tmp111 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
484 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 78);
485 56 : ca_.Goto(&block18, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111);
486 : }
487 :
488 56 : if (block18.is_used()) {
489 56 : compiler::TNode<Context> tmp112;
490 56 : compiler::TNode<Object> tmp113;
491 56 : compiler::TNode<JSReceiver> tmp114;
492 56 : compiler::TNode<Number> tmp115;
493 56 : compiler::TNode<Smi> tmp116;
494 56 : compiler::TNode<Number> tmp117;
495 56 : compiler::TNode<Smi> tmp118;
496 56 : ca_.Bind(&block18, &tmp112, &tmp113, &tmp114, &tmp115, &tmp116, &tmp117, &tmp118);
497 56 : compiler::TNode<BoolT> tmp119;
498 56 : USE(tmp119);
499 56 : tmp119 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiLessThan(compiler::TNode<Smi>{tmp118}, compiler::TNode<Smi>{tmp116}));
500 56 : ca_.Branch(tmp119, &block16, &block17, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tmp118);
501 : }
502 :
503 56 : if (block16.is_used()) {
504 56 : compiler::TNode<Context> tmp120;
505 56 : compiler::TNode<Object> tmp121;
506 56 : compiler::TNode<JSReceiver> tmp122;
507 56 : compiler::TNode<Number> tmp123;
508 56 : compiler::TNode<Smi> tmp124;
509 56 : compiler::TNode<Number> tmp125;
510 56 : compiler::TNode<Smi> tmp126;
511 56 : ca_.Bind(&block16, &tmp120, &tmp121, &tmp122, &tmp123, &tmp124, &tmp125, &tmp126);
512 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 80);
513 56 : compiler::TNode<IntPtrT> tmp127;
514 56 : USE(tmp127);
515 56 : tmp127 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp126}));
516 56 : compiler::TNode<Object> tmp128;
517 56 : USE(tmp128);
518 56 : tmp128 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(p_arguments, compiler::TNode<IntPtrT>{tmp127}));
519 56 : CodeStubAssembler(state_).CallBuiltin(Builtins::kSetProperty, tmp120, tmp122, tmp126, tmp128);
520 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 83);
521 56 : compiler::TNode<Smi> tmp130;
522 56 : USE(tmp130);
523 56 : tmp130 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
524 56 : compiler::TNode<Smi> tmp131;
525 56 : USE(tmp131);
526 56 : tmp131 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiAdd(compiler::TNode<Smi>{tmp126}, compiler::TNode<Smi>{tmp130}));
527 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 78);
528 56 : ca_.Goto(&block18, tmp120, tmp121, tmp122, tmp123, tmp124, tmp125, tmp131);
529 : }
530 :
531 56 : if (block17.is_used()) {
532 56 : compiler::TNode<Context> tmp132;
533 56 : compiler::TNode<Object> tmp133;
534 56 : compiler::TNode<JSReceiver> tmp134;
535 56 : compiler::TNode<Number> tmp135;
536 56 : compiler::TNode<Smi> tmp136;
537 56 : compiler::TNode<Number> tmp137;
538 56 : compiler::TNode<Smi> tmp138;
539 56 : ca_.Bind(&block17, &tmp132, &tmp133, &tmp134, &tmp135, &tmp136, &tmp137, &tmp138);
540 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 36);
541 56 : ca_.Goto(&block3, tmp132, tmp133, tmp134, tmp135, tmp136);
542 : }
543 :
544 56 : if (block3.is_used()) {
545 56 : compiler::TNode<Context> tmp139;
546 56 : compiler::TNode<Object> tmp140;
547 56 : compiler::TNode<JSReceiver> tmp141;
548 56 : compiler::TNode<Number> tmp142;
549 56 : compiler::TNode<Smi> tmp143;
550 56 : ca_.Bind(&block3, &tmp139, &tmp140, &tmp141, &tmp142, &tmp143);
551 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 88);
552 56 : compiler::TNode<Number> tmp144;
553 56 : USE(tmp144);
554 56 : tmp144 = ca_.UncheckedCast<Number>(CodeStubAssembler(state_).NumberAdd(compiler::TNode<Number>{tmp142}, compiler::TNode<Number>{tmp143}));
555 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 89);
556 56 : compiler::TNode<String> tmp145;
557 56 : USE(tmp145);
558 56 : tmp145 = BaseBuiltinsFromDSLAssembler(state_).kLengthString();
559 56 : CodeStubAssembler(state_).CallBuiltin(Builtins::kSetProperty, tmp139, tmp141, tmp145, tmp144);
560 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 92);
561 56 : ca_.Goto(&block1, tmp139, tmp140, tmp144);
562 : }
563 :
564 56 : if (block1.is_used()) {
565 56 : compiler::TNode<Context> tmp147;
566 56 : compiler::TNode<Object> tmp148;
567 56 : compiler::TNode<Number> tmp149;
568 56 : ca_.Bind(&block1, &tmp147, &tmp148, &tmp149);
569 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 23);
570 56 : ca_.Goto(&block19, tmp147, tmp148, tmp149);
571 : }
572 :
573 56 : compiler::TNode<Context> tmp150;
574 56 : compiler::TNode<Object> tmp151;
575 56 : compiler::TNode<Number> tmp152;
576 56 : ca_.Bind(&block19, &tmp150, &tmp151, &tmp152);
577 112 : return compiler::TNode<Number>{tmp152};
578 : }
579 :
580 336 : TF_BUILTIN(ArrayPrototypeUnshift, CodeStubAssembler) {
581 112 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
582 56 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
583 56 : USE(parameter0);
584 56 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
585 56 : CodeStubArguments arguments_impl(this, ChangeInt32ToIntPtr(argc));
586 56 : TNode<Object> parameter1 = arguments_impl.GetReceiver();
587 56 : auto arguments = &arguments_impl;
588 56 : USE(arguments);
589 56 : USE(parameter1);
590 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
591 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Context, Object> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
592 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
593 56 : ca_.Goto(&block0, parameter0, parameter1);
594 :
595 56 : if (block0.is_used()) {
596 56 : compiler::TNode<Context> tmp0;
597 56 : compiler::TNode<Object> tmp1;
598 56 : ca_.Bind(&block0, &tmp0, &tmp1);
599 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 99);
600 112 : compiler::CodeAssemblerLabel label0(&ca_);
601 56 : ArrayUnshiftBuiltinsFromDSLAssembler(state_).TryFastArrayUnshift(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, arguments, &label0);
602 56 : if (label0.is_used()) {
603 56 : ca_.Bind(&label0);
604 56 : ca_.Goto(&block3, tmp0, tmp1, tmp0, tmp1);
605 : }
606 : }
607 :
608 56 : if (block3.is_used()) {
609 56 : compiler::TNode<Context> tmp2;
610 56 : compiler::TNode<Object> tmp3;
611 56 : compiler::TNode<Context> tmp4;
612 56 : compiler::TNode<Object> tmp5;
613 56 : ca_.Bind(&block3, &tmp2, &tmp3, &tmp4, &tmp5);
614 56 : ca_.Goto(&block2, tmp2, tmp3);
615 : }
616 :
617 56 : if (block2.is_used()) {
618 56 : compiler::TNode<Context> tmp6;
619 56 : compiler::TNode<Object> tmp7;
620 56 : ca_.Bind(&block2, &tmp6, &tmp7);
621 56 : ca_.SetSourcePosition("../../src/builtins/array-unshift.tq", 102);
622 56 : compiler::TNode<Number> tmp8;
623 56 : USE(tmp8);
624 56 : tmp8 = ca_.UncheckedCast<Number>(ArrayUnshiftBuiltinsFromDSLAssembler(state_).GenericArrayUnshift(compiler::TNode<Context>{tmp6}, compiler::TNode<Object>{tmp7}, arguments));
625 56 : arguments->PopAndReturn(tmp8);
626 : }
627 56 : }
628 :
629 : } // namespace internal
630 87414 : } // namespace v8
631 :
|