Move URL from WebCore to WTF
[WebKit-https.git] / Source / WebCore / bindings / scripts / test / JS / JSTestDOMJIT.cpp
1 /*
2     This file is part of the WebKit open source project.
3     This file has been generated by generate-bindings.pl. DO NOT MODIFY!
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #include "config.h"
22 #include "JSTestDOMJIT.h"
23
24 #include "DOMJITAbstractHeapRepository.h"
25 #include "DOMJITIDLConvert.h"
26 #include "DOMJITIDLType.h"
27 #include "DOMJITIDLTypeFilter.h"
28 #include "JSDOMAttribute.h"
29 #include "JSDOMBinding.h"
30 #include "JSDOMConstructorNotConstructable.h"
31 #include "JSDOMConvertAny.h"
32 #include "JSDOMConvertBoolean.h"
33 #include "JSDOMConvertInterface.h"
34 #include "JSDOMConvertNullable.h"
35 #include "JSDOMConvertNumbers.h"
36 #include "JSDOMConvertStrings.h"
37 #include "JSDOMExceptionHandling.h"
38 #include "JSDOMGlobalObject.h"
39 #include "JSDOMOperation.h"
40 #include "JSDOMWrapperCache.h"
41 #include "JSElement.h"
42 #include "JSNodeList.h"
43 #include "ScriptExecutionContext.h"
44 #include <JavaScriptCore/FrameTracers.h>
45 #include <JavaScriptCore/HeapSnapshotBuilder.h>
46 #include <JavaScriptCore/JSCInlines.h>
47 #include <wtf/GetPtr.h>
48 #include <wtf/PointerPreparations.h>
49 #include <wtf/URL.h>
50
51
52 namespace WebCore {
53 using namespace JSC;
54
55 // Functions
56
57 JSC::EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionGetAttribute(JSC::ExecState*);
58 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionGetAttribute(JSC::ExecState*, JSTestDOMJIT*, DOMJIT::IDLJSArgumentType<IDLDOMString>);
59 JSC::EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionItem(JSC::ExecState*);
60 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionItem(JSC::ExecState*, JSTestDOMJIT*, DOMJIT::IDLJSArgumentType<IDLUnsignedShort>, DOMJIT::IDLJSArgumentType<IDLUnsignedShort>);
61 JSC::EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionHasAttribute(JSC::ExecState*);
62 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionHasAttribute(JSC::ExecState*, JSTestDOMJIT*);
63 JSC::EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionGetElementById(JSC::ExecState*);
64 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionGetElementById(JSC::ExecState*, JSTestDOMJIT*, DOMJIT::IDLJSArgumentType<IDLRequiresExistingAtomicStringAdaptor<IDLDOMString>>);
65 JSC::EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionGetElementsByName(JSC::ExecState*);
66 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionGetElementsByName(JSC::ExecState*, JSTestDOMJIT*, DOMJIT::IDLJSArgumentType<IDLAtomicStringAdaptor<IDLDOMString>>);
67
68 // Attributes
69
70 JSC::EncodedJSValue jsTestDOMJITConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
71 bool setJSTestDOMJITConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
72 JSC::EncodedJSValue jsTestDOMJITAnyAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
73 JSC::EncodedJSValue jsTestDOMJITBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
74 JSC::EncodedJSValue jsTestDOMJITByteAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
75 JSC::EncodedJSValue jsTestDOMJITOctetAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
76 JSC::EncodedJSValue jsTestDOMJITShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
77 JSC::EncodedJSValue jsTestDOMJITUnsignedShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
78 JSC::EncodedJSValue jsTestDOMJITLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
79 JSC::EncodedJSValue jsTestDOMJITUnsignedLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
80 JSC::EncodedJSValue jsTestDOMJITLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
81 JSC::EncodedJSValue jsTestDOMJITUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
82 JSC::EncodedJSValue jsTestDOMJITFloatAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
83 JSC::EncodedJSValue jsTestDOMJITUnrestrictedFloatAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
84 JSC::EncodedJSValue jsTestDOMJITDoubleAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
85 JSC::EncodedJSValue jsTestDOMJITUnrestrictedDoubleAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
86 JSC::EncodedJSValue jsTestDOMJITDomStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
87 JSC::EncodedJSValue jsTestDOMJITByteStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
88 JSC::EncodedJSValue jsTestDOMJITUsvStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
89 JSC::EncodedJSValue jsTestDOMJITNodeAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
90 JSC::EncodedJSValue jsTestDOMJITBooleanNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
91 JSC::EncodedJSValue jsTestDOMJITByteNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
92 JSC::EncodedJSValue jsTestDOMJITOctetNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
93 JSC::EncodedJSValue jsTestDOMJITShortNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
94 JSC::EncodedJSValue jsTestDOMJITUnsignedShortNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
95 JSC::EncodedJSValue jsTestDOMJITLongNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
96 JSC::EncodedJSValue jsTestDOMJITUnsignedLongNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
97 JSC::EncodedJSValue jsTestDOMJITLongLongNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
98 JSC::EncodedJSValue jsTestDOMJITUnsignedLongLongNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
99 JSC::EncodedJSValue jsTestDOMJITFloatNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
100 JSC::EncodedJSValue jsTestDOMJITUnrestrictedFloatNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
101 JSC::EncodedJSValue jsTestDOMJITDoubleNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
102 JSC::EncodedJSValue jsTestDOMJITUnrestrictedDoubleNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
103 JSC::EncodedJSValue jsTestDOMJITDomStringNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
104 JSC::EncodedJSValue jsTestDOMJITByteStringNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
105 JSC::EncodedJSValue jsTestDOMJITUsvStringNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
106 JSC::EncodedJSValue jsTestDOMJITNodeNullableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
107
108 static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITGetAttribute((uintptr_t)unsafeJsTestDOMJITPrototypeFunctionGetAttribute, JSTestDOMJIT::info(), JSC::DOMJIT::Effect::forRead(DOMJIT::AbstractHeapRepository::DOM), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDOMString>>::value, DOMJIT::IDLArgumentTypeFilter<IDLDOMString>::value);
109
110 static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITItem((uintptr_t)unsafeJsTestDOMJITPrototypeFunctionItem, JSTestDOMJIT::info(), JSC::DOMJIT::Effect::forRead(DOMJIT::AbstractHeapRepository::DOM), DOMJIT::IDLResultTypeFilter<IDLDOMString>::value, DOMJIT::IDLArgumentTypeFilter<IDLUnsignedShort>::value, DOMJIT::IDLArgumentTypeFilter<IDLUnsignedShort>::value);
111
112 static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITHasAttribute((uintptr_t)unsafeJsTestDOMJITPrototypeFunctionHasAttribute, JSTestDOMJIT::info(), JSC::DOMJIT::Effect::forRead(DOMJIT::AbstractHeapRepository::DOM), DOMJIT::IDLResultTypeFilter<IDLBoolean>::value);
113
114 static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITGetElementById((uintptr_t)unsafeJsTestDOMJITPrototypeFunctionGetElementById, JSTestDOMJIT::info(), JSC::DOMJIT::Effect::forRead(DOMJIT::AbstractHeapRepository::DOM), DOMJIT::IDLResultTypeFilter<IDLInterface<Element>>::value, DOMJIT::IDLArgumentTypeFilter<IDLRequiresExistingAtomicStringAdaptor<IDLDOMString>>::value);
115
116 static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITGetElementsByName((uintptr_t)unsafeJsTestDOMJITPrototypeFunctionGetElementsByName, JSTestDOMJIT::info(), JSC::DOMJIT::Effect::forRead(DOMJIT::AbstractHeapRepository::DOM), DOMJIT::IDLResultTypeFilter<IDLInterface<NodeList>>::value, DOMJIT::IDLArgumentTypeFilter<IDLAtomicStringAdaptor<IDLDOMString>>::value);
117
118 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITAnyAttr {
119     jsTestDOMJITAnyAttr,
120 #if ENABLE(JIT)
121     &compileTestDOMJITAnyAttrAttribute,
122 #else
123     nullptr,
124 #endif
125     DOMJIT::IDLResultTypeFilter<IDLAny>::value
126 };
127
128 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITBooleanAttr {
129     jsTestDOMJITBooleanAttr,
130 #if ENABLE(JIT)
131     &compileTestDOMJITBooleanAttrAttribute,
132 #else
133     nullptr,
134 #endif
135     DOMJIT::IDLResultTypeFilter<IDLBoolean>::value
136 };
137
138 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITByteAttr {
139     jsTestDOMJITByteAttr,
140 #if ENABLE(JIT)
141     &compileTestDOMJITByteAttrAttribute,
142 #else
143     nullptr,
144 #endif
145     DOMJIT::IDLResultTypeFilter<IDLByte>::value
146 };
147
148 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITOctetAttr {
149     jsTestDOMJITOctetAttr,
150 #if ENABLE(JIT)
151     &compileTestDOMJITOctetAttrAttribute,
152 #else
153     nullptr,
154 #endif
155     DOMJIT::IDLResultTypeFilter<IDLOctet>::value
156 };
157
158 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITShortAttr {
159     jsTestDOMJITShortAttr,
160 #if ENABLE(JIT)
161     &compileTestDOMJITShortAttrAttribute,
162 #else
163     nullptr,
164 #endif
165     DOMJIT::IDLResultTypeFilter<IDLShort>::value
166 };
167
168 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnsignedShortAttr {
169     jsTestDOMJITUnsignedShortAttr,
170 #if ENABLE(JIT)
171     &compileTestDOMJITUnsignedShortAttrAttribute,
172 #else
173     nullptr,
174 #endif
175     DOMJIT::IDLResultTypeFilter<IDLUnsignedShort>::value
176 };
177
178 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITLongAttr {
179     jsTestDOMJITLongAttr,
180 #if ENABLE(JIT)
181     &compileTestDOMJITLongAttrAttribute,
182 #else
183     nullptr,
184 #endif
185     DOMJIT::IDLResultTypeFilter<IDLLong>::value
186 };
187
188 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnsignedLongAttr {
189     jsTestDOMJITUnsignedLongAttr,
190 #if ENABLE(JIT)
191     &compileTestDOMJITUnsignedLongAttrAttribute,
192 #else
193     nullptr,
194 #endif
195     DOMJIT::IDLResultTypeFilter<IDLUnsignedLong>::value
196 };
197
198 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITLongLongAttr {
199     jsTestDOMJITLongLongAttr,
200 #if ENABLE(JIT)
201     &compileTestDOMJITLongLongAttrAttribute,
202 #else
203     nullptr,
204 #endif
205     DOMJIT::IDLResultTypeFilter<IDLLongLong>::value
206 };
207
208 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnsignedLongLongAttr {
209     jsTestDOMJITUnsignedLongLongAttr,
210 #if ENABLE(JIT)
211     &compileTestDOMJITUnsignedLongLongAttrAttribute,
212 #else
213     nullptr,
214 #endif
215     DOMJIT::IDLResultTypeFilter<IDLUnsignedLongLong>::value
216 };
217
218 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITFloatAttr {
219     jsTestDOMJITFloatAttr,
220 #if ENABLE(JIT)
221     &compileTestDOMJITFloatAttrAttribute,
222 #else
223     nullptr,
224 #endif
225     DOMJIT::IDLResultTypeFilter<IDLFloat>::value
226 };
227
228 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnrestrictedFloatAttr {
229     jsTestDOMJITUnrestrictedFloatAttr,
230 #if ENABLE(JIT)
231     &compileTestDOMJITUnrestrictedFloatAttrAttribute,
232 #else
233     nullptr,
234 #endif
235     DOMJIT::IDLResultTypeFilter<IDLUnrestrictedFloat>::value
236 };
237
238 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITDoubleAttr {
239     jsTestDOMJITDoubleAttr,
240 #if ENABLE(JIT)
241     &compileTestDOMJITDoubleAttrAttribute,
242 #else
243     nullptr,
244 #endif
245     DOMJIT::IDLResultTypeFilter<IDLDouble>::value
246 };
247
248 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnrestrictedDoubleAttr {
249     jsTestDOMJITUnrestrictedDoubleAttr,
250 #if ENABLE(JIT)
251     &compileTestDOMJITUnrestrictedDoubleAttrAttribute,
252 #else
253     nullptr,
254 #endif
255     DOMJIT::IDLResultTypeFilter<IDLUnrestrictedDouble>::value
256 };
257
258 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITDomStringAttr {
259     jsTestDOMJITDomStringAttr,
260 #if ENABLE(JIT)
261     &compileTestDOMJITDomStringAttrAttribute,
262 #else
263     nullptr,
264 #endif
265     DOMJIT::IDLResultTypeFilter<IDLDOMString>::value
266 };
267
268 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITByteStringAttr {
269     jsTestDOMJITByteStringAttr,
270 #if ENABLE(JIT)
271     &compileTestDOMJITByteStringAttrAttribute,
272 #else
273     nullptr,
274 #endif
275     DOMJIT::IDLResultTypeFilter<IDLByteString>::value
276 };
277
278 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUsvStringAttr {
279     jsTestDOMJITUsvStringAttr,
280 #if ENABLE(JIT)
281     &compileTestDOMJITUsvStringAttrAttribute,
282 #else
283     nullptr,
284 #endif
285     DOMJIT::IDLResultTypeFilter<IDLUSVString>::value
286 };
287
288 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITNodeAttr {
289     jsTestDOMJITNodeAttr,
290 #if ENABLE(JIT)
291     &compileTestDOMJITNodeAttrAttribute,
292 #else
293     nullptr,
294 #endif
295     DOMJIT::IDLResultTypeFilter<IDLInterface<Node>>::value
296 };
297
298 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITBooleanNullableAttr {
299     jsTestDOMJITBooleanNullableAttr,
300 #if ENABLE(JIT)
301     &compileTestDOMJITBooleanNullableAttrAttribute,
302 #else
303     nullptr,
304 #endif
305     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLBoolean>>::value
306 };
307
308 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITByteNullableAttr {
309     jsTestDOMJITByteNullableAttr,
310 #if ENABLE(JIT)
311     &compileTestDOMJITByteNullableAttrAttribute,
312 #else
313     nullptr,
314 #endif
315     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLByte>>::value
316 };
317
318 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITOctetNullableAttr {
319     jsTestDOMJITOctetNullableAttr,
320 #if ENABLE(JIT)
321     &compileTestDOMJITOctetNullableAttrAttribute,
322 #else
323     nullptr,
324 #endif
325     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLOctet>>::value
326 };
327
328 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITShortNullableAttr {
329     jsTestDOMJITShortNullableAttr,
330 #if ENABLE(JIT)
331     &compileTestDOMJITShortNullableAttrAttribute,
332 #else
333     nullptr,
334 #endif
335     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLShort>>::value
336 };
337
338 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnsignedShortNullableAttr {
339     jsTestDOMJITUnsignedShortNullableAttr,
340 #if ENABLE(JIT)
341     &compileTestDOMJITUnsignedShortNullableAttrAttribute,
342 #else
343     nullptr,
344 #endif
345     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedShort>>::value
346 };
347
348 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITLongNullableAttr {
349     jsTestDOMJITLongNullableAttr,
350 #if ENABLE(JIT)
351     &compileTestDOMJITLongNullableAttrAttribute,
352 #else
353     nullptr,
354 #endif
355     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLLong>>::value
356 };
357
358 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnsignedLongNullableAttr {
359     jsTestDOMJITUnsignedLongNullableAttr,
360 #if ENABLE(JIT)
361     &compileTestDOMJITUnsignedLongNullableAttrAttribute,
362 #else
363     nullptr,
364 #endif
365     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedLong>>::value
366 };
367
368 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITLongLongNullableAttr {
369     jsTestDOMJITLongLongNullableAttr,
370 #if ENABLE(JIT)
371     &compileTestDOMJITLongLongNullableAttrAttribute,
372 #else
373     nullptr,
374 #endif
375     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLLongLong>>::value
376 };
377
378 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnsignedLongLongNullableAttr {
379     jsTestDOMJITUnsignedLongLongNullableAttr,
380 #if ENABLE(JIT)
381     &compileTestDOMJITUnsignedLongLongNullableAttrAttribute,
382 #else
383     nullptr,
384 #endif
385     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedLongLong>>::value
386 };
387
388 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITFloatNullableAttr {
389     jsTestDOMJITFloatNullableAttr,
390 #if ENABLE(JIT)
391     &compileTestDOMJITFloatNullableAttrAttribute,
392 #else
393     nullptr,
394 #endif
395     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLFloat>>::value
396 };
397
398 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnrestrictedFloatNullableAttr {
399     jsTestDOMJITUnrestrictedFloatNullableAttr,
400 #if ENABLE(JIT)
401     &compileTestDOMJITUnrestrictedFloatNullableAttrAttribute,
402 #else
403     nullptr,
404 #endif
405     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnrestrictedFloat>>::value
406 };
407
408 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITDoubleNullableAttr {
409     jsTestDOMJITDoubleNullableAttr,
410 #if ENABLE(JIT)
411     &compileTestDOMJITDoubleNullableAttrAttribute,
412 #else
413     nullptr,
414 #endif
415     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDouble>>::value
416 };
417
418 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUnrestrictedDoubleNullableAttr {
419     jsTestDOMJITUnrestrictedDoubleNullableAttr,
420 #if ENABLE(JIT)
421     &compileTestDOMJITUnrestrictedDoubleNullableAttrAttribute,
422 #else
423     nullptr,
424 #endif
425     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnrestrictedDouble>>::value
426 };
427
428 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITDomStringNullableAttr {
429     jsTestDOMJITDomStringNullableAttr,
430 #if ENABLE(JIT)
431     &compileTestDOMJITDomStringNullableAttrAttribute,
432 #else
433     nullptr,
434 #endif
435     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDOMString>>::value
436 };
437
438 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITByteStringNullableAttr {
439     jsTestDOMJITByteStringNullableAttr,
440 #if ENABLE(JIT)
441     &compileTestDOMJITByteStringNullableAttrAttribute,
442 #else
443     nullptr,
444 #endif
445     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLByteString>>::value
446 };
447
448 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITUsvStringNullableAttr {
449     jsTestDOMJITUsvStringNullableAttr,
450 #if ENABLE(JIT)
451     &compileTestDOMJITUsvStringNullableAttrAttribute,
452 #else
453     nullptr,
454 #endif
455     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUSVString>>::value
456 };
457
458 static const JSC::DOMJIT::GetterSetter DOMJITAttributeForTestDOMJITNodeNullableAttr {
459     jsTestDOMJITNodeNullableAttr,
460 #if ENABLE(JIT)
461     &compileTestDOMJITNodeNullableAttrAttribute,
462 #else
463     nullptr,
464 #endif
465     DOMJIT::IDLResultTypeFilter<IDLNullable<IDLInterface<Node>>>::value
466 };
467
468 class JSTestDOMJITPrototype : public JSC::JSNonFinalObject {
469 public:
470     using Base = JSC::JSNonFinalObject;
471     static JSTestDOMJITPrototype* create(JSC::VM& vm, JSDOMGlobalObject* globalObject, JSC::Structure* structure)
472     {
473         JSTestDOMJITPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestDOMJITPrototype>(vm.heap)) JSTestDOMJITPrototype(vm, globalObject, structure);
474         ptr->finishCreation(vm);
475         return ptr;
476     }
477
478     DECLARE_INFO;
479     static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
480     {
481         return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
482     }
483
484 private:
485     JSTestDOMJITPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
486         : JSC::JSNonFinalObject(vm, structure)
487     {
488     }
489
490     void finishCreation(JSC::VM&);
491 };
492
493 using JSTestDOMJITConstructor = JSDOMConstructorNotConstructable<JSTestDOMJIT>;
494
495 template<> JSValue JSTestDOMJITConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
496 {
497     return JSNode::getConstructor(vm, &globalObject);
498 }
499
500 template<> void JSTestDOMJITConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
501 {
502     putDirect(vm, vm.propertyNames->prototype, JSTestDOMJIT::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
503     putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String("TestDOMJIT"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
504     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
505 }
506
507 template<> const ClassInfo JSTestDOMJITConstructor::s_info = { "TestDOMJIT", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestDOMJITConstructor) };
508
509 /* Hash table for prototype */
510
511 static const HashTableValue JSTestDOMJITPrototypeTableValues[] =
512 {
513     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestDOMJITConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestDOMJITConstructor) } },
514     { "anyAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITAnyAttr), (intptr_t) (0) } },
515     { "booleanAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITBooleanAttr), (intptr_t) (0) } },
516     { "byteAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteAttr), (intptr_t) (0) } },
517     { "octetAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITOctetAttr), (intptr_t) (0) } },
518     { "shortAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITShortAttr), (intptr_t) (0) } },
519     { "unsignedShortAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedShortAttr), (intptr_t) (0) } },
520     { "longAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongAttr), (intptr_t) (0) } },
521     { "unsignedLongAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongAttr), (intptr_t) (0) } },
522     { "longLongAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongLongAttr), (intptr_t) (0) } },
523     { "unsignedLongLongAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongLongAttr), (intptr_t) (0) } },
524     { "floatAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITFloatAttr), (intptr_t) (0) } },
525     { "unrestrictedFloatAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedFloatAttr), (intptr_t) (0) } },
526     { "doubleAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDoubleAttr), (intptr_t) (0) } },
527     { "unrestrictedDoubleAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedDoubleAttr), (intptr_t) (0) } },
528     { "domStringAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDomStringAttr), (intptr_t) (0) } },
529     { "byteStringAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteStringAttr), (intptr_t) (0) } },
530     { "usvStringAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUsvStringAttr), (intptr_t) (0) } },
531     { "nodeAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITNodeAttr), (intptr_t) (0) } },
532     { "booleanNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITBooleanNullableAttr), (intptr_t) (0) } },
533     { "byteNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteNullableAttr), (intptr_t) (0) } },
534     { "octetNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITOctetNullableAttr), (intptr_t) (0) } },
535     { "shortNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITShortNullableAttr), (intptr_t) (0) } },
536     { "unsignedShortNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedShortNullableAttr), (intptr_t) (0) } },
537     { "longNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongNullableAttr), (intptr_t) (0) } },
538     { "unsignedLongNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongNullableAttr), (intptr_t) (0) } },
539     { "longLongNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongLongNullableAttr), (intptr_t) (0) } },
540     { "unsignedLongLongNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongLongNullableAttr), (intptr_t) (0) } },
541     { "floatNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITFloatNullableAttr), (intptr_t) (0) } },
542     { "unrestrictedFloatNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedFloatNullableAttr), (intptr_t) (0) } },
543     { "doubleNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDoubleNullableAttr), (intptr_t) (0) } },
544     { "unrestrictedDoubleNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedDoubleNullableAttr), (intptr_t) (0) } },
545     { "domStringNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDomStringNullableAttr), (intptr_t) (0) } },
546     { "byteStringNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteStringNullableAttr), (intptr_t) (0) } },
547     { "usvStringNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUsvStringNullableAttr), (intptr_t) (0) } },
548     { "nodeNullableAttr", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMJITAttribute), NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITNodeNullableAttr), (intptr_t) (0) } },
549     { "getAttribute", static_cast<unsigned>(JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestDOMJITPrototypeFunctionGetAttribute), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITGetAttribute) } },
550     { "item", static_cast<unsigned>(JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestDOMJITPrototypeFunctionItem), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITItem) } },
551     { "hasAttribute", static_cast<unsigned>(JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestDOMJITPrototypeFunctionHasAttribute), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITHasAttribute) } },
552     { "getElementById", static_cast<unsigned>(JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestDOMJITPrototypeFunctionGetElementById), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITGetElementById) } },
553     { "getElementsByName", static_cast<unsigned>(JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestDOMJITPrototypeFunctionGetElementsByName), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITGetElementsByName) } },
554 };
555
556 const ClassInfo JSTestDOMJITPrototype::s_info = { "TestDOMJITPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestDOMJITPrototype) };
557
558 void JSTestDOMJITPrototype::finishCreation(VM& vm)
559 {
560     Base::finishCreation(vm);
561     reifyStaticProperties(vm, JSTestDOMJIT::info(), JSTestDOMJITPrototypeTableValues, *this);
562 }
563
564 const ClassInfo JSTestDOMJIT::s_info = { "TestDOMJIT", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestDOMJIT) };
565
566 JSTestDOMJIT::JSTestDOMJIT(Structure* structure, JSDOMGlobalObject& globalObject, Ref<TestDOMJIT>&& impl)
567     : JSNode(structure, globalObject, WTFMove(impl))
568 {
569 }
570
571 void JSTestDOMJIT::finishCreation(VM& vm)
572 {
573     Base::finishCreation(vm);
574     ASSERT(inherits(vm, info()));
575
576 }
577
578 JSObject* JSTestDOMJIT::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
579 {
580     return JSTestDOMJITPrototype::create(vm, &globalObject, JSTestDOMJITPrototype::createStructure(vm, &globalObject, JSNode::prototype(vm, globalObject)));
581 }
582
583 JSObject* JSTestDOMJIT::prototype(VM& vm, JSDOMGlobalObject& globalObject)
584 {
585     return getDOMPrototype<JSTestDOMJIT>(vm, globalObject);
586 }
587
588 JSValue JSTestDOMJIT::getConstructor(VM& vm, const JSGlobalObject* globalObject)
589 {
590     return getDOMConstructor<JSTestDOMJITConstructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));
591 }
592
593 template<> inline JSTestDOMJIT* IDLAttribute<JSTestDOMJIT>::cast(ExecState& state, EncodedJSValue thisValue)
594 {
595     return jsDynamicCast<JSTestDOMJIT*>(state.vm(), JSValue::decode(thisValue));
596 }
597
598 template<> inline JSTestDOMJIT* IDLOperation<JSTestDOMJIT>::cast(ExecState& state)
599 {
600     return jsDynamicCast<JSTestDOMJIT*>(state.vm(), state.thisValue());
601 }
602
603 EncodedJSValue jsTestDOMJITConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
604 {
605     VM& vm = state->vm();
606     auto throwScope = DECLARE_THROW_SCOPE(vm);
607     auto* prototype = jsDynamicCast<JSTestDOMJITPrototype*>(vm, JSValue::decode(thisValue));
608     if (UNLIKELY(!prototype))
609         return throwVMTypeError(state, throwScope);
610     return JSValue::encode(JSTestDOMJIT::getConstructor(state->vm(), prototype->globalObject()));
611 }
612
613 bool setJSTestDOMJITConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
614 {
615     VM& vm = state->vm();
616     auto throwScope = DECLARE_THROW_SCOPE(vm);
617     auto* prototype = jsDynamicCast<JSTestDOMJITPrototype*>(vm, JSValue::decode(thisValue));
618     if (UNLIKELY(!prototype)) {
619         throwVMTypeError(state, throwScope);
620         return false;
621     }
622     // Shadowing a built-in constructor
623     return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
624 }
625
626 static inline JSValue jsTestDOMJITAnyAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
627 {
628     UNUSED_PARAM(throwScope);
629     UNUSED_PARAM(state);
630     auto& impl = thisObject.wrapped();
631     JSValue result = toJS<IDLAny>(state, throwScope, impl.anyAttr());
632     return result;
633 }
634
635 EncodedJSValue jsTestDOMJITAnyAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
636 {
637     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITAnyAttrGetter>(*state, thisValue, "anyAttr");
638 }
639
640 static inline JSValue jsTestDOMJITBooleanAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
641 {
642     UNUSED_PARAM(throwScope);
643     UNUSED_PARAM(state);
644     auto& impl = thisObject.wrapped();
645     JSValue result = toJS<IDLBoolean>(state, throwScope, impl.booleanAttr());
646     return result;
647 }
648
649 EncodedJSValue jsTestDOMJITBooleanAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
650 {
651     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITBooleanAttrGetter>(*state, thisValue, "booleanAttr");
652 }
653
654 static inline JSValue jsTestDOMJITByteAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
655 {
656     UNUSED_PARAM(throwScope);
657     UNUSED_PARAM(state);
658     auto& impl = thisObject.wrapped();
659     JSValue result = toJS<IDLByte>(state, throwScope, impl.byteAttr());
660     return result;
661 }
662
663 EncodedJSValue jsTestDOMJITByteAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
664 {
665     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITByteAttrGetter>(*state, thisValue, "byteAttr");
666 }
667
668 static inline JSValue jsTestDOMJITOctetAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
669 {
670     UNUSED_PARAM(throwScope);
671     UNUSED_PARAM(state);
672     auto& impl = thisObject.wrapped();
673     JSValue result = toJS<IDLOctet>(state, throwScope, impl.octetAttr());
674     return result;
675 }
676
677 EncodedJSValue jsTestDOMJITOctetAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
678 {
679     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITOctetAttrGetter>(*state, thisValue, "octetAttr");
680 }
681
682 static inline JSValue jsTestDOMJITShortAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
683 {
684     UNUSED_PARAM(throwScope);
685     UNUSED_PARAM(state);
686     auto& impl = thisObject.wrapped();
687     JSValue result = toJS<IDLShort>(state, throwScope, impl.shortAttr());
688     return result;
689 }
690
691 EncodedJSValue jsTestDOMJITShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
692 {
693     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITShortAttrGetter>(*state, thisValue, "shortAttr");
694 }
695
696 static inline JSValue jsTestDOMJITUnsignedShortAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
697 {
698     UNUSED_PARAM(throwScope);
699     UNUSED_PARAM(state);
700     auto& impl = thisObject.wrapped();
701     JSValue result = toJS<IDLUnsignedShort>(state, throwScope, impl.unsignedShortAttr());
702     return result;
703 }
704
705 EncodedJSValue jsTestDOMJITUnsignedShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
706 {
707     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnsignedShortAttrGetter>(*state, thisValue, "unsignedShortAttr");
708 }
709
710 static inline JSValue jsTestDOMJITLongAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
711 {
712     UNUSED_PARAM(throwScope);
713     UNUSED_PARAM(state);
714     auto& impl = thisObject.wrapped();
715     JSValue result = toJS<IDLLong>(state, throwScope, impl.longAttr());
716     return result;
717 }
718
719 EncodedJSValue jsTestDOMJITLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
720 {
721     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITLongAttrGetter>(*state, thisValue, "longAttr");
722 }
723
724 static inline JSValue jsTestDOMJITUnsignedLongAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
725 {
726     UNUSED_PARAM(throwScope);
727     UNUSED_PARAM(state);
728     auto& impl = thisObject.wrapped();
729     JSValue result = toJS<IDLUnsignedLong>(state, throwScope, impl.unsignedLongAttr());
730     return result;
731 }
732
733 EncodedJSValue jsTestDOMJITUnsignedLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
734 {
735     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnsignedLongAttrGetter>(*state, thisValue, "unsignedLongAttr");
736 }
737
738 static inline JSValue jsTestDOMJITLongLongAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
739 {
740     UNUSED_PARAM(throwScope);
741     UNUSED_PARAM(state);
742     auto& impl = thisObject.wrapped();
743     JSValue result = toJS<IDLLongLong>(state, throwScope, impl.longLongAttr());
744     return result;
745 }
746
747 EncodedJSValue jsTestDOMJITLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
748 {
749     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITLongLongAttrGetter>(*state, thisValue, "longLongAttr");
750 }
751
752 static inline JSValue jsTestDOMJITUnsignedLongLongAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
753 {
754     UNUSED_PARAM(throwScope);
755     UNUSED_PARAM(state);
756     auto& impl = thisObject.wrapped();
757     JSValue result = toJS<IDLUnsignedLongLong>(state, throwScope, impl.unsignedLongLongAttr());
758     return result;
759 }
760
761 EncodedJSValue jsTestDOMJITUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
762 {
763     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnsignedLongLongAttrGetter>(*state, thisValue, "unsignedLongLongAttr");
764 }
765
766 static inline JSValue jsTestDOMJITFloatAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
767 {
768     UNUSED_PARAM(throwScope);
769     UNUSED_PARAM(state);
770     auto& impl = thisObject.wrapped();
771     JSValue result = toJS<IDLFloat>(state, throwScope, impl.floatAttr());
772     return result;
773 }
774
775 EncodedJSValue jsTestDOMJITFloatAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
776 {
777     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITFloatAttrGetter>(*state, thisValue, "floatAttr");
778 }
779
780 static inline JSValue jsTestDOMJITUnrestrictedFloatAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
781 {
782     UNUSED_PARAM(throwScope);
783     UNUSED_PARAM(state);
784     auto& impl = thisObject.wrapped();
785     JSValue result = toJS<IDLUnrestrictedFloat>(state, throwScope, impl.unrestrictedFloatAttr());
786     return result;
787 }
788
789 EncodedJSValue jsTestDOMJITUnrestrictedFloatAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
790 {
791     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnrestrictedFloatAttrGetter>(*state, thisValue, "unrestrictedFloatAttr");
792 }
793
794 static inline JSValue jsTestDOMJITDoubleAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
795 {
796     UNUSED_PARAM(throwScope);
797     UNUSED_PARAM(state);
798     auto& impl = thisObject.wrapped();
799     JSValue result = toJS<IDLDouble>(state, throwScope, impl.doubleAttr());
800     return result;
801 }
802
803 EncodedJSValue jsTestDOMJITDoubleAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
804 {
805     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITDoubleAttrGetter>(*state, thisValue, "doubleAttr");
806 }
807
808 static inline JSValue jsTestDOMJITUnrestrictedDoubleAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
809 {
810     UNUSED_PARAM(throwScope);
811     UNUSED_PARAM(state);
812     auto& impl = thisObject.wrapped();
813     JSValue result = toJS<IDLUnrestrictedDouble>(state, throwScope, impl.unrestrictedDoubleAttr());
814     return result;
815 }
816
817 EncodedJSValue jsTestDOMJITUnrestrictedDoubleAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
818 {
819     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnrestrictedDoubleAttrGetter>(*state, thisValue, "unrestrictedDoubleAttr");
820 }
821
822 static inline JSValue jsTestDOMJITDomStringAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
823 {
824     UNUSED_PARAM(throwScope);
825     UNUSED_PARAM(state);
826     auto& impl = thisObject.wrapped();
827     JSValue result = toJS<IDLDOMString>(state, throwScope, impl.domStringAttr());
828     return result;
829 }
830
831 EncodedJSValue jsTestDOMJITDomStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
832 {
833     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITDomStringAttrGetter>(*state, thisValue, "domStringAttr");
834 }
835
836 static inline JSValue jsTestDOMJITByteStringAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
837 {
838     UNUSED_PARAM(throwScope);
839     UNUSED_PARAM(state);
840     auto& impl = thisObject.wrapped();
841     JSValue result = toJS<IDLByteString>(state, throwScope, impl.byteStringAttr());
842     return result;
843 }
844
845 EncodedJSValue jsTestDOMJITByteStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
846 {
847     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITByteStringAttrGetter>(*state, thisValue, "byteStringAttr");
848 }
849
850 static inline JSValue jsTestDOMJITUsvStringAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
851 {
852     UNUSED_PARAM(throwScope);
853     UNUSED_PARAM(state);
854     auto& impl = thisObject.wrapped();
855     JSValue result = toJS<IDLUSVString>(state, throwScope, impl.usvStringAttr());
856     return result;
857 }
858
859 EncodedJSValue jsTestDOMJITUsvStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
860 {
861     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUsvStringAttrGetter>(*state, thisValue, "usvStringAttr");
862 }
863
864 static inline JSValue jsTestDOMJITNodeAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
865 {
866     UNUSED_PARAM(throwScope);
867     UNUSED_PARAM(state);
868     auto& impl = thisObject.wrapped();
869     JSValue result = toJS<IDLInterface<Node>>(state, *thisObject.globalObject(), throwScope, impl.nodeAttr());
870     return result;
871 }
872
873 EncodedJSValue jsTestDOMJITNodeAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
874 {
875     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITNodeAttrGetter>(*state, thisValue, "nodeAttr");
876 }
877
878 static inline JSValue jsTestDOMJITBooleanNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
879 {
880     UNUSED_PARAM(throwScope);
881     UNUSED_PARAM(state);
882     auto& impl = thisObject.wrapped();
883     JSValue result = toJS<IDLNullable<IDLBoolean>>(state, throwScope, impl.booleanNullableAttr());
884     return result;
885 }
886
887 EncodedJSValue jsTestDOMJITBooleanNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
888 {
889     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITBooleanNullableAttrGetter>(*state, thisValue, "booleanNullableAttr");
890 }
891
892 static inline JSValue jsTestDOMJITByteNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
893 {
894     UNUSED_PARAM(throwScope);
895     UNUSED_PARAM(state);
896     auto& impl = thisObject.wrapped();
897     JSValue result = toJS<IDLNullable<IDLByte>>(state, throwScope, impl.byteNullableAttr());
898     return result;
899 }
900
901 EncodedJSValue jsTestDOMJITByteNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
902 {
903     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITByteNullableAttrGetter>(*state, thisValue, "byteNullableAttr");
904 }
905
906 static inline JSValue jsTestDOMJITOctetNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
907 {
908     UNUSED_PARAM(throwScope);
909     UNUSED_PARAM(state);
910     auto& impl = thisObject.wrapped();
911     JSValue result = toJS<IDLNullable<IDLOctet>>(state, throwScope, impl.octetNullableAttr());
912     return result;
913 }
914
915 EncodedJSValue jsTestDOMJITOctetNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
916 {
917     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITOctetNullableAttrGetter>(*state, thisValue, "octetNullableAttr");
918 }
919
920 static inline JSValue jsTestDOMJITShortNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
921 {
922     UNUSED_PARAM(throwScope);
923     UNUSED_PARAM(state);
924     auto& impl = thisObject.wrapped();
925     JSValue result = toJS<IDLNullable<IDLShort>>(state, throwScope, impl.shortNullableAttr());
926     return result;
927 }
928
929 EncodedJSValue jsTestDOMJITShortNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
930 {
931     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITShortNullableAttrGetter>(*state, thisValue, "shortNullableAttr");
932 }
933
934 static inline JSValue jsTestDOMJITUnsignedShortNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
935 {
936     UNUSED_PARAM(throwScope);
937     UNUSED_PARAM(state);
938     auto& impl = thisObject.wrapped();
939     JSValue result = toJS<IDLNullable<IDLUnsignedShort>>(state, throwScope, impl.unsignedShortNullableAttr());
940     return result;
941 }
942
943 EncodedJSValue jsTestDOMJITUnsignedShortNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
944 {
945     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnsignedShortNullableAttrGetter>(*state, thisValue, "unsignedShortNullableAttr");
946 }
947
948 static inline JSValue jsTestDOMJITLongNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
949 {
950     UNUSED_PARAM(throwScope);
951     UNUSED_PARAM(state);
952     auto& impl = thisObject.wrapped();
953     JSValue result = toJS<IDLNullable<IDLLong>>(state, throwScope, impl.longNullableAttr());
954     return result;
955 }
956
957 EncodedJSValue jsTestDOMJITLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
958 {
959     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITLongNullableAttrGetter>(*state, thisValue, "longNullableAttr");
960 }
961
962 static inline JSValue jsTestDOMJITUnsignedLongNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
963 {
964     UNUSED_PARAM(throwScope);
965     UNUSED_PARAM(state);
966     auto& impl = thisObject.wrapped();
967     JSValue result = toJS<IDLNullable<IDLUnsignedLong>>(state, throwScope, impl.unsignedLongNullableAttr());
968     return result;
969 }
970
971 EncodedJSValue jsTestDOMJITUnsignedLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
972 {
973     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnsignedLongNullableAttrGetter>(*state, thisValue, "unsignedLongNullableAttr");
974 }
975
976 static inline JSValue jsTestDOMJITLongLongNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
977 {
978     UNUSED_PARAM(throwScope);
979     UNUSED_PARAM(state);
980     auto& impl = thisObject.wrapped();
981     JSValue result = toJS<IDLNullable<IDLLongLong>>(state, throwScope, impl.longLongNullableAttr());
982     return result;
983 }
984
985 EncodedJSValue jsTestDOMJITLongLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
986 {
987     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITLongLongNullableAttrGetter>(*state, thisValue, "longLongNullableAttr");
988 }
989
990 static inline JSValue jsTestDOMJITUnsignedLongLongNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
991 {
992     UNUSED_PARAM(throwScope);
993     UNUSED_PARAM(state);
994     auto& impl = thisObject.wrapped();
995     JSValue result = toJS<IDLNullable<IDLUnsignedLongLong>>(state, throwScope, impl.unsignedLongLongNullableAttr());
996     return result;
997 }
998
999 EncodedJSValue jsTestDOMJITUnsignedLongLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1000 {
1001     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnsignedLongLongNullableAttrGetter>(*state, thisValue, "unsignedLongLongNullableAttr");
1002 }
1003
1004 static inline JSValue jsTestDOMJITFloatNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1005 {
1006     UNUSED_PARAM(throwScope);
1007     UNUSED_PARAM(state);
1008     auto& impl = thisObject.wrapped();
1009     JSValue result = toJS<IDLNullable<IDLFloat>>(state, throwScope, impl.floatNullableAttr());
1010     return result;
1011 }
1012
1013 EncodedJSValue jsTestDOMJITFloatNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1014 {
1015     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITFloatNullableAttrGetter>(*state, thisValue, "floatNullableAttr");
1016 }
1017
1018 static inline JSValue jsTestDOMJITUnrestrictedFloatNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1019 {
1020     UNUSED_PARAM(throwScope);
1021     UNUSED_PARAM(state);
1022     auto& impl = thisObject.wrapped();
1023     JSValue result = toJS<IDLNullable<IDLUnrestrictedFloat>>(state, throwScope, impl.unrestrictedFloatNullableAttr());
1024     return result;
1025 }
1026
1027 EncodedJSValue jsTestDOMJITUnrestrictedFloatNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1028 {
1029     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnrestrictedFloatNullableAttrGetter>(*state, thisValue, "unrestrictedFloatNullableAttr");
1030 }
1031
1032 static inline JSValue jsTestDOMJITDoubleNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1033 {
1034     UNUSED_PARAM(throwScope);
1035     UNUSED_PARAM(state);
1036     auto& impl = thisObject.wrapped();
1037     JSValue result = toJS<IDLNullable<IDLDouble>>(state, throwScope, impl.doubleNullableAttr());
1038     return result;
1039 }
1040
1041 EncodedJSValue jsTestDOMJITDoubleNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1042 {
1043     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITDoubleNullableAttrGetter>(*state, thisValue, "doubleNullableAttr");
1044 }
1045
1046 static inline JSValue jsTestDOMJITUnrestrictedDoubleNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1047 {
1048     UNUSED_PARAM(throwScope);
1049     UNUSED_PARAM(state);
1050     auto& impl = thisObject.wrapped();
1051     JSValue result = toJS<IDLNullable<IDLUnrestrictedDouble>>(state, throwScope, impl.unrestrictedDoubleNullableAttr());
1052     return result;
1053 }
1054
1055 EncodedJSValue jsTestDOMJITUnrestrictedDoubleNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1056 {
1057     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUnrestrictedDoubleNullableAttrGetter>(*state, thisValue, "unrestrictedDoubleNullableAttr");
1058 }
1059
1060 static inline JSValue jsTestDOMJITDomStringNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1061 {
1062     UNUSED_PARAM(throwScope);
1063     UNUSED_PARAM(state);
1064     auto& impl = thisObject.wrapped();
1065     JSValue result = toJS<IDLNullable<IDLDOMString>>(state, throwScope, impl.domStringNullableAttr());
1066     return result;
1067 }
1068
1069 EncodedJSValue jsTestDOMJITDomStringNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1070 {
1071     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITDomStringNullableAttrGetter>(*state, thisValue, "domStringNullableAttr");
1072 }
1073
1074 static inline JSValue jsTestDOMJITByteStringNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1075 {
1076     UNUSED_PARAM(throwScope);
1077     UNUSED_PARAM(state);
1078     auto& impl = thisObject.wrapped();
1079     JSValue result = toJS<IDLNullable<IDLByteString>>(state, throwScope, impl.byteStringNullableAttr());
1080     return result;
1081 }
1082
1083 EncodedJSValue jsTestDOMJITByteStringNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1084 {
1085     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITByteStringNullableAttrGetter>(*state, thisValue, "byteStringNullableAttr");
1086 }
1087
1088 static inline JSValue jsTestDOMJITUsvStringNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1089 {
1090     UNUSED_PARAM(throwScope);
1091     UNUSED_PARAM(state);
1092     auto& impl = thisObject.wrapped();
1093     JSValue result = toJS<IDLNullable<IDLUSVString>>(state, throwScope, impl.usvStringNullableAttr());
1094     return result;
1095 }
1096
1097 EncodedJSValue jsTestDOMJITUsvStringNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1098 {
1099     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITUsvStringNullableAttrGetter>(*state, thisValue, "usvStringNullableAttr");
1100 }
1101
1102 static inline JSValue jsTestDOMJITNodeNullableAttrGetter(ExecState& state, JSTestDOMJIT& thisObject, ThrowScope& throwScope)
1103 {
1104     UNUSED_PARAM(throwScope);
1105     UNUSED_PARAM(state);
1106     auto& impl = thisObject.wrapped();
1107     JSValue result = toJS<IDLNullable<IDLInterface<Node>>>(state, *thisObject.globalObject(), throwScope, impl.nodeNullableAttr());
1108     return result;
1109 }
1110
1111 EncodedJSValue jsTestDOMJITNodeNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
1112 {
1113     return IDLAttribute<JSTestDOMJIT>::get<jsTestDOMJITNodeNullableAttrGetter>(*state, thisValue, "nodeNullableAttr");
1114 }
1115
1116 static inline JSC::EncodedJSValue jsTestDOMJITPrototypeFunctionGetAttributeBody(JSC::ExecState* state, typename IDLOperation<JSTestDOMJIT>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
1117 {
1118     UNUSED_PARAM(state);
1119     UNUSED_PARAM(throwScope);
1120     auto& impl = castedThis->wrapped();
1121     if (UNLIKELY(state->argumentCount() < 1))
1122         return throwVMError(state, throwScope, createNotEnoughArgumentsError(state));
1123     auto name = convert<IDLDOMString>(*state, state->uncheckedArgument(0));
1124     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1125     return JSValue::encode(toJS<IDLNullable<IDLDOMString>>(*state, impl.getAttribute(WTFMove(name))));
1126 }
1127
1128 EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionGetAttribute(ExecState* state)
1129 {
1130     return IDLOperation<JSTestDOMJIT>::call<jsTestDOMJITPrototypeFunctionGetAttributeBody>(*state, "getAttribute");
1131 }
1132
1133 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionGetAttribute(JSC::ExecState* state, JSTestDOMJIT* castedThis, DOMJIT::IDLJSArgumentType<IDLDOMString> encodedName)
1134 {
1135     UNUSED_PARAM(state);
1136     VM& vm = state->vm();
1137     JSC::NativeCallFrameTracer tracer(&vm, state);
1138     auto throwScope = DECLARE_THROW_SCOPE(vm);
1139     UNUSED_PARAM(throwScope);
1140     auto& impl = castedThis->wrapped();
1141     auto name = DOMJIT::DirectConverter<IDLDOMString>::directConvert(*state, encodedName);
1142     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1143     return JSValue::encode(toJS<IDLNullable<IDLDOMString>>(*state, impl.getAttribute(WTFMove(name))));
1144 }
1145
1146 static inline JSC::EncodedJSValue jsTestDOMJITPrototypeFunctionItemBody(JSC::ExecState* state, typename IDLOperation<JSTestDOMJIT>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
1147 {
1148     UNUSED_PARAM(state);
1149     UNUSED_PARAM(throwScope);
1150     auto& impl = castedThis->wrapped();
1151     if (UNLIKELY(state->argumentCount() < 2))
1152         return throwVMError(state, throwScope, createNotEnoughArgumentsError(state));
1153     auto x = convert<IDLUnsignedShort>(*state, state->uncheckedArgument(0));
1154     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1155     auto y = convert<IDLUnsignedShort>(*state, state->uncheckedArgument(1));
1156     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1157     return JSValue::encode(toJS<IDLDOMString>(*state, impl.item(WTFMove(x), WTFMove(y))));
1158 }
1159
1160 EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionItem(ExecState* state)
1161 {
1162     return IDLOperation<JSTestDOMJIT>::call<jsTestDOMJITPrototypeFunctionItemBody>(*state, "item");
1163 }
1164
1165 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionItem(JSC::ExecState* state, JSTestDOMJIT* castedThis, DOMJIT::IDLJSArgumentType<IDLUnsignedShort> encodedX, DOMJIT::IDLJSArgumentType<IDLUnsignedShort> encodedY)
1166 {
1167     UNUSED_PARAM(state);
1168     VM& vm = state->vm();
1169     JSC::NativeCallFrameTracer tracer(&vm, state);
1170     auto throwScope = DECLARE_THROW_SCOPE(vm);
1171     UNUSED_PARAM(throwScope);
1172     auto& impl = castedThis->wrapped();
1173     auto x = DOMJIT::DirectConverter<IDLUnsignedShort>::directConvert(*state, encodedX);
1174     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1175     auto y = DOMJIT::DirectConverter<IDLUnsignedShort>::directConvert(*state, encodedY);
1176     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1177     return JSValue::encode(toJS<IDLDOMString>(*state, impl.item(WTFMove(x), WTFMove(y))));
1178 }
1179
1180 static inline JSC::EncodedJSValue jsTestDOMJITPrototypeFunctionHasAttributeBody(JSC::ExecState* state, typename IDLOperation<JSTestDOMJIT>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
1181 {
1182     UNUSED_PARAM(state);
1183     UNUSED_PARAM(throwScope);
1184     auto& impl = castedThis->wrapped();
1185     return JSValue::encode(toJS<IDLBoolean>(impl.hasAttribute()));
1186 }
1187
1188 EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionHasAttribute(ExecState* state)
1189 {
1190     return IDLOperation<JSTestDOMJIT>::call<jsTestDOMJITPrototypeFunctionHasAttributeBody>(*state, "hasAttribute");
1191 }
1192
1193 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionHasAttribute(JSC::ExecState* state, JSTestDOMJIT* castedThis)
1194 {
1195     UNUSED_PARAM(state);
1196     VM& vm = state->vm();
1197     JSC::NativeCallFrameTracer tracer(&vm, state);
1198     auto throwScope = DECLARE_THROW_SCOPE(vm);
1199     UNUSED_PARAM(throwScope);
1200     auto& impl = castedThis->wrapped();
1201     return JSValue::encode(toJS<IDLBoolean>(impl.hasAttribute()));
1202 }
1203
1204 static inline JSC::EncodedJSValue jsTestDOMJITPrototypeFunctionGetElementByIdBody(JSC::ExecState* state, typename IDLOperation<JSTestDOMJIT>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
1205 {
1206     UNUSED_PARAM(state);
1207     UNUSED_PARAM(throwScope);
1208     auto& impl = castedThis->wrapped();
1209     if (UNLIKELY(state->argumentCount() < 1))
1210         return throwVMError(state, throwScope, createNotEnoughArgumentsError(state));
1211     auto elementId = convert<IDLRequiresExistingAtomicStringAdaptor<IDLDOMString>>(*state, state->uncheckedArgument(0));
1212     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1213     return JSValue::encode(toJS<IDLInterface<Element>>(*state, *castedThis->globalObject(), impl.getElementById(WTFMove(elementId))));
1214 }
1215
1216 EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionGetElementById(ExecState* state)
1217 {
1218     return IDLOperation<JSTestDOMJIT>::call<jsTestDOMJITPrototypeFunctionGetElementByIdBody>(*state, "getElementById");
1219 }
1220
1221 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionGetElementById(JSC::ExecState* state, JSTestDOMJIT* castedThis, DOMJIT::IDLJSArgumentType<IDLRequiresExistingAtomicStringAdaptor<IDLDOMString>> encodedElementId)
1222 {
1223     UNUSED_PARAM(state);
1224     VM& vm = state->vm();
1225     JSC::NativeCallFrameTracer tracer(&vm, state);
1226     auto throwScope = DECLARE_THROW_SCOPE(vm);
1227     UNUSED_PARAM(throwScope);
1228     auto& impl = castedThis->wrapped();
1229     auto elementId = DOMJIT::DirectConverter<IDLRequiresExistingAtomicStringAdaptor<IDLDOMString>>::directConvert(*state, encodedElementId);
1230     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1231     return JSValue::encode(toJS<IDLInterface<Element>>(*state, *castedThis->globalObject(), impl.getElementById(WTFMove(elementId))));
1232 }
1233
1234 static inline JSC::EncodedJSValue jsTestDOMJITPrototypeFunctionGetElementsByNameBody(JSC::ExecState* state, typename IDLOperation<JSTestDOMJIT>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
1235 {
1236     UNUSED_PARAM(state);
1237     UNUSED_PARAM(throwScope);
1238     auto& impl = castedThis->wrapped();
1239     if (UNLIKELY(state->argumentCount() < 1))
1240         return throwVMError(state, throwScope, createNotEnoughArgumentsError(state));
1241     auto elementName = convert<IDLAtomicStringAdaptor<IDLDOMString>>(*state, state->uncheckedArgument(0));
1242     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1243     return JSValue::encode(toJS<IDLInterface<NodeList>>(*state, *castedThis->globalObject(), impl.getElementsByName(WTFMove(elementName))));
1244 }
1245
1246 EncodedJSValue JSC_HOST_CALL jsTestDOMJITPrototypeFunctionGetElementsByName(ExecState* state)
1247 {
1248     return IDLOperation<JSTestDOMJIT>::call<jsTestDOMJITPrototypeFunctionGetElementsByNameBody>(*state, "getElementsByName");
1249 }
1250
1251 JSC::EncodedJSValue JIT_OPERATION unsafeJsTestDOMJITPrototypeFunctionGetElementsByName(JSC::ExecState* state, JSTestDOMJIT* castedThis, DOMJIT::IDLJSArgumentType<IDLAtomicStringAdaptor<IDLDOMString>> encodedElementName)
1252 {
1253     UNUSED_PARAM(state);
1254     VM& vm = state->vm();
1255     JSC::NativeCallFrameTracer tracer(&vm, state);
1256     auto throwScope = DECLARE_THROW_SCOPE(vm);
1257     UNUSED_PARAM(throwScope);
1258     auto& impl = castedThis->wrapped();
1259     auto elementName = DOMJIT::DirectConverter<IDLAtomicStringAdaptor<IDLDOMString>>::directConvert(*state, encodedElementName);
1260     RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
1261     return JSValue::encode(toJS<IDLInterface<NodeList>>(*state, *castedThis->globalObject(), impl.getElementsByName(WTFMove(elementName))));
1262 }
1263
1264 void JSTestDOMJIT::heapSnapshot(JSCell* cell, HeapSnapshotBuilder& builder)
1265 {
1266     auto* thisObject = jsCast<JSTestDOMJIT*>(cell);
1267     builder.setWrappedObjectForCell(cell, &thisObject->wrapped());
1268     if (thisObject->scriptExecutionContext())
1269         builder.setLabelForCell(cell, String::format("url %s", thisObject->scriptExecutionContext()->url().string().utf8().data()));
1270     Base::heapSnapshot(cell, builder);
1271 }
1272
1273
1274 }