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/builtins/builtins-array-gen.h"
10 : #include "src/builtins/builtins-collections-gen.h"
11 : #include "src/builtins/builtins-data-view-gen.h"
12 : #include "src/builtins/builtins-iterator-gen.h"
13 : #include "src/builtins/builtins-regexp-gen.h"
14 : #include "src/builtins/builtins-typed-array-gen.h"
15 : #include "src/builtins/builtins-constructor-gen.h"
16 : #include "torque-generated/builtins-base-from-dsl-gen.h"
17 : #include "torque-generated/builtins-arguments-from-dsl-gen.h"
18 : #include "torque-generated/builtins-array-from-dsl-gen.h"
19 : #include "torque-generated/builtins-array-copywithin-from-dsl-gen.h"
20 : #include "torque-generated/builtins-array-filter-from-dsl-gen.h"
21 : #include "torque-generated/builtins-array-foreach-from-dsl-gen.h"
22 : #include "torque-generated/builtins-array-join-from-dsl-gen.h"
23 : #include "torque-generated/builtins-array-lastindexof-from-dsl-gen.h"
24 : #include "torque-generated/builtins-array-of-from-dsl-gen.h"
25 : #include "torque-generated/builtins-array-map-from-dsl-gen.h"
26 : #include "torque-generated/builtins-array-reverse-from-dsl-gen.h"
27 : #include "torque-generated/builtins-array-slice-from-dsl-gen.h"
28 : #include "torque-generated/builtins-array-splice-from-dsl-gen.h"
29 : #include "torque-generated/builtins-array-unshift-from-dsl-gen.h"
30 : #include "torque-generated/builtins-collections-from-dsl-gen.h"
31 : #include "torque-generated/builtins-data-view-from-dsl-gen.h"
32 : #include "torque-generated/builtins-extras-utils-from-dsl-gen.h"
33 : #include "torque-generated/builtins-object-from-dsl-gen.h"
34 : #include "torque-generated/builtins-iterator-from-dsl-gen.h"
35 : #include "torque-generated/builtins-string-from-dsl-gen.h"
36 : #include "torque-generated/builtins-typed-array-from-dsl-gen.h"
37 : #include "torque-generated/builtins-typed-array-createtypedarray-from-dsl-gen.h"
38 : #include "torque-generated/builtins-test-from-dsl-gen.h"
39 :
40 : namespace v8 {
41 : namespace internal {
42 :
43 336 : TF_BUILTIN(ArrayOf, CodeStubAssembler) {
44 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
45 56 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
46 56 : USE(parameter0);
47 56 : Node* argc = Parameter(Descriptor::kJSActualArgumentsCount);
48 56 : CodeStubArguments arguments_impl(this, ChangeInt32ToIntPtr(argc));
49 56 : TNode<Object> parameter1 = arguments_impl.GetReceiver();
50 56 : auto arguments = &arguments_impl;
51 56 : USE(arguments);
52 56 : USE(parameter1);
53 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
54 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Object, Object> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
55 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Object, Object, JSReceiver> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
56 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
57 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Object> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
58 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Smi> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
59 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Smi> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
60 112 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Smi, Object, JSReceiver, Smi> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
61 56 : ca_.Goto(&block0, parameter0, parameter1);
62 :
63 56 : if (block0.is_used()) {
64 56 : compiler::TNode<Context> tmp0;
65 56 : compiler::TNode<Object> tmp1;
66 56 : ca_.Bind(&block0, &tmp0, &tmp1);
67 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 10);
68 56 : compiler::TNode<IntPtrT> tmp2;
69 56 : USE(tmp2);
70 56 : tmp2 = ca_.UncheckedCast<IntPtrT>(CodeStubAssembler(state_).GetArgumentsLength(arguments));
71 56 : compiler::TNode<Smi> tmp3;
72 56 : USE(tmp3);
73 56 : tmp3 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).Convert5ATSmi8ATintptr(compiler::TNode<IntPtrT>{tmp2}));
74 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 16);
75 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 18);
76 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 21);
77 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 22);
78 56 : compiler::TNode<JSReceiver> tmp4;
79 56 : USE(tmp4);
80 56 : compiler::CodeAssemblerLabel label0(&ca_);
81 56 : tmp4 = BaseBuiltinsFromDSLAssembler(state_).Cast13ATConstructor(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, &label0);
82 56 : ca_.Goto(&block3, tmp0, tmp1, tmp3, tmp1, ca_.Uninitialized<JSReceiver>(), tmp1, tmp1, tmp4);
83 56 : if (label0.is_used()) {
84 56 : ca_.Bind(&label0);
85 56 : ca_.Goto(&block4, tmp0, tmp1, tmp3, tmp1, ca_.Uninitialized<JSReceiver>(), tmp1, tmp1);
86 56 : }
87 : }
88 :
89 56 : if (block4.is_used()) {
90 56 : compiler::TNode<Context> tmp5;
91 56 : compiler::TNode<Object> tmp6;
92 56 : compiler::TNode<Smi> tmp7;
93 56 : compiler::TNode<Object> tmp8;
94 56 : compiler::TNode<JSReceiver> tmp9;
95 56 : compiler::TNode<Object> tmp10;
96 56 : compiler::TNode<Object> tmp11;
97 56 : ca_.Bind(&block4, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9, &tmp10, &tmp11);
98 56 : ca_.Goto(&block2, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10);
99 : }
100 :
101 56 : if (block3.is_used()) {
102 56 : compiler::TNode<Context> tmp12;
103 56 : compiler::TNode<Object> tmp13;
104 56 : compiler::TNode<Smi> tmp14;
105 56 : compiler::TNode<Object> tmp15;
106 56 : compiler::TNode<JSReceiver> tmp16;
107 56 : compiler::TNode<Object> tmp17;
108 56 : compiler::TNode<Object> tmp18;
109 56 : compiler::TNode<JSReceiver> tmp19;
110 56 : ca_.Bind(&block3, &tmp12, &tmp13, &tmp14, &tmp15, &tmp16, &tmp17, &tmp18, &tmp19);
111 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 24);
112 56 : compiler::TNode<JSReceiver> tmp20;
113 56 : USE(tmp20);
114 56 : tmp20 = ca_.UncheckedCast<JSReceiver>(CodeStubAssembler(state_).Construct(compiler::TNode<Context>{tmp12}, compiler::TNode<JSReceiver>{tmp19}, compiler::TNode<Object>{tmp14}));
115 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 22);
116 56 : ca_.Goto(&block1, tmp12, tmp13, tmp14, tmp15, tmp20, tmp17);
117 : }
118 :
119 56 : if (block2.is_used()) {
120 56 : compiler::TNode<Context> tmp21;
121 56 : compiler::TNode<Object> tmp22;
122 56 : compiler::TNode<Smi> tmp23;
123 56 : compiler::TNode<Object> tmp24;
124 56 : compiler::TNode<JSReceiver> tmp25;
125 56 : compiler::TNode<Object> tmp26;
126 56 : ca_.Bind(&block2, &tmp21, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26);
127 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 26);
128 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 28);
129 56 : compiler::TNode<JSArray> tmp27;
130 56 : USE(tmp27);
131 56 : tmp27 = ca_.UncheckedCast<JSArray>(CodeStubAssembler(state_).ArrayCreate(compiler::TNode<Context>{tmp21}, compiler::TNode<Number>{tmp23}));
132 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 22);
133 56 : ca_.Goto(&block1, tmp21, tmp22, tmp23, tmp24, tmp27, tmp26);
134 : }
135 :
136 56 : if (block1.is_used()) {
137 56 : compiler::TNode<Context> tmp28;
138 56 : compiler::TNode<Object> tmp29;
139 56 : compiler::TNode<Smi> tmp30;
140 56 : compiler::TNode<Object> tmp31;
141 56 : compiler::TNode<JSReceiver> tmp32;
142 56 : compiler::TNode<Object> tmp33;
143 56 : ca_.Bind(&block1, &tmp28, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33);
144 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 21);
145 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 33);
146 56 : compiler::TNode<Smi> tmp34;
147 56 : USE(tmp34);
148 56 : tmp34 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(0));
149 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 36);
150 56 : ca_.Goto(&block7, tmp28, tmp29, tmp30, tmp31, tmp32, tmp34);
151 : }
152 :
153 56 : if (block7.is_used()) {
154 56 : compiler::TNode<Context> tmp35;
155 56 : compiler::TNode<Object> tmp36;
156 56 : compiler::TNode<Smi> tmp37;
157 56 : compiler::TNode<Object> tmp38;
158 56 : compiler::TNode<JSReceiver> tmp39;
159 56 : compiler::TNode<Smi> tmp40;
160 56 : ca_.Bind(&block7, &tmp35, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40);
161 56 : compiler::TNode<BoolT> tmp41;
162 56 : USE(tmp41);
163 56 : tmp41 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).SmiLessThan(compiler::TNode<Smi>{tmp40}, compiler::TNode<Smi>{tmp37}));
164 56 : ca_.Branch(tmp41, &block5, &block6, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40);
165 : }
166 :
167 56 : if (block5.is_used()) {
168 56 : compiler::TNode<Context> tmp42;
169 56 : compiler::TNode<Object> tmp43;
170 56 : compiler::TNode<Smi> tmp44;
171 56 : compiler::TNode<Object> tmp45;
172 56 : compiler::TNode<JSReceiver> tmp46;
173 56 : compiler::TNode<Smi> tmp47;
174 56 : ca_.Bind(&block5, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47);
175 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 38);
176 56 : compiler::TNode<IntPtrT> tmp48;
177 56 : USE(tmp48);
178 56 : tmp48 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).Convert8ATintptr5ATSmi(compiler::TNode<Smi>{tmp47}));
179 56 : compiler::TNode<Object> tmp49;
180 56 : USE(tmp49);
181 56 : tmp49 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).GetArgumentValue(arguments, compiler::TNode<IntPtrT>{tmp48}));
182 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 42);
183 56 : CodeStubAssembler(state_).CallRuntime(Runtime::kCreateDataProperty, tmp42, tmp46, tmp47, tmp49);
184 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 45);
185 56 : compiler::TNode<Smi> tmp51;
186 56 : USE(tmp51);
187 56 : tmp51 = ca_.UncheckedCast<Smi>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr5ATSmi17ATconstexpr_int31(1));
188 56 : compiler::TNode<Smi> tmp52;
189 56 : USE(tmp52);
190 56 : tmp52 = ca_.UncheckedCast<Smi>(CodeStubAssembler(state_).SmiAdd(compiler::TNode<Smi>{tmp47}, compiler::TNode<Smi>{tmp51}));
191 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 36);
192 56 : ca_.Goto(&block7, tmp42, tmp43, tmp44, tmp45, tmp46, tmp52);
193 : }
194 :
195 56 : if (block6.is_used()) {
196 56 : compiler::TNode<Context> tmp53;
197 56 : compiler::TNode<Object> tmp54;
198 56 : compiler::TNode<Smi> tmp55;
199 56 : compiler::TNode<Object> tmp56;
200 56 : compiler::TNode<JSReceiver> tmp57;
201 56 : compiler::TNode<Smi> tmp58;
202 56 : ca_.Bind(&block6, &tmp53, &tmp54, &tmp55, &tmp56, &tmp57, &tmp58);
203 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 49);
204 56 : CodeStubAssembler(state_).SetPropertyLength(compiler::TNode<Context>{tmp53}, compiler::TNode<Object>{tmp57}, compiler::TNode<Number>{tmp55});
205 56 : ca_.SetSourcePosition("../../src/builtins/array-of.tq", 52);
206 56 : arguments->PopAndReturn(tmp57);
207 56 : }
208 56 : }
209 :
210 : } // namespace internal
211 86739 : } // namespace v8
212 :
|