Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM SVGElement.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #include "ElementBinding.h"
4 : #include "EventHandlerBinding.h"
5 : #include "SVGElementBinding.h"
6 : #include "WrapperFactory.h"
7 : #include "mozilla/OwningNonNull.h"
8 : #include "mozilla/Preferences.h"
9 : #include "mozilla/dom/BindingUtils.h"
10 : #include "mozilla/dom/DOMJSClass.h"
11 : #include "mozilla/dom/NonRefcountedDOMObject.h"
12 : #include "mozilla/dom/Nullable.h"
13 : #include "mozilla/dom/PrimitiveConversions.h"
14 : #include "mozilla/dom/SVGAnimatedString.h"
15 : #include "mozilla/dom/SVGSVGElement.h"
16 : #include "mozilla/dom/XrayExpandoClass.h"
17 : #include "nsDOMStringMap.h"
18 : #include "nsGenericHTMLElement.h"
19 : #include "nsICSSDeclaration.h"
20 : #include "nsSVGElement.h"
21 :
22 : namespace mozilla {
23 : namespace dom {
24 :
25 : namespace SVGElementBinding {
26 :
27 : static_assert(IsRefcounted<NativeType>::value == IsRefcounted<ElementBinding::NativeType>::value,
28 : "Can't inherit from an interface with a different ownership model.");
29 :
30 : static bool
31 0 : get_id(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
32 : {
33 0 : DOMString result;
34 0 : self->GetId(result);
35 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
36 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
37 0 : return false;
38 : }
39 0 : return true;
40 : }
41 :
42 : static bool
43 0 : set_id(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
44 : {
45 0 : binding_detail::FakeString arg0;
46 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
47 0 : return false;
48 : }
49 0 : self->SetId(NonNullHelper(Constify(arg0)));
50 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
51 :
52 0 : return true;
53 : }
54 :
55 : static const JSJitInfo id_getterinfo = {
56 : { (JSJitGetterOp)get_id },
57 : { prototypes::id::SVGElement },
58 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
59 : JSJitInfo::Getter,
60 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
61 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
62 : false, /* isInfallible. False in setters. */
63 : false, /* isMovable. Not relevant for setters. */
64 : false, /* isEliminatable. Not relevant for setters. */
65 : false, /* isAlwaysInSlot. Only relevant for getters. */
66 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
67 : false, /* isTypedMethod. Only relevant for methods. */
68 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
69 : };
70 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
71 : static_assert(0 < 1, "There is no slot for us");
72 : static const JSJitInfo id_setterinfo = {
73 : { (JSJitGetterOp)set_id },
74 : { prototypes::id::SVGElement },
75 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
76 : JSJitInfo::Setter,
77 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
78 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
79 : false, /* isInfallible. False in setters. */
80 : false, /* isMovable. Not relevant for setters. */
81 : false, /* isEliminatable. Not relevant for setters. */
82 : false, /* isAlwaysInSlot. Only relevant for getters. */
83 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
84 : false, /* isTypedMethod. Only relevant for methods. */
85 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
86 : };
87 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
88 : static_assert(0 < 1, "There is no slot for us");
89 :
90 : static bool
91 0 : get_className(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
92 : {
93 0 : auto result(StrongOrRawPtr<mozilla::dom::SVGAnimatedString>(self->ClassName()));
94 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
95 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
96 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
97 0 : return false;
98 : }
99 0 : return true;
100 : }
101 :
102 : static const JSJitInfo className_getterinfo = {
103 : { (JSJitGetterOp)get_className },
104 : { prototypes::id::SVGElement },
105 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
106 : JSJitInfo::Getter,
107 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
108 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
109 : false, /* isInfallible. False in setters. */
110 : true, /* isMovable. Not relevant for setters. */
111 : true, /* isEliminatable. Not relevant for setters. */
112 : false, /* isAlwaysInSlot. Only relevant for getters. */
113 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
114 : false, /* isTypedMethod. Only relevant for methods. */
115 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
116 : };
117 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
118 : static_assert(0 < 1, "There is no slot for us");
119 :
120 : static bool
121 0 : get_dataset(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
122 : {
123 0 : auto result(StrongOrRawPtr<nsDOMStringMap>(self->Dataset()));
124 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
125 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
126 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
127 0 : return false;
128 : }
129 0 : return true;
130 : }
131 :
132 : static const JSJitInfo dataset_getterinfo = {
133 : { (JSJitGetterOp)get_dataset },
134 : { prototypes::id::SVGElement },
135 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
136 : JSJitInfo::Getter,
137 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
138 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
139 : false, /* isInfallible. False in setters. */
140 : true, /* isMovable. Not relevant for setters. */
141 : true, /* isEliminatable. Not relevant for setters. */
142 : false, /* isAlwaysInSlot. Only relevant for getters. */
143 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
144 : false, /* isTypedMethod. Only relevant for methods. */
145 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
146 : };
147 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
148 : static_assert(0 < 1, "There is no slot for us");
149 :
150 : static bool
151 0 : get_style(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
152 : {
153 0 : auto result(StrongOrRawPtr<nsICSSDeclaration>(self->Style()));
154 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
155 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
156 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
157 0 : return false;
158 : }
159 0 : return true;
160 : }
161 :
162 : static bool
163 0 : set_style(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
164 : {
165 0 : JS::Rooted<JS::Value> v(cx);
166 0 : if (!JS_GetProperty(cx, obj, "style", &v)) {
167 0 : return false;
168 : }
169 :
170 0 : if (!v.isObject()) {
171 0 : return ThrowErrorMessage(cx, MSG_NOT_OBJECT, "SVGElement.style");
172 : }
173 :
174 0 : JS::Rooted<JSObject*> targetObj(cx, &v.toObject());
175 0 : return JS_SetProperty(cx, targetObj, "cssText", args[0]);
176 : }
177 :
178 : static const JSJitInfo style_getterinfo = {
179 : { (JSJitGetterOp)get_style },
180 : { prototypes::id::SVGElement },
181 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
182 : JSJitInfo::Getter,
183 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
184 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
185 : false, /* isInfallible. False in setters. */
186 : true, /* isMovable. Not relevant for setters. */
187 : true, /* isEliminatable. Not relevant for setters. */
188 : false, /* isAlwaysInSlot. Only relevant for getters. */
189 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
190 : false, /* isTypedMethod. Only relevant for methods. */
191 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
192 : };
193 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
194 : static_assert(0 < 1, "There is no slot for us");
195 : static const JSJitInfo style_setterinfo = {
196 : { (JSJitGetterOp)set_style },
197 : { prototypes::id::SVGElement },
198 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
199 : JSJitInfo::Setter,
200 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
201 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
202 : false, /* isInfallible. False in setters. */
203 : false, /* isMovable. Not relevant for setters. */
204 : false, /* isEliminatable. Not relevant for setters. */
205 : false, /* isAlwaysInSlot. Only relevant for getters. */
206 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
207 : false, /* isTypedMethod. Only relevant for methods. */
208 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
209 : };
210 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
211 : static_assert(0 < 1, "There is no slot for us");
212 :
213 : static bool
214 0 : get_ownerSVGElement(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
215 : {
216 0 : auto result(StrongOrRawPtr<mozilla::dom::SVGSVGElement>(self->GetOwnerSVGElement()));
217 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
218 0 : if (!result) {
219 0 : args.rval().setNull();
220 0 : return true;
221 : }
222 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
223 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
224 0 : return false;
225 : }
226 0 : return true;
227 : }
228 :
229 : static const JSJitInfo ownerSVGElement_getterinfo = {
230 : { (JSJitGetterOp)get_ownerSVGElement },
231 : { prototypes::id::SVGElement },
232 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
233 : JSJitInfo::Getter,
234 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
235 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
236 : false, /* isInfallible. False in setters. */
237 : false, /* isMovable. Not relevant for setters. */
238 : false, /* isEliminatable. Not relevant for setters. */
239 : false, /* isAlwaysInSlot. Only relevant for getters. */
240 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
241 : false, /* isTypedMethod. Only relevant for methods. */
242 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
243 : };
244 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
245 : static_assert(0 < 1, "There is no slot for us");
246 :
247 : static bool
248 0 : get_viewportElement(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
249 : {
250 0 : auto result(StrongOrRawPtr<nsSVGElement>(self->GetViewportElement()));
251 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
252 0 : if (!result) {
253 0 : args.rval().setNull();
254 0 : return true;
255 : }
256 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
257 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
258 0 : return false;
259 : }
260 0 : return true;
261 : }
262 :
263 : static const JSJitInfo viewportElement_getterinfo = {
264 : { (JSJitGetterOp)get_viewportElement },
265 : { prototypes::id::SVGElement },
266 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
267 : JSJitInfo::Getter,
268 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
269 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
270 : false, /* isInfallible. False in setters. */
271 : false, /* isMovable. Not relevant for setters. */
272 : false, /* isEliminatable. Not relevant for setters. */
273 : false, /* isAlwaysInSlot. Only relevant for getters. */
274 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
275 : false, /* isTypedMethod. Only relevant for methods. */
276 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
277 : };
278 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
279 : static_assert(0 < 1, "There is no slot for us");
280 :
281 : static bool
282 0 : get_tabIndex(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
283 : {
284 0 : int32_t result(self->TabIndex());
285 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
286 0 : args.rval().setInt32(int32_t(result));
287 0 : return true;
288 : }
289 :
290 : static bool
291 0 : set_tabIndex(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
292 : {
293 : int32_t arg0;
294 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
295 0 : return false;
296 : }
297 0 : binding_detail::FastErrorResult rv;
298 0 : self->SetTabIndex(arg0, rv);
299 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
300 0 : return false;
301 : }
302 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
303 :
304 0 : return true;
305 : }
306 :
307 : static const JSJitInfo tabIndex_getterinfo = {
308 : { (JSJitGetterOp)get_tabIndex },
309 : { prototypes::id::SVGElement },
310 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
311 : JSJitInfo::Getter,
312 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
313 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
314 : true, /* isInfallible. False in setters. */
315 : true, /* isMovable. Not relevant for setters. */
316 : true, /* isEliminatable. Not relevant for setters. */
317 : false, /* isAlwaysInSlot. Only relevant for getters. */
318 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
319 : false, /* isTypedMethod. Only relevant for methods. */
320 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
321 : };
322 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
323 : static_assert(0 < 1, "There is no slot for us");
324 : static const JSJitInfo tabIndex_setterinfo = {
325 : { (JSJitGetterOp)set_tabIndex },
326 : { prototypes::id::SVGElement },
327 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
328 : JSJitInfo::Setter,
329 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
330 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
331 : false, /* isInfallible. False in setters. */
332 : false, /* isMovable. Not relevant for setters. */
333 : false, /* isEliminatable. Not relevant for setters. */
334 : false, /* isAlwaysInSlot. Only relevant for getters. */
335 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
336 : false, /* isTypedMethod. Only relevant for methods. */
337 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
338 : };
339 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
340 : static_assert(0 < 1, "There is no slot for us");
341 :
342 : static bool
343 0 : focus(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, const JSJitMethodCallArgs& args)
344 : {
345 0 : binding_detail::FastErrorResult rv;
346 0 : self->Focus(rv);
347 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
348 0 : return false;
349 : }
350 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
351 0 : args.rval().setUndefined();
352 0 : return true;
353 : }
354 :
355 : static const JSJitInfo focus_methodinfo = {
356 : { (JSJitGetterOp)focus },
357 : { prototypes::id::SVGElement },
358 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
359 : JSJitInfo::Method,
360 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
361 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
362 : false, /* isInfallible. False in setters. */
363 : false, /* isMovable. Not relevant for setters. */
364 : false, /* isEliminatable. Not relevant for setters. */
365 : false, /* isAlwaysInSlot. Only relevant for getters. */
366 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
367 : false, /* isTypedMethod. Only relevant for methods. */
368 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
369 : };
370 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
371 : static_assert(0 < 1, "There is no slot for us");
372 :
373 : static bool
374 0 : blur(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, const JSJitMethodCallArgs& args)
375 : {
376 0 : binding_detail::FastErrorResult rv;
377 0 : self->Blur(rv);
378 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
379 0 : return false;
380 : }
381 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
382 0 : args.rval().setUndefined();
383 0 : return true;
384 : }
385 :
386 : static const JSJitInfo blur_methodinfo = {
387 : { (JSJitGetterOp)blur },
388 : { prototypes::id::SVGElement },
389 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
390 : JSJitInfo::Method,
391 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
392 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
393 : false, /* isInfallible. False in setters. */
394 : false, /* isMovable. Not relevant for setters. */
395 : false, /* isEliminatable. Not relevant for setters. */
396 : false, /* isAlwaysInSlot. Only relevant for getters. */
397 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
398 : false, /* isTypedMethod. Only relevant for methods. */
399 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
400 : };
401 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
402 : static_assert(0 < 1, "There is no slot for us");
403 :
404 : static bool
405 0 : get_oncopy(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
406 : {
407 0 : RefPtr<EventHandlerNonNull> result(self->GetOncopy());
408 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
409 0 : if (result) {
410 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
411 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
412 0 : return false;
413 : }
414 0 : return true;
415 : } else {
416 0 : args.rval().setNull();
417 0 : return true;
418 : }
419 : }
420 :
421 : static bool
422 0 : set_oncopy(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
423 : {
424 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
425 0 : if (args[0].isObject()) {
426 : { // scope for tempRoot
427 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
428 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
429 : }
430 : } else {
431 0 : arg0 = nullptr;
432 : }
433 0 : self->SetOncopy(Constify(arg0));
434 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
435 :
436 0 : return true;
437 : }
438 :
439 : static const JSJitInfo oncopy_getterinfo = {
440 : { (JSJitGetterOp)get_oncopy },
441 : { prototypes::id::SVGElement },
442 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
443 : JSJitInfo::Getter,
444 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
445 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
446 : false, /* isInfallible. False in setters. */
447 : false, /* isMovable. Not relevant for setters. */
448 : false, /* isEliminatable. Not relevant for setters. */
449 : false, /* isAlwaysInSlot. Only relevant for getters. */
450 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
451 : false, /* isTypedMethod. Only relevant for methods. */
452 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
453 : };
454 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
455 : static_assert(0 < 1, "There is no slot for us");
456 : static const JSJitInfo oncopy_setterinfo = {
457 : { (JSJitGetterOp)set_oncopy },
458 : { prototypes::id::SVGElement },
459 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
460 : JSJitInfo::Setter,
461 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
462 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
463 : false, /* isInfallible. False in setters. */
464 : false, /* isMovable. Not relevant for setters. */
465 : false, /* isEliminatable. Not relevant for setters. */
466 : false, /* isAlwaysInSlot. Only relevant for getters. */
467 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
468 : false, /* isTypedMethod. Only relevant for methods. */
469 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
470 : };
471 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
472 : static_assert(0 < 1, "There is no slot for us");
473 :
474 : static bool
475 0 : get_oncut(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
476 : {
477 0 : RefPtr<EventHandlerNonNull> result(self->GetOncut());
478 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
479 0 : if (result) {
480 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
481 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
482 0 : return false;
483 : }
484 0 : return true;
485 : } else {
486 0 : args.rval().setNull();
487 0 : return true;
488 : }
489 : }
490 :
491 : static bool
492 0 : set_oncut(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
493 : {
494 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
495 0 : if (args[0].isObject()) {
496 : { // scope for tempRoot
497 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
498 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
499 : }
500 : } else {
501 0 : arg0 = nullptr;
502 : }
503 0 : self->SetOncut(Constify(arg0));
504 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
505 :
506 0 : return true;
507 : }
508 :
509 : static const JSJitInfo oncut_getterinfo = {
510 : { (JSJitGetterOp)get_oncut },
511 : { prototypes::id::SVGElement },
512 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
513 : JSJitInfo::Getter,
514 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
515 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
516 : false, /* isInfallible. False in setters. */
517 : false, /* isMovable. Not relevant for setters. */
518 : false, /* isEliminatable. Not relevant for setters. */
519 : false, /* isAlwaysInSlot. Only relevant for getters. */
520 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
521 : false, /* isTypedMethod. Only relevant for methods. */
522 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
523 : };
524 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
525 : static_assert(0 < 1, "There is no slot for us");
526 : static const JSJitInfo oncut_setterinfo = {
527 : { (JSJitGetterOp)set_oncut },
528 : { prototypes::id::SVGElement },
529 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
530 : JSJitInfo::Setter,
531 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
532 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
533 : false, /* isInfallible. False in setters. */
534 : false, /* isMovable. Not relevant for setters. */
535 : false, /* isEliminatable. Not relevant for setters. */
536 : false, /* isAlwaysInSlot. Only relevant for getters. */
537 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
538 : false, /* isTypedMethod. Only relevant for methods. */
539 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
540 : };
541 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
542 : static_assert(0 < 1, "There is no slot for us");
543 :
544 : static bool
545 0 : get_onpaste(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
546 : {
547 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpaste());
548 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
549 0 : if (result) {
550 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
551 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
552 0 : return false;
553 : }
554 0 : return true;
555 : } else {
556 0 : args.rval().setNull();
557 0 : return true;
558 : }
559 : }
560 :
561 : static bool
562 0 : set_onpaste(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
563 : {
564 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
565 0 : if (args[0].isObject()) {
566 : { // scope for tempRoot
567 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
568 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
569 : }
570 : } else {
571 0 : arg0 = nullptr;
572 : }
573 0 : self->SetOnpaste(Constify(arg0));
574 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
575 :
576 0 : return true;
577 : }
578 :
579 : static const JSJitInfo onpaste_getterinfo = {
580 : { (JSJitGetterOp)get_onpaste },
581 : { prototypes::id::SVGElement },
582 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
583 : JSJitInfo::Getter,
584 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
585 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
586 : false, /* isInfallible. False in setters. */
587 : false, /* isMovable. Not relevant for setters. */
588 : false, /* isEliminatable. Not relevant for setters. */
589 : false, /* isAlwaysInSlot. Only relevant for getters. */
590 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
591 : false, /* isTypedMethod. Only relevant for methods. */
592 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
593 : };
594 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
595 : static_assert(0 < 1, "There is no slot for us");
596 : static const JSJitInfo onpaste_setterinfo = {
597 : { (JSJitGetterOp)set_onpaste },
598 : { prototypes::id::SVGElement },
599 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
600 : JSJitInfo::Setter,
601 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
602 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
603 : false, /* isInfallible. False in setters. */
604 : false, /* isMovable. Not relevant for setters. */
605 : false, /* isEliminatable. Not relevant for setters. */
606 : false, /* isAlwaysInSlot. Only relevant for getters. */
607 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
608 : false, /* isTypedMethod. Only relevant for methods. */
609 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
610 : };
611 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
612 : static_assert(0 < 1, "There is no slot for us");
613 :
614 : static bool
615 0 : get_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
616 : {
617 0 : RefPtr<EventHandlerNonNull> result(self->GetOnabort());
618 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
619 0 : if (result) {
620 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
621 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
622 0 : return false;
623 : }
624 0 : return true;
625 : } else {
626 0 : args.rval().setNull();
627 0 : return true;
628 : }
629 : }
630 :
631 : static bool
632 0 : set_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
633 : {
634 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
635 0 : if (args[0].isObject()) {
636 : { // scope for tempRoot
637 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
638 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
639 : }
640 : } else {
641 0 : arg0 = nullptr;
642 : }
643 0 : self->SetOnabort(Constify(arg0));
644 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
645 :
646 0 : return true;
647 : }
648 :
649 : static const JSJitInfo onabort_getterinfo = {
650 : { (JSJitGetterOp)get_onabort },
651 : { prototypes::id::SVGElement },
652 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
653 : JSJitInfo::Getter,
654 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
655 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
656 : false, /* isInfallible. False in setters. */
657 : false, /* isMovable. Not relevant for setters. */
658 : false, /* isEliminatable. Not relevant for setters. */
659 : false, /* isAlwaysInSlot. Only relevant for getters. */
660 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
661 : false, /* isTypedMethod. Only relevant for methods. */
662 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
663 : };
664 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
665 : static_assert(0 < 1, "There is no slot for us");
666 : static const JSJitInfo onabort_setterinfo = {
667 : { (JSJitGetterOp)set_onabort },
668 : { prototypes::id::SVGElement },
669 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
670 : JSJitInfo::Setter,
671 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
672 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
673 : false, /* isInfallible. False in setters. */
674 : false, /* isMovable. Not relevant for setters. */
675 : false, /* isEliminatable. Not relevant for setters. */
676 : false, /* isAlwaysInSlot. Only relevant for getters. */
677 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
678 : false, /* isTypedMethod. Only relevant for methods. */
679 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
680 : };
681 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
682 : static_assert(0 < 1, "There is no slot for us");
683 :
684 : static bool
685 0 : get_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
686 : {
687 0 : RefPtr<EventHandlerNonNull> result(self->GetOnblur());
688 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
689 0 : if (result) {
690 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
691 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
692 0 : return false;
693 : }
694 0 : return true;
695 : } else {
696 0 : args.rval().setNull();
697 0 : return true;
698 : }
699 : }
700 :
701 : static bool
702 0 : set_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
703 : {
704 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
705 0 : if (args[0].isObject()) {
706 : { // scope for tempRoot
707 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
708 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
709 : }
710 : } else {
711 0 : arg0 = nullptr;
712 : }
713 0 : self->SetOnblur(Constify(arg0));
714 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
715 :
716 0 : return true;
717 : }
718 :
719 : static const JSJitInfo onblur_getterinfo = {
720 : { (JSJitGetterOp)get_onblur },
721 : { prototypes::id::SVGElement },
722 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
723 : JSJitInfo::Getter,
724 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
725 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
726 : false, /* isInfallible. False in setters. */
727 : false, /* isMovable. Not relevant for setters. */
728 : false, /* isEliminatable. Not relevant for setters. */
729 : false, /* isAlwaysInSlot. Only relevant for getters. */
730 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
731 : false, /* isTypedMethod. Only relevant for methods. */
732 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
733 : };
734 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
735 : static_assert(0 < 1, "There is no slot for us");
736 : static const JSJitInfo onblur_setterinfo = {
737 : { (JSJitGetterOp)set_onblur },
738 : { prototypes::id::SVGElement },
739 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
740 : JSJitInfo::Setter,
741 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
742 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
743 : false, /* isInfallible. False in setters. */
744 : false, /* isMovable. Not relevant for setters. */
745 : false, /* isEliminatable. Not relevant for setters. */
746 : false, /* isAlwaysInSlot. Only relevant for getters. */
747 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
748 : false, /* isTypedMethod. Only relevant for methods. */
749 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
750 : };
751 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
752 : static_assert(0 < 1, "There is no slot for us");
753 :
754 : static bool
755 0 : get_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
756 : {
757 0 : RefPtr<EventHandlerNonNull> result(self->GetOnfocus());
758 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
759 0 : if (result) {
760 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
761 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
762 0 : return false;
763 : }
764 0 : return true;
765 : } else {
766 0 : args.rval().setNull();
767 0 : return true;
768 : }
769 : }
770 :
771 : static bool
772 0 : set_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
773 : {
774 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
775 0 : if (args[0].isObject()) {
776 : { // scope for tempRoot
777 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
778 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
779 : }
780 : } else {
781 0 : arg0 = nullptr;
782 : }
783 0 : self->SetOnfocus(Constify(arg0));
784 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
785 :
786 0 : return true;
787 : }
788 :
789 : static const JSJitInfo onfocus_getterinfo = {
790 : { (JSJitGetterOp)get_onfocus },
791 : { prototypes::id::SVGElement },
792 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
793 : JSJitInfo::Getter,
794 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
795 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
796 : false, /* isInfallible. False in setters. */
797 : false, /* isMovable. Not relevant for setters. */
798 : false, /* isEliminatable. Not relevant for setters. */
799 : false, /* isAlwaysInSlot. Only relevant for getters. */
800 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
801 : false, /* isTypedMethod. Only relevant for methods. */
802 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
803 : };
804 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
805 : static_assert(0 < 1, "There is no slot for us");
806 : static const JSJitInfo onfocus_setterinfo = {
807 : { (JSJitGetterOp)set_onfocus },
808 : { prototypes::id::SVGElement },
809 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
810 : JSJitInfo::Setter,
811 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
812 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
813 : false, /* isInfallible. False in setters. */
814 : false, /* isMovable. Not relevant for setters. */
815 : false, /* isEliminatable. Not relevant for setters. */
816 : false, /* isAlwaysInSlot. Only relevant for getters. */
817 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
818 : false, /* isTypedMethod. Only relevant for methods. */
819 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
820 : };
821 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
822 : static_assert(0 < 1, "There is no slot for us");
823 :
824 : static bool
825 0 : get_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
826 : {
827 0 : RefPtr<EventHandlerNonNull> result(self->GetOnauxclick());
828 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
829 0 : if (result) {
830 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
831 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
832 0 : return false;
833 : }
834 0 : return true;
835 : } else {
836 0 : args.rval().setNull();
837 0 : return true;
838 : }
839 : }
840 :
841 : static bool
842 0 : set_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
843 : {
844 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
845 0 : if (args[0].isObject()) {
846 : { // scope for tempRoot
847 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
848 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
849 : }
850 : } else {
851 0 : arg0 = nullptr;
852 : }
853 0 : self->SetOnauxclick(Constify(arg0));
854 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
855 :
856 0 : return true;
857 : }
858 :
859 : static const JSJitInfo onauxclick_getterinfo = {
860 : { (JSJitGetterOp)get_onauxclick },
861 : { prototypes::id::SVGElement },
862 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
863 : JSJitInfo::Getter,
864 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
865 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
866 : false, /* isInfallible. False in setters. */
867 : false, /* isMovable. Not relevant for setters. */
868 : false, /* isEliminatable. Not relevant for setters. */
869 : false, /* isAlwaysInSlot. Only relevant for getters. */
870 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
871 : false, /* isTypedMethod. Only relevant for methods. */
872 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
873 : };
874 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
875 : static_assert(0 < 1, "There is no slot for us");
876 : static const JSJitInfo onauxclick_setterinfo = {
877 : { (JSJitGetterOp)set_onauxclick },
878 : { prototypes::id::SVGElement },
879 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
880 : JSJitInfo::Setter,
881 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
882 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
883 : false, /* isInfallible. False in setters. */
884 : false, /* isMovable. Not relevant for setters. */
885 : false, /* isEliminatable. Not relevant for setters. */
886 : false, /* isAlwaysInSlot. Only relevant for getters. */
887 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
888 : false, /* isTypedMethod. Only relevant for methods. */
889 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
890 : };
891 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
892 : static_assert(0 < 1, "There is no slot for us");
893 :
894 : static bool
895 0 : get_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
896 : {
897 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplay());
898 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
899 0 : if (result) {
900 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
901 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
902 0 : return false;
903 : }
904 0 : return true;
905 : } else {
906 0 : args.rval().setNull();
907 0 : return true;
908 : }
909 : }
910 :
911 : static bool
912 0 : set_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
913 : {
914 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
915 0 : if (args[0].isObject()) {
916 : { // scope for tempRoot
917 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
918 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
919 : }
920 : } else {
921 0 : arg0 = nullptr;
922 : }
923 0 : self->SetOncanplay(Constify(arg0));
924 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
925 :
926 0 : return true;
927 : }
928 :
929 : static const JSJitInfo oncanplay_getterinfo = {
930 : { (JSJitGetterOp)get_oncanplay },
931 : { prototypes::id::SVGElement },
932 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
933 : JSJitInfo::Getter,
934 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
935 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
936 : false, /* isInfallible. False in setters. */
937 : false, /* isMovable. Not relevant for setters. */
938 : false, /* isEliminatable. Not relevant for setters. */
939 : false, /* isAlwaysInSlot. Only relevant for getters. */
940 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
941 : false, /* isTypedMethod. Only relevant for methods. */
942 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
943 : };
944 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
945 : static_assert(0 < 1, "There is no slot for us");
946 : static const JSJitInfo oncanplay_setterinfo = {
947 : { (JSJitGetterOp)set_oncanplay },
948 : { prototypes::id::SVGElement },
949 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
950 : JSJitInfo::Setter,
951 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
952 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
953 : false, /* isInfallible. False in setters. */
954 : false, /* isMovable. Not relevant for setters. */
955 : false, /* isEliminatable. Not relevant for setters. */
956 : false, /* isAlwaysInSlot. Only relevant for getters. */
957 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
958 : false, /* isTypedMethod. Only relevant for methods. */
959 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
960 : };
961 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
962 : static_assert(0 < 1, "There is no slot for us");
963 :
964 : static bool
965 0 : get_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
966 : {
967 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplaythrough());
968 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
969 0 : if (result) {
970 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
971 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
972 0 : return false;
973 : }
974 0 : return true;
975 : } else {
976 0 : args.rval().setNull();
977 0 : return true;
978 : }
979 : }
980 :
981 : static bool
982 0 : set_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
983 : {
984 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
985 0 : if (args[0].isObject()) {
986 : { // scope for tempRoot
987 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
988 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
989 : }
990 : } else {
991 0 : arg0 = nullptr;
992 : }
993 0 : self->SetOncanplaythrough(Constify(arg0));
994 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
995 :
996 0 : return true;
997 : }
998 :
999 : static const JSJitInfo oncanplaythrough_getterinfo = {
1000 : { (JSJitGetterOp)get_oncanplaythrough },
1001 : { prototypes::id::SVGElement },
1002 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1003 : JSJitInfo::Getter,
1004 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1005 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1006 : false, /* isInfallible. False in setters. */
1007 : false, /* isMovable. Not relevant for setters. */
1008 : false, /* isEliminatable. Not relevant for setters. */
1009 : false, /* isAlwaysInSlot. Only relevant for getters. */
1010 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1011 : false, /* isTypedMethod. Only relevant for methods. */
1012 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1013 : };
1014 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1015 : static_assert(0 < 1, "There is no slot for us");
1016 : static const JSJitInfo oncanplaythrough_setterinfo = {
1017 : { (JSJitGetterOp)set_oncanplaythrough },
1018 : { prototypes::id::SVGElement },
1019 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1020 : JSJitInfo::Setter,
1021 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1022 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1023 : false, /* isInfallible. False in setters. */
1024 : false, /* isMovable. Not relevant for setters. */
1025 : false, /* isEliminatable. Not relevant for setters. */
1026 : false, /* isAlwaysInSlot. Only relevant for getters. */
1027 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1028 : false, /* isTypedMethod. Only relevant for methods. */
1029 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1030 : };
1031 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1032 : static_assert(0 < 1, "There is no slot for us");
1033 :
1034 : static bool
1035 0 : get_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1036 : {
1037 0 : RefPtr<EventHandlerNonNull> result(self->GetOnchange());
1038 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1039 0 : if (result) {
1040 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1041 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1042 0 : return false;
1043 : }
1044 0 : return true;
1045 : } else {
1046 0 : args.rval().setNull();
1047 0 : return true;
1048 : }
1049 : }
1050 :
1051 : static bool
1052 0 : set_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1053 : {
1054 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1055 0 : if (args[0].isObject()) {
1056 : { // scope for tempRoot
1057 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1058 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1059 : }
1060 : } else {
1061 0 : arg0 = nullptr;
1062 : }
1063 0 : self->SetOnchange(Constify(arg0));
1064 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1065 :
1066 0 : return true;
1067 : }
1068 :
1069 : static const JSJitInfo onchange_getterinfo = {
1070 : { (JSJitGetterOp)get_onchange },
1071 : { prototypes::id::SVGElement },
1072 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1073 : JSJitInfo::Getter,
1074 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1075 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1076 : false, /* isInfallible. False in setters. */
1077 : false, /* isMovable. Not relevant for setters. */
1078 : false, /* isEliminatable. Not relevant for setters. */
1079 : false, /* isAlwaysInSlot. Only relevant for getters. */
1080 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1081 : false, /* isTypedMethod. Only relevant for methods. */
1082 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1083 : };
1084 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1085 : static_assert(0 < 1, "There is no slot for us");
1086 : static const JSJitInfo onchange_setterinfo = {
1087 : { (JSJitGetterOp)set_onchange },
1088 : { prototypes::id::SVGElement },
1089 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1090 : JSJitInfo::Setter,
1091 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1092 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1093 : false, /* isInfallible. False in setters. */
1094 : false, /* isMovable. Not relevant for setters. */
1095 : false, /* isEliminatable. Not relevant for setters. */
1096 : false, /* isAlwaysInSlot. Only relevant for getters. */
1097 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1098 : false, /* isTypedMethod. Only relevant for methods. */
1099 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1100 : };
1101 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1102 : static_assert(0 < 1, "There is no slot for us");
1103 :
1104 : static bool
1105 0 : get_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1106 : {
1107 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclick());
1108 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1109 0 : if (result) {
1110 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1111 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1112 0 : return false;
1113 : }
1114 0 : return true;
1115 : } else {
1116 0 : args.rval().setNull();
1117 0 : return true;
1118 : }
1119 : }
1120 :
1121 : static bool
1122 0 : set_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1123 : {
1124 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1125 0 : if (args[0].isObject()) {
1126 : { // scope for tempRoot
1127 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1128 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1129 : }
1130 : } else {
1131 0 : arg0 = nullptr;
1132 : }
1133 0 : self->SetOnclick(Constify(arg0));
1134 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1135 :
1136 0 : return true;
1137 : }
1138 :
1139 : static const JSJitInfo onclick_getterinfo = {
1140 : { (JSJitGetterOp)get_onclick },
1141 : { prototypes::id::SVGElement },
1142 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1143 : JSJitInfo::Getter,
1144 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1145 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1146 : false, /* isInfallible. False in setters. */
1147 : false, /* isMovable. Not relevant for setters. */
1148 : false, /* isEliminatable. Not relevant for setters. */
1149 : false, /* isAlwaysInSlot. Only relevant for getters. */
1150 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1151 : false, /* isTypedMethod. Only relevant for methods. */
1152 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1153 : };
1154 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1155 : static_assert(0 < 1, "There is no slot for us");
1156 : static const JSJitInfo onclick_setterinfo = {
1157 : { (JSJitGetterOp)set_onclick },
1158 : { prototypes::id::SVGElement },
1159 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1160 : JSJitInfo::Setter,
1161 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1162 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1163 : false, /* isInfallible. False in setters. */
1164 : false, /* isMovable. Not relevant for setters. */
1165 : false, /* isEliminatable. Not relevant for setters. */
1166 : false, /* isAlwaysInSlot. Only relevant for getters. */
1167 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1168 : false, /* isTypedMethod. Only relevant for methods. */
1169 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1170 : };
1171 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1172 : static_assert(0 < 1, "There is no slot for us");
1173 :
1174 : static bool
1175 0 : get_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1176 : {
1177 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclose());
1178 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1179 0 : if (result) {
1180 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1181 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1182 0 : return false;
1183 : }
1184 0 : return true;
1185 : } else {
1186 0 : args.rval().setNull();
1187 0 : return true;
1188 : }
1189 : }
1190 :
1191 : static bool
1192 0 : set_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1193 : {
1194 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1195 0 : if (args[0].isObject()) {
1196 : { // scope for tempRoot
1197 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1198 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1199 : }
1200 : } else {
1201 0 : arg0 = nullptr;
1202 : }
1203 0 : self->SetOnclose(Constify(arg0));
1204 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1205 :
1206 0 : return true;
1207 : }
1208 :
1209 : static const JSJitInfo onclose_getterinfo = {
1210 : { (JSJitGetterOp)get_onclose },
1211 : { prototypes::id::SVGElement },
1212 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1213 : JSJitInfo::Getter,
1214 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1215 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1216 : false, /* isInfallible. False in setters. */
1217 : false, /* isMovable. Not relevant for setters. */
1218 : false, /* isEliminatable. Not relevant for setters. */
1219 : false, /* isAlwaysInSlot. Only relevant for getters. */
1220 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1221 : false, /* isTypedMethod. Only relevant for methods. */
1222 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1223 : };
1224 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1225 : static_assert(0 < 1, "There is no slot for us");
1226 : static const JSJitInfo onclose_setterinfo = {
1227 : { (JSJitGetterOp)set_onclose },
1228 : { prototypes::id::SVGElement },
1229 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1230 : JSJitInfo::Setter,
1231 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1232 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1233 : false, /* isInfallible. False in setters. */
1234 : false, /* isMovable. Not relevant for setters. */
1235 : false, /* isEliminatable. Not relevant for setters. */
1236 : false, /* isAlwaysInSlot. Only relevant for getters. */
1237 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1238 : false, /* isTypedMethod. Only relevant for methods. */
1239 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1240 : };
1241 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1242 : static_assert(0 < 1, "There is no slot for us");
1243 :
1244 : static bool
1245 0 : get_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1246 : {
1247 0 : RefPtr<EventHandlerNonNull> result(self->GetOncontextmenu());
1248 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1249 0 : if (result) {
1250 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1251 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1252 0 : return false;
1253 : }
1254 0 : return true;
1255 : } else {
1256 0 : args.rval().setNull();
1257 0 : return true;
1258 : }
1259 : }
1260 :
1261 : static bool
1262 0 : set_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1263 : {
1264 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1265 0 : if (args[0].isObject()) {
1266 : { // scope for tempRoot
1267 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1268 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1269 : }
1270 : } else {
1271 0 : arg0 = nullptr;
1272 : }
1273 0 : self->SetOncontextmenu(Constify(arg0));
1274 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1275 :
1276 0 : return true;
1277 : }
1278 :
1279 : static const JSJitInfo oncontextmenu_getterinfo = {
1280 : { (JSJitGetterOp)get_oncontextmenu },
1281 : { prototypes::id::SVGElement },
1282 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1283 : JSJitInfo::Getter,
1284 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1285 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1286 : false, /* isInfallible. False in setters. */
1287 : false, /* isMovable. Not relevant for setters. */
1288 : false, /* isEliminatable. Not relevant for setters. */
1289 : false, /* isAlwaysInSlot. Only relevant for getters. */
1290 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1291 : false, /* isTypedMethod. Only relevant for methods. */
1292 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1293 : };
1294 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1295 : static_assert(0 < 1, "There is no slot for us");
1296 : static const JSJitInfo oncontextmenu_setterinfo = {
1297 : { (JSJitGetterOp)set_oncontextmenu },
1298 : { prototypes::id::SVGElement },
1299 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1300 : JSJitInfo::Setter,
1301 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1302 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1303 : false, /* isInfallible. False in setters. */
1304 : false, /* isMovable. Not relevant for setters. */
1305 : false, /* isEliminatable. Not relevant for setters. */
1306 : false, /* isAlwaysInSlot. Only relevant for getters. */
1307 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1308 : false, /* isTypedMethod. Only relevant for methods. */
1309 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1310 : };
1311 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1312 : static_assert(0 < 1, "There is no slot for us");
1313 :
1314 : static bool
1315 0 : get_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1316 : {
1317 0 : RefPtr<EventHandlerNonNull> result(self->GetOndblclick());
1318 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1319 0 : if (result) {
1320 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1321 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1322 0 : return false;
1323 : }
1324 0 : return true;
1325 : } else {
1326 0 : args.rval().setNull();
1327 0 : return true;
1328 : }
1329 : }
1330 :
1331 : static bool
1332 0 : set_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1333 : {
1334 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1335 0 : if (args[0].isObject()) {
1336 : { // scope for tempRoot
1337 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1338 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1339 : }
1340 : } else {
1341 0 : arg0 = nullptr;
1342 : }
1343 0 : self->SetOndblclick(Constify(arg0));
1344 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1345 :
1346 0 : return true;
1347 : }
1348 :
1349 : static const JSJitInfo ondblclick_getterinfo = {
1350 : { (JSJitGetterOp)get_ondblclick },
1351 : { prototypes::id::SVGElement },
1352 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1353 : JSJitInfo::Getter,
1354 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1355 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1356 : false, /* isInfallible. False in setters. */
1357 : false, /* isMovable. Not relevant for setters. */
1358 : false, /* isEliminatable. Not relevant for setters. */
1359 : false, /* isAlwaysInSlot. Only relevant for getters. */
1360 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1361 : false, /* isTypedMethod. Only relevant for methods. */
1362 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1363 : };
1364 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1365 : static_assert(0 < 1, "There is no slot for us");
1366 : static const JSJitInfo ondblclick_setterinfo = {
1367 : { (JSJitGetterOp)set_ondblclick },
1368 : { prototypes::id::SVGElement },
1369 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1370 : JSJitInfo::Setter,
1371 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1372 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1373 : false, /* isInfallible. False in setters. */
1374 : false, /* isMovable. Not relevant for setters. */
1375 : false, /* isEliminatable. Not relevant for setters. */
1376 : false, /* isAlwaysInSlot. Only relevant for getters. */
1377 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1378 : false, /* isTypedMethod. Only relevant for methods. */
1379 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1380 : };
1381 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1382 : static_assert(0 < 1, "There is no slot for us");
1383 :
1384 : static bool
1385 0 : get_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1386 : {
1387 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrag());
1388 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1389 0 : if (result) {
1390 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1391 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1392 0 : return false;
1393 : }
1394 0 : return true;
1395 : } else {
1396 0 : args.rval().setNull();
1397 0 : return true;
1398 : }
1399 : }
1400 :
1401 : static bool
1402 0 : set_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1403 : {
1404 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1405 0 : if (args[0].isObject()) {
1406 : { // scope for tempRoot
1407 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1408 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1409 : }
1410 : } else {
1411 0 : arg0 = nullptr;
1412 : }
1413 0 : self->SetOndrag(Constify(arg0));
1414 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1415 :
1416 0 : return true;
1417 : }
1418 :
1419 : static const JSJitInfo ondrag_getterinfo = {
1420 : { (JSJitGetterOp)get_ondrag },
1421 : { prototypes::id::SVGElement },
1422 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1423 : JSJitInfo::Getter,
1424 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1425 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1426 : false, /* isInfallible. False in setters. */
1427 : false, /* isMovable. Not relevant for setters. */
1428 : false, /* isEliminatable. Not relevant for setters. */
1429 : false, /* isAlwaysInSlot. Only relevant for getters. */
1430 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1431 : false, /* isTypedMethod. Only relevant for methods. */
1432 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1433 : };
1434 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1435 : static_assert(0 < 1, "There is no slot for us");
1436 : static const JSJitInfo ondrag_setterinfo = {
1437 : { (JSJitGetterOp)set_ondrag },
1438 : { prototypes::id::SVGElement },
1439 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1440 : JSJitInfo::Setter,
1441 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1442 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1443 : false, /* isInfallible. False in setters. */
1444 : false, /* isMovable. Not relevant for setters. */
1445 : false, /* isEliminatable. Not relevant for setters. */
1446 : false, /* isAlwaysInSlot. Only relevant for getters. */
1447 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1448 : false, /* isTypedMethod. Only relevant for methods. */
1449 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1450 : };
1451 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1452 : static_assert(0 < 1, "There is no slot for us");
1453 :
1454 : static bool
1455 0 : get_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1456 : {
1457 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragend());
1458 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1459 0 : if (result) {
1460 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1461 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1462 0 : return false;
1463 : }
1464 0 : return true;
1465 : } else {
1466 0 : args.rval().setNull();
1467 0 : return true;
1468 : }
1469 : }
1470 :
1471 : static bool
1472 0 : set_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1473 : {
1474 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1475 0 : if (args[0].isObject()) {
1476 : { // scope for tempRoot
1477 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1478 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1479 : }
1480 : } else {
1481 0 : arg0 = nullptr;
1482 : }
1483 0 : self->SetOndragend(Constify(arg0));
1484 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1485 :
1486 0 : return true;
1487 : }
1488 :
1489 : static const JSJitInfo ondragend_getterinfo = {
1490 : { (JSJitGetterOp)get_ondragend },
1491 : { prototypes::id::SVGElement },
1492 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1493 : JSJitInfo::Getter,
1494 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1495 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1496 : false, /* isInfallible. False in setters. */
1497 : false, /* isMovable. Not relevant for setters. */
1498 : false, /* isEliminatable. Not relevant for setters. */
1499 : false, /* isAlwaysInSlot. Only relevant for getters. */
1500 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1501 : false, /* isTypedMethod. Only relevant for methods. */
1502 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1503 : };
1504 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1505 : static_assert(0 < 1, "There is no slot for us");
1506 : static const JSJitInfo ondragend_setterinfo = {
1507 : { (JSJitGetterOp)set_ondragend },
1508 : { prototypes::id::SVGElement },
1509 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1510 : JSJitInfo::Setter,
1511 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1512 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1513 : false, /* isInfallible. False in setters. */
1514 : false, /* isMovable. Not relevant for setters. */
1515 : false, /* isEliminatable. Not relevant for setters. */
1516 : false, /* isAlwaysInSlot. Only relevant for getters. */
1517 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1518 : false, /* isTypedMethod. Only relevant for methods. */
1519 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1520 : };
1521 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1522 : static_assert(0 < 1, "There is no slot for us");
1523 :
1524 : static bool
1525 0 : get_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1526 : {
1527 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragenter());
1528 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1529 0 : if (result) {
1530 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1531 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1532 0 : return false;
1533 : }
1534 0 : return true;
1535 : } else {
1536 0 : args.rval().setNull();
1537 0 : return true;
1538 : }
1539 : }
1540 :
1541 : static bool
1542 0 : set_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1543 : {
1544 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1545 0 : if (args[0].isObject()) {
1546 : { // scope for tempRoot
1547 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1548 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1549 : }
1550 : } else {
1551 0 : arg0 = nullptr;
1552 : }
1553 0 : self->SetOndragenter(Constify(arg0));
1554 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1555 :
1556 0 : return true;
1557 : }
1558 :
1559 : static const JSJitInfo ondragenter_getterinfo = {
1560 : { (JSJitGetterOp)get_ondragenter },
1561 : { prototypes::id::SVGElement },
1562 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1563 : JSJitInfo::Getter,
1564 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1565 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1566 : false, /* isInfallible. False in setters. */
1567 : false, /* isMovable. Not relevant for setters. */
1568 : false, /* isEliminatable. Not relevant for setters. */
1569 : false, /* isAlwaysInSlot. Only relevant for getters. */
1570 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1571 : false, /* isTypedMethod. Only relevant for methods. */
1572 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1573 : };
1574 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1575 : static_assert(0 < 1, "There is no slot for us");
1576 : static const JSJitInfo ondragenter_setterinfo = {
1577 : { (JSJitGetterOp)set_ondragenter },
1578 : { prototypes::id::SVGElement },
1579 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1580 : JSJitInfo::Setter,
1581 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1582 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1583 : false, /* isInfallible. False in setters. */
1584 : false, /* isMovable. Not relevant for setters. */
1585 : false, /* isEliminatable. Not relevant for setters. */
1586 : false, /* isAlwaysInSlot. Only relevant for getters. */
1587 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1588 : false, /* isTypedMethod. Only relevant for methods. */
1589 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1590 : };
1591 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1592 : static_assert(0 < 1, "There is no slot for us");
1593 :
1594 : static bool
1595 0 : get_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1596 : {
1597 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragexit());
1598 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1599 0 : if (result) {
1600 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1601 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1602 0 : return false;
1603 : }
1604 0 : return true;
1605 : } else {
1606 0 : args.rval().setNull();
1607 0 : return true;
1608 : }
1609 : }
1610 :
1611 : static bool
1612 0 : set_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1613 : {
1614 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1615 0 : if (args[0].isObject()) {
1616 : { // scope for tempRoot
1617 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1618 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1619 : }
1620 : } else {
1621 0 : arg0 = nullptr;
1622 : }
1623 0 : self->SetOndragexit(Constify(arg0));
1624 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1625 :
1626 0 : return true;
1627 : }
1628 :
1629 : static const JSJitInfo ondragexit_getterinfo = {
1630 : { (JSJitGetterOp)get_ondragexit },
1631 : { prototypes::id::SVGElement },
1632 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1633 : JSJitInfo::Getter,
1634 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1635 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1636 : false, /* isInfallible. False in setters. */
1637 : false, /* isMovable. Not relevant for setters. */
1638 : false, /* isEliminatable. Not relevant for setters. */
1639 : false, /* isAlwaysInSlot. Only relevant for getters. */
1640 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1641 : false, /* isTypedMethod. Only relevant for methods. */
1642 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1643 : };
1644 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1645 : static_assert(0 < 1, "There is no slot for us");
1646 : static const JSJitInfo ondragexit_setterinfo = {
1647 : { (JSJitGetterOp)set_ondragexit },
1648 : { prototypes::id::SVGElement },
1649 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1650 : JSJitInfo::Setter,
1651 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1652 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1653 : false, /* isInfallible. False in setters. */
1654 : false, /* isMovable. Not relevant for setters. */
1655 : false, /* isEliminatable. Not relevant for setters. */
1656 : false, /* isAlwaysInSlot. Only relevant for getters. */
1657 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1658 : false, /* isTypedMethod. Only relevant for methods. */
1659 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1660 : };
1661 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1662 : static_assert(0 < 1, "There is no slot for us");
1663 :
1664 : static bool
1665 0 : get_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1666 : {
1667 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragleave());
1668 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1669 0 : if (result) {
1670 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1671 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1672 0 : return false;
1673 : }
1674 0 : return true;
1675 : } else {
1676 0 : args.rval().setNull();
1677 0 : return true;
1678 : }
1679 : }
1680 :
1681 : static bool
1682 0 : set_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1683 : {
1684 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1685 0 : if (args[0].isObject()) {
1686 : { // scope for tempRoot
1687 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1688 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1689 : }
1690 : } else {
1691 0 : arg0 = nullptr;
1692 : }
1693 0 : self->SetOndragleave(Constify(arg0));
1694 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1695 :
1696 0 : return true;
1697 : }
1698 :
1699 : static const JSJitInfo ondragleave_getterinfo = {
1700 : { (JSJitGetterOp)get_ondragleave },
1701 : { prototypes::id::SVGElement },
1702 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1703 : JSJitInfo::Getter,
1704 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1705 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1706 : false, /* isInfallible. False in setters. */
1707 : false, /* isMovable. Not relevant for setters. */
1708 : false, /* isEliminatable. Not relevant for setters. */
1709 : false, /* isAlwaysInSlot. Only relevant for getters. */
1710 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1711 : false, /* isTypedMethod. Only relevant for methods. */
1712 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1713 : };
1714 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1715 : static_assert(0 < 1, "There is no slot for us");
1716 : static const JSJitInfo ondragleave_setterinfo = {
1717 : { (JSJitGetterOp)set_ondragleave },
1718 : { prototypes::id::SVGElement },
1719 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1720 : JSJitInfo::Setter,
1721 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1722 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1723 : false, /* isInfallible. False in setters. */
1724 : false, /* isMovable. Not relevant for setters. */
1725 : false, /* isEliminatable. Not relevant for setters. */
1726 : false, /* isAlwaysInSlot. Only relevant for getters. */
1727 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1728 : false, /* isTypedMethod. Only relevant for methods. */
1729 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1730 : };
1731 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1732 : static_assert(0 < 1, "There is no slot for us");
1733 :
1734 : static bool
1735 0 : get_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1736 : {
1737 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragover());
1738 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1739 0 : if (result) {
1740 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1741 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1742 0 : return false;
1743 : }
1744 0 : return true;
1745 : } else {
1746 0 : args.rval().setNull();
1747 0 : return true;
1748 : }
1749 : }
1750 :
1751 : static bool
1752 0 : set_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1753 : {
1754 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1755 0 : if (args[0].isObject()) {
1756 : { // scope for tempRoot
1757 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1758 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1759 : }
1760 : } else {
1761 0 : arg0 = nullptr;
1762 : }
1763 0 : self->SetOndragover(Constify(arg0));
1764 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1765 :
1766 0 : return true;
1767 : }
1768 :
1769 : static const JSJitInfo ondragover_getterinfo = {
1770 : { (JSJitGetterOp)get_ondragover },
1771 : { prototypes::id::SVGElement },
1772 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1773 : JSJitInfo::Getter,
1774 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1775 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1776 : false, /* isInfallible. False in setters. */
1777 : false, /* isMovable. Not relevant for setters. */
1778 : false, /* isEliminatable. Not relevant for setters. */
1779 : false, /* isAlwaysInSlot. Only relevant for getters. */
1780 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1781 : false, /* isTypedMethod. Only relevant for methods. */
1782 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1783 : };
1784 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1785 : static_assert(0 < 1, "There is no slot for us");
1786 : static const JSJitInfo ondragover_setterinfo = {
1787 : { (JSJitGetterOp)set_ondragover },
1788 : { prototypes::id::SVGElement },
1789 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1790 : JSJitInfo::Setter,
1791 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1792 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1793 : false, /* isInfallible. False in setters. */
1794 : false, /* isMovable. Not relevant for setters. */
1795 : false, /* isEliminatable. Not relevant for setters. */
1796 : false, /* isAlwaysInSlot. Only relevant for getters. */
1797 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1798 : false, /* isTypedMethod. Only relevant for methods. */
1799 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1800 : };
1801 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1802 : static_assert(0 < 1, "There is no slot for us");
1803 :
1804 : static bool
1805 0 : get_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1806 : {
1807 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragstart());
1808 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1809 0 : if (result) {
1810 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1811 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1812 0 : return false;
1813 : }
1814 0 : return true;
1815 : } else {
1816 0 : args.rval().setNull();
1817 0 : return true;
1818 : }
1819 : }
1820 :
1821 : static bool
1822 0 : set_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1823 : {
1824 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1825 0 : if (args[0].isObject()) {
1826 : { // scope for tempRoot
1827 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1828 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1829 : }
1830 : } else {
1831 0 : arg0 = nullptr;
1832 : }
1833 0 : self->SetOndragstart(Constify(arg0));
1834 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1835 :
1836 0 : return true;
1837 : }
1838 :
1839 : static const JSJitInfo ondragstart_getterinfo = {
1840 : { (JSJitGetterOp)get_ondragstart },
1841 : { prototypes::id::SVGElement },
1842 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1843 : JSJitInfo::Getter,
1844 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1845 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1846 : false, /* isInfallible. False in setters. */
1847 : false, /* isMovable. Not relevant for setters. */
1848 : false, /* isEliminatable. Not relevant for setters. */
1849 : false, /* isAlwaysInSlot. Only relevant for getters. */
1850 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1851 : false, /* isTypedMethod. Only relevant for methods. */
1852 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1853 : };
1854 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1855 : static_assert(0 < 1, "There is no slot for us");
1856 : static const JSJitInfo ondragstart_setterinfo = {
1857 : { (JSJitGetterOp)set_ondragstart },
1858 : { prototypes::id::SVGElement },
1859 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1860 : JSJitInfo::Setter,
1861 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1862 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1863 : false, /* isInfallible. False in setters. */
1864 : false, /* isMovable. Not relevant for setters. */
1865 : false, /* isEliminatable. Not relevant for setters. */
1866 : false, /* isAlwaysInSlot. Only relevant for getters. */
1867 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1868 : false, /* isTypedMethod. Only relevant for methods. */
1869 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1870 : };
1871 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1872 : static_assert(0 < 1, "There is no slot for us");
1873 :
1874 : static bool
1875 0 : get_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1876 : {
1877 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrop());
1878 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1879 0 : if (result) {
1880 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1881 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1882 0 : return false;
1883 : }
1884 0 : return true;
1885 : } else {
1886 0 : args.rval().setNull();
1887 0 : return true;
1888 : }
1889 : }
1890 :
1891 : static bool
1892 0 : set_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1893 : {
1894 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1895 0 : if (args[0].isObject()) {
1896 : { // scope for tempRoot
1897 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1898 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1899 : }
1900 : } else {
1901 0 : arg0 = nullptr;
1902 : }
1903 0 : self->SetOndrop(Constify(arg0));
1904 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1905 :
1906 0 : return true;
1907 : }
1908 :
1909 : static const JSJitInfo ondrop_getterinfo = {
1910 : { (JSJitGetterOp)get_ondrop },
1911 : { prototypes::id::SVGElement },
1912 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1913 : JSJitInfo::Getter,
1914 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1915 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1916 : false, /* isInfallible. False in setters. */
1917 : false, /* isMovable. Not relevant for setters. */
1918 : false, /* isEliminatable. Not relevant for setters. */
1919 : false, /* isAlwaysInSlot. Only relevant for getters. */
1920 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1921 : false, /* isTypedMethod. Only relevant for methods. */
1922 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1923 : };
1924 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1925 : static_assert(0 < 1, "There is no slot for us");
1926 : static const JSJitInfo ondrop_setterinfo = {
1927 : { (JSJitGetterOp)set_ondrop },
1928 : { prototypes::id::SVGElement },
1929 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1930 : JSJitInfo::Setter,
1931 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1932 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1933 : false, /* isInfallible. False in setters. */
1934 : false, /* isMovable. Not relevant for setters. */
1935 : false, /* isEliminatable. Not relevant for setters. */
1936 : false, /* isAlwaysInSlot. Only relevant for getters. */
1937 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1938 : false, /* isTypedMethod. Only relevant for methods. */
1939 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1940 : };
1941 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1942 : static_assert(0 < 1, "There is no slot for us");
1943 :
1944 : static bool
1945 0 : get_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
1946 : {
1947 0 : RefPtr<EventHandlerNonNull> result(self->GetOndurationchange());
1948 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1949 0 : if (result) {
1950 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1951 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1952 0 : return false;
1953 : }
1954 0 : return true;
1955 : } else {
1956 0 : args.rval().setNull();
1957 0 : return true;
1958 : }
1959 : }
1960 :
1961 : static bool
1962 0 : set_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
1963 : {
1964 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1965 0 : if (args[0].isObject()) {
1966 : { // scope for tempRoot
1967 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1968 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1969 : }
1970 : } else {
1971 0 : arg0 = nullptr;
1972 : }
1973 0 : self->SetOndurationchange(Constify(arg0));
1974 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1975 :
1976 0 : return true;
1977 : }
1978 :
1979 : static const JSJitInfo ondurationchange_getterinfo = {
1980 : { (JSJitGetterOp)get_ondurationchange },
1981 : { prototypes::id::SVGElement },
1982 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
1983 : JSJitInfo::Getter,
1984 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1985 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1986 : false, /* isInfallible. False in setters. */
1987 : false, /* isMovable. Not relevant for setters. */
1988 : false, /* isEliminatable. Not relevant for setters. */
1989 : false, /* isAlwaysInSlot. Only relevant for getters. */
1990 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1991 : false, /* isTypedMethod. Only relevant for methods. */
1992 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1993 : };
1994 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1995 : static_assert(0 < 1, "There is no slot for us");
1996 : static const JSJitInfo ondurationchange_setterinfo = {
1997 : { (JSJitGetterOp)set_ondurationchange },
1998 : { prototypes::id::SVGElement },
1999 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2000 : JSJitInfo::Setter,
2001 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2002 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2003 : false, /* isInfallible. False in setters. */
2004 : false, /* isMovable. Not relevant for setters. */
2005 : false, /* isEliminatable. Not relevant for setters. */
2006 : false, /* isAlwaysInSlot. Only relevant for getters. */
2007 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2008 : false, /* isTypedMethod. Only relevant for methods. */
2009 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2010 : };
2011 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2012 : static_assert(0 < 1, "There is no slot for us");
2013 :
2014 : static bool
2015 0 : get_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2016 : {
2017 0 : RefPtr<EventHandlerNonNull> result(self->GetOnemptied());
2018 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2019 0 : if (result) {
2020 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2021 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2022 0 : return false;
2023 : }
2024 0 : return true;
2025 : } else {
2026 0 : args.rval().setNull();
2027 0 : return true;
2028 : }
2029 : }
2030 :
2031 : static bool
2032 0 : set_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2033 : {
2034 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2035 0 : if (args[0].isObject()) {
2036 : { // scope for tempRoot
2037 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2038 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2039 : }
2040 : } else {
2041 0 : arg0 = nullptr;
2042 : }
2043 0 : self->SetOnemptied(Constify(arg0));
2044 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2045 :
2046 0 : return true;
2047 : }
2048 :
2049 : static const JSJitInfo onemptied_getterinfo = {
2050 : { (JSJitGetterOp)get_onemptied },
2051 : { prototypes::id::SVGElement },
2052 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2053 : JSJitInfo::Getter,
2054 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2055 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2056 : false, /* isInfallible. False in setters. */
2057 : false, /* isMovable. Not relevant for setters. */
2058 : false, /* isEliminatable. Not relevant for setters. */
2059 : false, /* isAlwaysInSlot. Only relevant for getters. */
2060 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2061 : false, /* isTypedMethod. Only relevant for methods. */
2062 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2063 : };
2064 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2065 : static_assert(0 < 1, "There is no slot for us");
2066 : static const JSJitInfo onemptied_setterinfo = {
2067 : { (JSJitGetterOp)set_onemptied },
2068 : { prototypes::id::SVGElement },
2069 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2070 : JSJitInfo::Setter,
2071 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2072 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2073 : false, /* isInfallible. False in setters. */
2074 : false, /* isMovable. Not relevant for setters. */
2075 : false, /* isEliminatable. Not relevant for setters. */
2076 : false, /* isAlwaysInSlot. Only relevant for getters. */
2077 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2078 : false, /* isTypedMethod. Only relevant for methods. */
2079 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2080 : };
2081 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2082 : static_assert(0 < 1, "There is no slot for us");
2083 :
2084 : static bool
2085 0 : get_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2086 : {
2087 0 : RefPtr<EventHandlerNonNull> result(self->GetOnended());
2088 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2089 0 : if (result) {
2090 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2091 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2092 0 : return false;
2093 : }
2094 0 : return true;
2095 : } else {
2096 0 : args.rval().setNull();
2097 0 : return true;
2098 : }
2099 : }
2100 :
2101 : static bool
2102 0 : set_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2103 : {
2104 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2105 0 : if (args[0].isObject()) {
2106 : { // scope for tempRoot
2107 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2108 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2109 : }
2110 : } else {
2111 0 : arg0 = nullptr;
2112 : }
2113 0 : self->SetOnended(Constify(arg0));
2114 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2115 :
2116 0 : return true;
2117 : }
2118 :
2119 : static const JSJitInfo onended_getterinfo = {
2120 : { (JSJitGetterOp)get_onended },
2121 : { prototypes::id::SVGElement },
2122 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2123 : JSJitInfo::Getter,
2124 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2125 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2126 : false, /* isInfallible. False in setters. */
2127 : false, /* isMovable. Not relevant for setters. */
2128 : false, /* isEliminatable. Not relevant for setters. */
2129 : false, /* isAlwaysInSlot. Only relevant for getters. */
2130 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2131 : false, /* isTypedMethod. Only relevant for methods. */
2132 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2133 : };
2134 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2135 : static_assert(0 < 1, "There is no slot for us");
2136 : static const JSJitInfo onended_setterinfo = {
2137 : { (JSJitGetterOp)set_onended },
2138 : { prototypes::id::SVGElement },
2139 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2140 : JSJitInfo::Setter,
2141 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2142 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2143 : false, /* isInfallible. False in setters. */
2144 : false, /* isMovable. Not relevant for setters. */
2145 : false, /* isEliminatable. Not relevant for setters. */
2146 : false, /* isAlwaysInSlot. Only relevant for getters. */
2147 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2148 : false, /* isTypedMethod. Only relevant for methods. */
2149 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2150 : };
2151 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2152 : static_assert(0 < 1, "There is no slot for us");
2153 :
2154 : static bool
2155 0 : get_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2156 : {
2157 0 : RefPtr<EventHandlerNonNull> result(self->GetOninput());
2158 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2159 0 : if (result) {
2160 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2161 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2162 0 : return false;
2163 : }
2164 0 : return true;
2165 : } else {
2166 0 : args.rval().setNull();
2167 0 : return true;
2168 : }
2169 : }
2170 :
2171 : static bool
2172 0 : set_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2173 : {
2174 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2175 0 : if (args[0].isObject()) {
2176 : { // scope for tempRoot
2177 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2178 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2179 : }
2180 : } else {
2181 0 : arg0 = nullptr;
2182 : }
2183 0 : self->SetOninput(Constify(arg0));
2184 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2185 :
2186 0 : return true;
2187 : }
2188 :
2189 : static const JSJitInfo oninput_getterinfo = {
2190 : { (JSJitGetterOp)get_oninput },
2191 : { prototypes::id::SVGElement },
2192 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2193 : JSJitInfo::Getter,
2194 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2195 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2196 : false, /* isInfallible. False in setters. */
2197 : false, /* isMovable. Not relevant for setters. */
2198 : false, /* isEliminatable. Not relevant for setters. */
2199 : false, /* isAlwaysInSlot. Only relevant for getters. */
2200 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2201 : false, /* isTypedMethod. Only relevant for methods. */
2202 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2203 : };
2204 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2205 : static_assert(0 < 1, "There is no slot for us");
2206 : static const JSJitInfo oninput_setterinfo = {
2207 : { (JSJitGetterOp)set_oninput },
2208 : { prototypes::id::SVGElement },
2209 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2210 : JSJitInfo::Setter,
2211 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2212 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2213 : false, /* isInfallible. False in setters. */
2214 : false, /* isMovable. Not relevant for setters. */
2215 : false, /* isEliminatable. Not relevant for setters. */
2216 : false, /* isAlwaysInSlot. Only relevant for getters. */
2217 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2218 : false, /* isTypedMethod. Only relevant for methods. */
2219 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2220 : };
2221 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2222 : static_assert(0 < 1, "There is no slot for us");
2223 :
2224 : static bool
2225 0 : get_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2226 : {
2227 0 : RefPtr<EventHandlerNonNull> result(self->GetOninvalid());
2228 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2229 0 : if (result) {
2230 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2231 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2232 0 : return false;
2233 : }
2234 0 : return true;
2235 : } else {
2236 0 : args.rval().setNull();
2237 0 : return true;
2238 : }
2239 : }
2240 :
2241 : static bool
2242 0 : set_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2243 : {
2244 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2245 0 : if (args[0].isObject()) {
2246 : { // scope for tempRoot
2247 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2248 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2249 : }
2250 : } else {
2251 0 : arg0 = nullptr;
2252 : }
2253 0 : self->SetOninvalid(Constify(arg0));
2254 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2255 :
2256 0 : return true;
2257 : }
2258 :
2259 : static const JSJitInfo oninvalid_getterinfo = {
2260 : { (JSJitGetterOp)get_oninvalid },
2261 : { prototypes::id::SVGElement },
2262 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2263 : JSJitInfo::Getter,
2264 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2265 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2266 : false, /* isInfallible. False in setters. */
2267 : false, /* isMovable. Not relevant for setters. */
2268 : false, /* isEliminatable. Not relevant for setters. */
2269 : false, /* isAlwaysInSlot. Only relevant for getters. */
2270 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2271 : false, /* isTypedMethod. Only relevant for methods. */
2272 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2273 : };
2274 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2275 : static_assert(0 < 1, "There is no slot for us");
2276 : static const JSJitInfo oninvalid_setterinfo = {
2277 : { (JSJitGetterOp)set_oninvalid },
2278 : { prototypes::id::SVGElement },
2279 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2280 : JSJitInfo::Setter,
2281 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2282 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2283 : false, /* isInfallible. False in setters. */
2284 : false, /* isMovable. Not relevant for setters. */
2285 : false, /* isEliminatable. Not relevant for setters. */
2286 : false, /* isAlwaysInSlot. Only relevant for getters. */
2287 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2288 : false, /* isTypedMethod. Only relevant for methods. */
2289 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2290 : };
2291 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2292 : static_assert(0 < 1, "There is no slot for us");
2293 :
2294 : static bool
2295 0 : get_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2296 : {
2297 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeydown());
2298 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2299 0 : if (result) {
2300 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2301 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2302 0 : return false;
2303 : }
2304 0 : return true;
2305 : } else {
2306 0 : args.rval().setNull();
2307 0 : return true;
2308 : }
2309 : }
2310 :
2311 : static bool
2312 0 : set_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2313 : {
2314 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2315 0 : if (args[0].isObject()) {
2316 : { // scope for tempRoot
2317 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2318 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2319 : }
2320 : } else {
2321 0 : arg0 = nullptr;
2322 : }
2323 0 : self->SetOnkeydown(Constify(arg0));
2324 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2325 :
2326 0 : return true;
2327 : }
2328 :
2329 : static const JSJitInfo onkeydown_getterinfo = {
2330 : { (JSJitGetterOp)get_onkeydown },
2331 : { prototypes::id::SVGElement },
2332 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2333 : JSJitInfo::Getter,
2334 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2335 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2336 : false, /* isInfallible. False in setters. */
2337 : false, /* isMovable. Not relevant for setters. */
2338 : false, /* isEliminatable. Not relevant for setters. */
2339 : false, /* isAlwaysInSlot. Only relevant for getters. */
2340 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2341 : false, /* isTypedMethod. Only relevant for methods. */
2342 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2343 : };
2344 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2345 : static_assert(0 < 1, "There is no slot for us");
2346 : static const JSJitInfo onkeydown_setterinfo = {
2347 : { (JSJitGetterOp)set_onkeydown },
2348 : { prototypes::id::SVGElement },
2349 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2350 : JSJitInfo::Setter,
2351 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2352 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2353 : false, /* isInfallible. False in setters. */
2354 : false, /* isMovable. Not relevant for setters. */
2355 : false, /* isEliminatable. Not relevant for setters. */
2356 : false, /* isAlwaysInSlot. Only relevant for getters. */
2357 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2358 : false, /* isTypedMethod. Only relevant for methods. */
2359 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2360 : };
2361 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2362 : static_assert(0 < 1, "There is no slot for us");
2363 :
2364 : static bool
2365 0 : get_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2366 : {
2367 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeypress());
2368 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2369 0 : if (result) {
2370 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2371 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2372 0 : return false;
2373 : }
2374 0 : return true;
2375 : } else {
2376 0 : args.rval().setNull();
2377 0 : return true;
2378 : }
2379 : }
2380 :
2381 : static bool
2382 0 : set_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2383 : {
2384 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2385 0 : if (args[0].isObject()) {
2386 : { // scope for tempRoot
2387 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2388 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2389 : }
2390 : } else {
2391 0 : arg0 = nullptr;
2392 : }
2393 0 : self->SetOnkeypress(Constify(arg0));
2394 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2395 :
2396 0 : return true;
2397 : }
2398 :
2399 : static const JSJitInfo onkeypress_getterinfo = {
2400 : { (JSJitGetterOp)get_onkeypress },
2401 : { prototypes::id::SVGElement },
2402 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2403 : JSJitInfo::Getter,
2404 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2405 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2406 : false, /* isInfallible. False in setters. */
2407 : false, /* isMovable. Not relevant for setters. */
2408 : false, /* isEliminatable. Not relevant for setters. */
2409 : false, /* isAlwaysInSlot. Only relevant for getters. */
2410 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2411 : false, /* isTypedMethod. Only relevant for methods. */
2412 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2413 : };
2414 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2415 : static_assert(0 < 1, "There is no slot for us");
2416 : static const JSJitInfo onkeypress_setterinfo = {
2417 : { (JSJitGetterOp)set_onkeypress },
2418 : { prototypes::id::SVGElement },
2419 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2420 : JSJitInfo::Setter,
2421 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2422 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2423 : false, /* isInfallible. False in setters. */
2424 : false, /* isMovable. Not relevant for setters. */
2425 : false, /* isEliminatable. Not relevant for setters. */
2426 : false, /* isAlwaysInSlot. Only relevant for getters. */
2427 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2428 : false, /* isTypedMethod. Only relevant for methods. */
2429 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2430 : };
2431 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2432 : static_assert(0 < 1, "There is no slot for us");
2433 :
2434 : static bool
2435 0 : get_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2436 : {
2437 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeyup());
2438 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2439 0 : if (result) {
2440 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2441 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2442 0 : return false;
2443 : }
2444 0 : return true;
2445 : } else {
2446 0 : args.rval().setNull();
2447 0 : return true;
2448 : }
2449 : }
2450 :
2451 : static bool
2452 0 : set_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2453 : {
2454 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2455 0 : if (args[0].isObject()) {
2456 : { // scope for tempRoot
2457 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2458 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2459 : }
2460 : } else {
2461 0 : arg0 = nullptr;
2462 : }
2463 0 : self->SetOnkeyup(Constify(arg0));
2464 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2465 :
2466 0 : return true;
2467 : }
2468 :
2469 : static const JSJitInfo onkeyup_getterinfo = {
2470 : { (JSJitGetterOp)get_onkeyup },
2471 : { prototypes::id::SVGElement },
2472 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2473 : JSJitInfo::Getter,
2474 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2475 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2476 : false, /* isInfallible. False in setters. */
2477 : false, /* isMovable. Not relevant for setters. */
2478 : false, /* isEliminatable. Not relevant for setters. */
2479 : false, /* isAlwaysInSlot. Only relevant for getters. */
2480 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2481 : false, /* isTypedMethod. Only relevant for methods. */
2482 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2483 : };
2484 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2485 : static_assert(0 < 1, "There is no slot for us");
2486 : static const JSJitInfo onkeyup_setterinfo = {
2487 : { (JSJitGetterOp)set_onkeyup },
2488 : { prototypes::id::SVGElement },
2489 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2490 : JSJitInfo::Setter,
2491 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2492 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2493 : false, /* isInfallible. False in setters. */
2494 : false, /* isMovable. Not relevant for setters. */
2495 : false, /* isEliminatable. Not relevant for setters. */
2496 : false, /* isAlwaysInSlot. Only relevant for getters. */
2497 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2498 : false, /* isTypedMethod. Only relevant for methods. */
2499 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2500 : };
2501 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2502 : static_assert(0 < 1, "There is no slot for us");
2503 :
2504 : static bool
2505 0 : get_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2506 : {
2507 0 : RefPtr<EventHandlerNonNull> result(self->GetOnload());
2508 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2509 0 : if (result) {
2510 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2511 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2512 0 : return false;
2513 : }
2514 0 : return true;
2515 : } else {
2516 0 : args.rval().setNull();
2517 0 : return true;
2518 : }
2519 : }
2520 :
2521 : static bool
2522 0 : set_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2523 : {
2524 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2525 0 : if (args[0].isObject()) {
2526 : { // scope for tempRoot
2527 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2528 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2529 : }
2530 : } else {
2531 0 : arg0 = nullptr;
2532 : }
2533 0 : self->SetOnload(Constify(arg0));
2534 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2535 :
2536 0 : return true;
2537 : }
2538 :
2539 : static const JSJitInfo onload_getterinfo = {
2540 : { (JSJitGetterOp)get_onload },
2541 : { prototypes::id::SVGElement },
2542 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2543 : JSJitInfo::Getter,
2544 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2545 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2546 : false, /* isInfallible. False in setters. */
2547 : false, /* isMovable. Not relevant for setters. */
2548 : false, /* isEliminatable. Not relevant for setters. */
2549 : false, /* isAlwaysInSlot. Only relevant for getters. */
2550 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2551 : false, /* isTypedMethod. Only relevant for methods. */
2552 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2553 : };
2554 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2555 : static_assert(0 < 1, "There is no slot for us");
2556 : static const JSJitInfo onload_setterinfo = {
2557 : { (JSJitGetterOp)set_onload },
2558 : { prototypes::id::SVGElement },
2559 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2560 : JSJitInfo::Setter,
2561 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2562 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2563 : false, /* isInfallible. False in setters. */
2564 : false, /* isMovable. Not relevant for setters. */
2565 : false, /* isEliminatable. Not relevant for setters. */
2566 : false, /* isAlwaysInSlot. Only relevant for getters. */
2567 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2568 : false, /* isTypedMethod. Only relevant for methods. */
2569 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2570 : };
2571 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2572 : static_assert(0 < 1, "There is no slot for us");
2573 :
2574 : static bool
2575 0 : get_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2576 : {
2577 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadeddata());
2578 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2579 0 : if (result) {
2580 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2581 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2582 0 : return false;
2583 : }
2584 0 : return true;
2585 : } else {
2586 0 : args.rval().setNull();
2587 0 : return true;
2588 : }
2589 : }
2590 :
2591 : static bool
2592 0 : set_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2593 : {
2594 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2595 0 : if (args[0].isObject()) {
2596 : { // scope for tempRoot
2597 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2598 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2599 : }
2600 : } else {
2601 0 : arg0 = nullptr;
2602 : }
2603 0 : self->SetOnloadeddata(Constify(arg0));
2604 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2605 :
2606 0 : return true;
2607 : }
2608 :
2609 : static const JSJitInfo onloadeddata_getterinfo = {
2610 : { (JSJitGetterOp)get_onloadeddata },
2611 : { prototypes::id::SVGElement },
2612 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2613 : JSJitInfo::Getter,
2614 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2615 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2616 : false, /* isInfallible. False in setters. */
2617 : false, /* isMovable. Not relevant for setters. */
2618 : false, /* isEliminatable. Not relevant for setters. */
2619 : false, /* isAlwaysInSlot. Only relevant for getters. */
2620 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2621 : false, /* isTypedMethod. Only relevant for methods. */
2622 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2623 : };
2624 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2625 : static_assert(0 < 1, "There is no slot for us");
2626 : static const JSJitInfo onloadeddata_setterinfo = {
2627 : { (JSJitGetterOp)set_onloadeddata },
2628 : { prototypes::id::SVGElement },
2629 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2630 : JSJitInfo::Setter,
2631 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2632 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2633 : false, /* isInfallible. False in setters. */
2634 : false, /* isMovable. Not relevant for setters. */
2635 : false, /* isEliminatable. Not relevant for setters. */
2636 : false, /* isAlwaysInSlot. Only relevant for getters. */
2637 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2638 : false, /* isTypedMethod. Only relevant for methods. */
2639 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2640 : };
2641 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2642 : static_assert(0 < 1, "There is no slot for us");
2643 :
2644 : static bool
2645 0 : get_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2646 : {
2647 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadedmetadata());
2648 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2649 0 : if (result) {
2650 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2651 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2652 0 : return false;
2653 : }
2654 0 : return true;
2655 : } else {
2656 0 : args.rval().setNull();
2657 0 : return true;
2658 : }
2659 : }
2660 :
2661 : static bool
2662 0 : set_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2663 : {
2664 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2665 0 : if (args[0].isObject()) {
2666 : { // scope for tempRoot
2667 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2668 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2669 : }
2670 : } else {
2671 0 : arg0 = nullptr;
2672 : }
2673 0 : self->SetOnloadedmetadata(Constify(arg0));
2674 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2675 :
2676 0 : return true;
2677 : }
2678 :
2679 : static const JSJitInfo onloadedmetadata_getterinfo = {
2680 : { (JSJitGetterOp)get_onloadedmetadata },
2681 : { prototypes::id::SVGElement },
2682 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2683 : JSJitInfo::Getter,
2684 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2685 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2686 : false, /* isInfallible. False in setters. */
2687 : false, /* isMovable. Not relevant for setters. */
2688 : false, /* isEliminatable. Not relevant for setters. */
2689 : false, /* isAlwaysInSlot. Only relevant for getters. */
2690 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2691 : false, /* isTypedMethod. Only relevant for methods. */
2692 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2693 : };
2694 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2695 : static_assert(0 < 1, "There is no slot for us");
2696 : static const JSJitInfo onloadedmetadata_setterinfo = {
2697 : { (JSJitGetterOp)set_onloadedmetadata },
2698 : { prototypes::id::SVGElement },
2699 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2700 : JSJitInfo::Setter,
2701 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2702 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2703 : false, /* isInfallible. False in setters. */
2704 : false, /* isMovable. Not relevant for setters. */
2705 : false, /* isEliminatable. Not relevant for setters. */
2706 : false, /* isAlwaysInSlot. Only relevant for getters. */
2707 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2708 : false, /* isTypedMethod. Only relevant for methods. */
2709 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2710 : };
2711 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2712 : static_assert(0 < 1, "There is no slot for us");
2713 :
2714 : static bool
2715 0 : get_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2716 : {
2717 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadend());
2718 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2719 0 : if (result) {
2720 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2721 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2722 0 : return false;
2723 : }
2724 0 : return true;
2725 : } else {
2726 0 : args.rval().setNull();
2727 0 : return true;
2728 : }
2729 : }
2730 :
2731 : static bool
2732 0 : set_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2733 : {
2734 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2735 0 : if (args[0].isObject()) {
2736 : { // scope for tempRoot
2737 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2738 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2739 : }
2740 : } else {
2741 0 : arg0 = nullptr;
2742 : }
2743 0 : self->SetOnloadend(Constify(arg0));
2744 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2745 :
2746 0 : return true;
2747 : }
2748 :
2749 : static const JSJitInfo onloadend_getterinfo = {
2750 : { (JSJitGetterOp)get_onloadend },
2751 : { prototypes::id::SVGElement },
2752 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2753 : JSJitInfo::Getter,
2754 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2755 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2756 : false, /* isInfallible. False in setters. */
2757 : false, /* isMovable. Not relevant for setters. */
2758 : false, /* isEliminatable. Not relevant for setters. */
2759 : false, /* isAlwaysInSlot. Only relevant for getters. */
2760 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2761 : false, /* isTypedMethod. Only relevant for methods. */
2762 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2763 : };
2764 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2765 : static_assert(0 < 1, "There is no slot for us");
2766 : static const JSJitInfo onloadend_setterinfo = {
2767 : { (JSJitGetterOp)set_onloadend },
2768 : { prototypes::id::SVGElement },
2769 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2770 : JSJitInfo::Setter,
2771 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2772 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2773 : false, /* isInfallible. False in setters. */
2774 : false, /* isMovable. Not relevant for setters. */
2775 : false, /* isEliminatable. Not relevant for setters. */
2776 : false, /* isAlwaysInSlot. Only relevant for getters. */
2777 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2778 : false, /* isTypedMethod. Only relevant for methods. */
2779 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2780 : };
2781 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2782 : static_assert(0 < 1, "There is no slot for us");
2783 :
2784 : static bool
2785 0 : get_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2786 : {
2787 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadstart());
2788 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2789 0 : if (result) {
2790 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2791 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2792 0 : return false;
2793 : }
2794 0 : return true;
2795 : } else {
2796 0 : args.rval().setNull();
2797 0 : return true;
2798 : }
2799 : }
2800 :
2801 : static bool
2802 0 : set_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2803 : {
2804 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2805 0 : if (args[0].isObject()) {
2806 : { // scope for tempRoot
2807 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2808 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2809 : }
2810 : } else {
2811 0 : arg0 = nullptr;
2812 : }
2813 0 : self->SetOnloadstart(Constify(arg0));
2814 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2815 :
2816 0 : return true;
2817 : }
2818 :
2819 : static const JSJitInfo onloadstart_getterinfo = {
2820 : { (JSJitGetterOp)get_onloadstart },
2821 : { prototypes::id::SVGElement },
2822 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2823 : JSJitInfo::Getter,
2824 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2825 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2826 : false, /* isInfallible. False in setters. */
2827 : false, /* isMovable. Not relevant for setters. */
2828 : false, /* isEliminatable. Not relevant for setters. */
2829 : false, /* isAlwaysInSlot. Only relevant for getters. */
2830 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2831 : false, /* isTypedMethod. Only relevant for methods. */
2832 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2833 : };
2834 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2835 : static_assert(0 < 1, "There is no slot for us");
2836 : static const JSJitInfo onloadstart_setterinfo = {
2837 : { (JSJitGetterOp)set_onloadstart },
2838 : { prototypes::id::SVGElement },
2839 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2840 : JSJitInfo::Setter,
2841 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2842 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2843 : false, /* isInfallible. False in setters. */
2844 : false, /* isMovable. Not relevant for setters. */
2845 : false, /* isEliminatable. Not relevant for setters. */
2846 : false, /* isAlwaysInSlot. Only relevant for getters. */
2847 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2848 : false, /* isTypedMethod. Only relevant for methods. */
2849 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2850 : };
2851 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2852 : static_assert(0 < 1, "There is no slot for us");
2853 :
2854 : static bool
2855 0 : get_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2856 : {
2857 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousedown());
2858 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2859 0 : if (result) {
2860 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2861 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2862 0 : return false;
2863 : }
2864 0 : return true;
2865 : } else {
2866 0 : args.rval().setNull();
2867 0 : return true;
2868 : }
2869 : }
2870 :
2871 : static bool
2872 0 : set_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2873 : {
2874 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2875 0 : if (args[0].isObject()) {
2876 : { // scope for tempRoot
2877 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2878 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2879 : }
2880 : } else {
2881 0 : arg0 = nullptr;
2882 : }
2883 0 : self->SetOnmousedown(Constify(arg0));
2884 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2885 :
2886 0 : return true;
2887 : }
2888 :
2889 : static const JSJitInfo onmousedown_getterinfo = {
2890 : { (JSJitGetterOp)get_onmousedown },
2891 : { prototypes::id::SVGElement },
2892 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2893 : JSJitInfo::Getter,
2894 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2895 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2896 : false, /* isInfallible. False in setters. */
2897 : false, /* isMovable. Not relevant for setters. */
2898 : false, /* isEliminatable. Not relevant for setters. */
2899 : false, /* isAlwaysInSlot. Only relevant for getters. */
2900 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2901 : false, /* isTypedMethod. Only relevant for methods. */
2902 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2903 : };
2904 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2905 : static_assert(0 < 1, "There is no slot for us");
2906 : static const JSJitInfo onmousedown_setterinfo = {
2907 : { (JSJitGetterOp)set_onmousedown },
2908 : { prototypes::id::SVGElement },
2909 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2910 : JSJitInfo::Setter,
2911 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2912 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2913 : false, /* isInfallible. False in setters. */
2914 : false, /* isMovable. Not relevant for setters. */
2915 : false, /* isEliminatable. Not relevant for setters. */
2916 : false, /* isAlwaysInSlot. Only relevant for getters. */
2917 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2918 : false, /* isTypedMethod. Only relevant for methods. */
2919 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2920 : };
2921 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2922 : static_assert(0 < 1, "There is no slot for us");
2923 :
2924 : static bool
2925 0 : get_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2926 : {
2927 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseenter());
2928 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2929 0 : if (result) {
2930 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2931 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2932 0 : return false;
2933 : }
2934 0 : return true;
2935 : } else {
2936 0 : args.rval().setNull();
2937 0 : return true;
2938 : }
2939 : }
2940 :
2941 : static bool
2942 0 : set_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
2943 : {
2944 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2945 0 : if (args[0].isObject()) {
2946 : { // scope for tempRoot
2947 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2948 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2949 : }
2950 : } else {
2951 0 : arg0 = nullptr;
2952 : }
2953 0 : self->SetOnmouseenter(Constify(arg0));
2954 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2955 :
2956 0 : return true;
2957 : }
2958 :
2959 : static const JSJitInfo onmouseenter_getterinfo = {
2960 : { (JSJitGetterOp)get_onmouseenter },
2961 : { prototypes::id::SVGElement },
2962 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2963 : JSJitInfo::Getter,
2964 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2965 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2966 : false, /* isInfallible. False in setters. */
2967 : false, /* isMovable. Not relevant for setters. */
2968 : false, /* isEliminatable. Not relevant for setters. */
2969 : false, /* isAlwaysInSlot. Only relevant for getters. */
2970 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2971 : false, /* isTypedMethod. Only relevant for methods. */
2972 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2973 : };
2974 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2975 : static_assert(0 < 1, "There is no slot for us");
2976 : static const JSJitInfo onmouseenter_setterinfo = {
2977 : { (JSJitGetterOp)set_onmouseenter },
2978 : { prototypes::id::SVGElement },
2979 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
2980 : JSJitInfo::Setter,
2981 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2982 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2983 : false, /* isInfallible. False in setters. */
2984 : false, /* isMovable. Not relevant for setters. */
2985 : false, /* isEliminatable. Not relevant for setters. */
2986 : false, /* isAlwaysInSlot. Only relevant for getters. */
2987 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2988 : false, /* isTypedMethod. Only relevant for methods. */
2989 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2990 : };
2991 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2992 : static_assert(0 < 1, "There is no slot for us");
2993 :
2994 : static bool
2995 0 : get_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
2996 : {
2997 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseleave());
2998 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2999 0 : if (result) {
3000 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3001 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3002 0 : return false;
3003 : }
3004 0 : return true;
3005 : } else {
3006 0 : args.rval().setNull();
3007 0 : return true;
3008 : }
3009 : }
3010 :
3011 : static bool
3012 0 : set_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3013 : {
3014 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3015 0 : if (args[0].isObject()) {
3016 : { // scope for tempRoot
3017 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3018 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3019 : }
3020 : } else {
3021 0 : arg0 = nullptr;
3022 : }
3023 0 : self->SetOnmouseleave(Constify(arg0));
3024 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3025 :
3026 0 : return true;
3027 : }
3028 :
3029 : static const JSJitInfo onmouseleave_getterinfo = {
3030 : { (JSJitGetterOp)get_onmouseleave },
3031 : { prototypes::id::SVGElement },
3032 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3033 : JSJitInfo::Getter,
3034 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3035 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3036 : false, /* isInfallible. False in setters. */
3037 : false, /* isMovable. Not relevant for setters. */
3038 : false, /* isEliminatable. Not relevant for setters. */
3039 : false, /* isAlwaysInSlot. Only relevant for getters. */
3040 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3041 : false, /* isTypedMethod. Only relevant for methods. */
3042 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3043 : };
3044 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3045 : static_assert(0 < 1, "There is no slot for us");
3046 : static const JSJitInfo onmouseleave_setterinfo = {
3047 : { (JSJitGetterOp)set_onmouseleave },
3048 : { prototypes::id::SVGElement },
3049 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3050 : JSJitInfo::Setter,
3051 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3052 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3053 : false, /* isInfallible. False in setters. */
3054 : false, /* isMovable. Not relevant for setters. */
3055 : false, /* isEliminatable. Not relevant for setters. */
3056 : false, /* isAlwaysInSlot. Only relevant for getters. */
3057 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3058 : false, /* isTypedMethod. Only relevant for methods. */
3059 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3060 : };
3061 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3062 : static_assert(0 < 1, "There is no slot for us");
3063 :
3064 : static bool
3065 0 : get_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3066 : {
3067 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousemove());
3068 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3069 0 : if (result) {
3070 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3071 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3072 0 : return false;
3073 : }
3074 0 : return true;
3075 : } else {
3076 0 : args.rval().setNull();
3077 0 : return true;
3078 : }
3079 : }
3080 :
3081 : static bool
3082 0 : set_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3083 : {
3084 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3085 0 : if (args[0].isObject()) {
3086 : { // scope for tempRoot
3087 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3088 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3089 : }
3090 : } else {
3091 0 : arg0 = nullptr;
3092 : }
3093 0 : self->SetOnmousemove(Constify(arg0));
3094 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3095 :
3096 0 : return true;
3097 : }
3098 :
3099 : static const JSJitInfo onmousemove_getterinfo = {
3100 : { (JSJitGetterOp)get_onmousemove },
3101 : { prototypes::id::SVGElement },
3102 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3103 : JSJitInfo::Getter,
3104 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3105 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3106 : false, /* isInfallible. False in setters. */
3107 : false, /* isMovable. Not relevant for setters. */
3108 : false, /* isEliminatable. Not relevant for setters. */
3109 : false, /* isAlwaysInSlot. Only relevant for getters. */
3110 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3111 : false, /* isTypedMethod. Only relevant for methods. */
3112 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3113 : };
3114 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3115 : static_assert(0 < 1, "There is no slot for us");
3116 : static const JSJitInfo onmousemove_setterinfo = {
3117 : { (JSJitGetterOp)set_onmousemove },
3118 : { prototypes::id::SVGElement },
3119 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3120 : JSJitInfo::Setter,
3121 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3122 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3123 : false, /* isInfallible. False in setters. */
3124 : false, /* isMovable. Not relevant for setters. */
3125 : false, /* isEliminatable. Not relevant for setters. */
3126 : false, /* isAlwaysInSlot. Only relevant for getters. */
3127 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3128 : false, /* isTypedMethod. Only relevant for methods. */
3129 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3130 : };
3131 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3132 : static_assert(0 < 1, "There is no slot for us");
3133 :
3134 : static bool
3135 0 : get_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3136 : {
3137 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseout());
3138 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3139 0 : if (result) {
3140 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3141 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3142 0 : return false;
3143 : }
3144 0 : return true;
3145 : } else {
3146 0 : args.rval().setNull();
3147 0 : return true;
3148 : }
3149 : }
3150 :
3151 : static bool
3152 0 : set_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3153 : {
3154 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3155 0 : if (args[0].isObject()) {
3156 : { // scope for tempRoot
3157 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3158 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3159 : }
3160 : } else {
3161 0 : arg0 = nullptr;
3162 : }
3163 0 : self->SetOnmouseout(Constify(arg0));
3164 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3165 :
3166 0 : return true;
3167 : }
3168 :
3169 : static const JSJitInfo onmouseout_getterinfo = {
3170 : { (JSJitGetterOp)get_onmouseout },
3171 : { prototypes::id::SVGElement },
3172 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3173 : JSJitInfo::Getter,
3174 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3175 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3176 : false, /* isInfallible. False in setters. */
3177 : false, /* isMovable. Not relevant for setters. */
3178 : false, /* isEliminatable. Not relevant for setters. */
3179 : false, /* isAlwaysInSlot. Only relevant for getters. */
3180 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3181 : false, /* isTypedMethod. Only relevant for methods. */
3182 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3183 : };
3184 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3185 : static_assert(0 < 1, "There is no slot for us");
3186 : static const JSJitInfo onmouseout_setterinfo = {
3187 : { (JSJitGetterOp)set_onmouseout },
3188 : { prototypes::id::SVGElement },
3189 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3190 : JSJitInfo::Setter,
3191 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3192 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3193 : false, /* isInfallible. False in setters. */
3194 : false, /* isMovable. Not relevant for setters. */
3195 : false, /* isEliminatable. Not relevant for setters. */
3196 : false, /* isAlwaysInSlot. Only relevant for getters. */
3197 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3198 : false, /* isTypedMethod. Only relevant for methods. */
3199 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3200 : };
3201 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3202 : static_assert(0 < 1, "There is no slot for us");
3203 :
3204 : static bool
3205 0 : get_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3206 : {
3207 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseover());
3208 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3209 0 : if (result) {
3210 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3211 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3212 0 : return false;
3213 : }
3214 0 : return true;
3215 : } else {
3216 0 : args.rval().setNull();
3217 0 : return true;
3218 : }
3219 : }
3220 :
3221 : static bool
3222 0 : set_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3223 : {
3224 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3225 0 : if (args[0].isObject()) {
3226 : { // scope for tempRoot
3227 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3228 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3229 : }
3230 : } else {
3231 0 : arg0 = nullptr;
3232 : }
3233 0 : self->SetOnmouseover(Constify(arg0));
3234 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3235 :
3236 0 : return true;
3237 : }
3238 :
3239 : static const JSJitInfo onmouseover_getterinfo = {
3240 : { (JSJitGetterOp)get_onmouseover },
3241 : { prototypes::id::SVGElement },
3242 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3243 : JSJitInfo::Getter,
3244 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3245 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3246 : false, /* isInfallible. False in setters. */
3247 : false, /* isMovable. Not relevant for setters. */
3248 : false, /* isEliminatable. Not relevant for setters. */
3249 : false, /* isAlwaysInSlot. Only relevant for getters. */
3250 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3251 : false, /* isTypedMethod. Only relevant for methods. */
3252 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3253 : };
3254 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3255 : static_assert(0 < 1, "There is no slot for us");
3256 : static const JSJitInfo onmouseover_setterinfo = {
3257 : { (JSJitGetterOp)set_onmouseover },
3258 : { prototypes::id::SVGElement },
3259 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3260 : JSJitInfo::Setter,
3261 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3262 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3263 : false, /* isInfallible. False in setters. */
3264 : false, /* isMovable. Not relevant for setters. */
3265 : false, /* isEliminatable. Not relevant for setters. */
3266 : false, /* isAlwaysInSlot. Only relevant for getters. */
3267 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3268 : false, /* isTypedMethod. Only relevant for methods. */
3269 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3270 : };
3271 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3272 : static_assert(0 < 1, "There is no slot for us");
3273 :
3274 : static bool
3275 0 : get_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3276 : {
3277 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseup());
3278 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3279 0 : if (result) {
3280 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3281 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3282 0 : return false;
3283 : }
3284 0 : return true;
3285 : } else {
3286 0 : args.rval().setNull();
3287 0 : return true;
3288 : }
3289 : }
3290 :
3291 : static bool
3292 0 : set_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3293 : {
3294 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3295 0 : if (args[0].isObject()) {
3296 : { // scope for tempRoot
3297 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3298 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3299 : }
3300 : } else {
3301 0 : arg0 = nullptr;
3302 : }
3303 0 : self->SetOnmouseup(Constify(arg0));
3304 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3305 :
3306 0 : return true;
3307 : }
3308 :
3309 : static const JSJitInfo onmouseup_getterinfo = {
3310 : { (JSJitGetterOp)get_onmouseup },
3311 : { prototypes::id::SVGElement },
3312 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3313 : JSJitInfo::Getter,
3314 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3315 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3316 : false, /* isInfallible. False in setters. */
3317 : false, /* isMovable. Not relevant for setters. */
3318 : false, /* isEliminatable. Not relevant for setters. */
3319 : false, /* isAlwaysInSlot. Only relevant for getters. */
3320 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3321 : false, /* isTypedMethod. Only relevant for methods. */
3322 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3323 : };
3324 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3325 : static_assert(0 < 1, "There is no slot for us");
3326 : static const JSJitInfo onmouseup_setterinfo = {
3327 : { (JSJitGetterOp)set_onmouseup },
3328 : { prototypes::id::SVGElement },
3329 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3330 : JSJitInfo::Setter,
3331 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3332 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3333 : false, /* isInfallible. False in setters. */
3334 : false, /* isMovable. Not relevant for setters. */
3335 : false, /* isEliminatable. Not relevant for setters. */
3336 : false, /* isAlwaysInSlot. Only relevant for getters. */
3337 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3338 : false, /* isTypedMethod. Only relevant for methods. */
3339 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3340 : };
3341 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3342 : static_assert(0 < 1, "There is no slot for us");
3343 :
3344 : static bool
3345 0 : get_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3346 : {
3347 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwheel());
3348 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3349 0 : if (result) {
3350 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3351 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3352 0 : return false;
3353 : }
3354 0 : return true;
3355 : } else {
3356 0 : args.rval().setNull();
3357 0 : return true;
3358 : }
3359 : }
3360 :
3361 : static bool
3362 0 : set_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3363 : {
3364 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3365 0 : if (args[0].isObject()) {
3366 : { // scope for tempRoot
3367 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3368 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3369 : }
3370 : } else {
3371 0 : arg0 = nullptr;
3372 : }
3373 0 : self->SetOnwheel(Constify(arg0));
3374 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3375 :
3376 0 : return true;
3377 : }
3378 :
3379 : static const JSJitInfo onwheel_getterinfo = {
3380 : { (JSJitGetterOp)get_onwheel },
3381 : { prototypes::id::SVGElement },
3382 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3383 : JSJitInfo::Getter,
3384 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3385 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3386 : false, /* isInfallible. False in setters. */
3387 : false, /* isMovable. Not relevant for setters. */
3388 : false, /* isEliminatable. Not relevant for setters. */
3389 : false, /* isAlwaysInSlot. Only relevant for getters. */
3390 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3391 : false, /* isTypedMethod. Only relevant for methods. */
3392 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3393 : };
3394 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3395 : static_assert(0 < 1, "There is no slot for us");
3396 : static const JSJitInfo onwheel_setterinfo = {
3397 : { (JSJitGetterOp)set_onwheel },
3398 : { prototypes::id::SVGElement },
3399 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3400 : JSJitInfo::Setter,
3401 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3402 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3403 : false, /* isInfallible. False in setters. */
3404 : false, /* isMovable. Not relevant for setters. */
3405 : false, /* isEliminatable. Not relevant for setters. */
3406 : false, /* isAlwaysInSlot. Only relevant for getters. */
3407 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3408 : false, /* isTypedMethod. Only relevant for methods. */
3409 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3410 : };
3411 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3412 : static_assert(0 < 1, "There is no slot for us");
3413 :
3414 : static bool
3415 0 : get_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3416 : {
3417 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpause());
3418 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3419 0 : if (result) {
3420 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3421 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3422 0 : return false;
3423 : }
3424 0 : return true;
3425 : } else {
3426 0 : args.rval().setNull();
3427 0 : return true;
3428 : }
3429 : }
3430 :
3431 : static bool
3432 0 : set_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3433 : {
3434 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3435 0 : if (args[0].isObject()) {
3436 : { // scope for tempRoot
3437 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3438 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3439 : }
3440 : } else {
3441 0 : arg0 = nullptr;
3442 : }
3443 0 : self->SetOnpause(Constify(arg0));
3444 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3445 :
3446 0 : return true;
3447 : }
3448 :
3449 : static const JSJitInfo onpause_getterinfo = {
3450 : { (JSJitGetterOp)get_onpause },
3451 : { prototypes::id::SVGElement },
3452 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3453 : JSJitInfo::Getter,
3454 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3455 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3456 : false, /* isInfallible. False in setters. */
3457 : false, /* isMovable. Not relevant for setters. */
3458 : false, /* isEliminatable. Not relevant for setters. */
3459 : false, /* isAlwaysInSlot. Only relevant for getters. */
3460 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3461 : false, /* isTypedMethod. Only relevant for methods. */
3462 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3463 : };
3464 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3465 : static_assert(0 < 1, "There is no slot for us");
3466 : static const JSJitInfo onpause_setterinfo = {
3467 : { (JSJitGetterOp)set_onpause },
3468 : { prototypes::id::SVGElement },
3469 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3470 : JSJitInfo::Setter,
3471 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3472 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3473 : false, /* isInfallible. False in setters. */
3474 : false, /* isMovable. Not relevant for setters. */
3475 : false, /* isEliminatable. Not relevant for setters. */
3476 : false, /* isAlwaysInSlot. Only relevant for getters. */
3477 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3478 : false, /* isTypedMethod. Only relevant for methods. */
3479 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3480 : };
3481 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3482 : static_assert(0 < 1, "There is no slot for us");
3483 :
3484 : static bool
3485 0 : get_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3486 : {
3487 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplay());
3488 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3489 0 : if (result) {
3490 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3491 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3492 0 : return false;
3493 : }
3494 0 : return true;
3495 : } else {
3496 0 : args.rval().setNull();
3497 0 : return true;
3498 : }
3499 : }
3500 :
3501 : static bool
3502 0 : set_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3503 : {
3504 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3505 0 : if (args[0].isObject()) {
3506 : { // scope for tempRoot
3507 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3508 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3509 : }
3510 : } else {
3511 0 : arg0 = nullptr;
3512 : }
3513 0 : self->SetOnplay(Constify(arg0));
3514 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3515 :
3516 0 : return true;
3517 : }
3518 :
3519 : static const JSJitInfo onplay_getterinfo = {
3520 : { (JSJitGetterOp)get_onplay },
3521 : { prototypes::id::SVGElement },
3522 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3523 : JSJitInfo::Getter,
3524 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3525 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3526 : false, /* isInfallible. False in setters. */
3527 : false, /* isMovable. Not relevant for setters. */
3528 : false, /* isEliminatable. Not relevant for setters. */
3529 : false, /* isAlwaysInSlot. Only relevant for getters. */
3530 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3531 : false, /* isTypedMethod. Only relevant for methods. */
3532 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3533 : };
3534 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3535 : static_assert(0 < 1, "There is no slot for us");
3536 : static const JSJitInfo onplay_setterinfo = {
3537 : { (JSJitGetterOp)set_onplay },
3538 : { prototypes::id::SVGElement },
3539 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3540 : JSJitInfo::Setter,
3541 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3542 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3543 : false, /* isInfallible. False in setters. */
3544 : false, /* isMovable. Not relevant for setters. */
3545 : false, /* isEliminatable. Not relevant for setters. */
3546 : false, /* isAlwaysInSlot. Only relevant for getters. */
3547 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3548 : false, /* isTypedMethod. Only relevant for methods. */
3549 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3550 : };
3551 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3552 : static_assert(0 < 1, "There is no slot for us");
3553 :
3554 : static bool
3555 0 : get_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3556 : {
3557 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplaying());
3558 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3559 0 : if (result) {
3560 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3561 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3562 0 : return false;
3563 : }
3564 0 : return true;
3565 : } else {
3566 0 : args.rval().setNull();
3567 0 : return true;
3568 : }
3569 : }
3570 :
3571 : static bool
3572 0 : set_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3573 : {
3574 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3575 0 : if (args[0].isObject()) {
3576 : { // scope for tempRoot
3577 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3578 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3579 : }
3580 : } else {
3581 0 : arg0 = nullptr;
3582 : }
3583 0 : self->SetOnplaying(Constify(arg0));
3584 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3585 :
3586 0 : return true;
3587 : }
3588 :
3589 : static const JSJitInfo onplaying_getterinfo = {
3590 : { (JSJitGetterOp)get_onplaying },
3591 : { prototypes::id::SVGElement },
3592 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3593 : JSJitInfo::Getter,
3594 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3595 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3596 : false, /* isInfallible. False in setters. */
3597 : false, /* isMovable. Not relevant for setters. */
3598 : false, /* isEliminatable. Not relevant for setters. */
3599 : false, /* isAlwaysInSlot. Only relevant for getters. */
3600 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3601 : false, /* isTypedMethod. Only relevant for methods. */
3602 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3603 : };
3604 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3605 : static_assert(0 < 1, "There is no slot for us");
3606 : static const JSJitInfo onplaying_setterinfo = {
3607 : { (JSJitGetterOp)set_onplaying },
3608 : { prototypes::id::SVGElement },
3609 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3610 : JSJitInfo::Setter,
3611 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3612 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3613 : false, /* isInfallible. False in setters. */
3614 : false, /* isMovable. Not relevant for setters. */
3615 : false, /* isEliminatable. Not relevant for setters. */
3616 : false, /* isAlwaysInSlot. Only relevant for getters. */
3617 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3618 : false, /* isTypedMethod. Only relevant for methods. */
3619 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3620 : };
3621 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3622 : static_assert(0 < 1, "There is no slot for us");
3623 :
3624 : static bool
3625 0 : get_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3626 : {
3627 0 : RefPtr<EventHandlerNonNull> result(self->GetOnprogress());
3628 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3629 0 : if (result) {
3630 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3631 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3632 0 : return false;
3633 : }
3634 0 : return true;
3635 : } else {
3636 0 : args.rval().setNull();
3637 0 : return true;
3638 : }
3639 : }
3640 :
3641 : static bool
3642 0 : set_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3643 : {
3644 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3645 0 : if (args[0].isObject()) {
3646 : { // scope for tempRoot
3647 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3648 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3649 : }
3650 : } else {
3651 0 : arg0 = nullptr;
3652 : }
3653 0 : self->SetOnprogress(Constify(arg0));
3654 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3655 :
3656 0 : return true;
3657 : }
3658 :
3659 : static const JSJitInfo onprogress_getterinfo = {
3660 : { (JSJitGetterOp)get_onprogress },
3661 : { prototypes::id::SVGElement },
3662 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3663 : JSJitInfo::Getter,
3664 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3665 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3666 : false, /* isInfallible. False in setters. */
3667 : false, /* isMovable. Not relevant for setters. */
3668 : false, /* isEliminatable. Not relevant for setters. */
3669 : false, /* isAlwaysInSlot. Only relevant for getters. */
3670 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3671 : false, /* isTypedMethod. Only relevant for methods. */
3672 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3673 : };
3674 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3675 : static_assert(0 < 1, "There is no slot for us");
3676 : static const JSJitInfo onprogress_setterinfo = {
3677 : { (JSJitGetterOp)set_onprogress },
3678 : { prototypes::id::SVGElement },
3679 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3680 : JSJitInfo::Setter,
3681 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3682 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3683 : false, /* isInfallible. False in setters. */
3684 : false, /* isMovable. Not relevant for setters. */
3685 : false, /* isEliminatable. Not relevant for setters. */
3686 : false, /* isAlwaysInSlot. Only relevant for getters. */
3687 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3688 : false, /* isTypedMethod. Only relevant for methods. */
3689 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3690 : };
3691 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3692 : static_assert(0 < 1, "There is no slot for us");
3693 :
3694 : static bool
3695 0 : get_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3696 : {
3697 0 : RefPtr<EventHandlerNonNull> result(self->GetOnratechange());
3698 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3699 0 : if (result) {
3700 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3701 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3702 0 : return false;
3703 : }
3704 0 : return true;
3705 : } else {
3706 0 : args.rval().setNull();
3707 0 : return true;
3708 : }
3709 : }
3710 :
3711 : static bool
3712 0 : set_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3713 : {
3714 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3715 0 : if (args[0].isObject()) {
3716 : { // scope for tempRoot
3717 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3718 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3719 : }
3720 : } else {
3721 0 : arg0 = nullptr;
3722 : }
3723 0 : self->SetOnratechange(Constify(arg0));
3724 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3725 :
3726 0 : return true;
3727 : }
3728 :
3729 : static const JSJitInfo onratechange_getterinfo = {
3730 : { (JSJitGetterOp)get_onratechange },
3731 : { prototypes::id::SVGElement },
3732 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3733 : JSJitInfo::Getter,
3734 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3735 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3736 : false, /* isInfallible. False in setters. */
3737 : false, /* isMovable. Not relevant for setters. */
3738 : false, /* isEliminatable. Not relevant for setters. */
3739 : false, /* isAlwaysInSlot. Only relevant for getters. */
3740 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3741 : false, /* isTypedMethod. Only relevant for methods. */
3742 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3743 : };
3744 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3745 : static_assert(0 < 1, "There is no slot for us");
3746 : static const JSJitInfo onratechange_setterinfo = {
3747 : { (JSJitGetterOp)set_onratechange },
3748 : { prototypes::id::SVGElement },
3749 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3750 : JSJitInfo::Setter,
3751 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3752 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3753 : false, /* isInfallible. False in setters. */
3754 : false, /* isMovable. Not relevant for setters. */
3755 : false, /* isEliminatable. Not relevant for setters. */
3756 : false, /* isAlwaysInSlot. Only relevant for getters. */
3757 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3758 : false, /* isTypedMethod. Only relevant for methods. */
3759 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3760 : };
3761 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3762 : static_assert(0 < 1, "There is no slot for us");
3763 :
3764 : static bool
3765 0 : get_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3766 : {
3767 0 : RefPtr<EventHandlerNonNull> result(self->GetOnreset());
3768 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3769 0 : if (result) {
3770 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3771 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3772 0 : return false;
3773 : }
3774 0 : return true;
3775 : } else {
3776 0 : args.rval().setNull();
3777 0 : return true;
3778 : }
3779 : }
3780 :
3781 : static bool
3782 0 : set_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3783 : {
3784 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3785 0 : if (args[0].isObject()) {
3786 : { // scope for tempRoot
3787 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3788 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3789 : }
3790 : } else {
3791 0 : arg0 = nullptr;
3792 : }
3793 0 : self->SetOnreset(Constify(arg0));
3794 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3795 :
3796 0 : return true;
3797 : }
3798 :
3799 : static const JSJitInfo onreset_getterinfo = {
3800 : { (JSJitGetterOp)get_onreset },
3801 : { prototypes::id::SVGElement },
3802 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3803 : JSJitInfo::Getter,
3804 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3805 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3806 : false, /* isInfallible. False in setters. */
3807 : false, /* isMovable. Not relevant for setters. */
3808 : false, /* isEliminatable. Not relevant for setters. */
3809 : false, /* isAlwaysInSlot. Only relevant for getters. */
3810 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3811 : false, /* isTypedMethod. Only relevant for methods. */
3812 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3813 : };
3814 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3815 : static_assert(0 < 1, "There is no slot for us");
3816 : static const JSJitInfo onreset_setterinfo = {
3817 : { (JSJitGetterOp)set_onreset },
3818 : { prototypes::id::SVGElement },
3819 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3820 : JSJitInfo::Setter,
3821 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3822 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3823 : false, /* isInfallible. False in setters. */
3824 : false, /* isMovable. Not relevant for setters. */
3825 : false, /* isEliminatable. Not relevant for setters. */
3826 : false, /* isAlwaysInSlot. Only relevant for getters. */
3827 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3828 : false, /* isTypedMethod. Only relevant for methods. */
3829 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3830 : };
3831 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3832 : static_assert(0 < 1, "There is no slot for us");
3833 :
3834 : static bool
3835 0 : get_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3836 : {
3837 0 : RefPtr<EventHandlerNonNull> result(self->GetOnresize());
3838 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3839 0 : if (result) {
3840 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3841 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3842 0 : return false;
3843 : }
3844 0 : return true;
3845 : } else {
3846 0 : args.rval().setNull();
3847 0 : return true;
3848 : }
3849 : }
3850 :
3851 : static bool
3852 0 : set_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3853 : {
3854 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3855 0 : if (args[0].isObject()) {
3856 : { // scope for tempRoot
3857 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3858 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3859 : }
3860 : } else {
3861 0 : arg0 = nullptr;
3862 : }
3863 0 : self->SetOnresize(Constify(arg0));
3864 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3865 :
3866 0 : return true;
3867 : }
3868 :
3869 : static const JSJitInfo onresize_getterinfo = {
3870 : { (JSJitGetterOp)get_onresize },
3871 : { prototypes::id::SVGElement },
3872 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3873 : JSJitInfo::Getter,
3874 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3875 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3876 : false, /* isInfallible. False in setters. */
3877 : false, /* isMovable. Not relevant for setters. */
3878 : false, /* isEliminatable. Not relevant for setters. */
3879 : false, /* isAlwaysInSlot. Only relevant for getters. */
3880 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3881 : false, /* isTypedMethod. Only relevant for methods. */
3882 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3883 : };
3884 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3885 : static_assert(0 < 1, "There is no slot for us");
3886 : static const JSJitInfo onresize_setterinfo = {
3887 : { (JSJitGetterOp)set_onresize },
3888 : { prototypes::id::SVGElement },
3889 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3890 : JSJitInfo::Setter,
3891 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3892 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3893 : false, /* isInfallible. False in setters. */
3894 : false, /* isMovable. Not relevant for setters. */
3895 : false, /* isEliminatable. Not relevant for setters. */
3896 : false, /* isAlwaysInSlot. Only relevant for getters. */
3897 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3898 : false, /* isTypedMethod. Only relevant for methods. */
3899 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3900 : };
3901 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3902 : static_assert(0 < 1, "There is no slot for us");
3903 :
3904 : static bool
3905 0 : get_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3906 : {
3907 0 : RefPtr<EventHandlerNonNull> result(self->GetOnscroll());
3908 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3909 0 : if (result) {
3910 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3911 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3912 0 : return false;
3913 : }
3914 0 : return true;
3915 : } else {
3916 0 : args.rval().setNull();
3917 0 : return true;
3918 : }
3919 : }
3920 :
3921 : static bool
3922 0 : set_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3923 : {
3924 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3925 0 : if (args[0].isObject()) {
3926 : { // scope for tempRoot
3927 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3928 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3929 : }
3930 : } else {
3931 0 : arg0 = nullptr;
3932 : }
3933 0 : self->SetOnscroll(Constify(arg0));
3934 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3935 :
3936 0 : return true;
3937 : }
3938 :
3939 : static const JSJitInfo onscroll_getterinfo = {
3940 : { (JSJitGetterOp)get_onscroll },
3941 : { prototypes::id::SVGElement },
3942 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3943 : JSJitInfo::Getter,
3944 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3945 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3946 : false, /* isInfallible. False in setters. */
3947 : false, /* isMovable. Not relevant for setters. */
3948 : false, /* isEliminatable. Not relevant for setters. */
3949 : false, /* isAlwaysInSlot. Only relevant for getters. */
3950 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3951 : false, /* isTypedMethod. Only relevant for methods. */
3952 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3953 : };
3954 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3955 : static_assert(0 < 1, "There is no slot for us");
3956 : static const JSJitInfo onscroll_setterinfo = {
3957 : { (JSJitGetterOp)set_onscroll },
3958 : { prototypes::id::SVGElement },
3959 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
3960 : JSJitInfo::Setter,
3961 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3962 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3963 : false, /* isInfallible. False in setters. */
3964 : false, /* isMovable. Not relevant for setters. */
3965 : false, /* isEliminatable. Not relevant for setters. */
3966 : false, /* isAlwaysInSlot. Only relevant for getters. */
3967 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3968 : false, /* isTypedMethod. Only relevant for methods. */
3969 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3970 : };
3971 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3972 : static_assert(0 < 1, "There is no slot for us");
3973 :
3974 : static bool
3975 0 : get_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
3976 : {
3977 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeked());
3978 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3979 0 : if (result) {
3980 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3981 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3982 0 : return false;
3983 : }
3984 0 : return true;
3985 : } else {
3986 0 : args.rval().setNull();
3987 0 : return true;
3988 : }
3989 : }
3990 :
3991 : static bool
3992 0 : set_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
3993 : {
3994 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3995 0 : if (args[0].isObject()) {
3996 : { // scope for tempRoot
3997 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3998 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3999 : }
4000 : } else {
4001 0 : arg0 = nullptr;
4002 : }
4003 0 : self->SetOnseeked(Constify(arg0));
4004 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4005 :
4006 0 : return true;
4007 : }
4008 :
4009 : static const JSJitInfo onseeked_getterinfo = {
4010 : { (JSJitGetterOp)get_onseeked },
4011 : { prototypes::id::SVGElement },
4012 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4013 : JSJitInfo::Getter,
4014 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4015 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4016 : false, /* isInfallible. False in setters. */
4017 : false, /* isMovable. Not relevant for setters. */
4018 : false, /* isEliminatable. Not relevant for setters. */
4019 : false, /* isAlwaysInSlot. Only relevant for getters. */
4020 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4021 : false, /* isTypedMethod. Only relevant for methods. */
4022 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4023 : };
4024 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4025 : static_assert(0 < 1, "There is no slot for us");
4026 : static const JSJitInfo onseeked_setterinfo = {
4027 : { (JSJitGetterOp)set_onseeked },
4028 : { prototypes::id::SVGElement },
4029 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4030 : JSJitInfo::Setter,
4031 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4032 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4033 : false, /* isInfallible. False in setters. */
4034 : false, /* isMovable. Not relevant for setters. */
4035 : false, /* isEliminatable. Not relevant for setters. */
4036 : false, /* isAlwaysInSlot. Only relevant for getters. */
4037 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4038 : false, /* isTypedMethod. Only relevant for methods. */
4039 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4040 : };
4041 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4042 : static_assert(0 < 1, "There is no slot for us");
4043 :
4044 : static bool
4045 0 : get_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4046 : {
4047 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeking());
4048 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4049 0 : if (result) {
4050 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4051 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4052 0 : return false;
4053 : }
4054 0 : return true;
4055 : } else {
4056 0 : args.rval().setNull();
4057 0 : return true;
4058 : }
4059 : }
4060 :
4061 : static bool
4062 0 : set_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4063 : {
4064 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4065 0 : if (args[0].isObject()) {
4066 : { // scope for tempRoot
4067 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4068 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4069 : }
4070 : } else {
4071 0 : arg0 = nullptr;
4072 : }
4073 0 : self->SetOnseeking(Constify(arg0));
4074 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4075 :
4076 0 : return true;
4077 : }
4078 :
4079 : static const JSJitInfo onseeking_getterinfo = {
4080 : { (JSJitGetterOp)get_onseeking },
4081 : { prototypes::id::SVGElement },
4082 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4083 : JSJitInfo::Getter,
4084 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4085 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4086 : false, /* isInfallible. False in setters. */
4087 : false, /* isMovable. Not relevant for setters. */
4088 : false, /* isEliminatable. Not relevant for setters. */
4089 : false, /* isAlwaysInSlot. Only relevant for getters. */
4090 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4091 : false, /* isTypedMethod. Only relevant for methods. */
4092 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4093 : };
4094 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4095 : static_assert(0 < 1, "There is no slot for us");
4096 : static const JSJitInfo onseeking_setterinfo = {
4097 : { (JSJitGetterOp)set_onseeking },
4098 : { prototypes::id::SVGElement },
4099 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4100 : JSJitInfo::Setter,
4101 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4102 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4103 : false, /* isInfallible. False in setters. */
4104 : false, /* isMovable. Not relevant for setters. */
4105 : false, /* isEliminatable. Not relevant for setters. */
4106 : false, /* isAlwaysInSlot. Only relevant for getters. */
4107 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4108 : false, /* isTypedMethod. Only relevant for methods. */
4109 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4110 : };
4111 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4112 : static_assert(0 < 1, "There is no slot for us");
4113 :
4114 : static bool
4115 0 : get_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4116 : {
4117 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselect());
4118 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4119 0 : if (result) {
4120 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4121 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4122 0 : return false;
4123 : }
4124 0 : return true;
4125 : } else {
4126 0 : args.rval().setNull();
4127 0 : return true;
4128 : }
4129 : }
4130 :
4131 : static bool
4132 0 : set_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4133 : {
4134 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4135 0 : if (args[0].isObject()) {
4136 : { // scope for tempRoot
4137 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4138 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4139 : }
4140 : } else {
4141 0 : arg0 = nullptr;
4142 : }
4143 0 : self->SetOnselect(Constify(arg0));
4144 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4145 :
4146 0 : return true;
4147 : }
4148 :
4149 : static const JSJitInfo onselect_getterinfo = {
4150 : { (JSJitGetterOp)get_onselect },
4151 : { prototypes::id::SVGElement },
4152 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4153 : JSJitInfo::Getter,
4154 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4155 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4156 : false, /* isInfallible. False in setters. */
4157 : false, /* isMovable. Not relevant for setters. */
4158 : false, /* isEliminatable. Not relevant for setters. */
4159 : false, /* isAlwaysInSlot. Only relevant for getters. */
4160 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4161 : false, /* isTypedMethod. Only relevant for methods. */
4162 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4163 : };
4164 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4165 : static_assert(0 < 1, "There is no slot for us");
4166 : static const JSJitInfo onselect_setterinfo = {
4167 : { (JSJitGetterOp)set_onselect },
4168 : { prototypes::id::SVGElement },
4169 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4170 : JSJitInfo::Setter,
4171 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4172 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4173 : false, /* isInfallible. False in setters. */
4174 : false, /* isMovable. Not relevant for setters. */
4175 : false, /* isEliminatable. Not relevant for setters. */
4176 : false, /* isAlwaysInSlot. Only relevant for getters. */
4177 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4178 : false, /* isTypedMethod. Only relevant for methods. */
4179 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4180 : };
4181 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4182 : static_assert(0 < 1, "There is no slot for us");
4183 :
4184 : static bool
4185 0 : get_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4186 : {
4187 0 : RefPtr<EventHandlerNonNull> result(self->GetOnshow());
4188 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4189 0 : if (result) {
4190 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4191 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4192 0 : return false;
4193 : }
4194 0 : return true;
4195 : } else {
4196 0 : args.rval().setNull();
4197 0 : return true;
4198 : }
4199 : }
4200 :
4201 : static bool
4202 0 : set_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4203 : {
4204 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4205 0 : if (args[0].isObject()) {
4206 : { // scope for tempRoot
4207 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4208 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4209 : }
4210 : } else {
4211 0 : arg0 = nullptr;
4212 : }
4213 0 : self->SetOnshow(Constify(arg0));
4214 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4215 :
4216 0 : return true;
4217 : }
4218 :
4219 : static const JSJitInfo onshow_getterinfo = {
4220 : { (JSJitGetterOp)get_onshow },
4221 : { prototypes::id::SVGElement },
4222 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4223 : JSJitInfo::Getter,
4224 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4225 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4226 : false, /* isInfallible. False in setters. */
4227 : false, /* isMovable. Not relevant for setters. */
4228 : false, /* isEliminatable. Not relevant for setters. */
4229 : false, /* isAlwaysInSlot. Only relevant for getters. */
4230 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4231 : false, /* isTypedMethod. Only relevant for methods. */
4232 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4233 : };
4234 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4235 : static_assert(0 < 1, "There is no slot for us");
4236 : static const JSJitInfo onshow_setterinfo = {
4237 : { (JSJitGetterOp)set_onshow },
4238 : { prototypes::id::SVGElement },
4239 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4240 : JSJitInfo::Setter,
4241 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4242 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4243 : false, /* isInfallible. False in setters. */
4244 : false, /* isMovable. Not relevant for setters. */
4245 : false, /* isEliminatable. Not relevant for setters. */
4246 : false, /* isAlwaysInSlot. Only relevant for getters. */
4247 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4248 : false, /* isTypedMethod. Only relevant for methods. */
4249 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4250 : };
4251 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4252 : static_assert(0 < 1, "There is no slot for us");
4253 :
4254 : static bool
4255 0 : get_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4256 : {
4257 0 : RefPtr<EventHandlerNonNull> result(self->GetOnstalled());
4258 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4259 0 : if (result) {
4260 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4261 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4262 0 : return false;
4263 : }
4264 0 : return true;
4265 : } else {
4266 0 : args.rval().setNull();
4267 0 : return true;
4268 : }
4269 : }
4270 :
4271 : static bool
4272 0 : set_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4273 : {
4274 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4275 0 : if (args[0].isObject()) {
4276 : { // scope for tempRoot
4277 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4278 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4279 : }
4280 : } else {
4281 0 : arg0 = nullptr;
4282 : }
4283 0 : self->SetOnstalled(Constify(arg0));
4284 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4285 :
4286 0 : return true;
4287 : }
4288 :
4289 : static const JSJitInfo onstalled_getterinfo = {
4290 : { (JSJitGetterOp)get_onstalled },
4291 : { prototypes::id::SVGElement },
4292 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4293 : JSJitInfo::Getter,
4294 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4295 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4296 : false, /* isInfallible. False in setters. */
4297 : false, /* isMovable. Not relevant for setters. */
4298 : false, /* isEliminatable. Not relevant for setters. */
4299 : false, /* isAlwaysInSlot. Only relevant for getters. */
4300 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4301 : false, /* isTypedMethod. Only relevant for methods. */
4302 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4303 : };
4304 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4305 : static_assert(0 < 1, "There is no slot for us");
4306 : static const JSJitInfo onstalled_setterinfo = {
4307 : { (JSJitGetterOp)set_onstalled },
4308 : { prototypes::id::SVGElement },
4309 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4310 : JSJitInfo::Setter,
4311 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4312 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4313 : false, /* isInfallible. False in setters. */
4314 : false, /* isMovable. Not relevant for setters. */
4315 : false, /* isEliminatable. Not relevant for setters. */
4316 : false, /* isAlwaysInSlot. Only relevant for getters. */
4317 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4318 : false, /* isTypedMethod. Only relevant for methods. */
4319 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4320 : };
4321 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4322 : static_assert(0 < 1, "There is no slot for us");
4323 :
4324 : static bool
4325 0 : get_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4326 : {
4327 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsubmit());
4328 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4329 0 : if (result) {
4330 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4331 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4332 0 : return false;
4333 : }
4334 0 : return true;
4335 : } else {
4336 0 : args.rval().setNull();
4337 0 : return true;
4338 : }
4339 : }
4340 :
4341 : static bool
4342 0 : set_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4343 : {
4344 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4345 0 : if (args[0].isObject()) {
4346 : { // scope for tempRoot
4347 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4348 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4349 : }
4350 : } else {
4351 0 : arg0 = nullptr;
4352 : }
4353 0 : self->SetOnsubmit(Constify(arg0));
4354 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4355 :
4356 0 : return true;
4357 : }
4358 :
4359 : static const JSJitInfo onsubmit_getterinfo = {
4360 : { (JSJitGetterOp)get_onsubmit },
4361 : { prototypes::id::SVGElement },
4362 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4363 : JSJitInfo::Getter,
4364 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4365 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4366 : false, /* isInfallible. False in setters. */
4367 : false, /* isMovable. Not relevant for setters. */
4368 : false, /* isEliminatable. Not relevant for setters. */
4369 : false, /* isAlwaysInSlot. Only relevant for getters. */
4370 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4371 : false, /* isTypedMethod. Only relevant for methods. */
4372 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4373 : };
4374 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4375 : static_assert(0 < 1, "There is no slot for us");
4376 : static const JSJitInfo onsubmit_setterinfo = {
4377 : { (JSJitGetterOp)set_onsubmit },
4378 : { prototypes::id::SVGElement },
4379 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4380 : JSJitInfo::Setter,
4381 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4382 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4383 : false, /* isInfallible. False in setters. */
4384 : false, /* isMovable. Not relevant for setters. */
4385 : false, /* isEliminatable. Not relevant for setters. */
4386 : false, /* isAlwaysInSlot. Only relevant for getters. */
4387 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4388 : false, /* isTypedMethod. Only relevant for methods. */
4389 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4390 : };
4391 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4392 : static_assert(0 < 1, "There is no slot for us");
4393 :
4394 : static bool
4395 0 : get_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4396 : {
4397 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsuspend());
4398 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4399 0 : if (result) {
4400 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4401 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4402 0 : return false;
4403 : }
4404 0 : return true;
4405 : } else {
4406 0 : args.rval().setNull();
4407 0 : return true;
4408 : }
4409 : }
4410 :
4411 : static bool
4412 0 : set_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4413 : {
4414 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4415 0 : if (args[0].isObject()) {
4416 : { // scope for tempRoot
4417 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4418 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4419 : }
4420 : } else {
4421 0 : arg0 = nullptr;
4422 : }
4423 0 : self->SetOnsuspend(Constify(arg0));
4424 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4425 :
4426 0 : return true;
4427 : }
4428 :
4429 : static const JSJitInfo onsuspend_getterinfo = {
4430 : { (JSJitGetterOp)get_onsuspend },
4431 : { prototypes::id::SVGElement },
4432 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4433 : JSJitInfo::Getter,
4434 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4435 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4436 : false, /* isInfallible. False in setters. */
4437 : false, /* isMovable. Not relevant for setters. */
4438 : false, /* isEliminatable. Not relevant for setters. */
4439 : false, /* isAlwaysInSlot. Only relevant for getters. */
4440 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4441 : false, /* isTypedMethod. Only relevant for methods. */
4442 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4443 : };
4444 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4445 : static_assert(0 < 1, "There is no slot for us");
4446 : static const JSJitInfo onsuspend_setterinfo = {
4447 : { (JSJitGetterOp)set_onsuspend },
4448 : { prototypes::id::SVGElement },
4449 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4450 : JSJitInfo::Setter,
4451 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4452 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4453 : false, /* isInfallible. False in setters. */
4454 : false, /* isMovable. Not relevant for setters. */
4455 : false, /* isEliminatable. Not relevant for setters. */
4456 : false, /* isAlwaysInSlot. Only relevant for getters. */
4457 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4458 : false, /* isTypedMethod. Only relevant for methods. */
4459 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4460 : };
4461 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4462 : static_assert(0 < 1, "There is no slot for us");
4463 :
4464 : static bool
4465 0 : get_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4466 : {
4467 0 : RefPtr<EventHandlerNonNull> result(self->GetOntimeupdate());
4468 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4469 0 : if (result) {
4470 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4471 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4472 0 : return false;
4473 : }
4474 0 : return true;
4475 : } else {
4476 0 : args.rval().setNull();
4477 0 : return true;
4478 : }
4479 : }
4480 :
4481 : static bool
4482 0 : set_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4483 : {
4484 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4485 0 : if (args[0].isObject()) {
4486 : { // scope for tempRoot
4487 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4488 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4489 : }
4490 : } else {
4491 0 : arg0 = nullptr;
4492 : }
4493 0 : self->SetOntimeupdate(Constify(arg0));
4494 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4495 :
4496 0 : return true;
4497 : }
4498 :
4499 : static const JSJitInfo ontimeupdate_getterinfo = {
4500 : { (JSJitGetterOp)get_ontimeupdate },
4501 : { prototypes::id::SVGElement },
4502 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4503 : JSJitInfo::Getter,
4504 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4505 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4506 : false, /* isInfallible. False in setters. */
4507 : false, /* isMovable. Not relevant for setters. */
4508 : false, /* isEliminatable. Not relevant for setters. */
4509 : false, /* isAlwaysInSlot. Only relevant for getters. */
4510 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4511 : false, /* isTypedMethod. Only relevant for methods. */
4512 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4513 : };
4514 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4515 : static_assert(0 < 1, "There is no slot for us");
4516 : static const JSJitInfo ontimeupdate_setterinfo = {
4517 : { (JSJitGetterOp)set_ontimeupdate },
4518 : { prototypes::id::SVGElement },
4519 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4520 : JSJitInfo::Setter,
4521 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4522 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4523 : false, /* isInfallible. False in setters. */
4524 : false, /* isMovable. Not relevant for setters. */
4525 : false, /* isEliminatable. Not relevant for setters. */
4526 : false, /* isAlwaysInSlot. Only relevant for getters. */
4527 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4528 : false, /* isTypedMethod. Only relevant for methods. */
4529 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4530 : };
4531 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4532 : static_assert(0 < 1, "There is no slot for us");
4533 :
4534 : static bool
4535 0 : get_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4536 : {
4537 0 : RefPtr<EventHandlerNonNull> result(self->GetOnvolumechange());
4538 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4539 0 : if (result) {
4540 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4541 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4542 0 : return false;
4543 : }
4544 0 : return true;
4545 : } else {
4546 0 : args.rval().setNull();
4547 0 : return true;
4548 : }
4549 : }
4550 :
4551 : static bool
4552 0 : set_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4553 : {
4554 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4555 0 : if (args[0].isObject()) {
4556 : { // scope for tempRoot
4557 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4558 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4559 : }
4560 : } else {
4561 0 : arg0 = nullptr;
4562 : }
4563 0 : self->SetOnvolumechange(Constify(arg0));
4564 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4565 :
4566 0 : return true;
4567 : }
4568 :
4569 : static const JSJitInfo onvolumechange_getterinfo = {
4570 : { (JSJitGetterOp)get_onvolumechange },
4571 : { prototypes::id::SVGElement },
4572 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4573 : JSJitInfo::Getter,
4574 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4575 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4576 : false, /* isInfallible. False in setters. */
4577 : false, /* isMovable. Not relevant for setters. */
4578 : false, /* isEliminatable. Not relevant for setters. */
4579 : false, /* isAlwaysInSlot. Only relevant for getters. */
4580 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4581 : false, /* isTypedMethod. Only relevant for methods. */
4582 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4583 : };
4584 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4585 : static_assert(0 < 1, "There is no slot for us");
4586 : static const JSJitInfo onvolumechange_setterinfo = {
4587 : { (JSJitGetterOp)set_onvolumechange },
4588 : { prototypes::id::SVGElement },
4589 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4590 : JSJitInfo::Setter,
4591 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4592 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4593 : false, /* isInfallible. False in setters. */
4594 : false, /* isMovable. Not relevant for setters. */
4595 : false, /* isEliminatable. Not relevant for setters. */
4596 : false, /* isAlwaysInSlot. Only relevant for getters. */
4597 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4598 : false, /* isTypedMethod. Only relevant for methods. */
4599 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4600 : };
4601 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4602 : static_assert(0 < 1, "There is no slot for us");
4603 :
4604 : static bool
4605 0 : get_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4606 : {
4607 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwaiting());
4608 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4609 0 : if (result) {
4610 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4611 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4612 0 : return false;
4613 : }
4614 0 : return true;
4615 : } else {
4616 0 : args.rval().setNull();
4617 0 : return true;
4618 : }
4619 : }
4620 :
4621 : static bool
4622 0 : set_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4623 : {
4624 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4625 0 : if (args[0].isObject()) {
4626 : { // scope for tempRoot
4627 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4628 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4629 : }
4630 : } else {
4631 0 : arg0 = nullptr;
4632 : }
4633 0 : self->SetOnwaiting(Constify(arg0));
4634 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4635 :
4636 0 : return true;
4637 : }
4638 :
4639 : static const JSJitInfo onwaiting_getterinfo = {
4640 : { (JSJitGetterOp)get_onwaiting },
4641 : { prototypes::id::SVGElement },
4642 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4643 : JSJitInfo::Getter,
4644 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4645 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4646 : false, /* isInfallible. False in setters. */
4647 : false, /* isMovable. Not relevant for setters. */
4648 : false, /* isEliminatable. Not relevant for setters. */
4649 : false, /* isAlwaysInSlot. Only relevant for getters. */
4650 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4651 : false, /* isTypedMethod. Only relevant for methods. */
4652 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4653 : };
4654 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4655 : static_assert(0 < 1, "There is no slot for us");
4656 : static const JSJitInfo onwaiting_setterinfo = {
4657 : { (JSJitGetterOp)set_onwaiting },
4658 : { prototypes::id::SVGElement },
4659 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4660 : JSJitInfo::Setter,
4661 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4662 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4663 : false, /* isInfallible. False in setters. */
4664 : false, /* isMovable. Not relevant for setters. */
4665 : false, /* isEliminatable. Not relevant for setters. */
4666 : false, /* isAlwaysInSlot. Only relevant for getters. */
4667 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4668 : false, /* isTypedMethod. Only relevant for methods. */
4669 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4670 : };
4671 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4672 : static_assert(0 < 1, "There is no slot for us");
4673 :
4674 : static bool
4675 0 : get_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4676 : {
4677 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselectstart());
4678 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4679 0 : if (result) {
4680 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4681 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4682 0 : return false;
4683 : }
4684 0 : return true;
4685 : } else {
4686 0 : args.rval().setNull();
4687 0 : return true;
4688 : }
4689 : }
4690 :
4691 : static bool
4692 0 : set_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4693 : {
4694 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4695 0 : if (args[0].isObject()) {
4696 : { // scope for tempRoot
4697 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4698 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4699 : }
4700 : } else {
4701 0 : arg0 = nullptr;
4702 : }
4703 0 : self->SetOnselectstart(Constify(arg0));
4704 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4705 :
4706 0 : return true;
4707 : }
4708 :
4709 : static const JSJitInfo onselectstart_getterinfo = {
4710 : { (JSJitGetterOp)get_onselectstart },
4711 : { prototypes::id::SVGElement },
4712 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4713 : JSJitInfo::Getter,
4714 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4715 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4716 : false, /* isInfallible. False in setters. */
4717 : false, /* isMovable. Not relevant for setters. */
4718 : false, /* isEliminatable. Not relevant for setters. */
4719 : false, /* isAlwaysInSlot. Only relevant for getters. */
4720 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4721 : false, /* isTypedMethod. Only relevant for methods. */
4722 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4723 : };
4724 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4725 : static_assert(0 < 1, "There is no slot for us");
4726 : static const JSJitInfo onselectstart_setterinfo = {
4727 : { (JSJitGetterOp)set_onselectstart },
4728 : { prototypes::id::SVGElement },
4729 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4730 : JSJitInfo::Setter,
4731 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4732 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4733 : false, /* isInfallible. False in setters. */
4734 : false, /* isMovable. Not relevant for setters. */
4735 : false, /* isEliminatable. Not relevant for setters. */
4736 : false, /* isAlwaysInSlot. Only relevant for getters. */
4737 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4738 : false, /* isTypedMethod. Only relevant for methods. */
4739 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4740 : };
4741 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4742 : static_assert(0 < 1, "There is no slot for us");
4743 :
4744 : static bool
4745 0 : get_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4746 : {
4747 0 : RefPtr<EventHandlerNonNull> result(self->GetOntoggle());
4748 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4749 0 : if (result) {
4750 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4751 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4752 0 : return false;
4753 : }
4754 0 : return true;
4755 : } else {
4756 0 : args.rval().setNull();
4757 0 : return true;
4758 : }
4759 : }
4760 :
4761 : static bool
4762 0 : set_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4763 : {
4764 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4765 0 : if (args[0].isObject()) {
4766 : { // scope for tempRoot
4767 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4768 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4769 : }
4770 : } else {
4771 0 : arg0 = nullptr;
4772 : }
4773 0 : self->SetOntoggle(Constify(arg0));
4774 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4775 :
4776 0 : return true;
4777 : }
4778 :
4779 : static const JSJitInfo ontoggle_getterinfo = {
4780 : { (JSJitGetterOp)get_ontoggle },
4781 : { prototypes::id::SVGElement },
4782 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4783 : JSJitInfo::Getter,
4784 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4785 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4786 : false, /* isInfallible. False in setters. */
4787 : false, /* isMovable. Not relevant for setters. */
4788 : false, /* isEliminatable. Not relevant for setters. */
4789 : false, /* isAlwaysInSlot. Only relevant for getters. */
4790 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4791 : false, /* isTypedMethod. Only relevant for methods. */
4792 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4793 : };
4794 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4795 : static_assert(0 < 1, "There is no slot for us");
4796 : static const JSJitInfo ontoggle_setterinfo = {
4797 : { (JSJitGetterOp)set_ontoggle },
4798 : { prototypes::id::SVGElement },
4799 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4800 : JSJitInfo::Setter,
4801 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4802 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4803 : false, /* isInfallible. False in setters. */
4804 : false, /* isMovable. Not relevant for setters. */
4805 : false, /* isEliminatable. Not relevant for setters. */
4806 : false, /* isAlwaysInSlot. Only relevant for getters. */
4807 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4808 : false, /* isTypedMethod. Only relevant for methods. */
4809 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4810 : };
4811 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4812 : static_assert(0 < 1, "There is no slot for us");
4813 :
4814 : static bool
4815 0 : get_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4816 : {
4817 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointercancel());
4818 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4819 0 : if (result) {
4820 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4821 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4822 0 : return false;
4823 : }
4824 0 : return true;
4825 : } else {
4826 0 : args.rval().setNull();
4827 0 : return true;
4828 : }
4829 : }
4830 :
4831 : static bool
4832 0 : set_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4833 : {
4834 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4835 0 : if (args[0].isObject()) {
4836 : { // scope for tempRoot
4837 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4838 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4839 : }
4840 : } else {
4841 0 : arg0 = nullptr;
4842 : }
4843 0 : self->SetOnpointercancel(Constify(arg0));
4844 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4845 :
4846 0 : return true;
4847 : }
4848 :
4849 : static const JSJitInfo onpointercancel_getterinfo = {
4850 : { (JSJitGetterOp)get_onpointercancel },
4851 : { prototypes::id::SVGElement },
4852 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4853 : JSJitInfo::Getter,
4854 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4855 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4856 : false, /* isInfallible. False in setters. */
4857 : false, /* isMovable. Not relevant for setters. */
4858 : false, /* isEliminatable. Not relevant for setters. */
4859 : false, /* isAlwaysInSlot. Only relevant for getters. */
4860 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4861 : false, /* isTypedMethod. Only relevant for methods. */
4862 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4863 : };
4864 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4865 : static_assert(0 < 1, "There is no slot for us");
4866 : static const JSJitInfo onpointercancel_setterinfo = {
4867 : { (JSJitGetterOp)set_onpointercancel },
4868 : { prototypes::id::SVGElement },
4869 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4870 : JSJitInfo::Setter,
4871 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4872 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4873 : false, /* isInfallible. False in setters. */
4874 : false, /* isMovable. Not relevant for setters. */
4875 : false, /* isEliminatable. Not relevant for setters. */
4876 : false, /* isAlwaysInSlot. Only relevant for getters. */
4877 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4878 : false, /* isTypedMethod. Only relevant for methods. */
4879 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4880 : };
4881 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4882 : static_assert(0 < 1, "There is no slot for us");
4883 :
4884 : static bool
4885 0 : get_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4886 : {
4887 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerdown());
4888 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4889 0 : if (result) {
4890 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4891 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4892 0 : return false;
4893 : }
4894 0 : return true;
4895 : } else {
4896 0 : args.rval().setNull();
4897 0 : return true;
4898 : }
4899 : }
4900 :
4901 : static bool
4902 0 : set_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4903 : {
4904 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4905 0 : if (args[0].isObject()) {
4906 : { // scope for tempRoot
4907 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4908 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4909 : }
4910 : } else {
4911 0 : arg0 = nullptr;
4912 : }
4913 0 : self->SetOnpointerdown(Constify(arg0));
4914 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4915 :
4916 0 : return true;
4917 : }
4918 :
4919 : static const JSJitInfo onpointerdown_getterinfo = {
4920 : { (JSJitGetterOp)get_onpointerdown },
4921 : { prototypes::id::SVGElement },
4922 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4923 : JSJitInfo::Getter,
4924 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4925 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4926 : false, /* isInfallible. False in setters. */
4927 : false, /* isMovable. Not relevant for setters. */
4928 : false, /* isEliminatable. Not relevant for setters. */
4929 : false, /* isAlwaysInSlot. Only relevant for getters. */
4930 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4931 : false, /* isTypedMethod. Only relevant for methods. */
4932 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4933 : };
4934 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4935 : static_assert(0 < 1, "There is no slot for us");
4936 : static const JSJitInfo onpointerdown_setterinfo = {
4937 : { (JSJitGetterOp)set_onpointerdown },
4938 : { prototypes::id::SVGElement },
4939 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4940 : JSJitInfo::Setter,
4941 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4942 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4943 : false, /* isInfallible. False in setters. */
4944 : false, /* isMovable. Not relevant for setters. */
4945 : false, /* isEliminatable. Not relevant for setters. */
4946 : false, /* isAlwaysInSlot. Only relevant for getters. */
4947 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4948 : false, /* isTypedMethod. Only relevant for methods. */
4949 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4950 : };
4951 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4952 : static_assert(0 < 1, "There is no slot for us");
4953 :
4954 : static bool
4955 0 : get_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
4956 : {
4957 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerup());
4958 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4959 0 : if (result) {
4960 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4961 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4962 0 : return false;
4963 : }
4964 0 : return true;
4965 : } else {
4966 0 : args.rval().setNull();
4967 0 : return true;
4968 : }
4969 : }
4970 :
4971 : static bool
4972 0 : set_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
4973 : {
4974 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4975 0 : if (args[0].isObject()) {
4976 : { // scope for tempRoot
4977 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4978 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4979 : }
4980 : } else {
4981 0 : arg0 = nullptr;
4982 : }
4983 0 : self->SetOnpointerup(Constify(arg0));
4984 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4985 :
4986 0 : return true;
4987 : }
4988 :
4989 : static const JSJitInfo onpointerup_getterinfo = {
4990 : { (JSJitGetterOp)get_onpointerup },
4991 : { prototypes::id::SVGElement },
4992 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
4993 : JSJitInfo::Getter,
4994 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4995 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4996 : false, /* isInfallible. False in setters. */
4997 : false, /* isMovable. Not relevant for setters. */
4998 : false, /* isEliminatable. Not relevant for setters. */
4999 : false, /* isAlwaysInSlot. Only relevant for getters. */
5000 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5001 : false, /* isTypedMethod. Only relevant for methods. */
5002 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5003 : };
5004 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5005 : static_assert(0 < 1, "There is no slot for us");
5006 : static const JSJitInfo onpointerup_setterinfo = {
5007 : { (JSJitGetterOp)set_onpointerup },
5008 : { prototypes::id::SVGElement },
5009 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5010 : JSJitInfo::Setter,
5011 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5012 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5013 : false, /* isInfallible. False in setters. */
5014 : false, /* isMovable. Not relevant for setters. */
5015 : false, /* isEliminatable. Not relevant for setters. */
5016 : false, /* isAlwaysInSlot. Only relevant for getters. */
5017 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5018 : false, /* isTypedMethod. Only relevant for methods. */
5019 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5020 : };
5021 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5022 : static_assert(0 < 1, "There is no slot for us");
5023 :
5024 : static bool
5025 0 : get_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5026 : {
5027 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointermove());
5028 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5029 0 : if (result) {
5030 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5031 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5032 0 : return false;
5033 : }
5034 0 : return true;
5035 : } else {
5036 0 : args.rval().setNull();
5037 0 : return true;
5038 : }
5039 : }
5040 :
5041 : static bool
5042 0 : set_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5043 : {
5044 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5045 0 : if (args[0].isObject()) {
5046 : { // scope for tempRoot
5047 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5048 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5049 : }
5050 : } else {
5051 0 : arg0 = nullptr;
5052 : }
5053 0 : self->SetOnpointermove(Constify(arg0));
5054 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5055 :
5056 0 : return true;
5057 : }
5058 :
5059 : static const JSJitInfo onpointermove_getterinfo = {
5060 : { (JSJitGetterOp)get_onpointermove },
5061 : { prototypes::id::SVGElement },
5062 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5063 : JSJitInfo::Getter,
5064 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5065 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5066 : false, /* isInfallible. False in setters. */
5067 : false, /* isMovable. Not relevant for setters. */
5068 : false, /* isEliminatable. Not relevant for setters. */
5069 : false, /* isAlwaysInSlot. Only relevant for getters. */
5070 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5071 : false, /* isTypedMethod. Only relevant for methods. */
5072 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5073 : };
5074 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5075 : static_assert(0 < 1, "There is no slot for us");
5076 : static const JSJitInfo onpointermove_setterinfo = {
5077 : { (JSJitGetterOp)set_onpointermove },
5078 : { prototypes::id::SVGElement },
5079 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5080 : JSJitInfo::Setter,
5081 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5082 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5083 : false, /* isInfallible. False in setters. */
5084 : false, /* isMovable. Not relevant for setters. */
5085 : false, /* isEliminatable. Not relevant for setters. */
5086 : false, /* isAlwaysInSlot. Only relevant for getters. */
5087 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5088 : false, /* isTypedMethod. Only relevant for methods. */
5089 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5090 : };
5091 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5092 : static_assert(0 < 1, "There is no slot for us");
5093 :
5094 : static bool
5095 0 : get_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5096 : {
5097 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerout());
5098 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5099 0 : if (result) {
5100 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5101 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5102 0 : return false;
5103 : }
5104 0 : return true;
5105 : } else {
5106 0 : args.rval().setNull();
5107 0 : return true;
5108 : }
5109 : }
5110 :
5111 : static bool
5112 0 : set_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5113 : {
5114 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5115 0 : if (args[0].isObject()) {
5116 : { // scope for tempRoot
5117 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5118 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5119 : }
5120 : } else {
5121 0 : arg0 = nullptr;
5122 : }
5123 0 : self->SetOnpointerout(Constify(arg0));
5124 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5125 :
5126 0 : return true;
5127 : }
5128 :
5129 : static const JSJitInfo onpointerout_getterinfo = {
5130 : { (JSJitGetterOp)get_onpointerout },
5131 : { prototypes::id::SVGElement },
5132 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5133 : JSJitInfo::Getter,
5134 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5135 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5136 : false, /* isInfallible. False in setters. */
5137 : false, /* isMovable. Not relevant for setters. */
5138 : false, /* isEliminatable. Not relevant for setters. */
5139 : false, /* isAlwaysInSlot. Only relevant for getters. */
5140 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5141 : false, /* isTypedMethod. Only relevant for methods. */
5142 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5143 : };
5144 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5145 : static_assert(0 < 1, "There is no slot for us");
5146 : static const JSJitInfo onpointerout_setterinfo = {
5147 : { (JSJitGetterOp)set_onpointerout },
5148 : { prototypes::id::SVGElement },
5149 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5150 : JSJitInfo::Setter,
5151 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5152 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5153 : false, /* isInfallible. False in setters. */
5154 : false, /* isMovable. Not relevant for setters. */
5155 : false, /* isEliminatable. Not relevant for setters. */
5156 : false, /* isAlwaysInSlot. Only relevant for getters. */
5157 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5158 : false, /* isTypedMethod. Only relevant for methods. */
5159 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5160 : };
5161 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5162 : static_assert(0 < 1, "There is no slot for us");
5163 :
5164 : static bool
5165 0 : get_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5166 : {
5167 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerover());
5168 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5169 0 : if (result) {
5170 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5171 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5172 0 : return false;
5173 : }
5174 0 : return true;
5175 : } else {
5176 0 : args.rval().setNull();
5177 0 : return true;
5178 : }
5179 : }
5180 :
5181 : static bool
5182 0 : set_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5183 : {
5184 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5185 0 : if (args[0].isObject()) {
5186 : { // scope for tempRoot
5187 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5188 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5189 : }
5190 : } else {
5191 0 : arg0 = nullptr;
5192 : }
5193 0 : self->SetOnpointerover(Constify(arg0));
5194 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5195 :
5196 0 : return true;
5197 : }
5198 :
5199 : static const JSJitInfo onpointerover_getterinfo = {
5200 : { (JSJitGetterOp)get_onpointerover },
5201 : { prototypes::id::SVGElement },
5202 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5203 : JSJitInfo::Getter,
5204 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5205 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5206 : false, /* isInfallible. False in setters. */
5207 : false, /* isMovable. Not relevant for setters. */
5208 : false, /* isEliminatable. Not relevant for setters. */
5209 : false, /* isAlwaysInSlot. Only relevant for getters. */
5210 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5211 : false, /* isTypedMethod. Only relevant for methods. */
5212 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5213 : };
5214 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5215 : static_assert(0 < 1, "There is no slot for us");
5216 : static const JSJitInfo onpointerover_setterinfo = {
5217 : { (JSJitGetterOp)set_onpointerover },
5218 : { prototypes::id::SVGElement },
5219 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5220 : JSJitInfo::Setter,
5221 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5222 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5223 : false, /* isInfallible. False in setters. */
5224 : false, /* isMovable. Not relevant for setters. */
5225 : false, /* isEliminatable. Not relevant for setters. */
5226 : false, /* isAlwaysInSlot. Only relevant for getters. */
5227 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5228 : false, /* isTypedMethod. Only relevant for methods. */
5229 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5230 : };
5231 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5232 : static_assert(0 < 1, "There is no slot for us");
5233 :
5234 : static bool
5235 0 : get_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5236 : {
5237 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerenter());
5238 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5239 0 : if (result) {
5240 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5241 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5242 0 : return false;
5243 : }
5244 0 : return true;
5245 : } else {
5246 0 : args.rval().setNull();
5247 0 : return true;
5248 : }
5249 : }
5250 :
5251 : static bool
5252 0 : set_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5253 : {
5254 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5255 0 : if (args[0].isObject()) {
5256 : { // scope for tempRoot
5257 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5258 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5259 : }
5260 : } else {
5261 0 : arg0 = nullptr;
5262 : }
5263 0 : self->SetOnpointerenter(Constify(arg0));
5264 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5265 :
5266 0 : return true;
5267 : }
5268 :
5269 : static const JSJitInfo onpointerenter_getterinfo = {
5270 : { (JSJitGetterOp)get_onpointerenter },
5271 : { prototypes::id::SVGElement },
5272 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5273 : JSJitInfo::Getter,
5274 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5275 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5276 : false, /* isInfallible. False in setters. */
5277 : false, /* isMovable. Not relevant for setters. */
5278 : false, /* isEliminatable. Not relevant for setters. */
5279 : false, /* isAlwaysInSlot. Only relevant for getters. */
5280 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5281 : false, /* isTypedMethod. Only relevant for methods. */
5282 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5283 : };
5284 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5285 : static_assert(0 < 1, "There is no slot for us");
5286 : static const JSJitInfo onpointerenter_setterinfo = {
5287 : { (JSJitGetterOp)set_onpointerenter },
5288 : { prototypes::id::SVGElement },
5289 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5290 : JSJitInfo::Setter,
5291 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5292 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5293 : false, /* isInfallible. False in setters. */
5294 : false, /* isMovable. Not relevant for setters. */
5295 : false, /* isEliminatable. Not relevant for setters. */
5296 : false, /* isAlwaysInSlot. Only relevant for getters. */
5297 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5298 : false, /* isTypedMethod. Only relevant for methods. */
5299 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5300 : };
5301 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5302 : static_assert(0 < 1, "There is no slot for us");
5303 :
5304 : static bool
5305 0 : get_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5306 : {
5307 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerleave());
5308 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5309 0 : if (result) {
5310 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5311 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5312 0 : return false;
5313 : }
5314 0 : return true;
5315 : } else {
5316 0 : args.rval().setNull();
5317 0 : return true;
5318 : }
5319 : }
5320 :
5321 : static bool
5322 0 : set_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5323 : {
5324 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5325 0 : if (args[0].isObject()) {
5326 : { // scope for tempRoot
5327 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5328 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5329 : }
5330 : } else {
5331 0 : arg0 = nullptr;
5332 : }
5333 0 : self->SetOnpointerleave(Constify(arg0));
5334 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5335 :
5336 0 : return true;
5337 : }
5338 :
5339 : static const JSJitInfo onpointerleave_getterinfo = {
5340 : { (JSJitGetterOp)get_onpointerleave },
5341 : { prototypes::id::SVGElement },
5342 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5343 : JSJitInfo::Getter,
5344 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5345 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5346 : false, /* isInfallible. False in setters. */
5347 : false, /* isMovable. Not relevant for setters. */
5348 : false, /* isEliminatable. Not relevant for setters. */
5349 : false, /* isAlwaysInSlot. Only relevant for getters. */
5350 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5351 : false, /* isTypedMethod. Only relevant for methods. */
5352 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5353 : };
5354 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5355 : static_assert(0 < 1, "There is no slot for us");
5356 : static const JSJitInfo onpointerleave_setterinfo = {
5357 : { (JSJitGetterOp)set_onpointerleave },
5358 : { prototypes::id::SVGElement },
5359 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5360 : JSJitInfo::Setter,
5361 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5362 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5363 : false, /* isInfallible. False in setters. */
5364 : false, /* isMovable. Not relevant for setters. */
5365 : false, /* isEliminatable. Not relevant for setters. */
5366 : false, /* isAlwaysInSlot. Only relevant for getters. */
5367 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5368 : false, /* isTypedMethod. Only relevant for methods. */
5369 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5370 : };
5371 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5372 : static_assert(0 < 1, "There is no slot for us");
5373 :
5374 : static bool
5375 0 : get_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5376 : {
5377 0 : RefPtr<EventHandlerNonNull> result(self->GetOngotpointercapture());
5378 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5379 0 : if (result) {
5380 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5381 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5382 0 : return false;
5383 : }
5384 0 : return true;
5385 : } else {
5386 0 : args.rval().setNull();
5387 0 : return true;
5388 : }
5389 : }
5390 :
5391 : static bool
5392 0 : set_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5393 : {
5394 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5395 0 : if (args[0].isObject()) {
5396 : { // scope for tempRoot
5397 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5398 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5399 : }
5400 : } else {
5401 0 : arg0 = nullptr;
5402 : }
5403 0 : self->SetOngotpointercapture(Constify(arg0));
5404 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5405 :
5406 0 : return true;
5407 : }
5408 :
5409 : static const JSJitInfo ongotpointercapture_getterinfo = {
5410 : { (JSJitGetterOp)get_ongotpointercapture },
5411 : { prototypes::id::SVGElement },
5412 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5413 : JSJitInfo::Getter,
5414 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5415 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5416 : false, /* isInfallible. False in setters. */
5417 : false, /* isMovable. Not relevant for setters. */
5418 : false, /* isEliminatable. Not relevant for setters. */
5419 : false, /* isAlwaysInSlot. Only relevant for getters. */
5420 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5421 : false, /* isTypedMethod. Only relevant for methods. */
5422 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5423 : };
5424 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5425 : static_assert(0 < 1, "There is no slot for us");
5426 : static const JSJitInfo ongotpointercapture_setterinfo = {
5427 : { (JSJitGetterOp)set_ongotpointercapture },
5428 : { prototypes::id::SVGElement },
5429 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5430 : JSJitInfo::Setter,
5431 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5432 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5433 : false, /* isInfallible. False in setters. */
5434 : false, /* isMovable. Not relevant for setters. */
5435 : false, /* isEliminatable. Not relevant for setters. */
5436 : false, /* isAlwaysInSlot. Only relevant for getters. */
5437 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5438 : false, /* isTypedMethod. Only relevant for methods. */
5439 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5440 : };
5441 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5442 : static_assert(0 < 1, "There is no slot for us");
5443 :
5444 : static bool
5445 0 : get_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5446 : {
5447 0 : RefPtr<EventHandlerNonNull> result(self->GetOnlostpointercapture());
5448 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5449 0 : if (result) {
5450 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5451 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5452 0 : return false;
5453 : }
5454 0 : return true;
5455 : } else {
5456 0 : args.rval().setNull();
5457 0 : return true;
5458 : }
5459 : }
5460 :
5461 : static bool
5462 0 : set_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5463 : {
5464 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5465 0 : if (args[0].isObject()) {
5466 : { // scope for tempRoot
5467 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5468 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5469 : }
5470 : } else {
5471 0 : arg0 = nullptr;
5472 : }
5473 0 : self->SetOnlostpointercapture(Constify(arg0));
5474 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5475 :
5476 0 : return true;
5477 : }
5478 :
5479 : static const JSJitInfo onlostpointercapture_getterinfo = {
5480 : { (JSJitGetterOp)get_onlostpointercapture },
5481 : { prototypes::id::SVGElement },
5482 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5483 : JSJitInfo::Getter,
5484 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5485 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5486 : false, /* isInfallible. False in setters. */
5487 : false, /* isMovable. Not relevant for setters. */
5488 : false, /* isEliminatable. Not relevant for setters. */
5489 : false, /* isAlwaysInSlot. Only relevant for getters. */
5490 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5491 : false, /* isTypedMethod. Only relevant for methods. */
5492 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5493 : };
5494 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5495 : static_assert(0 < 1, "There is no slot for us");
5496 : static const JSJitInfo onlostpointercapture_setterinfo = {
5497 : { (JSJitGetterOp)set_onlostpointercapture },
5498 : { prototypes::id::SVGElement },
5499 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5500 : JSJitInfo::Setter,
5501 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5502 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5503 : false, /* isInfallible. False in setters. */
5504 : false, /* isMovable. Not relevant for setters. */
5505 : false, /* isEliminatable. Not relevant for setters. */
5506 : false, /* isAlwaysInSlot. Only relevant for getters. */
5507 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5508 : false, /* isTypedMethod. Only relevant for methods. */
5509 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5510 : };
5511 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5512 : static_assert(0 < 1, "There is no slot for us");
5513 :
5514 : static bool
5515 0 : get_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5516 : {
5517 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenchange());
5518 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5519 0 : if (result) {
5520 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5521 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5522 0 : return false;
5523 : }
5524 0 : return true;
5525 : } else {
5526 0 : args.rval().setNull();
5527 0 : return true;
5528 : }
5529 : }
5530 :
5531 : static bool
5532 0 : set_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5533 : {
5534 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5535 0 : if (args[0].isObject()) {
5536 : { // scope for tempRoot
5537 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5538 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5539 : }
5540 : } else {
5541 0 : arg0 = nullptr;
5542 : }
5543 0 : self->SetOnmozfullscreenchange(Constify(arg0));
5544 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5545 :
5546 0 : return true;
5547 : }
5548 :
5549 : static const JSJitInfo onmozfullscreenchange_getterinfo = {
5550 : { (JSJitGetterOp)get_onmozfullscreenchange },
5551 : { prototypes::id::SVGElement },
5552 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5553 : JSJitInfo::Getter,
5554 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5555 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5556 : false, /* isInfallible. False in setters. */
5557 : false, /* isMovable. Not relevant for setters. */
5558 : false, /* isEliminatable. Not relevant for setters. */
5559 : false, /* isAlwaysInSlot. Only relevant for getters. */
5560 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5561 : false, /* isTypedMethod. Only relevant for methods. */
5562 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5563 : };
5564 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5565 : static_assert(0 < 1, "There is no slot for us");
5566 : static const JSJitInfo onmozfullscreenchange_setterinfo = {
5567 : { (JSJitGetterOp)set_onmozfullscreenchange },
5568 : { prototypes::id::SVGElement },
5569 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5570 : JSJitInfo::Setter,
5571 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5572 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5573 : false, /* isInfallible. False in setters. */
5574 : false, /* isMovable. Not relevant for setters. */
5575 : false, /* isEliminatable. Not relevant for setters. */
5576 : false, /* isAlwaysInSlot. Only relevant for getters. */
5577 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5578 : false, /* isTypedMethod. Only relevant for methods. */
5579 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5580 : };
5581 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5582 : static_assert(0 < 1, "There is no slot for us");
5583 :
5584 : static bool
5585 0 : get_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5586 : {
5587 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenerror());
5588 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5589 0 : if (result) {
5590 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5591 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5592 0 : return false;
5593 : }
5594 0 : return true;
5595 : } else {
5596 0 : args.rval().setNull();
5597 0 : return true;
5598 : }
5599 : }
5600 :
5601 : static bool
5602 0 : set_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5603 : {
5604 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5605 0 : if (args[0].isObject()) {
5606 : { // scope for tempRoot
5607 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5608 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5609 : }
5610 : } else {
5611 0 : arg0 = nullptr;
5612 : }
5613 0 : self->SetOnmozfullscreenerror(Constify(arg0));
5614 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5615 :
5616 0 : return true;
5617 : }
5618 :
5619 : static const JSJitInfo onmozfullscreenerror_getterinfo = {
5620 : { (JSJitGetterOp)get_onmozfullscreenerror },
5621 : { prototypes::id::SVGElement },
5622 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5623 : JSJitInfo::Getter,
5624 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5625 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5626 : false, /* isInfallible. False in setters. */
5627 : false, /* isMovable. Not relevant for setters. */
5628 : false, /* isEliminatable. Not relevant for setters. */
5629 : false, /* isAlwaysInSlot. Only relevant for getters. */
5630 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5631 : false, /* isTypedMethod. Only relevant for methods. */
5632 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5633 : };
5634 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5635 : static_assert(0 < 1, "There is no slot for us");
5636 : static const JSJitInfo onmozfullscreenerror_setterinfo = {
5637 : { (JSJitGetterOp)set_onmozfullscreenerror },
5638 : { prototypes::id::SVGElement },
5639 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5640 : JSJitInfo::Setter,
5641 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5642 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5643 : false, /* isInfallible. False in setters. */
5644 : false, /* isMovable. Not relevant for setters. */
5645 : false, /* isEliminatable. Not relevant for setters. */
5646 : false, /* isAlwaysInSlot. Only relevant for getters. */
5647 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5648 : false, /* isTypedMethod. Only relevant for methods. */
5649 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5650 : };
5651 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5652 : static_assert(0 < 1, "There is no slot for us");
5653 :
5654 : static bool
5655 0 : get_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5656 : {
5657 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationcancel());
5658 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5659 0 : if (result) {
5660 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5661 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5662 0 : return false;
5663 : }
5664 0 : return true;
5665 : } else {
5666 0 : args.rval().setNull();
5667 0 : return true;
5668 : }
5669 : }
5670 :
5671 : static bool
5672 0 : set_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5673 : {
5674 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5675 0 : if (args[0].isObject()) {
5676 : { // scope for tempRoot
5677 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5678 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5679 : }
5680 : } else {
5681 0 : arg0 = nullptr;
5682 : }
5683 0 : self->SetOnanimationcancel(Constify(arg0));
5684 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5685 :
5686 0 : return true;
5687 : }
5688 :
5689 : static const JSJitInfo onanimationcancel_getterinfo = {
5690 : { (JSJitGetterOp)get_onanimationcancel },
5691 : { prototypes::id::SVGElement },
5692 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5693 : JSJitInfo::Getter,
5694 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5695 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5696 : false, /* isInfallible. False in setters. */
5697 : false, /* isMovable. Not relevant for setters. */
5698 : false, /* isEliminatable. Not relevant for setters. */
5699 : false, /* isAlwaysInSlot. Only relevant for getters. */
5700 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5701 : false, /* isTypedMethod. Only relevant for methods. */
5702 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5703 : };
5704 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5705 : static_assert(0 < 1, "There is no slot for us");
5706 : static const JSJitInfo onanimationcancel_setterinfo = {
5707 : { (JSJitGetterOp)set_onanimationcancel },
5708 : { prototypes::id::SVGElement },
5709 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5710 : JSJitInfo::Setter,
5711 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5712 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5713 : false, /* isInfallible. False in setters. */
5714 : false, /* isMovable. Not relevant for setters. */
5715 : false, /* isEliminatable. Not relevant for setters. */
5716 : false, /* isAlwaysInSlot. Only relevant for getters. */
5717 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5718 : false, /* isTypedMethod. Only relevant for methods. */
5719 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5720 : };
5721 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5722 : static_assert(0 < 1, "There is no slot for us");
5723 :
5724 : static bool
5725 0 : get_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5726 : {
5727 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationend());
5728 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5729 0 : if (result) {
5730 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5731 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5732 0 : return false;
5733 : }
5734 0 : return true;
5735 : } else {
5736 0 : args.rval().setNull();
5737 0 : return true;
5738 : }
5739 : }
5740 :
5741 : static bool
5742 0 : set_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5743 : {
5744 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5745 0 : if (args[0].isObject()) {
5746 : { // scope for tempRoot
5747 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5748 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5749 : }
5750 : } else {
5751 0 : arg0 = nullptr;
5752 : }
5753 0 : self->SetOnanimationend(Constify(arg0));
5754 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5755 :
5756 0 : return true;
5757 : }
5758 :
5759 : static const JSJitInfo onanimationend_getterinfo = {
5760 : { (JSJitGetterOp)get_onanimationend },
5761 : { prototypes::id::SVGElement },
5762 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5763 : JSJitInfo::Getter,
5764 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5765 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5766 : false, /* isInfallible. False in setters. */
5767 : false, /* isMovable. Not relevant for setters. */
5768 : false, /* isEliminatable. Not relevant for setters. */
5769 : false, /* isAlwaysInSlot. Only relevant for getters. */
5770 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5771 : false, /* isTypedMethod. Only relevant for methods. */
5772 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5773 : };
5774 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5775 : static_assert(0 < 1, "There is no slot for us");
5776 : static const JSJitInfo onanimationend_setterinfo = {
5777 : { (JSJitGetterOp)set_onanimationend },
5778 : { prototypes::id::SVGElement },
5779 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5780 : JSJitInfo::Setter,
5781 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5782 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5783 : false, /* isInfallible. False in setters. */
5784 : false, /* isMovable. Not relevant for setters. */
5785 : false, /* isEliminatable. Not relevant for setters. */
5786 : false, /* isAlwaysInSlot. Only relevant for getters. */
5787 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5788 : false, /* isTypedMethod. Only relevant for methods. */
5789 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5790 : };
5791 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5792 : static_assert(0 < 1, "There is no slot for us");
5793 :
5794 : static bool
5795 0 : get_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5796 : {
5797 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationiteration());
5798 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5799 0 : if (result) {
5800 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5801 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5802 0 : return false;
5803 : }
5804 0 : return true;
5805 : } else {
5806 0 : args.rval().setNull();
5807 0 : return true;
5808 : }
5809 : }
5810 :
5811 : static bool
5812 0 : set_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5813 : {
5814 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5815 0 : if (args[0].isObject()) {
5816 : { // scope for tempRoot
5817 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5818 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5819 : }
5820 : } else {
5821 0 : arg0 = nullptr;
5822 : }
5823 0 : self->SetOnanimationiteration(Constify(arg0));
5824 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5825 :
5826 0 : return true;
5827 : }
5828 :
5829 : static const JSJitInfo onanimationiteration_getterinfo = {
5830 : { (JSJitGetterOp)get_onanimationiteration },
5831 : { prototypes::id::SVGElement },
5832 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5833 : JSJitInfo::Getter,
5834 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5835 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5836 : false, /* isInfallible. False in setters. */
5837 : false, /* isMovable. Not relevant for setters. */
5838 : false, /* isEliminatable. Not relevant for setters. */
5839 : false, /* isAlwaysInSlot. Only relevant for getters. */
5840 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5841 : false, /* isTypedMethod. Only relevant for methods. */
5842 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5843 : };
5844 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5845 : static_assert(0 < 1, "There is no slot for us");
5846 : static const JSJitInfo onanimationiteration_setterinfo = {
5847 : { (JSJitGetterOp)set_onanimationiteration },
5848 : { prototypes::id::SVGElement },
5849 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5850 : JSJitInfo::Setter,
5851 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5852 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5853 : false, /* isInfallible. False in setters. */
5854 : false, /* isMovable. Not relevant for setters. */
5855 : false, /* isEliminatable. Not relevant for setters. */
5856 : false, /* isAlwaysInSlot. Only relevant for getters. */
5857 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5858 : false, /* isTypedMethod. Only relevant for methods. */
5859 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5860 : };
5861 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5862 : static_assert(0 < 1, "There is no slot for us");
5863 :
5864 : static bool
5865 0 : get_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5866 : {
5867 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationstart());
5868 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5869 0 : if (result) {
5870 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5871 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5872 0 : return false;
5873 : }
5874 0 : return true;
5875 : } else {
5876 0 : args.rval().setNull();
5877 0 : return true;
5878 : }
5879 : }
5880 :
5881 : static bool
5882 0 : set_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5883 : {
5884 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5885 0 : if (args[0].isObject()) {
5886 : { // scope for tempRoot
5887 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5888 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5889 : }
5890 : } else {
5891 0 : arg0 = nullptr;
5892 : }
5893 0 : self->SetOnanimationstart(Constify(arg0));
5894 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5895 :
5896 0 : return true;
5897 : }
5898 :
5899 : static const JSJitInfo onanimationstart_getterinfo = {
5900 : { (JSJitGetterOp)get_onanimationstart },
5901 : { prototypes::id::SVGElement },
5902 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5903 : JSJitInfo::Getter,
5904 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5905 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5906 : false, /* isInfallible. False in setters. */
5907 : false, /* isMovable. Not relevant for setters. */
5908 : false, /* isEliminatable. Not relevant for setters. */
5909 : false, /* isAlwaysInSlot. Only relevant for getters. */
5910 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5911 : false, /* isTypedMethod. Only relevant for methods. */
5912 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5913 : };
5914 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5915 : static_assert(0 < 1, "There is no slot for us");
5916 : static const JSJitInfo onanimationstart_setterinfo = {
5917 : { (JSJitGetterOp)set_onanimationstart },
5918 : { prototypes::id::SVGElement },
5919 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5920 : JSJitInfo::Setter,
5921 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5922 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5923 : false, /* isInfallible. False in setters. */
5924 : false, /* isMovable. Not relevant for setters. */
5925 : false, /* isEliminatable. Not relevant for setters. */
5926 : false, /* isAlwaysInSlot. Only relevant for getters. */
5927 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5928 : false, /* isTypedMethod. Only relevant for methods. */
5929 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5930 : };
5931 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5932 : static_assert(0 < 1, "There is no slot for us");
5933 :
5934 : static bool
5935 0 : get_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
5936 : {
5937 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitioncancel());
5938 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5939 0 : if (result) {
5940 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5941 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5942 0 : return false;
5943 : }
5944 0 : return true;
5945 : } else {
5946 0 : args.rval().setNull();
5947 0 : return true;
5948 : }
5949 : }
5950 :
5951 : static bool
5952 0 : set_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
5953 : {
5954 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5955 0 : if (args[0].isObject()) {
5956 : { // scope for tempRoot
5957 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5958 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5959 : }
5960 : } else {
5961 0 : arg0 = nullptr;
5962 : }
5963 0 : self->SetOntransitioncancel(Constify(arg0));
5964 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5965 :
5966 0 : return true;
5967 : }
5968 :
5969 : static const JSJitInfo ontransitioncancel_getterinfo = {
5970 : { (JSJitGetterOp)get_ontransitioncancel },
5971 : { prototypes::id::SVGElement },
5972 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5973 : JSJitInfo::Getter,
5974 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5975 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5976 : false, /* isInfallible. False in setters. */
5977 : false, /* isMovable. Not relevant for setters. */
5978 : false, /* isEliminatable. Not relevant for setters. */
5979 : false, /* isAlwaysInSlot. Only relevant for getters. */
5980 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5981 : false, /* isTypedMethod. Only relevant for methods. */
5982 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5983 : };
5984 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5985 : static_assert(0 < 1, "There is no slot for us");
5986 : static const JSJitInfo ontransitioncancel_setterinfo = {
5987 : { (JSJitGetterOp)set_ontransitioncancel },
5988 : { prototypes::id::SVGElement },
5989 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
5990 : JSJitInfo::Setter,
5991 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5992 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5993 : false, /* isInfallible. False in setters. */
5994 : false, /* isMovable. Not relevant for setters. */
5995 : false, /* isEliminatable. Not relevant for setters. */
5996 : false, /* isAlwaysInSlot. Only relevant for getters. */
5997 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5998 : false, /* isTypedMethod. Only relevant for methods. */
5999 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6000 : };
6001 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6002 : static_assert(0 < 1, "There is no slot for us");
6003 :
6004 : static bool
6005 0 : get_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6006 : {
6007 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionend());
6008 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6009 0 : if (result) {
6010 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6011 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6012 0 : return false;
6013 : }
6014 0 : return true;
6015 : } else {
6016 0 : args.rval().setNull();
6017 0 : return true;
6018 : }
6019 : }
6020 :
6021 : static bool
6022 0 : set_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6023 : {
6024 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6025 0 : if (args[0].isObject()) {
6026 : { // scope for tempRoot
6027 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6028 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6029 : }
6030 : } else {
6031 0 : arg0 = nullptr;
6032 : }
6033 0 : self->SetOntransitionend(Constify(arg0));
6034 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6035 :
6036 0 : return true;
6037 : }
6038 :
6039 : static const JSJitInfo ontransitionend_getterinfo = {
6040 : { (JSJitGetterOp)get_ontransitionend },
6041 : { prototypes::id::SVGElement },
6042 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6043 : JSJitInfo::Getter,
6044 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6045 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6046 : false, /* isInfallible. False in setters. */
6047 : false, /* isMovable. Not relevant for setters. */
6048 : false, /* isEliminatable. Not relevant for setters. */
6049 : false, /* isAlwaysInSlot. Only relevant for getters. */
6050 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6051 : false, /* isTypedMethod. Only relevant for methods. */
6052 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6053 : };
6054 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6055 : static_assert(0 < 1, "There is no slot for us");
6056 : static const JSJitInfo ontransitionend_setterinfo = {
6057 : { (JSJitGetterOp)set_ontransitionend },
6058 : { prototypes::id::SVGElement },
6059 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6060 : JSJitInfo::Setter,
6061 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6062 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6063 : false, /* isInfallible. False in setters. */
6064 : false, /* isMovable. Not relevant for setters. */
6065 : false, /* isEliminatable. Not relevant for setters. */
6066 : false, /* isAlwaysInSlot. Only relevant for getters. */
6067 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6068 : false, /* isTypedMethod. Only relevant for methods. */
6069 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6070 : };
6071 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6072 : static_assert(0 < 1, "There is no slot for us");
6073 :
6074 : static bool
6075 0 : get_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6076 : {
6077 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionrun());
6078 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6079 0 : if (result) {
6080 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6081 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6082 0 : return false;
6083 : }
6084 0 : return true;
6085 : } else {
6086 0 : args.rval().setNull();
6087 0 : return true;
6088 : }
6089 : }
6090 :
6091 : static bool
6092 0 : set_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6093 : {
6094 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6095 0 : if (args[0].isObject()) {
6096 : { // scope for tempRoot
6097 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6098 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6099 : }
6100 : } else {
6101 0 : arg0 = nullptr;
6102 : }
6103 0 : self->SetOntransitionrun(Constify(arg0));
6104 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6105 :
6106 0 : return true;
6107 : }
6108 :
6109 : static const JSJitInfo ontransitionrun_getterinfo = {
6110 : { (JSJitGetterOp)get_ontransitionrun },
6111 : { prototypes::id::SVGElement },
6112 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6113 : JSJitInfo::Getter,
6114 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6115 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6116 : false, /* isInfallible. False in setters. */
6117 : false, /* isMovable. Not relevant for setters. */
6118 : false, /* isEliminatable. Not relevant for setters. */
6119 : false, /* isAlwaysInSlot. Only relevant for getters. */
6120 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6121 : false, /* isTypedMethod. Only relevant for methods. */
6122 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6123 : };
6124 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6125 : static_assert(0 < 1, "There is no slot for us");
6126 : static const JSJitInfo ontransitionrun_setterinfo = {
6127 : { (JSJitGetterOp)set_ontransitionrun },
6128 : { prototypes::id::SVGElement },
6129 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6130 : JSJitInfo::Setter,
6131 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6132 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6133 : false, /* isInfallible. False in setters. */
6134 : false, /* isMovable. Not relevant for setters. */
6135 : false, /* isEliminatable. Not relevant for setters. */
6136 : false, /* isAlwaysInSlot. Only relevant for getters. */
6137 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6138 : false, /* isTypedMethod. Only relevant for methods. */
6139 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6140 : };
6141 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6142 : static_assert(0 < 1, "There is no slot for us");
6143 :
6144 : static bool
6145 0 : get_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6146 : {
6147 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionstart());
6148 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6149 0 : if (result) {
6150 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6151 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6152 0 : return false;
6153 : }
6154 0 : return true;
6155 : } else {
6156 0 : args.rval().setNull();
6157 0 : return true;
6158 : }
6159 : }
6160 :
6161 : static bool
6162 0 : set_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6163 : {
6164 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6165 0 : if (args[0].isObject()) {
6166 : { // scope for tempRoot
6167 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6168 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6169 : }
6170 : } else {
6171 0 : arg0 = nullptr;
6172 : }
6173 0 : self->SetOntransitionstart(Constify(arg0));
6174 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6175 :
6176 0 : return true;
6177 : }
6178 :
6179 : static const JSJitInfo ontransitionstart_getterinfo = {
6180 : { (JSJitGetterOp)get_ontransitionstart },
6181 : { prototypes::id::SVGElement },
6182 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6183 : JSJitInfo::Getter,
6184 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6185 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6186 : false, /* isInfallible. False in setters. */
6187 : false, /* isMovable. Not relevant for setters. */
6188 : false, /* isEliminatable. Not relevant for setters. */
6189 : false, /* isAlwaysInSlot. Only relevant for getters. */
6190 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6191 : false, /* isTypedMethod. Only relevant for methods. */
6192 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6193 : };
6194 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6195 : static_assert(0 < 1, "There is no slot for us");
6196 : static const JSJitInfo ontransitionstart_setterinfo = {
6197 : { (JSJitGetterOp)set_ontransitionstart },
6198 : { prototypes::id::SVGElement },
6199 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6200 : JSJitInfo::Setter,
6201 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6202 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6203 : false, /* isInfallible. False in setters. */
6204 : false, /* isMovable. Not relevant for setters. */
6205 : false, /* isEliminatable. Not relevant for setters. */
6206 : false, /* isAlwaysInSlot. Only relevant for getters. */
6207 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6208 : false, /* isTypedMethod. Only relevant for methods. */
6209 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6210 : };
6211 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6212 : static_assert(0 < 1, "There is no slot for us");
6213 :
6214 : static bool
6215 0 : get_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6216 : {
6217 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationend());
6218 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6219 0 : if (result) {
6220 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6221 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6222 0 : return false;
6223 : }
6224 0 : return true;
6225 : } else {
6226 0 : args.rval().setNull();
6227 0 : return true;
6228 : }
6229 : }
6230 :
6231 : static bool
6232 0 : set_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6233 : {
6234 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6235 0 : if (args[0].isObject()) {
6236 : { // scope for tempRoot
6237 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6238 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6239 : }
6240 : } else {
6241 0 : arg0 = nullptr;
6242 : }
6243 0 : self->SetOnwebkitanimationend(Constify(arg0));
6244 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6245 :
6246 0 : return true;
6247 : }
6248 :
6249 : static const JSJitInfo onwebkitanimationend_getterinfo = {
6250 : { (JSJitGetterOp)get_onwebkitanimationend },
6251 : { prototypes::id::SVGElement },
6252 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6253 : JSJitInfo::Getter,
6254 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6255 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6256 : false, /* isInfallible. False in setters. */
6257 : false, /* isMovable. Not relevant for setters. */
6258 : false, /* isEliminatable. Not relevant for setters. */
6259 : false, /* isAlwaysInSlot. Only relevant for getters. */
6260 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6261 : false, /* isTypedMethod. Only relevant for methods. */
6262 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6263 : };
6264 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6265 : static_assert(0 < 1, "There is no slot for us");
6266 : static const JSJitInfo onwebkitanimationend_setterinfo = {
6267 : { (JSJitGetterOp)set_onwebkitanimationend },
6268 : { prototypes::id::SVGElement },
6269 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6270 : JSJitInfo::Setter,
6271 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6272 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6273 : false, /* isInfallible. False in setters. */
6274 : false, /* isMovable. Not relevant for setters. */
6275 : false, /* isEliminatable. Not relevant for setters. */
6276 : false, /* isAlwaysInSlot. Only relevant for getters. */
6277 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6278 : false, /* isTypedMethod. Only relevant for methods. */
6279 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6280 : };
6281 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6282 : static_assert(0 < 1, "There is no slot for us");
6283 :
6284 : static bool
6285 0 : get_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6286 : {
6287 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationiteration());
6288 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6289 0 : if (result) {
6290 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6291 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6292 0 : return false;
6293 : }
6294 0 : return true;
6295 : } else {
6296 0 : args.rval().setNull();
6297 0 : return true;
6298 : }
6299 : }
6300 :
6301 : static bool
6302 0 : set_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6303 : {
6304 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6305 0 : if (args[0].isObject()) {
6306 : { // scope for tempRoot
6307 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6308 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6309 : }
6310 : } else {
6311 0 : arg0 = nullptr;
6312 : }
6313 0 : self->SetOnwebkitanimationiteration(Constify(arg0));
6314 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6315 :
6316 0 : return true;
6317 : }
6318 :
6319 : static const JSJitInfo onwebkitanimationiteration_getterinfo = {
6320 : { (JSJitGetterOp)get_onwebkitanimationiteration },
6321 : { prototypes::id::SVGElement },
6322 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6323 : JSJitInfo::Getter,
6324 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6325 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6326 : false, /* isInfallible. False in setters. */
6327 : false, /* isMovable. Not relevant for setters. */
6328 : false, /* isEliminatable. Not relevant for setters. */
6329 : false, /* isAlwaysInSlot. Only relevant for getters. */
6330 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6331 : false, /* isTypedMethod. Only relevant for methods. */
6332 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6333 : };
6334 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6335 : static_assert(0 < 1, "There is no slot for us");
6336 : static const JSJitInfo onwebkitanimationiteration_setterinfo = {
6337 : { (JSJitGetterOp)set_onwebkitanimationiteration },
6338 : { prototypes::id::SVGElement },
6339 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6340 : JSJitInfo::Setter,
6341 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6342 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6343 : false, /* isInfallible. False in setters. */
6344 : false, /* isMovable. Not relevant for setters. */
6345 : false, /* isEliminatable. Not relevant for setters. */
6346 : false, /* isAlwaysInSlot. Only relevant for getters. */
6347 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6348 : false, /* isTypedMethod. Only relevant for methods. */
6349 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6350 : };
6351 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6352 : static_assert(0 < 1, "There is no slot for us");
6353 :
6354 : static bool
6355 0 : get_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6356 : {
6357 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationstart());
6358 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6359 0 : if (result) {
6360 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6361 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6362 0 : return false;
6363 : }
6364 0 : return true;
6365 : } else {
6366 0 : args.rval().setNull();
6367 0 : return true;
6368 : }
6369 : }
6370 :
6371 : static bool
6372 0 : set_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6373 : {
6374 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6375 0 : if (args[0].isObject()) {
6376 : { // scope for tempRoot
6377 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6378 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6379 : }
6380 : } else {
6381 0 : arg0 = nullptr;
6382 : }
6383 0 : self->SetOnwebkitanimationstart(Constify(arg0));
6384 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6385 :
6386 0 : return true;
6387 : }
6388 :
6389 : static const JSJitInfo onwebkitanimationstart_getterinfo = {
6390 : { (JSJitGetterOp)get_onwebkitanimationstart },
6391 : { prototypes::id::SVGElement },
6392 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6393 : JSJitInfo::Getter,
6394 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6395 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6396 : false, /* isInfallible. False in setters. */
6397 : false, /* isMovable. Not relevant for setters. */
6398 : false, /* isEliminatable. Not relevant for setters. */
6399 : false, /* isAlwaysInSlot. Only relevant for getters. */
6400 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6401 : false, /* isTypedMethod. Only relevant for methods. */
6402 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6403 : };
6404 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6405 : static_assert(0 < 1, "There is no slot for us");
6406 : static const JSJitInfo onwebkitanimationstart_setterinfo = {
6407 : { (JSJitGetterOp)set_onwebkitanimationstart },
6408 : { prototypes::id::SVGElement },
6409 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6410 : JSJitInfo::Setter,
6411 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6412 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6413 : false, /* isInfallible. False in setters. */
6414 : false, /* isMovable. Not relevant for setters. */
6415 : false, /* isEliminatable. Not relevant for setters. */
6416 : false, /* isAlwaysInSlot. Only relevant for getters. */
6417 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6418 : false, /* isTypedMethod. Only relevant for methods. */
6419 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6420 : };
6421 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6422 : static_assert(0 < 1, "There is no slot for us");
6423 :
6424 : static bool
6425 0 : get_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6426 : {
6427 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkittransitionend());
6428 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6429 0 : if (result) {
6430 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6431 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6432 0 : return false;
6433 : }
6434 0 : return true;
6435 : } else {
6436 0 : args.rval().setNull();
6437 0 : return true;
6438 : }
6439 : }
6440 :
6441 : static bool
6442 0 : set_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6443 : {
6444 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6445 0 : if (args[0].isObject()) {
6446 : { // scope for tempRoot
6447 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6448 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6449 : }
6450 : } else {
6451 0 : arg0 = nullptr;
6452 : }
6453 0 : self->SetOnwebkittransitionend(Constify(arg0));
6454 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6455 :
6456 0 : return true;
6457 : }
6458 :
6459 : static const JSJitInfo onwebkittransitionend_getterinfo = {
6460 : { (JSJitGetterOp)get_onwebkittransitionend },
6461 : { prototypes::id::SVGElement },
6462 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6463 : JSJitInfo::Getter,
6464 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6465 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6466 : false, /* isInfallible. False in setters. */
6467 : false, /* isMovable. Not relevant for setters. */
6468 : false, /* isEliminatable. Not relevant for setters. */
6469 : false, /* isAlwaysInSlot. Only relevant for getters. */
6470 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6471 : false, /* isTypedMethod. Only relevant for methods. */
6472 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6473 : };
6474 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6475 : static_assert(0 < 1, "There is no slot for us");
6476 : static const JSJitInfo onwebkittransitionend_setterinfo = {
6477 : { (JSJitGetterOp)set_onwebkittransitionend },
6478 : { prototypes::id::SVGElement },
6479 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6480 : JSJitInfo::Setter,
6481 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6482 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6483 : false, /* isInfallible. False in setters. */
6484 : false, /* isMovable. Not relevant for setters. */
6485 : false, /* isEliminatable. Not relevant for setters. */
6486 : false, /* isAlwaysInSlot. Only relevant for getters. */
6487 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6488 : false, /* isTypedMethod. Only relevant for methods. */
6489 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6490 : };
6491 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6492 : static_assert(0 < 1, "There is no slot for us");
6493 :
6494 : static bool
6495 0 : get_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6496 : {
6497 0 : RefPtr<EventHandlerNonNull> result(self->GetOnerror());
6498 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6499 0 : if (result) {
6500 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6501 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6502 0 : return false;
6503 : }
6504 0 : return true;
6505 : } else {
6506 0 : args.rval().setNull();
6507 0 : return true;
6508 : }
6509 : }
6510 :
6511 : static bool
6512 0 : set_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6513 : {
6514 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6515 0 : if (args[0].isObject()) {
6516 : { // scope for tempRoot
6517 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6518 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6519 : }
6520 : } else {
6521 0 : arg0 = nullptr;
6522 : }
6523 0 : self->SetOnerror(Constify(arg0));
6524 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6525 :
6526 0 : return true;
6527 : }
6528 :
6529 : static const JSJitInfo onerror_getterinfo = {
6530 : { (JSJitGetterOp)get_onerror },
6531 : { prototypes::id::SVGElement },
6532 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6533 : JSJitInfo::Getter,
6534 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6535 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6536 : false, /* isInfallible. False in setters. */
6537 : false, /* isMovable. Not relevant for setters. */
6538 : false, /* isEliminatable. Not relevant for setters. */
6539 : false, /* isAlwaysInSlot. Only relevant for getters. */
6540 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6541 : false, /* isTypedMethod. Only relevant for methods. */
6542 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6543 : };
6544 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6545 : static_assert(0 < 1, "There is no slot for us");
6546 : static const JSJitInfo onerror_setterinfo = {
6547 : { (JSJitGetterOp)set_onerror },
6548 : { prototypes::id::SVGElement },
6549 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6550 : JSJitInfo::Setter,
6551 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6552 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6553 : false, /* isInfallible. False in setters. */
6554 : false, /* isMovable. Not relevant for setters. */
6555 : false, /* isEliminatable. Not relevant for setters. */
6556 : false, /* isAlwaysInSlot. Only relevant for getters. */
6557 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6558 : false, /* isTypedMethod. Only relevant for methods. */
6559 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6560 : };
6561 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6562 : static_assert(0 < 1, "There is no slot for us");
6563 :
6564 : static bool
6565 0 : get_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6566 : {
6567 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchstart());
6568 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6569 0 : if (result) {
6570 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6571 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6572 0 : return false;
6573 : }
6574 0 : return true;
6575 : } else {
6576 0 : args.rval().setNull();
6577 0 : return true;
6578 : }
6579 : }
6580 :
6581 : static bool
6582 0 : set_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6583 : {
6584 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6585 0 : if (args[0].isObject()) {
6586 : { // scope for tempRoot
6587 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6588 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6589 : }
6590 : } else {
6591 0 : arg0 = nullptr;
6592 : }
6593 0 : self->SetOntouchstart(Constify(arg0));
6594 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6595 :
6596 0 : return true;
6597 : }
6598 :
6599 : static const JSJitInfo ontouchstart_getterinfo = {
6600 : { (JSJitGetterOp)get_ontouchstart },
6601 : { prototypes::id::SVGElement },
6602 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6603 : JSJitInfo::Getter,
6604 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6605 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6606 : false, /* isInfallible. False in setters. */
6607 : false, /* isMovable. Not relevant for setters. */
6608 : false, /* isEliminatable. Not relevant for setters. */
6609 : false, /* isAlwaysInSlot. Only relevant for getters. */
6610 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6611 : false, /* isTypedMethod. Only relevant for methods. */
6612 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6613 : };
6614 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6615 : static_assert(0 < 1, "There is no slot for us");
6616 : static const JSJitInfo ontouchstart_setterinfo = {
6617 : { (JSJitGetterOp)set_ontouchstart },
6618 : { prototypes::id::SVGElement },
6619 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6620 : JSJitInfo::Setter,
6621 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6622 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6623 : false, /* isInfallible. False in setters. */
6624 : false, /* isMovable. Not relevant for setters. */
6625 : false, /* isEliminatable. Not relevant for setters. */
6626 : false, /* isAlwaysInSlot. Only relevant for getters. */
6627 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6628 : false, /* isTypedMethod. Only relevant for methods. */
6629 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6630 : };
6631 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6632 : static_assert(0 < 1, "There is no slot for us");
6633 :
6634 : static bool
6635 0 : get_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6636 : {
6637 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchend());
6638 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6639 0 : if (result) {
6640 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6641 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6642 0 : return false;
6643 : }
6644 0 : return true;
6645 : } else {
6646 0 : args.rval().setNull();
6647 0 : return true;
6648 : }
6649 : }
6650 :
6651 : static bool
6652 0 : set_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6653 : {
6654 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6655 0 : if (args[0].isObject()) {
6656 : { // scope for tempRoot
6657 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6658 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6659 : }
6660 : } else {
6661 0 : arg0 = nullptr;
6662 : }
6663 0 : self->SetOntouchend(Constify(arg0));
6664 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6665 :
6666 0 : return true;
6667 : }
6668 :
6669 : static const JSJitInfo ontouchend_getterinfo = {
6670 : { (JSJitGetterOp)get_ontouchend },
6671 : { prototypes::id::SVGElement },
6672 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6673 : JSJitInfo::Getter,
6674 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6675 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6676 : false, /* isInfallible. False in setters. */
6677 : false, /* isMovable. Not relevant for setters. */
6678 : false, /* isEliminatable. Not relevant for setters. */
6679 : false, /* isAlwaysInSlot. Only relevant for getters. */
6680 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6681 : false, /* isTypedMethod. Only relevant for methods. */
6682 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6683 : };
6684 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6685 : static_assert(0 < 1, "There is no slot for us");
6686 : static const JSJitInfo ontouchend_setterinfo = {
6687 : { (JSJitGetterOp)set_ontouchend },
6688 : { prototypes::id::SVGElement },
6689 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6690 : JSJitInfo::Setter,
6691 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6692 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6693 : false, /* isInfallible. False in setters. */
6694 : false, /* isMovable. Not relevant for setters. */
6695 : false, /* isEliminatable. Not relevant for setters. */
6696 : false, /* isAlwaysInSlot. Only relevant for getters. */
6697 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6698 : false, /* isTypedMethod. Only relevant for methods. */
6699 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6700 : };
6701 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6702 : static_assert(0 < 1, "There is no slot for us");
6703 :
6704 : static bool
6705 0 : get_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6706 : {
6707 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchmove());
6708 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6709 0 : if (result) {
6710 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6711 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6712 0 : return false;
6713 : }
6714 0 : return true;
6715 : } else {
6716 0 : args.rval().setNull();
6717 0 : return true;
6718 : }
6719 : }
6720 :
6721 : static bool
6722 0 : set_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6723 : {
6724 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6725 0 : if (args[0].isObject()) {
6726 : { // scope for tempRoot
6727 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6728 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6729 : }
6730 : } else {
6731 0 : arg0 = nullptr;
6732 : }
6733 0 : self->SetOntouchmove(Constify(arg0));
6734 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6735 :
6736 0 : return true;
6737 : }
6738 :
6739 : static const JSJitInfo ontouchmove_getterinfo = {
6740 : { (JSJitGetterOp)get_ontouchmove },
6741 : { prototypes::id::SVGElement },
6742 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6743 : JSJitInfo::Getter,
6744 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6745 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6746 : false, /* isInfallible. False in setters. */
6747 : false, /* isMovable. Not relevant for setters. */
6748 : false, /* isEliminatable. Not relevant for setters. */
6749 : false, /* isAlwaysInSlot. Only relevant for getters. */
6750 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6751 : false, /* isTypedMethod. Only relevant for methods. */
6752 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6753 : };
6754 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6755 : static_assert(0 < 1, "There is no slot for us");
6756 : static const JSJitInfo ontouchmove_setterinfo = {
6757 : { (JSJitGetterOp)set_ontouchmove },
6758 : { prototypes::id::SVGElement },
6759 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6760 : JSJitInfo::Setter,
6761 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6762 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6763 : false, /* isInfallible. False in setters. */
6764 : false, /* isMovable. Not relevant for setters. */
6765 : false, /* isEliminatable. Not relevant for setters. */
6766 : false, /* isAlwaysInSlot. Only relevant for getters. */
6767 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6768 : false, /* isTypedMethod. Only relevant for methods. */
6769 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6770 : };
6771 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6772 : static_assert(0 < 1, "There is no slot for us");
6773 :
6774 : static bool
6775 0 : get_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitGetterCallArgs args)
6776 : {
6777 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchcancel());
6778 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6779 0 : if (result) {
6780 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6781 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6782 0 : return false;
6783 : }
6784 0 : return true;
6785 : } else {
6786 0 : args.rval().setNull();
6787 0 : return true;
6788 : }
6789 : }
6790 :
6791 : static bool
6792 0 : set_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsSVGElement* self, JSJitSetterCallArgs args)
6793 : {
6794 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6795 0 : if (args[0].isObject()) {
6796 : { // scope for tempRoot
6797 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6798 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6799 : }
6800 : } else {
6801 0 : arg0 = nullptr;
6802 : }
6803 0 : self->SetOntouchcancel(Constify(arg0));
6804 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6805 :
6806 0 : return true;
6807 : }
6808 :
6809 : static const JSJitInfo ontouchcancel_getterinfo = {
6810 : { (JSJitGetterOp)get_ontouchcancel },
6811 : { prototypes::id::SVGElement },
6812 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6813 : JSJitInfo::Getter,
6814 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6815 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6816 : false, /* isInfallible. False in setters. */
6817 : false, /* isMovable. Not relevant for setters. */
6818 : false, /* isEliminatable. Not relevant for setters. */
6819 : false, /* isAlwaysInSlot. Only relevant for getters. */
6820 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6821 : false, /* isTypedMethod. Only relevant for methods. */
6822 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6823 : };
6824 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6825 : static_assert(0 < 1, "There is no slot for us");
6826 : static const JSJitInfo ontouchcancel_setterinfo = {
6827 : { (JSJitGetterOp)set_ontouchcancel },
6828 : { prototypes::id::SVGElement },
6829 : { PrototypeTraits<prototypes::id::SVGElement>::Depth },
6830 : JSJitInfo::Setter,
6831 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6832 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6833 : false, /* isInfallible. False in setters. */
6834 : false, /* isMovable. Not relevant for setters. */
6835 : false, /* isEliminatable. Not relevant for setters. */
6836 : false, /* isAlwaysInSlot. Only relevant for getters. */
6837 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6838 : false, /* isTypedMethod. Only relevant for methods. */
6839 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6840 : };
6841 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6842 : static_assert(0 < 1, "There is no slot for us");
6843 :
6844 : static bool
6845 0 : genericLenientGetter(JSContext* cx, unsigned argc, JS::Value* vp)
6846 : {
6847 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
6848 0 : if (!args.thisv().isObject()) {
6849 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6850 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
6851 0 : return false;
6852 : }
6853 0 : args.rval().set(JS::UndefinedValue());
6854 0 : return true;
6855 : }
6856 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
6857 :
6858 : nsSVGElement* self;
6859 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
6860 : {
6861 0 : nsresult rv = UnwrapObject<prototypes::id::SVGElement, nsSVGElement>(&rootSelf, self);
6862 0 : if (NS_FAILED(rv)) {
6863 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6864 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
6865 0 : return false;
6866 : }
6867 0 : args.rval().set(JS::UndefinedValue());
6868 0 : return true;
6869 : }
6870 : }
6871 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
6872 0 : MOZ_ASSERT(info->type() == JSJitInfo::Getter);
6873 0 : JSJitGetterOp getter = info->getter;
6874 0 : bool ok = getter(cx, obj, self, JSJitGetterCallArgs(args));
6875 : #ifdef DEBUG
6876 0 : if (ok) {
6877 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
6878 : }
6879 : #endif
6880 0 : return ok;
6881 : }
6882 :
6883 : static bool
6884 0 : genericLenientSetter(JSContext* cx, unsigned argc, JS::Value* vp)
6885 : {
6886 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
6887 0 : if (!args.thisv().isObject()) {
6888 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6889 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
6890 0 : return false;
6891 : }
6892 0 : args.rval().set(JS::UndefinedValue());
6893 0 : return true;
6894 : }
6895 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
6896 :
6897 : nsSVGElement* self;
6898 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
6899 : {
6900 0 : nsresult rv = UnwrapObject<prototypes::id::SVGElement, nsSVGElement>(&rootSelf, self);
6901 0 : if (NS_FAILED(rv)) {
6902 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6903 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
6904 0 : return false;
6905 : }
6906 0 : args.rval().set(JS::UndefinedValue());
6907 0 : return true;
6908 : }
6909 : }
6910 0 : if (args.length() == 0) {
6911 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "SVGElement attribute setter");
6912 : }
6913 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
6914 0 : MOZ_ASSERT(info->type() == JSJitInfo::Setter);
6915 0 : JSJitSetterOp setter = info->setter;
6916 0 : if (!setter(cx, obj, self, JSJitSetterCallArgs(args))) {
6917 0 : return false;
6918 : }
6919 0 : args.rval().setUndefined();
6920 : #ifdef DEBUG
6921 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
6922 : #endif
6923 0 : return true;
6924 : }
6925 :
6926 : static bool
6927 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
6928 : {
6929 0 : nsSVGElement* self = UnwrapPossiblyNotInitializedDOMObject<nsSVGElement>(obj);
6930 : // We don't want to preserve if we don't have a wrapper, and we
6931 : // obviously can't preserve if we're not initialized.
6932 0 : if (self && self->GetWrapperPreserveColor()) {
6933 0 : PreserveWrapper(self);
6934 : }
6935 0 : return true;
6936 : }
6937 :
6938 : static void
6939 0 : _finalize(js::FreeOp* fop, JSObject* obj)
6940 : {
6941 0 : nsSVGElement* self = UnwrapPossiblyNotInitializedDOMObject<nsSVGElement>(obj);
6942 0 : if (self) {
6943 0 : ClearWrapper(self, self, obj);
6944 0 : AddForDeferredFinalization<nsSVGElement>(self);
6945 : }
6946 0 : }
6947 :
6948 : static void
6949 0 : _objectMoved(JSObject* obj, const JSObject* old)
6950 : {
6951 0 : nsSVGElement* self = UnwrapPossiblyNotInitializedDOMObject<nsSVGElement>(obj);
6952 0 : if (self) {
6953 0 : UpdateWrapper(self, self, obj, old);
6954 : }
6955 0 : }
6956 :
6957 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
6958 : #if defined(__clang__)
6959 : #pragma clang diagnostic push
6960 : #pragma clang diagnostic ignored "-Wmissing-braces"
6961 : #endif
6962 : static const JSFunctionSpec sMethods_specs[] = {
6963 : JS_FNSPEC("focus", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&focus_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
6964 : JS_FNSPEC("blur", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blur_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
6965 : JS_FS_END
6966 : };
6967 : #if defined(__clang__)
6968 : #pragma clang diagnostic pop
6969 : #endif
6970 :
6971 :
6972 : // Can't be const because the pref-enabled boolean needs to be writable
6973 : static Prefable<const JSFunctionSpec> sMethods[] = {
6974 : { nullptr, &sMethods_specs[0] },
6975 : { nullptr, nullptr }
6976 : };
6977 :
6978 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
6979 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
6980 : static_assert(2 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
6981 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
6982 :
6983 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
6984 : #if defined(__clang__)
6985 : #pragma clang diagnostic push
6986 : #pragma clang diagnostic ignored "-Wmissing-braces"
6987 : #endif
6988 : static const JSPropertySpec sAttributes_specs[] = {
6989 : { "id", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &id_getterinfo, GenericBindingSetter, &id_setterinfo },
6990 : { "className", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &className_getterinfo, nullptr, nullptr },
6991 : { "dataset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &dataset_getterinfo, nullptr, nullptr },
6992 : { "style", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &style_getterinfo, GenericBindingSetter, &style_setterinfo },
6993 : { "ownerSVGElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ownerSVGElement_getterinfo, nullptr, nullptr },
6994 : { "viewportElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &viewportElement_getterinfo, nullptr, nullptr },
6995 : { "tabIndex", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &tabIndex_getterinfo, GenericBindingSetter, &tabIndex_setterinfo },
6996 : { "oncopy", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncopy_getterinfo, GenericBindingSetter, &oncopy_setterinfo },
6997 : { "oncut", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncut_getterinfo, GenericBindingSetter, &oncut_setterinfo },
6998 : { "onpaste", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpaste_getterinfo, GenericBindingSetter, &onpaste_setterinfo },
6999 : { "onabort", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onabort_getterinfo, GenericBindingSetter, &onabort_setterinfo },
7000 : { "onblur", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onblur_getterinfo, GenericBindingSetter, &onblur_setterinfo },
7001 : { "onfocus", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onfocus_getterinfo, GenericBindingSetter, &onfocus_setterinfo },
7002 : { "onauxclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onauxclick_getterinfo, GenericBindingSetter, &onauxclick_setterinfo },
7003 : { "oncanplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplay_getterinfo, GenericBindingSetter, &oncanplay_setterinfo },
7004 : { "oncanplaythrough", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplaythrough_getterinfo, GenericBindingSetter, &oncanplaythrough_setterinfo },
7005 : { "onchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onchange_getterinfo, GenericBindingSetter, &onchange_setterinfo },
7006 : { "onclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclick_getterinfo, GenericBindingSetter, &onclick_setterinfo },
7007 : { "onclose", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclose_getterinfo, GenericBindingSetter, &onclose_setterinfo },
7008 : { "oncontextmenu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncontextmenu_getterinfo, GenericBindingSetter, &oncontextmenu_setterinfo },
7009 : { "ondblclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondblclick_getterinfo, GenericBindingSetter, &ondblclick_setterinfo },
7010 : { "ondrag", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrag_getterinfo, GenericBindingSetter, &ondrag_setterinfo },
7011 : { "ondragend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragend_getterinfo, GenericBindingSetter, &ondragend_setterinfo },
7012 : { "ondragenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragenter_getterinfo, GenericBindingSetter, &ondragenter_setterinfo },
7013 : { "ondragexit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragexit_getterinfo, GenericBindingSetter, &ondragexit_setterinfo },
7014 : { "ondragleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragleave_getterinfo, GenericBindingSetter, &ondragleave_setterinfo },
7015 : { "ondragover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragover_getterinfo, GenericBindingSetter, &ondragover_setterinfo },
7016 : { "ondragstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragstart_getterinfo, GenericBindingSetter, &ondragstart_setterinfo },
7017 : { "ondrop", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrop_getterinfo, GenericBindingSetter, &ondrop_setterinfo },
7018 : { "ondurationchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondurationchange_getterinfo, GenericBindingSetter, &ondurationchange_setterinfo },
7019 : { "onemptied", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onemptied_getterinfo, GenericBindingSetter, &onemptied_setterinfo },
7020 : { "onended", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onended_getterinfo, GenericBindingSetter, &onended_setterinfo },
7021 : { "oninput", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninput_getterinfo, GenericBindingSetter, &oninput_setterinfo },
7022 : { "oninvalid", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninvalid_getterinfo, GenericBindingSetter, &oninvalid_setterinfo },
7023 : { "onkeydown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeydown_getterinfo, GenericBindingSetter, &onkeydown_setterinfo },
7024 : { "onkeypress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeypress_getterinfo, GenericBindingSetter, &onkeypress_setterinfo },
7025 : { "onkeyup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeyup_getterinfo, GenericBindingSetter, &onkeyup_setterinfo },
7026 : { "onload", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onload_getterinfo, GenericBindingSetter, &onload_setterinfo },
7027 : { "onloadeddata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadeddata_getterinfo, GenericBindingSetter, &onloadeddata_setterinfo },
7028 : { "onloadedmetadata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadedmetadata_getterinfo, GenericBindingSetter, &onloadedmetadata_setterinfo },
7029 : { "onloadend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadend_getterinfo, GenericBindingSetter, &onloadend_setterinfo },
7030 : { "onloadstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadstart_getterinfo, GenericBindingSetter, &onloadstart_setterinfo },
7031 : { "onmousedown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousedown_getterinfo, GenericBindingSetter, &onmousedown_setterinfo },
7032 : { "onmouseenter", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseenter_getterinfo, genericLenientSetter, &onmouseenter_setterinfo },
7033 : { "onmouseleave", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseleave_getterinfo, genericLenientSetter, &onmouseleave_setterinfo },
7034 : { "onmousemove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousemove_getterinfo, GenericBindingSetter, &onmousemove_setterinfo },
7035 : { "onmouseout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseout_getterinfo, GenericBindingSetter, &onmouseout_setterinfo },
7036 : { "onmouseover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseover_getterinfo, GenericBindingSetter, &onmouseover_setterinfo },
7037 : { "onmouseup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseup_getterinfo, GenericBindingSetter, &onmouseup_setterinfo },
7038 : { "onwheel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwheel_getterinfo, GenericBindingSetter, &onwheel_setterinfo },
7039 : { "onpause", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpause_getterinfo, GenericBindingSetter, &onpause_setterinfo },
7040 : { "onplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplay_getterinfo, GenericBindingSetter, &onplay_setterinfo },
7041 : { "onplaying", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplaying_getterinfo, GenericBindingSetter, &onplaying_setterinfo },
7042 : { "onprogress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onprogress_getterinfo, GenericBindingSetter, &onprogress_setterinfo },
7043 : { "onratechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onratechange_getterinfo, GenericBindingSetter, &onratechange_setterinfo },
7044 : { "onreset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onreset_getterinfo, GenericBindingSetter, &onreset_setterinfo },
7045 : { "onresize", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onresize_getterinfo, GenericBindingSetter, &onresize_setterinfo },
7046 : { "onscroll", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onscroll_getterinfo, GenericBindingSetter, &onscroll_setterinfo },
7047 : { "onseeked", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeked_getterinfo, GenericBindingSetter, &onseeked_setterinfo },
7048 : { "onseeking", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeking_getterinfo, GenericBindingSetter, &onseeking_setterinfo },
7049 : { "onselect", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselect_getterinfo, GenericBindingSetter, &onselect_setterinfo },
7050 : { "onshow", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onshow_getterinfo, GenericBindingSetter, &onshow_setterinfo },
7051 : { "onstalled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onstalled_getterinfo, GenericBindingSetter, &onstalled_setterinfo },
7052 : { "onsubmit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsubmit_getterinfo, GenericBindingSetter, &onsubmit_setterinfo },
7053 : { "onsuspend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsuspend_getterinfo, GenericBindingSetter, &onsuspend_setterinfo },
7054 : { "ontimeupdate", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontimeupdate_getterinfo, GenericBindingSetter, &ontimeupdate_setterinfo },
7055 : { "onvolumechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onvolumechange_getterinfo, GenericBindingSetter, &onvolumechange_setterinfo },
7056 : { "onwaiting", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwaiting_getterinfo, GenericBindingSetter, &onwaiting_setterinfo },
7057 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7058 : { "onselectstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselectstart_getterinfo, GenericBindingSetter, &onselectstart_setterinfo },
7059 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7060 : { "ontoggle", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontoggle_getterinfo, GenericBindingSetter, &ontoggle_setterinfo },
7061 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7062 : { "onpointercancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointercancel_getterinfo, GenericBindingSetter, &onpointercancel_setterinfo },
7063 : { "onpointerdown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerdown_getterinfo, GenericBindingSetter, &onpointerdown_setterinfo },
7064 : { "onpointerup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerup_getterinfo, GenericBindingSetter, &onpointerup_setterinfo },
7065 : { "onpointermove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointermove_getterinfo, GenericBindingSetter, &onpointermove_setterinfo },
7066 : { "onpointerout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerout_getterinfo, GenericBindingSetter, &onpointerout_setterinfo },
7067 : { "onpointerover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerover_getterinfo, GenericBindingSetter, &onpointerover_setterinfo },
7068 : { "onpointerenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerenter_getterinfo, GenericBindingSetter, &onpointerenter_setterinfo },
7069 : { "onpointerleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerleave_getterinfo, GenericBindingSetter, &onpointerleave_setterinfo },
7070 : { "ongotpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ongotpointercapture_getterinfo, GenericBindingSetter, &ongotpointercapture_setterinfo },
7071 : { "onlostpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onlostpointercapture_getterinfo, GenericBindingSetter, &onlostpointercapture_setterinfo },
7072 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7073 : { "onmozfullscreenchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenchange_getterinfo, GenericBindingSetter, &onmozfullscreenchange_setterinfo },
7074 : { "onmozfullscreenerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenerror_getterinfo, GenericBindingSetter, &onmozfullscreenerror_setterinfo },
7075 : { "onanimationcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationcancel_getterinfo, GenericBindingSetter, &onanimationcancel_setterinfo },
7076 : { "onanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationend_getterinfo, GenericBindingSetter, &onanimationend_setterinfo },
7077 : { "onanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationiteration_getterinfo, GenericBindingSetter, &onanimationiteration_setterinfo },
7078 : { "onanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationstart_getterinfo, GenericBindingSetter, &onanimationstart_setterinfo },
7079 : { "ontransitioncancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitioncancel_getterinfo, GenericBindingSetter, &ontransitioncancel_setterinfo },
7080 : { "ontransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionend_getterinfo, GenericBindingSetter, &ontransitionend_setterinfo },
7081 : { "ontransitionrun", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionrun_getterinfo, GenericBindingSetter, &ontransitionrun_setterinfo },
7082 : { "ontransitionstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionstart_getterinfo, GenericBindingSetter, &ontransitionstart_setterinfo },
7083 : { "onwebkitanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationend_getterinfo, GenericBindingSetter, &onwebkitanimationend_setterinfo },
7084 : { "onwebkitanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationiteration_getterinfo, GenericBindingSetter, &onwebkitanimationiteration_setterinfo },
7085 : { "onwebkitanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationstart_getterinfo, GenericBindingSetter, &onwebkitanimationstart_setterinfo },
7086 : { "onwebkittransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkittransitionend_getterinfo, GenericBindingSetter, &onwebkittransitionend_setterinfo },
7087 : { "onerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onerror_getterinfo, GenericBindingSetter, &onerror_setterinfo },
7088 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7089 : { "ontouchstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchstart_getterinfo, GenericBindingSetter, &ontouchstart_setterinfo },
7090 : { "ontouchend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchend_getterinfo, GenericBindingSetter, &ontouchend_setterinfo },
7091 : { "ontouchmove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchmove_getterinfo, GenericBindingSetter, &ontouchmove_setterinfo },
7092 : { "ontouchcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchcancel_getterinfo, GenericBindingSetter, &ontouchcancel_setterinfo },
7093 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
7094 : };
7095 : #if defined(__clang__)
7096 : #pragma clang diagnostic pop
7097 : #endif
7098 :
7099 : static PrefableDisablers sAttributes_disablers69 = {
7100 : true, false, 0, nullptr
7101 : };
7102 :
7103 : static PrefableDisablers sAttributes_disablers73 = {
7104 : true, false, 0, nullptr
7105 : };
7106 :
7107 : static PrefableDisablers sAttributes_disablers100 = {
7108 : true, false, 0, &nsGenericHTMLElement::TouchEventsEnabled
7109 : };
7110 :
7111 : // Can't be const because the pref-enabled boolean needs to be writable
7112 : static Prefable<const JSPropertySpec> sAttributes[] = {
7113 : { nullptr, &sAttributes_specs[0] },
7114 : { &sAttributes_disablers69, &sAttributes_specs[69] },
7115 : { nullptr, &sAttributes_specs[71] },
7116 : { &sAttributes_disablers73, &sAttributes_specs[73] },
7117 : { nullptr, &sAttributes_specs[84] },
7118 : { &sAttributes_disablers100, &sAttributes_specs[100] },
7119 : { nullptr, nullptr }
7120 : };
7121 :
7122 : static_assert(6 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
7123 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
7124 : static_assert(68 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
7125 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
7126 :
7127 :
7128 : static uint16_t sNativeProperties_sortedPropertyIndices[101];
7129 : static PropertyInfo sNativeProperties_propertyInfos[101];
7130 :
7131 : static const NativePropertiesN<2> sNativeProperties = {
7132 : false, 0,
7133 : false, 0,
7134 : true, 0 /* sMethods */,
7135 : true, 1 /* sAttributes */,
7136 : false, 0,
7137 : false, 0,
7138 : false, 0,
7139 : -1,
7140 : 101,
7141 : sNativeProperties_sortedPropertyIndices,
7142 : {
7143 : { sMethods, &sNativeProperties_propertyInfos[0] },
7144 : { sAttributes, &sNativeProperties_propertyInfos[2] }
7145 : }
7146 : };
7147 : static_assert(101 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
7148 : "We have a property info count that is oversized");
7149 :
7150 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
7151 : {
7152 : "Function",
7153 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
7154 : &sBoringInterfaceObjectClassClassOps,
7155 : JS_NULL_CLASS_SPEC,
7156 : JS_NULL_CLASS_EXT,
7157 : &sInterfaceObjectClassObjectOps
7158 : },
7159 : eInterface,
7160 : true,
7161 : prototypes::id::SVGElement,
7162 : PrototypeTraits<prototypes::id::SVGElement>::Depth,
7163 : sNativePropertyHooks,
7164 : "function SVGElement() {\n [native code]\n}",
7165 : ElementBinding::GetConstructorObject
7166 : };
7167 :
7168 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
7169 : {
7170 : "SVGElementPrototype",
7171 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
7172 : JS_NULL_CLASS_OPS,
7173 : JS_NULL_CLASS_SPEC,
7174 : JS_NULL_CLASS_EXT,
7175 : JS_NULL_OBJECT_OPS
7176 : },
7177 : eInterfacePrototype,
7178 : false,
7179 : prototypes::id::SVGElement,
7180 : PrototypeTraits<prototypes::id::SVGElement>::Depth,
7181 : sNativePropertyHooks,
7182 : "[object SVGElementPrototype]",
7183 : ElementBinding::GetProtoObject
7184 : };
7185 :
7186 : JSObject*
7187 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
7188 : {
7189 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
7190 : }
7191 :
7192 : static const js::ClassOps sClassOps = {
7193 : _addProperty, /* addProperty */
7194 : nullptr, /* delProperty */
7195 : nullptr, /* getProperty */
7196 : nullptr, /* setProperty */
7197 : nullptr, /* enumerate */
7198 : nullptr, /* newEnumerate */
7199 : nullptr, /* resolve */
7200 : nullptr, /* mayResolve */
7201 : _finalize, /* finalize */
7202 : nullptr, /* call */
7203 : nullptr, /* hasInstance */
7204 : nullptr, /* construct */
7205 : nullptr, /* trace */
7206 : };
7207 :
7208 : static const js::ClassExtension sClassExtension = {
7209 : nullptr, /* weakmapKeyDelegateOp */
7210 : _objectMoved /* objectMovedOp */
7211 : };
7212 :
7213 : static const DOMJSClass sClass = {
7214 : { "SVGElement",
7215 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
7216 : &sClassOps,
7217 : JS_NULL_CLASS_SPEC,
7218 : &sClassExtension,
7219 : JS_NULL_OBJECT_OPS
7220 : },
7221 : { prototypes::id::EventTarget, prototypes::id::Node, prototypes::id::Element, prototypes::id::SVGElement, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
7222 : IsBaseOf<nsISupports, nsSVGElement >::value,
7223 : sNativePropertyHooks,
7224 : FindAssociatedGlobalForNative<nsSVGElement>::Get,
7225 : GetProtoObjectHandle,
7226 : GetCCParticipant<nsSVGElement>::Get()
7227 : };
7228 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
7229 : "Must have the right minimal number of reserved slots.");
7230 : static_assert(1 >= 1,
7231 : "Must have enough reserved slots.");
7232 :
7233 : const JSClass*
7234 0 : GetJSClass()
7235 : {
7236 0 : return sClass.ToJSClass();
7237 : }
7238 :
7239 : bool
7240 0 : Wrap(JSContext* aCx, nsSVGElement* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
7241 : {
7242 : MOZ_ASSERT(static_cast<nsSVGElement*>(aObject) ==
7243 : reinterpret_cast<nsSVGElement*>(aObject),
7244 : "Multiple inheritance for nsSVGElement is broken.");
7245 : MOZ_ASSERT(static_cast<mozilla::dom::Element*>(aObject) ==
7246 : reinterpret_cast<mozilla::dom::Element*>(aObject),
7247 : "Multiple inheritance for mozilla::dom::Element is broken.");
7248 : MOZ_ASSERT(static_cast<nsINode*>(aObject) ==
7249 : reinterpret_cast<nsINode*>(aObject),
7250 : "Multiple inheritance for nsINode is broken.");
7251 : MOZ_ASSERT(static_cast<mozilla::dom::EventTarget*>(aObject) ==
7252 : reinterpret_cast<mozilla::dom::EventTarget*>(aObject),
7253 : "Multiple inheritance for mozilla::dom::EventTarget is broken.");
7254 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
7255 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
7256 0 : MOZ_ASSERT(!aCache->GetWrapper(),
7257 : "You should probably not be using Wrap() directly; use "
7258 : "GetOrCreateDOMReflector instead");
7259 :
7260 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
7261 : "nsISupports must be on our primary inheritance chain");
7262 :
7263 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
7264 0 : if (!global) {
7265 0 : return false;
7266 : }
7267 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
7268 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
7269 :
7270 : // That might have ended up wrapping us already, due to the wonders
7271 : // of XBL. Check for that, and bail out as needed.
7272 0 : aReflector.set(aCache->GetWrapper());
7273 0 : if (aReflector) {
7274 : #ifdef DEBUG
7275 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
7276 : #endif // DEBUG
7277 0 : return true;
7278 : }
7279 :
7280 0 : JSAutoCompartment ac(aCx, global);
7281 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
7282 0 : if (!canonicalProto) {
7283 0 : return false;
7284 : }
7285 0 : JS::Rooted<JSObject*> proto(aCx);
7286 0 : if (aGivenProto) {
7287 0 : proto = aGivenProto;
7288 : // Unfortunately, while aGivenProto was in the compartment of aCx
7289 : // coming in, we changed compartments to that of "parent" so may need
7290 : // to wrap the proto here.
7291 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
7292 0 : if (!JS_WrapObject(aCx, &proto)) {
7293 0 : return false;
7294 : }
7295 : }
7296 : } else {
7297 0 : proto = canonicalProto;
7298 : }
7299 :
7300 0 : BindingJSObjectCreator<nsSVGElement> creator(aCx);
7301 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
7302 0 : if (!aReflector) {
7303 0 : return false;
7304 : }
7305 :
7306 0 : aCache->SetWrapper(aReflector);
7307 0 : creator.InitializationSucceeded();
7308 :
7309 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
7310 : aCache->GetWrapperPreserveColor() == aReflector);
7311 : // If proto != canonicalProto, we have to preserve our wrapper;
7312 : // otherwise we won't be able to properly recreate it later, since
7313 : // we won't know what proto to use. Note that we don't check
7314 : // aGivenProto here, since it's entirely possible (and even
7315 : // somewhat common) to have a non-null aGivenProto which is the
7316 : // same as canonicalProto.
7317 0 : if (proto != canonicalProto) {
7318 0 : PreserveWrapper(aObject);
7319 : }
7320 :
7321 0 : return true;
7322 : }
7323 :
7324 : const NativePropertyHooks sNativePropertyHooks[] = { {
7325 : nullptr,
7326 : nullptr,
7327 : nullptr,
7328 : { sNativeProperties.Upcast(), nullptr },
7329 : prototypes::id::SVGElement,
7330 : constructors::id::SVGElement,
7331 : ElementBinding::sNativePropertyHooks,
7332 : &DefaultXrayExpandoObjectClass
7333 : } };
7334 :
7335 : void
7336 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
7337 : {
7338 0 : JS::Handle<JSObject*> parentProto(ElementBinding::GetProtoObjectHandle(aCx));
7339 0 : if (!parentProto) {
7340 0 : return;
7341 : }
7342 :
7343 0 : JS::Handle<JSObject*> constructorProto(ElementBinding::GetConstructorObjectHandle(aCx));
7344 0 : if (!constructorProto) {
7345 0 : return;
7346 : }
7347 :
7348 : static bool sIdsInited = false;
7349 0 : if (!sIdsInited && NS_IsMainThread()) {
7350 0 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
7351 0 : return;
7352 : }
7353 0 : sIdsInited = true;
7354 : }
7355 :
7356 : static bool sPrefCachesInited = false;
7357 0 : if (!sPrefCachesInited && NS_IsMainThread()) {
7358 0 : sPrefCachesInited = true;
7359 0 : Preferences::AddBoolVarCache(&sAttributes[1].disablers->enabled, "dom.select_events.enabled");
7360 0 : Preferences::AddBoolVarCache(&sAttributes[3].disablers->enabled, "dom.w3c_pointer_events.enabled");
7361 : }
7362 :
7363 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::SVGElement);
7364 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::SVGElement);
7365 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
7366 : &sPrototypeClass.mBase, protoCache,
7367 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
7368 : interfaceCache,
7369 : sNativeProperties.Upcast(),
7370 : nullptr,
7371 : "SVGElement", aDefineOnGlobal,
7372 : nullptr,
7373 0 : false);
7374 : }
7375 :
7376 : JS::Handle<JSObject*>
7377 0 : GetProtoObjectHandle(JSContext* aCx)
7378 : {
7379 : /* Get the interface prototype object for this class. This will create the
7380 : object as needed. */
7381 0 : bool aDefineOnGlobal = true;
7382 :
7383 : /* Make sure our global is sane. Hopefully we can remove this sometime */
7384 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
7385 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
7386 0 : return nullptr;
7387 : }
7388 :
7389 : /* Check to see whether the interface objects are already installed */
7390 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
7391 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::SVGElement)) {
7392 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
7393 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
7394 : }
7395 :
7396 : /*
7397 : * The object might _still_ be null, but that's OK.
7398 : *
7399 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
7400 : * traced by TraceProtoAndIfaceCache() and its contents are never
7401 : * changed after they have been set.
7402 : *
7403 : * Calling address() avoids the read read barrier that does gray
7404 : * unmarking, but it's not possible for the object to be gray here.
7405 : */
7406 :
7407 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::SVGElement);
7408 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
7409 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
7410 : }
7411 :
7412 : JSObject*
7413 0 : GetProtoObject(JSContext* aCx)
7414 : {
7415 0 : return GetProtoObjectHandle(aCx);
7416 : }
7417 :
7418 : JS::Handle<JSObject*>
7419 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
7420 : {
7421 : /* Get the interface object for this class. This will create the object as
7422 : needed. */
7423 :
7424 : /* Make sure our global is sane. Hopefully we can remove this sometime */
7425 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
7426 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
7427 0 : return nullptr;
7428 : }
7429 :
7430 : /* Check to see whether the interface objects are already installed */
7431 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
7432 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::SVGElement)) {
7433 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
7434 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
7435 : }
7436 :
7437 : /*
7438 : * The object might _still_ be null, but that's OK.
7439 : *
7440 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
7441 : * traced by TraceProtoAndIfaceCache() and its contents are never
7442 : * changed after they have been set.
7443 : *
7444 : * Calling address() avoids the read read barrier that does gray
7445 : * unmarking, but it's not possible for the object to be gray here.
7446 : */
7447 :
7448 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::SVGElement);
7449 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
7450 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
7451 : }
7452 :
7453 : JSObject*
7454 0 : GetConstructorObject(JSContext* aCx)
7455 : {
7456 0 : return GetConstructorObjectHandle(aCx);
7457 : }
7458 :
7459 : } // namespace SVGElementBinding
7460 :
7461 :
7462 :
7463 : } // namespace dom
7464 : } // namespace mozilla
|