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