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