Line data Source code
1 : #include "src/builtins/builtins-utils-gen.h"
2 : #include "src/builtins/builtins.h"
3 : #include "src/code-factory.h"
4 : #include "src/elements-kind.h"
5 : #include "src/heap/factory-inl.h"
6 : #include "src/objects.h"
7 : #include "src/objects/arguments.h"
8 : #include "src/objects/bigint.h"
9 : #include "src/objects/free-space.h"
10 : #include "src/objects/js-generator.h"
11 : #include "src/objects/js-promise.h"
12 : #include "src/objects/js-regexp-string-iterator.h"
13 : #include "src/objects/module.h"
14 : #include "src/objects/stack-frame-info.h"
15 : #include "src/builtins/builtins-regexp-gen.h"
16 : #include "src/builtins/builtins-array-gen.h"
17 : #include "src/builtins/builtins-collections-gen.h"
18 : #include "src/builtins/builtins-data-view-gen.h"
19 : #include "src/builtins/builtins-iterator-gen.h"
20 : #include "src/builtins/builtins-proxy-gen.h"
21 : #include "src/builtins/builtins-proxy-gen.h"
22 : #include "src/builtins/builtins-regexp-gen.h"
23 : #include "src/builtins/builtins-regexp-gen.h"
24 : #include "src/builtins/builtins-regexp-gen.h"
25 : #include "src/builtins/builtins-typed-array-gen.h"
26 : #include "src/builtins/builtins-constructor-gen.h"
27 : #include "src/builtins/builtins-typed-array-gen.h"
28 : #include "src/builtins/builtins-typed-array-gen.h"
29 : #include "src/builtins/builtins-typed-array-gen.h"
30 : #include "src/builtins/builtins-typed-array-gen.h"
31 : #include "src/builtins/builtins-typed-array-gen.h"
32 : #include "src/builtins/builtins-typed-array-gen.h"
33 : #include "src/builtins/builtins-typed-array-gen.h"
34 : #include "src/builtins/builtins-typed-array-gen.h"
35 : #include "torque-generated/builtins-base-from-dsl-gen.h"
36 : #include "torque-generated/builtins-growable-fixed-array-from-dsl-gen.h"
37 : #include "torque-generated/builtins-arguments-from-dsl-gen.h"
38 : #include "torque-generated/builtins-array-from-dsl-gen.h"
39 : #include "torque-generated/builtins-array-copywithin-from-dsl-gen.h"
40 : #include "torque-generated/builtins-array-filter-from-dsl-gen.h"
41 : #include "torque-generated/builtins-array-find-from-dsl-gen.h"
42 : #include "torque-generated/builtins-array-findindex-from-dsl-gen.h"
43 : #include "torque-generated/builtins-array-foreach-from-dsl-gen.h"
44 : #include "torque-generated/builtins-array-join-from-dsl-gen.h"
45 : #include "torque-generated/builtins-array-lastindexof-from-dsl-gen.h"
46 : #include "torque-generated/builtins-array-of-from-dsl-gen.h"
47 : #include "torque-generated/builtins-array-map-from-dsl-gen.h"
48 : #include "torque-generated/builtins-array-reverse-from-dsl-gen.h"
49 : #include "torque-generated/builtins-array-shift-from-dsl-gen.h"
50 : #include "torque-generated/builtins-array-slice-from-dsl-gen.h"
51 : #include "torque-generated/builtins-array-splice-from-dsl-gen.h"
52 : #include "torque-generated/builtins-array-unshift-from-dsl-gen.h"
53 : #include "torque-generated/builtins-collections-from-dsl-gen.h"
54 : #include "torque-generated/builtins-data-view-from-dsl-gen.h"
55 : #include "torque-generated/builtins-extras-utils-from-dsl-gen.h"
56 : #include "torque-generated/builtins-iterator-from-dsl-gen.h"
57 : #include "torque-generated/builtins-object-from-dsl-gen.h"
58 : #include "torque-generated/builtins-proxy-from-dsl-gen.h"
59 : #include "torque-generated/builtins-regexp-from-dsl-gen.h"
60 : #include "torque-generated/builtins-regexp-replace-from-dsl-gen.h"
61 : #include "torque-generated/builtins-string-from-dsl-gen.h"
62 : #include "torque-generated/builtins-string-html-from-dsl-gen.h"
63 : #include "torque-generated/builtins-string-repeat-from-dsl-gen.h"
64 : #include "torque-generated/builtins-typed-array-from-dsl-gen.h"
65 : #include "torque-generated/builtins-typed-array-createtypedarray-from-dsl-gen.h"
66 : #include "torque-generated/builtins-typed-array-every-from-dsl-gen.h"
67 : #include "torque-generated/builtins-typed-array-filter-from-dsl-gen.h"
68 : #include "torque-generated/builtins-typed-array-find-from-dsl-gen.h"
69 : #include "torque-generated/builtins-typed-array-findindex-from-dsl-gen.h"
70 : #include "torque-generated/builtins-typed-array-foreach-from-dsl-gen.h"
71 : #include "torque-generated/builtins-typed-array-reduce-from-dsl-gen.h"
72 : #include "torque-generated/builtins-typed-array-reduceright-from-dsl-gen.h"
73 : #include "torque-generated/builtins-typed-array-slice-from-dsl-gen.h"
74 : #include "torque-generated/builtins-typed-array-some-from-dsl-gen.h"
75 : #include "torque-generated/builtins-typed-array-subarray-from-dsl-gen.h"
76 : #include "torque-generated/builtins-test-from-dsl-gen.h"
77 :
78 : namespace v8 {
79 : namespace internal {
80 :
81 56 : compiler::TNode<JSProxy> ProxyBuiltinsFromDSLAssembler::AllocateProxy(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_target, compiler::TNode<JSReceiver> p_handler) {
82 56 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSReceiver> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
83 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSReceiver, JSProxy> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
84 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSReceiver, JSProxy> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
85 : ca_.Goto(&block0, p_context, p_target, p_handler);
86 :
87 56 : if (block0.is_used()) {
88 : compiler::TNode<Context> tmp0;
89 : compiler::TNode<JSReceiver> tmp1;
90 : compiler::TNode<JSReceiver> tmp2;
91 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
92 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 13);
93 : compiler::TNode<JSProxy> tmp3;
94 : USE(tmp3);
95 168 : tmp3 = ca_.UncheckedCast<JSProxy>(ProxiesCodeStubAssembler(state_).AllocateProxy(compiler::TNode<JSReceiver>{tmp1}, compiler::TNode<JSReceiver>{tmp2}, compiler::TNode<Context>{tmp0}));
96 : ca_.Goto(&block1, tmp0, tmp1, tmp2, tmp3);
97 : }
98 :
99 56 : if (block1.is_used()) {
100 : compiler::TNode<Context> tmp4;
101 : compiler::TNode<JSReceiver> tmp5;
102 : compiler::TNode<JSReceiver> tmp6;
103 : compiler::TNode<JSProxy> tmp7;
104 : ca_.Bind(&block1, &tmp4, &tmp5, &tmp6, &tmp7);
105 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 11);
106 : ca_.Goto(&block2, tmp4, tmp5, tmp6, tmp7);
107 : }
108 :
109 : compiler::TNode<Context> tmp8;
110 : compiler::TNode<JSReceiver> tmp9;
111 : compiler::TNode<JSReceiver> tmp10;
112 : compiler::TNode<JSProxy> tmp11;
113 : ca_.Bind(&block2, &tmp8, &tmp9, &tmp10, &tmp11);
114 112 : return compiler::TNode<JSProxy>{tmp11};
115 : }
116 :
117 56 : compiler::TNode<JSFunction> ProxyBuiltinsFromDSLAssembler::AllocateProxyRevokeFunction(compiler::TNode<Context> p_context, compiler::TNode<JSProxy> p_proxy) {
118 56 : compiler::CodeAssemblerParameterizedLabel<Context, JSProxy> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
119 : compiler::CodeAssemblerParameterizedLabel<Context, JSProxy, JSFunction> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
120 : compiler::CodeAssemblerParameterizedLabel<Context, JSProxy, JSFunction> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
121 : ca_.Goto(&block0, p_context, p_proxy);
122 :
123 56 : if (block0.is_used()) {
124 : compiler::TNode<Context> tmp0;
125 : compiler::TNode<JSProxy> tmp1;
126 : ca_.Bind(&block0, &tmp0, &tmp1);
127 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 20);
128 : compiler::TNode<JSFunction> tmp2;
129 : USE(tmp2);
130 168 : tmp2 = ca_.UncheckedCast<JSFunction>(ProxiesCodeStubAssembler(state_).AllocateProxyRevokeFunction(compiler::TNode<Object>{tmp1}, compiler::TNode<Object>{tmp0}));
131 : ca_.Goto(&block1, tmp0, tmp1, tmp2);
132 : }
133 :
134 56 : if (block1.is_used()) {
135 : compiler::TNode<Context> tmp3;
136 : compiler::TNode<JSProxy> tmp4;
137 : compiler::TNode<JSFunction> tmp5;
138 : ca_.Bind(&block1, &tmp3, &tmp4, &tmp5);
139 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 18);
140 : ca_.Goto(&block2, tmp3, tmp4, tmp5);
141 : }
142 :
143 : compiler::TNode<Context> tmp6;
144 : compiler::TNode<JSProxy> tmp7;
145 : compiler::TNode<JSFunction> tmp8;
146 : ca_.Bind(&block2, &tmp6, &tmp7, &tmp8);
147 112 : return compiler::TNode<JSFunction>{tmp8};
148 : }
149 :
150 112 : compiler::TNode<BoolT> ProxyBuiltinsFromDSLAssembler::IsRevokedProxy(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_o) {
151 112 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
152 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSReceiver> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
153 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSReceiver, JSProxy> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
154 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSProxy, Object> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
155 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, JSProxy, Object, JSReceiver> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
156 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
157 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, BoolT> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
158 : compiler::CodeAssemblerParameterizedLabel<Context, JSReceiver, BoolT> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
159 : ca_.Goto(&block0, p_context, p_o);
160 :
161 112 : if (block0.is_used()) {
162 : compiler::TNode<Context> tmp0;
163 : compiler::TNode<JSReceiver> tmp1;
164 : ca_.Bind(&block0, &tmp0, &tmp1);
165 112 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 25);
166 : compiler::TNode<JSProxy> tmp2;
167 : USE(tmp2);
168 112 : compiler::CodeAssemblerLabel label0(&ca_);
169 336 : tmp2 = BaseBuiltinsFromDSLAssembler(state_).Cast7JSProxy(compiler::TNode<HeapObject>{tmp1}, &label0);
170 : ca_.Goto(&block4, tmp0, tmp1, tmp1, tmp2);
171 112 : if (label0.is_used()) {
172 112 : ca_.Bind(&label0);
173 : ca_.Goto(&block5, tmp0, tmp1, tmp1);
174 : }
175 : }
176 :
177 112 : if (block5.is_used()) {
178 : compiler::TNode<Context> tmp3;
179 : compiler::TNode<JSReceiver> tmp4;
180 : compiler::TNode<JSReceiver> tmp5;
181 : ca_.Bind(&block5, &tmp3, &tmp4, &tmp5);
182 : ca_.Goto(&block3, tmp3, tmp4);
183 : }
184 :
185 112 : if (block4.is_used()) {
186 : compiler::TNode<Context> tmp6;
187 : compiler::TNode<JSReceiver> tmp7;
188 : compiler::TNode<JSReceiver> tmp8;
189 : compiler::TNode<JSProxy> tmp9;
190 : ca_.Bind(&block4, &tmp6, &tmp7, &tmp8, &tmp9);
191 112 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 27);
192 112 : compiler::TNode<IntPtrT> tmp10 = ca_.IntPtrConstant(JSProxy::kHandlerOffset);
193 : USE(tmp10);
194 224 : compiler::TNode<Object>tmp11 = CodeStubAssembler(state_).LoadReference<Object>(CodeStubAssembler::Reference{tmp9, tmp10});
195 : compiler::TNode<JSReceiver> tmp12;
196 : USE(tmp12);
197 112 : compiler::CodeAssemblerLabel label0(&ca_);
198 336 : tmp12 = BaseBuiltinsFromDSLAssembler(state_).Cast10JSReceiver(compiler::TNode<Context>{tmp6}, compiler::TNode<Object>{tmp11}, &label0);
199 : ca_.Goto(&block6, tmp6, tmp7, tmp9, tmp11, tmp12);
200 112 : if (label0.is_used()) {
201 112 : ca_.Bind(&label0);
202 : ca_.Goto(&block7, tmp6, tmp7, tmp9, tmp11);
203 : }
204 : }
205 :
206 112 : if (block7.is_used()) {
207 : compiler::TNode<Context> tmp13;
208 : compiler::TNode<JSReceiver> tmp14;
209 : compiler::TNode<JSProxy> tmp15;
210 : compiler::TNode<Object> tmp16;
211 : ca_.Bind(&block7, &tmp13, &tmp14, &tmp15, &tmp16);
212 : ca_.Goto(&block3, tmp13, tmp14);
213 : }
214 :
215 112 : if (block6.is_used()) {
216 : compiler::TNode<Context> tmp17;
217 : compiler::TNode<JSReceiver> tmp18;
218 : compiler::TNode<JSProxy> tmp19;
219 : compiler::TNode<Object> tmp20;
220 : compiler::TNode<JSReceiver> tmp21;
221 : ca_.Bind(&block6, &tmp17, &tmp18, &tmp19, &tmp20, &tmp21);
222 112 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 26);
223 112 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 28);
224 : compiler::TNode<BoolT> tmp22;
225 : USE(tmp22);
226 336 : tmp22 = ca_.UncheckedCast<BoolT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr6ATbool16ATconstexpr_bool(true));
227 : ca_.Goto(&block1, tmp17, tmp18, tmp22);
228 : }
229 :
230 112 : if (block3.is_used()) {
231 : compiler::TNode<Context> tmp23;
232 : compiler::TNode<JSReceiver> tmp24;
233 : ca_.Bind(&block3, &tmp23, &tmp24);
234 112 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 31);
235 : compiler::TNode<BoolT> tmp25;
236 : USE(tmp25);
237 336 : tmp25 = ca_.UncheckedCast<BoolT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr6ATbool16ATconstexpr_bool(false));
238 : ca_.Goto(&block1, tmp23, tmp24, tmp25);
239 : }
240 :
241 112 : if (block1.is_used()) {
242 : compiler::TNode<Context> tmp26;
243 : compiler::TNode<JSReceiver> tmp27;
244 : compiler::TNode<BoolT> tmp28;
245 : ca_.Bind(&block1, &tmp26, &tmp27, &tmp28);
246 112 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 23);
247 : ca_.Goto(&block8, tmp26, tmp27, tmp28);
248 : }
249 :
250 : compiler::TNode<Context> tmp29;
251 : compiler::TNode<JSReceiver> tmp30;
252 : compiler::TNode<BoolT> tmp31;
253 : ca_.Bind(&block8, &tmp29, &tmp30, &tmp31);
254 224 : return compiler::TNode<BoolT>{tmp31};
255 : }
256 :
257 224 : TF_BUILTIN(ProxyRevocable, CodeStubAssembler) {
258 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
259 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
260 : USE(parameter0);
261 : compiler::TNode<Object> parameter1 = UncheckedCast<Object>(Parameter(Descriptor::kReceiver));
262 : USE(parameter1);
263 : compiler::TNode<Object> parameter2 = UncheckedCast<Object>(Parameter(Descriptor::kTarget));
264 : USE(parameter2);
265 : compiler::TNode<Object> parameter3 = UncheckedCast<Object>(Parameter(Descriptor::kHandler));
266 : USE(parameter3);
267 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
268 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, Object> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
269 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, Object, JSReceiver> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
270 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, JSReceiver> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
271 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, JSReceiver> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
272 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, JSReceiver, Object> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
273 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, JSReceiver, Object, JSReceiver> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
274 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, JSReceiver, JSReceiver> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
275 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object, JSReceiver, JSReceiver> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
276 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object> block4(&ca_, compiler::CodeAssemblerLabel::kDeferred);
277 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object, Object> block2(&ca_, compiler::CodeAssemblerLabel::kDeferred);
278 : ca_.Goto(&block0, parameter0, parameter1, parameter2, parameter3);
279 :
280 56 : if (block0.is_used()) {
281 : compiler::TNode<Context> tmp0;
282 : compiler::TNode<Object> tmp1;
283 : compiler::TNode<Object> tmp2;
284 : compiler::TNode<Object> tmp3;
285 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2, &tmp3);
286 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 43);
287 : compiler::TNode<JSReceiver> tmp4;
288 : USE(tmp4);
289 56 : compiler::CodeAssemblerLabel label0(&ca_);
290 112 : tmp4 = BaseBuiltinsFromDSLAssembler(state_).Cast10JSReceiver(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp2}, &label0);
291 : ca_.Goto(&block5, tmp0, tmp1, tmp2, tmp3, tmp2, tmp4);
292 56 : if (label0.is_used()) {
293 56 : ca_.Bind(&label0);
294 : ca_.Goto(&block6, tmp0, tmp1, tmp2, tmp3, tmp2);
295 : }
296 : }
297 :
298 56 : if (block6.is_used()) {
299 : compiler::TNode<Context> tmp5;
300 : compiler::TNode<Object> tmp6;
301 : compiler::TNode<Object> tmp7;
302 : compiler::TNode<Object> tmp8;
303 : compiler::TNode<Object> tmp9;
304 : ca_.Bind(&block6, &tmp5, &tmp6, &tmp7, &tmp8, &tmp9);
305 : ca_.Goto(&block4, tmp5, tmp6, tmp7, tmp8);
306 : }
307 :
308 56 : if (block5.is_used()) {
309 : compiler::TNode<Context> tmp10;
310 : compiler::TNode<Object> tmp11;
311 : compiler::TNode<Object> tmp12;
312 : compiler::TNode<Object> tmp13;
313 : compiler::TNode<Object> tmp14;
314 : compiler::TNode<JSReceiver> tmp15;
315 : ca_.Bind(&block5, &tmp10, &tmp11, &tmp12, &tmp13, &tmp14, &tmp15);
316 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 44);
317 : compiler::TNode<BoolT> tmp16;
318 : USE(tmp16);
319 112 : tmp16 = ca_.UncheckedCast<BoolT>(ProxyBuiltinsFromDSLAssembler(state_).IsRevokedProxy(compiler::TNode<Context>{tmp10}, compiler::TNode<JSReceiver>{tmp15}));
320 56 : ca_.Branch(tmp16, &block7, &block8, tmp10, tmp11, tmp12, tmp13, tmp15);
321 : }
322 :
323 56 : if (block7.is_used()) {
324 : compiler::TNode<Context> tmp17;
325 : compiler::TNode<Object> tmp18;
326 : compiler::TNode<Object> tmp19;
327 : compiler::TNode<Object> tmp20;
328 : compiler::TNode<JSReceiver> tmp21;
329 : ca_.Bind(&block7, &tmp17, &tmp18, &tmp19, &tmp20, &tmp21);
330 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 45);
331 : ca_.Goto(&block2, tmp17, tmp18, tmp19, tmp20);
332 : }
333 :
334 56 : if (block8.is_used()) {
335 : compiler::TNode<Context> tmp22;
336 : compiler::TNode<Object> tmp23;
337 : compiler::TNode<Object> tmp24;
338 : compiler::TNode<Object> tmp25;
339 : compiler::TNode<JSReceiver> tmp26;
340 : ca_.Bind(&block8, &tmp22, &tmp23, &tmp24, &tmp25, &tmp26);
341 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 49);
342 : compiler::TNode<JSReceiver> tmp27;
343 : USE(tmp27);
344 56 : compiler::CodeAssemblerLabel label0(&ca_);
345 112 : tmp27 = BaseBuiltinsFromDSLAssembler(state_).Cast10JSReceiver(compiler::TNode<Context>{tmp22}, compiler::TNode<Object>{tmp25}, &label0);
346 : ca_.Goto(&block9, tmp22, tmp23, tmp24, tmp25, tmp26, tmp25, tmp27);
347 56 : if (label0.is_used()) {
348 56 : ca_.Bind(&label0);
349 : ca_.Goto(&block10, tmp22, tmp23, tmp24, tmp25, tmp26, tmp25);
350 : }
351 : }
352 :
353 56 : if (block10.is_used()) {
354 : compiler::TNode<Context> tmp28;
355 : compiler::TNode<Object> tmp29;
356 : compiler::TNode<Object> tmp30;
357 : compiler::TNode<Object> tmp31;
358 : compiler::TNode<JSReceiver> tmp32;
359 : compiler::TNode<Object> tmp33;
360 : ca_.Bind(&block10, &tmp28, &tmp29, &tmp30, &tmp31, &tmp32, &tmp33);
361 : ca_.Goto(&block4, tmp28, tmp29, tmp30, tmp31);
362 : }
363 :
364 56 : if (block9.is_used()) {
365 : compiler::TNode<Context> tmp34;
366 : compiler::TNode<Object> tmp35;
367 : compiler::TNode<Object> tmp36;
368 : compiler::TNode<Object> tmp37;
369 : compiler::TNode<JSReceiver> tmp38;
370 : compiler::TNode<Object> tmp39;
371 : compiler::TNode<JSReceiver> tmp40;
372 : ca_.Bind(&block9, &tmp34, &tmp35, &tmp36, &tmp37, &tmp38, &tmp39, &tmp40);
373 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 50);
374 : compiler::TNode<BoolT> tmp41;
375 : USE(tmp41);
376 112 : tmp41 = ca_.UncheckedCast<BoolT>(ProxyBuiltinsFromDSLAssembler(state_).IsRevokedProxy(compiler::TNode<Context>{tmp34}, compiler::TNode<JSReceiver>{tmp40}));
377 56 : ca_.Branch(tmp41, &block11, &block12, tmp34, tmp35, tmp36, tmp37, tmp38, tmp40);
378 : }
379 :
380 56 : if (block11.is_used()) {
381 : compiler::TNode<Context> tmp42;
382 : compiler::TNode<Object> tmp43;
383 : compiler::TNode<Object> tmp44;
384 : compiler::TNode<Object> tmp45;
385 : compiler::TNode<JSReceiver> tmp46;
386 : compiler::TNode<JSReceiver> tmp47;
387 : ca_.Bind(&block11, &tmp42, &tmp43, &tmp44, &tmp45, &tmp46, &tmp47);
388 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 51);
389 : ca_.Goto(&block2, tmp42, tmp43, tmp44, tmp45);
390 : }
391 :
392 56 : if (block12.is_used()) {
393 : compiler::TNode<Context> tmp48;
394 : compiler::TNode<Object> tmp49;
395 : compiler::TNode<Object> tmp50;
396 : compiler::TNode<Object> tmp51;
397 : compiler::TNode<JSReceiver> tmp52;
398 : compiler::TNode<JSReceiver> tmp53;
399 : ca_.Bind(&block12, &tmp48, &tmp49, &tmp50, &tmp51, &tmp52, &tmp53);
400 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 55);
401 : compiler::TNode<JSProxy> tmp54;
402 : USE(tmp54);
403 112 : tmp54 = ca_.UncheckedCast<JSProxy>(ProxyBuiltinsFromDSLAssembler(state_).AllocateProxy(compiler::TNode<Context>{tmp48}, compiler::TNode<JSReceiver>{tmp52}, compiler::TNode<JSReceiver>{tmp53}));
404 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 61);
405 : compiler::TNode<JSFunction> tmp55;
406 : USE(tmp55);
407 112 : tmp55 = ca_.UncheckedCast<JSFunction>(ProxyBuiltinsFromDSLAssembler(state_).AllocateProxyRevokeFunction(compiler::TNode<Context>{tmp48}, compiler::TNode<JSProxy>{tmp54}));
408 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 67);
409 : compiler::TNode<JSProxyRevocableResult> tmp56;
410 : USE(tmp56);
411 112 : tmp56 = ca_.UncheckedCast<JSProxyRevocableResult>(BaseBuiltinsFromDSLAssembler(state_).NewJSProxyRevocableResult(compiler::TNode<Context>{tmp48}, compiler::TNode<JSProxy>{tmp54}, compiler::TNode<JSFunction>{tmp55}));
412 112 : CodeStubAssembler(state_).Return(tmp56);
413 : }
414 :
415 56 : if (block4.is_used()) {
416 : compiler::TNode<Context> tmp57;
417 : compiler::TNode<Object> tmp58;
418 : compiler::TNode<Object> tmp59;
419 : compiler::TNode<Object> tmp60;
420 : ca_.Bind(&block4, &tmp57, &tmp58, &tmp59, &tmp60);
421 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 70);
422 112 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp57}, MessageTemplate::kProxyNonObject, "Proxy.revocable");
423 : }
424 :
425 56 : if (block2.is_used()) {
426 : compiler::TNode<Context> tmp61;
427 : compiler::TNode<Object> tmp62;
428 : compiler::TNode<Object> tmp63;
429 : compiler::TNode<Object> tmp64;
430 : ca_.Bind(&block2, &tmp61, &tmp62, &tmp63, &tmp64);
431 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revocable.tq", 73);
432 112 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp61}, MessageTemplate::kProxyHandlerOrTargetRevoked, "Proxy.revocable");
433 : }
434 56 : }
435 :
436 0 : compiler::TNode<JSProxy> ProxyBuiltinsFromDSLAssembler::ValidateProxy(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::TNode<String> p_method) {
437 0 : compiler::CodeAssemblerParameterizedLabel<Context, Object, String> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
438 : compiler::CodeAssemblerParameterizedLabel<Context, Object, String, Object> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
439 : compiler::CodeAssemblerParameterizedLabel<Context, Object, String, Object, JSProxy> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
440 : compiler::CodeAssemblerParameterizedLabel<Context, Object, String> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
441 : compiler::CodeAssemblerParameterizedLabel<Context, Object, String, JSProxy> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
442 : compiler::CodeAssemblerParameterizedLabel<Context, Object, String, JSProxy> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
443 : ca_.Goto(&block0, p_context, p_o, p_method);
444 :
445 0 : if (block0.is_used()) {
446 : compiler::TNode<Context> tmp0;
447 : compiler::TNode<Object> tmp1;
448 : compiler::TNode<String> tmp2;
449 : ca_.Bind(&block0, &tmp0, &tmp1, &tmp2);
450 0 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 11);
451 : compiler::TNode<JSProxy> tmp3;
452 : USE(tmp3);
453 0 : compiler::CodeAssemblerLabel label0(&ca_);
454 0 : tmp3 = BaseBuiltinsFromDSLAssembler(state_).Cast7JSProxy(compiler::TNode<Context>{tmp0}, compiler::TNode<Object>{tmp1}, &label0);
455 : ca_.Goto(&block4, tmp0, tmp1, tmp2, tmp1, tmp3);
456 0 : if (label0.is_used()) {
457 0 : ca_.Bind(&label0);
458 : ca_.Goto(&block5, tmp0, tmp1, tmp2, tmp1);
459 : }
460 : }
461 :
462 0 : if (block5.is_used()) {
463 : compiler::TNode<Context> tmp4;
464 : compiler::TNode<Object> tmp5;
465 : compiler::TNode<String> tmp6;
466 : compiler::TNode<Object> tmp7;
467 : ca_.Bind(&block5, &tmp4, &tmp5, &tmp6, &tmp7);
468 : ca_.Goto(&block3, tmp4, tmp5, tmp6);
469 : }
470 :
471 0 : if (block4.is_used()) {
472 : compiler::TNode<Context> tmp8;
473 : compiler::TNode<Object> tmp9;
474 : compiler::TNode<String> tmp10;
475 : compiler::TNode<Object> tmp11;
476 : compiler::TNode<JSProxy> tmp12;
477 : ca_.Bind(&block4, &tmp8, &tmp9, &tmp10, &tmp11, &tmp12);
478 : ca_.Goto(&block1, tmp8, tmp9, tmp10, tmp12);
479 : }
480 :
481 0 : if (block3.is_used()) {
482 : compiler::TNode<Context> tmp13;
483 : compiler::TNode<Object> tmp14;
484 : compiler::TNode<String> tmp15;
485 : ca_.Bind(&block3, &tmp13, &tmp14, &tmp15);
486 0 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 14);
487 0 : CodeStubAssembler(state_).ThrowTypeError(compiler::TNode<Context>{tmp13}, MessageTemplate::kIncompatibleMethodReceiver, compiler::TNode<Object>{tmp15});
488 : }
489 :
490 0 : if (block1.is_used()) {
491 : compiler::TNode<Context> tmp16;
492 : compiler::TNode<Object> tmp17;
493 : compiler::TNode<String> tmp18;
494 : compiler::TNode<JSProxy> tmp19;
495 : ca_.Bind(&block1, &tmp16, &tmp17, &tmp18, &tmp19);
496 0 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 9);
497 : ca_.Goto(&block6, tmp16, tmp17, tmp18, tmp19);
498 : }
499 :
500 : compiler::TNode<Context> tmp20;
501 : compiler::TNode<Object> tmp21;
502 : compiler::TNode<String> tmp22;
503 : compiler::TNode<JSProxy> tmp23;
504 : ca_.Bind(&block6, &tmp20, &tmp21, &tmp22, &tmp23);
505 0 : return compiler::TNode<JSProxy>{tmp23};
506 : }
507 :
508 224 : TF_BUILTIN(ProxyRevoke, CodeStubAssembler) {
509 56 : compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state());
510 : TNode<Context> parameter0 = UncheckedCast<Context>(Parameter(Descriptor::kContext));
511 : USE(parameter0);
512 : compiler::TNode<Object> parameter1 = UncheckedCast<Object>(Parameter(Descriptor::kReceiver));
513 : USE(parameter1);
514 : compiler::CodeAssemblerParameterizedLabel<Context, Object> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
515 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
516 : compiler::CodeAssemblerParameterizedLabel<Context, Object, Object> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred);
517 : ca_.Goto(&block0, parameter0, parameter1);
518 :
519 56 : if (block0.is_used()) {
520 : compiler::TNode<Context> tmp0;
521 : compiler::TNode<Object> tmp1;
522 : ca_.Bind(&block0, &tmp0, &tmp1);
523 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 24);
524 : compiler::TNode<IntPtrT> tmp2;
525 : USE(tmp2);
526 112 : tmp2 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr13ATContextSlot23ATconstexpr_ContextSlot(Context::MIN_CONTEXT_SLOTS));
527 : compiler::TNode<Object> tmp3;
528 : USE(tmp3);
529 168 : tmp3 = ca_.UncheckedCast<Object>(CodeStubAssembler(state_).LoadContextElement(compiler::TNode<Context>{tmp0}, compiler::TNode<IntPtrT>{tmp2}));
530 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 27);
531 : compiler::TNode<Oddball> tmp4;
532 : USE(tmp4);
533 112 : tmp4 = BaseBuiltinsFromDSLAssembler(state_).Null();
534 : compiler::TNode<BoolT> tmp5;
535 : USE(tmp5);
536 112 : tmp5 = ca_.UncheckedCast<BoolT>(CodeStubAssembler(state_).WordEqual(compiler::TNode<Object>{tmp3}, compiler::TNode<HeapObject>{tmp4}));
537 56 : ca_.Branch(tmp5, &block1, &block2, tmp0, tmp1, tmp3);
538 : }
539 :
540 56 : if (block1.is_used()) {
541 : compiler::TNode<Context> tmp6;
542 : compiler::TNode<Object> tmp7;
543 : compiler::TNode<Object> tmp8;
544 : ca_.Bind(&block1, &tmp6, &tmp7, &tmp8);
545 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 28);
546 : compiler::TNode<Oddball> tmp9;
547 : USE(tmp9);
548 112 : tmp9 = BaseBuiltinsFromDSLAssembler(state_).Undefined();
549 112 : CodeStubAssembler(state_).Return(tmp9);
550 : }
551 :
552 56 : if (block2.is_used()) {
553 : compiler::TNode<Context> tmp10;
554 : compiler::TNode<Object> tmp11;
555 : compiler::TNode<Object> tmp12;
556 : ca_.Bind(&block2, &tmp10, &tmp11, &tmp12);
557 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 32);
558 : compiler::TNode<Oddball> tmp13;
559 : USE(tmp13);
560 112 : tmp13 = BaseBuiltinsFromDSLAssembler(state_).Null();
561 : compiler::TNode<IntPtrT> tmp14;
562 : USE(tmp14);
563 112 : tmp14 = ca_.UncheckedCast<IntPtrT>(BaseBuiltinsFromDSLAssembler(state_).FromConstexpr13ATContextSlot23ATconstexpr_ContextSlot(Context::MIN_CONTEXT_SLOTS));
564 168 : CodeStubAssembler(state_).StoreContextElement(compiler::TNode<Context>{tmp10}, compiler::TNode<IntPtrT>{tmp14}, compiler::TNode<Object>{tmp13});
565 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 35);
566 : compiler::TNode<JSProxy> tmp15;
567 : USE(tmp15);
568 112 : tmp15 = ca_.UncheckedCast<JSProxy>(BaseBuiltinsFromDSLAssembler(state_).UnsafeCast7JSProxy(compiler::TNode<Context>{tmp10}, compiler::TNode<Object>{tmp12}));
569 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 38);
570 56 : compiler::TNode<IntPtrT> tmp16 = ca_.IntPtrConstant(JSProxy::kTargetOffset);
571 : USE(tmp16);
572 : compiler::TNode<Oddball> tmp17;
573 : USE(tmp17);
574 112 : tmp17 = BaseBuiltinsFromDSLAssembler(state_).Null();
575 112 : CodeStubAssembler(state_).StoreReference(CodeStubAssembler::Reference{tmp15, tmp16}, tmp17);
576 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 41);
577 56 : compiler::TNode<IntPtrT> tmp18 = ca_.IntPtrConstant(JSProxy::kHandlerOffset);
578 : USE(tmp18);
579 : compiler::TNode<Oddball> tmp19;
580 : USE(tmp19);
581 112 : tmp19 = BaseBuiltinsFromDSLAssembler(state_).Null();
582 112 : CodeStubAssembler(state_).StoreReference(CodeStubAssembler::Reference{tmp15, tmp18}, tmp19);
583 56 : ca_.SetSourcePosition("../../src/builtins/proxy-revoke.tq", 44);
584 : compiler::TNode<Oddball> tmp20;
585 : USE(tmp20);
586 112 : tmp20 = BaseBuiltinsFromDSLAssembler(state_).Undefined();
587 112 : CodeStubAssembler(state_).Return(tmp20);
588 : }
589 56 : }
590 :
591 : } // namespace internal
592 59456 : } // namespace v8
593 :
|