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 224 : TF_BUILTIN(ArrayOf, CodeStubAssembler) {
84 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
85 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
86 : USE(parameter0);
87 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
88 56 : TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(argc));
89 56 : TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer());
90 56 : BaseBuiltinsFromDSLAssembler::Arguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length));
91 : CodeStubArguments arguments(this, torque_arguments);
92 56 : TNode<Object> parameter1 = arguments.GetReceiver();
93 : USE(parameter1);
94 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
95 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Object, Object> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
96 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Object, Object, JSReceiver> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
97 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
98 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Object> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
99 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Smi> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
100 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
101 : compiler::CodeAssemblerParameterizedLabel<Context, Object, RawPtrT, RawPtrT, IntPtrT, Smi, RawPtrT, RawPtrT, IntPtrT, Object, JSReceiver, Smi> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
102 : ca_.Goto(&block0, parameter0, parameter1, torque_arguments.frame, torque_arguments.base, torque_arguments.length);
103 :
104 56 : if (block0.is_used()) {
105 : compiler::TNode<Context> tmp0;
106 : compiler::TNode<Object> tmp1;
107 : compiler::TNode<RawPtrT> tmp2;
108 : compiler::TNode<RawPtrT> tmp3;
109 : compiler::TNode<IntPtrT> tmp4;
110 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3, &tmp4);
111 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 10);
112 : compiler::TNode<Smi> tmp5;
113 : USE(tmp5);
114 112 : tmp5 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).Convert5ATSmi8ATintptr(compiler::TNode<IntPtrT>{tmp4}));
115 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 13);
116 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 16);
117 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 18);
118 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 21);
119 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 22);
120 : compiler::TNode<JSReceiver> tmp6;
121 : USE(tmp6);
122 56 : compiler::CodeAssemblerLabel label0(&ca_);
123 112 : tmp6 = BaseBuiltinsFromDSLAssembler(state_).Cast13ATConstructor(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, &label0);
124 : ca_.Goto(&block3, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp2, tmp3, tmp4, tmp1, ca_.Uninitialized<JSReceiver>(), tmp1, tmp1, tmp6);
125 56 : if (label0.is_used()) {
126 56 : ca_.Bind(&label0);
127 : ca_.Goto(&block4, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp2, tmp3, tmp4, tmp1, ca_.Uninitialized<JSReceiver>(), tmp1, tmp1);
128 : }
129 : }
130 :
131 56 : if (block4.is_used()) {
132 : compiler::TNode<Context> tmp7;
133 : compiler::TNode<Object> tmp8;
134 : compiler::TNode<RawPtrT> tmp9;
135 : compiler::TNode<RawPtrT> tmp10;
136 : compiler::TNode<IntPtrT> tmp11;
137 : compiler::TNode<Smi> tmp12;
138 : compiler::TNode<RawPtrT> tmp13;
139 : compiler::TNode<RawPtrT> tmp14;
140 : compiler::TNode<IntPtrT> tmp15;
141 : compiler::TNode<Object> tmp16;
142 : compiler::TNode<JSReceiver> tmp17;
143 : compiler::TNode<Object> tmp18;
144 : compiler::TNode<Object> tmp19;
145 : ca_.Bind(&block4, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19);
146 : ca_.Goto(&block2, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18);
147 : }
148 :
149 56 : if (block3.is_used()) {
150 : compiler::TNode<Context> tmp20;
151 : compiler::TNode<Object> tmp21;
152 : compiler::TNode<RawPtrT> tmp22;
153 : compiler::TNode<RawPtrT> tmp23;
154 : compiler::TNode<IntPtrT> tmp24;
155 : compiler::TNode<Smi> tmp25;
156 : compiler::TNode<RawPtrT> tmp26;
157 : compiler::TNode<RawPtrT> tmp27;
158 : compiler::TNode<IntPtrT> tmp28;
159 : compiler::TNode<Object> tmp29;
160 : compiler::TNode<JSReceiver> tmp30;
161 : compiler::TNode<Object> tmp31;
162 : compiler::TNode<Object> tmp32;
163 : compiler::TNode<JSReceiver> tmp33;
164 : ca_.Bind(&block3, &tmp20, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26, &tmp27, &tmp28, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33);
165 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 24);
166 : compiler::TNode<JSReceiver> tmp34;
167 : USE(tmp34);
168 112 : tmp34 = ca_.UncheckedCast<JSReceiver>(CodeStubAssembler(state_).Construct(compiler::TNode<Context>{tmp20}, compiler::TNode<JSReceiver>{tmp33}, compiler::TNode<Object>{tmp25}));
169 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 22);
170 : ca_.Goto(&block1, tmp20, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29, tmp34, tmp31);
171 : }
172 :
173 56 : if (block2.is_used()) {
174 : compiler::TNode<Context> tmp35;
175 : compiler::TNode<Object> tmp36;
176 : compiler::TNode<RawPtrT> tmp37;
177 : compiler::TNode<RawPtrT> tmp38;
178 : compiler::TNode<IntPtrT> tmp39;
179 : compiler::TNode<Smi> tmp40;
180 : compiler::TNode<RawPtrT> tmp41;
181 : compiler::TNode<RawPtrT> tmp42;
182 : compiler::TNode<IntPtrT> tmp43;
183 : compiler::TNode<Object> tmp44;
184 : compiler::TNode<JSReceiver> tmp45;
185 : compiler::TNode<Object> tmp46;
186 : ca_.Bind(&block2, &tmp35, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40, &tmp41, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46);
187 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 26);
188 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 28);
189 : compiler::TNode<JSArray> tmp47;
190 : USE(tmp47);
191 112 : tmp47 = ca_.UncheckedCast<JSArray>(CodeStubAssembler(state_).ArrayCreate(compiler::TNode<Context>{tmp35}, compiler::TNode<Number>{tmp40}));
192 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 22);
193 : ca_.Goto(&block1, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp47, tmp46);
194 : }
195 :
196 56 : if (block1.is_used()) {
197 : compiler::TNode<Context> tmp48;
198 : compiler::TNode<Object> tmp49;
199 : compiler::TNode<RawPtrT> tmp50;
200 : compiler::TNode<RawPtrT> tmp51;
201 : compiler::TNode<IntPtrT> tmp52;
202 : compiler::TNode<Smi> tmp53;
203 : compiler::TNode<RawPtrT> tmp54;
204 : compiler::TNode<RawPtrT> tmp55;
205 : compiler::TNode<IntPtrT> tmp56;
206 : compiler::TNode<Object> tmp57;
207 : compiler::TNode<JSReceiver> tmp58;
208 : compiler::TNode<Object> tmp59;
209 : ca_.Bind(&block1, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58, &tmp59);
210 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 21);
211 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 33);
212 : compiler::TNode<Smi> tmp60;
213 : USE(tmp60);
214 112 : tmp60 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
215 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 36);
216 : ca_.Goto(&block7, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58, tmp60);
217 : }
218 :
219 56 : if (block7.is_used()) {
220 : compiler::TNode<Context> tmp61;
221 : compiler::TNode<Object> tmp62;
222 : compiler::TNode<RawPtrT> tmp63;
223 : compiler::TNode<RawPtrT> tmp64;
224 : compiler::TNode<IntPtrT> tmp65;
225 : compiler::TNode<Smi> tmp66;
226 : compiler::TNode<RawPtrT> tmp67;
227 : compiler::TNode<RawPtrT> tmp68;
228 : compiler::TNode<IntPtrT> tmp69;
229 : compiler::TNode<Object> tmp70;
230 : compiler::TNode<JSReceiver> tmp71;
231 : compiler::TNode<Smi> tmp72;
232 : ca_.Bind(&block7, &tmp61, &tmp62, &tmp63, &tmp64, &tmp65, &tmp66, &tmp67, &tmp68, &tmp69, &tmp70, &tmp71, &tmp72);
233 : compiler::TNode<BoolT> tmp73;
234 : USE(tmp73);
235 112 : tmp73 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiLessThan(compiler::TNode<Smi>{tmp72}, compiler::TNode<Smi>{tmp66}));
236 56 : ca_.Branch(tmp73, &block5, &block6, tmp61, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72);
237 : }
238 :
239 56 : if (block5.is_used()) {
240 : compiler::TNode<Context> tmp74;
241 : compiler::TNode<Object> tmp75;
242 : compiler::TNode<RawPtrT> tmp76;
243 : compiler::TNode<RawPtrT> tmp77;
244 : compiler::TNode<IntPtrT> tmp78;
245 : compiler::TNode<Smi> tmp79;
246 : compiler::TNode<RawPtrT> tmp80;
247 : compiler::TNode<RawPtrT> tmp81;
248 : compiler::TNode<IntPtrT> tmp82;
249 : compiler::TNode<Object> tmp83;
250 : compiler::TNode<JSReceiver> tmp84;
251 : compiler::TNode<Smi> tmp85;
252 : ca_.Bind(&block5, &tmp74, &tmp75, &tmp76, &tmp77, &tmp78, &tmp79, &tmp80, &tmp81, &tmp82, &tmp83, &tmp84, &tmp85);
253 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 38);
254 : compiler::TNode<IntPtrT> tmp86;
255 : USE(tmp86);
256 112 : tmp86 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp85}));
257 : compiler::TNode<Object> tmp87;
258 : USE(tmp87);
259 112 : tmp87 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(BaseBuiltinsFromDSLAssembler::Arguments{compiler::TNode<RawPtrT>{tmp80}, compiler::TNode<RawPtrT>{tmp81}, compiler::TNode<IntPtrT>{tmp82}}, compiler::TNode<IntPtrT>{tmp86}));
260 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 42);
261 : compiler::TNode<Object> tmp88;
262 112 : tmp88 = CodeStubAssembler(state_).CallBuiltin(Builtins::kFastCreateDataProperty, tmp74, tmp84, tmp85, tmp87);
263 : USE(tmp88);
264 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 45);
265 : compiler::TNode<Smi> tmp89;
266 : USE(tmp89);
267 112 : tmp89 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
268 : compiler::TNode<Smi> tmp90;
269 : USE(tmp90);
270 112 : tmp90 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiAdd(compiler::TNode<Smi>{tmp85}, compiler::TNode<Smi>{tmp89}));
271 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 36);
272 : ca_.Goto(&block7, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp90);
273 : }
274 :
275 56 : if (block6.is_used()) {
276 : compiler::TNode<Context> tmp91;
277 : compiler::TNode<Object> tmp92;
278 : compiler::TNode<RawPtrT> tmp93;
279 : compiler::TNode<RawPtrT> tmp94;
280 : compiler::TNode<IntPtrT> tmp95;
281 : compiler::TNode<Smi> tmp96;
282 : compiler::TNode<RawPtrT> tmp97;
283 : compiler::TNode<RawPtrT> tmp98;
284 : compiler::TNode<IntPtrT> tmp99;
285 : compiler::TNode<Object> tmp100;
286 : compiler::TNode<JSReceiver> tmp101;
287 : compiler::TNode<Smi> tmp102;
288 : ca_.Bind(&block6, &tmp91, &tmp92, &tmp93, &tmp94, &tmp95, &tmp96, &tmp97, &tmp98, &tmp99, &tmp100, &tmp101, &tmp102);
289 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 49);
290 112 : CodeStubAssembler(state_).SetPropertyLength(compiler::TNode<Context>{tmp91}, compiler::TNode<Object>{tmp101}, compiler::TNode<Number>{tmp96});
291 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 52);
292 56 : arguments.PopAndReturn(tmp101);
293 : }
294 56 : }
295 :
296 : } // namespace internal
297 59456 : } // namespace v8
298 :
|