Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM DOMMatrix.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #include "DOMMatrixBinding.h"
4 : #include "DOMPointBinding.h"
5 : #include "WrapperFactory.h"
6 : #include "jsfriendapi.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/DOMMatrix.h"
12 : #include "mozilla/dom/DOMPoint.h"
13 : #include "mozilla/dom/NonRefcountedDOMObject.h"
14 : #include "mozilla/dom/PrimitiveConversions.h"
15 : #include "mozilla/dom/TypedArray.h"
16 : #include "mozilla/dom/XrayExpandoClass.h"
17 :
18 : namespace mozilla {
19 : namespace dom {
20 :
21 : namespace DOMMatrixBinding {
22 :
23 : static_assert(IsRefcounted<NativeType>::value == IsRefcounted<DOMMatrixReadOnlyBinding::NativeType>::value,
24 : "Can't inherit from an interface with a different ownership model.");
25 :
26 : static bool
27 0 : get_a(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
28 : {
29 0 : double result(self->A());
30 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
31 0 : args.rval().set(JS_NumberValue(double(result)));
32 0 : return true;
33 : }
34 :
35 : static bool
36 0 : set_a(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
37 : {
38 : double arg0;
39 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
40 0 : return false;
41 : }
42 0 : self->SetA(arg0);
43 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
44 :
45 0 : return true;
46 : }
47 :
48 : static const JSJitInfo a_getterinfo = {
49 : { (JSJitGetterOp)get_a },
50 : { prototypes::id::DOMMatrix },
51 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
52 : JSJitInfo::Getter,
53 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
54 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
55 : true, /* isInfallible. False in setters. */
56 : false, /* isMovable. Not relevant for setters. */
57 : false, /* isEliminatable. Not relevant for setters. */
58 : false, /* isAlwaysInSlot. Only relevant for getters. */
59 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
60 : false, /* isTypedMethod. Only relevant for methods. */
61 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
62 : };
63 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
64 : static_assert(0 < 1, "There is no slot for us");
65 : static const JSJitInfo a_setterinfo = {
66 : { (JSJitGetterOp)set_a },
67 : { prototypes::id::DOMMatrix },
68 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
69 : JSJitInfo::Setter,
70 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
71 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
72 : false, /* isInfallible. False in setters. */
73 : false, /* isMovable. Not relevant for setters. */
74 : false, /* isEliminatable. Not relevant for setters. */
75 : false, /* isAlwaysInSlot. Only relevant for getters. */
76 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
77 : false, /* isTypedMethod. Only relevant for methods. */
78 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
79 : };
80 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
81 : static_assert(0 < 1, "There is no slot for us");
82 :
83 : static bool
84 0 : get_b(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
85 : {
86 0 : double result(self->B());
87 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
88 0 : args.rval().set(JS_NumberValue(double(result)));
89 0 : return true;
90 : }
91 :
92 : static bool
93 0 : set_b(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
94 : {
95 : double arg0;
96 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
97 0 : return false;
98 : }
99 0 : self->SetB(arg0);
100 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
101 :
102 0 : return true;
103 : }
104 :
105 : static const JSJitInfo b_getterinfo = {
106 : { (JSJitGetterOp)get_b },
107 : { prototypes::id::DOMMatrix },
108 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
109 : JSJitInfo::Getter,
110 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
111 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
112 : true, /* isInfallible. False in setters. */
113 : false, /* isMovable. Not relevant for setters. */
114 : false, /* isEliminatable. Not relevant for setters. */
115 : false, /* isAlwaysInSlot. Only relevant for getters. */
116 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
117 : false, /* isTypedMethod. Only relevant for methods. */
118 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
119 : };
120 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
121 : static_assert(0 < 1, "There is no slot for us");
122 : static const JSJitInfo b_setterinfo = {
123 : { (JSJitGetterOp)set_b },
124 : { prototypes::id::DOMMatrix },
125 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
126 : JSJitInfo::Setter,
127 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
128 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
129 : false, /* isInfallible. False in setters. */
130 : false, /* isMovable. Not relevant for setters. */
131 : false, /* isEliminatable. Not relevant for setters. */
132 : false, /* isAlwaysInSlot. Only relevant for getters. */
133 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
134 : false, /* isTypedMethod. Only relevant for methods. */
135 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
136 : };
137 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
138 : static_assert(0 < 1, "There is no slot for us");
139 :
140 : static bool
141 0 : get_c(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
142 : {
143 0 : double result(self->C());
144 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
145 0 : args.rval().set(JS_NumberValue(double(result)));
146 0 : return true;
147 : }
148 :
149 : static bool
150 0 : set_c(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
151 : {
152 : double arg0;
153 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
154 0 : return false;
155 : }
156 0 : self->SetC(arg0);
157 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
158 :
159 0 : return true;
160 : }
161 :
162 : static const JSJitInfo c_getterinfo = {
163 : { (JSJitGetterOp)get_c },
164 : { prototypes::id::DOMMatrix },
165 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
166 : JSJitInfo::Getter,
167 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
168 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
169 : true, /* isInfallible. False in setters. */
170 : false, /* isMovable. Not relevant for setters. */
171 : false, /* isEliminatable. Not relevant for setters. */
172 : false, /* isAlwaysInSlot. Only relevant for getters. */
173 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
174 : false, /* isTypedMethod. Only relevant for methods. */
175 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
176 : };
177 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
178 : static_assert(0 < 1, "There is no slot for us");
179 : static const JSJitInfo c_setterinfo = {
180 : { (JSJitGetterOp)set_c },
181 : { prototypes::id::DOMMatrix },
182 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
183 : JSJitInfo::Setter,
184 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
185 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
186 : false, /* isInfallible. False in setters. */
187 : false, /* isMovable. Not relevant for setters. */
188 : false, /* isEliminatable. Not relevant for setters. */
189 : false, /* isAlwaysInSlot. Only relevant for getters. */
190 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
191 : false, /* isTypedMethod. Only relevant for methods. */
192 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
193 : };
194 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
195 : static_assert(0 < 1, "There is no slot for us");
196 :
197 : static bool
198 0 : get_d(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
199 : {
200 0 : double result(self->D());
201 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
202 0 : args.rval().set(JS_NumberValue(double(result)));
203 0 : return true;
204 : }
205 :
206 : static bool
207 0 : set_d(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
208 : {
209 : double arg0;
210 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
211 0 : return false;
212 : }
213 0 : self->SetD(arg0);
214 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
215 :
216 0 : return true;
217 : }
218 :
219 : static const JSJitInfo d_getterinfo = {
220 : { (JSJitGetterOp)get_d },
221 : { prototypes::id::DOMMatrix },
222 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
223 : JSJitInfo::Getter,
224 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
225 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
226 : true, /* isInfallible. False in setters. */
227 : false, /* isMovable. Not relevant for setters. */
228 : false, /* isEliminatable. Not relevant for setters. */
229 : false, /* isAlwaysInSlot. Only relevant for getters. */
230 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
231 : false, /* isTypedMethod. Only relevant for methods. */
232 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
233 : };
234 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
235 : static_assert(0 < 1, "There is no slot for us");
236 : static const JSJitInfo d_setterinfo = {
237 : { (JSJitGetterOp)set_d },
238 : { prototypes::id::DOMMatrix },
239 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
240 : JSJitInfo::Setter,
241 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
242 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
243 : false, /* isInfallible. False in setters. */
244 : false, /* isMovable. Not relevant for setters. */
245 : false, /* isEliminatable. Not relevant for setters. */
246 : false, /* isAlwaysInSlot. Only relevant for getters. */
247 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
248 : false, /* isTypedMethod. Only relevant for methods. */
249 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
250 : };
251 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
252 : static_assert(0 < 1, "There is no slot for us");
253 :
254 : static bool
255 0 : get_e(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
256 : {
257 0 : double result(self->E());
258 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
259 0 : args.rval().set(JS_NumberValue(double(result)));
260 0 : return true;
261 : }
262 :
263 : static bool
264 0 : set_e(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
265 : {
266 : double arg0;
267 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
268 0 : return false;
269 : }
270 0 : self->SetE(arg0);
271 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
272 :
273 0 : return true;
274 : }
275 :
276 : static const JSJitInfo e_getterinfo = {
277 : { (JSJitGetterOp)get_e },
278 : { prototypes::id::DOMMatrix },
279 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
280 : JSJitInfo::Getter,
281 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
282 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
283 : true, /* isInfallible. False in setters. */
284 : false, /* isMovable. Not relevant for setters. */
285 : false, /* isEliminatable. Not relevant for setters. */
286 : false, /* isAlwaysInSlot. Only relevant for getters. */
287 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
288 : false, /* isTypedMethod. Only relevant for methods. */
289 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
290 : };
291 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
292 : static_assert(0 < 1, "There is no slot for us");
293 : static const JSJitInfo e_setterinfo = {
294 : { (JSJitGetterOp)set_e },
295 : { prototypes::id::DOMMatrix },
296 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
297 : JSJitInfo::Setter,
298 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
299 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
300 : false, /* isInfallible. False in setters. */
301 : false, /* isMovable. Not relevant for setters. */
302 : false, /* isEliminatable. Not relevant for setters. */
303 : false, /* isAlwaysInSlot. Only relevant for getters. */
304 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
305 : false, /* isTypedMethod. Only relevant for methods. */
306 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
307 : };
308 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
309 : static_assert(0 < 1, "There is no slot for us");
310 :
311 : static bool
312 0 : get_f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
313 : {
314 0 : double result(self->F());
315 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
316 0 : args.rval().set(JS_NumberValue(double(result)));
317 0 : return true;
318 : }
319 :
320 : static bool
321 0 : set_f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
322 : {
323 : double arg0;
324 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
325 0 : return false;
326 : }
327 0 : self->SetF(arg0);
328 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
329 :
330 0 : return true;
331 : }
332 :
333 : static const JSJitInfo f_getterinfo = {
334 : { (JSJitGetterOp)get_f },
335 : { prototypes::id::DOMMatrix },
336 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
337 : JSJitInfo::Getter,
338 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
339 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
340 : true, /* isInfallible. False in setters. */
341 : false, /* isMovable. Not relevant for setters. */
342 : false, /* isEliminatable. Not relevant for setters. */
343 : false, /* isAlwaysInSlot. Only relevant for getters. */
344 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
345 : false, /* isTypedMethod. Only relevant for methods. */
346 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
347 : };
348 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
349 : static_assert(0 < 1, "There is no slot for us");
350 : static const JSJitInfo f_setterinfo = {
351 : { (JSJitGetterOp)set_f },
352 : { prototypes::id::DOMMatrix },
353 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
354 : JSJitInfo::Setter,
355 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
356 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
357 : false, /* isInfallible. False in setters. */
358 : false, /* isMovable. Not relevant for setters. */
359 : false, /* isEliminatable. Not relevant for setters. */
360 : false, /* isAlwaysInSlot. Only relevant for getters. */
361 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
362 : false, /* isTypedMethod. Only relevant for methods. */
363 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
364 : };
365 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
366 : static_assert(0 < 1, "There is no slot for us");
367 :
368 : static bool
369 0 : get_m11(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
370 : {
371 0 : double result(self->M11());
372 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
373 0 : args.rval().set(JS_NumberValue(double(result)));
374 0 : return true;
375 : }
376 :
377 : static bool
378 0 : set_m11(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
379 : {
380 : double arg0;
381 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
382 0 : return false;
383 : }
384 0 : self->SetM11(arg0);
385 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
386 :
387 0 : return true;
388 : }
389 :
390 : static const JSJitInfo m11_getterinfo = {
391 : { (JSJitGetterOp)get_m11 },
392 : { prototypes::id::DOMMatrix },
393 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
394 : JSJitInfo::Getter,
395 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
396 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
397 : true, /* isInfallible. False in setters. */
398 : false, /* isMovable. Not relevant for setters. */
399 : false, /* isEliminatable. Not relevant for setters. */
400 : false, /* isAlwaysInSlot. Only relevant for getters. */
401 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
402 : false, /* isTypedMethod. Only relevant for methods. */
403 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
404 : };
405 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
406 : static_assert(0 < 1, "There is no slot for us");
407 : static const JSJitInfo m11_setterinfo = {
408 : { (JSJitGetterOp)set_m11 },
409 : { prototypes::id::DOMMatrix },
410 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
411 : JSJitInfo::Setter,
412 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
413 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
414 : false, /* isInfallible. False in setters. */
415 : false, /* isMovable. Not relevant for setters. */
416 : false, /* isEliminatable. Not relevant for setters. */
417 : false, /* isAlwaysInSlot. Only relevant for getters. */
418 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
419 : false, /* isTypedMethod. Only relevant for methods. */
420 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
421 : };
422 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
423 : static_assert(0 < 1, "There is no slot for us");
424 :
425 : static bool
426 0 : get_m12(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
427 : {
428 0 : double result(self->M12());
429 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
430 0 : args.rval().set(JS_NumberValue(double(result)));
431 0 : return true;
432 : }
433 :
434 : static bool
435 0 : set_m12(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
436 : {
437 : double arg0;
438 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
439 0 : return false;
440 : }
441 0 : self->SetM12(arg0);
442 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
443 :
444 0 : return true;
445 : }
446 :
447 : static const JSJitInfo m12_getterinfo = {
448 : { (JSJitGetterOp)get_m12 },
449 : { prototypes::id::DOMMatrix },
450 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
451 : JSJitInfo::Getter,
452 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
453 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
454 : true, /* isInfallible. False in setters. */
455 : false, /* isMovable. Not relevant for setters. */
456 : false, /* isEliminatable. Not relevant for setters. */
457 : false, /* isAlwaysInSlot. Only relevant for getters. */
458 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
459 : false, /* isTypedMethod. Only relevant for methods. */
460 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
461 : };
462 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
463 : static_assert(0 < 1, "There is no slot for us");
464 : static const JSJitInfo m12_setterinfo = {
465 : { (JSJitGetterOp)set_m12 },
466 : { prototypes::id::DOMMatrix },
467 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
468 : JSJitInfo::Setter,
469 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
470 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
471 : false, /* isInfallible. False in setters. */
472 : false, /* isMovable. Not relevant for setters. */
473 : false, /* isEliminatable. Not relevant for setters. */
474 : false, /* isAlwaysInSlot. Only relevant for getters. */
475 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
476 : false, /* isTypedMethod. Only relevant for methods. */
477 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
478 : };
479 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
480 : static_assert(0 < 1, "There is no slot for us");
481 :
482 : static bool
483 0 : get_m13(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
484 : {
485 0 : double result(self->M13());
486 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
487 0 : args.rval().set(JS_NumberValue(double(result)));
488 0 : return true;
489 : }
490 :
491 : static bool
492 0 : set_m13(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
493 : {
494 : double arg0;
495 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
496 0 : return false;
497 : }
498 0 : self->SetM13(arg0);
499 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
500 :
501 0 : return true;
502 : }
503 :
504 : static const JSJitInfo m13_getterinfo = {
505 : { (JSJitGetterOp)get_m13 },
506 : { prototypes::id::DOMMatrix },
507 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
508 : JSJitInfo::Getter,
509 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
510 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
511 : true, /* isInfallible. False in setters. */
512 : false, /* isMovable. Not relevant for setters. */
513 : false, /* isEliminatable. Not relevant for setters. */
514 : false, /* isAlwaysInSlot. Only relevant for getters. */
515 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
516 : false, /* isTypedMethod. Only relevant for methods. */
517 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
518 : };
519 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
520 : static_assert(0 < 1, "There is no slot for us");
521 : static const JSJitInfo m13_setterinfo = {
522 : { (JSJitGetterOp)set_m13 },
523 : { prototypes::id::DOMMatrix },
524 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
525 : JSJitInfo::Setter,
526 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
527 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
528 : false, /* isInfallible. False in setters. */
529 : false, /* isMovable. Not relevant for setters. */
530 : false, /* isEliminatable. Not relevant for setters. */
531 : false, /* isAlwaysInSlot. Only relevant for getters. */
532 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
533 : false, /* isTypedMethod. Only relevant for methods. */
534 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
535 : };
536 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
537 : static_assert(0 < 1, "There is no slot for us");
538 :
539 : static bool
540 0 : get_m14(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
541 : {
542 0 : double result(self->M14());
543 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
544 0 : args.rval().set(JS_NumberValue(double(result)));
545 0 : return true;
546 : }
547 :
548 : static bool
549 0 : set_m14(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
550 : {
551 : double arg0;
552 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
553 0 : return false;
554 : }
555 0 : self->SetM14(arg0);
556 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
557 :
558 0 : return true;
559 : }
560 :
561 : static const JSJitInfo m14_getterinfo = {
562 : { (JSJitGetterOp)get_m14 },
563 : { prototypes::id::DOMMatrix },
564 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
565 : JSJitInfo::Getter,
566 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
567 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
568 : true, /* isInfallible. False in setters. */
569 : false, /* isMovable. Not relevant for setters. */
570 : false, /* isEliminatable. Not relevant for setters. */
571 : false, /* isAlwaysInSlot. Only relevant for getters. */
572 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
573 : false, /* isTypedMethod. Only relevant for methods. */
574 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
575 : };
576 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
577 : static_assert(0 < 1, "There is no slot for us");
578 : static const JSJitInfo m14_setterinfo = {
579 : { (JSJitGetterOp)set_m14 },
580 : { prototypes::id::DOMMatrix },
581 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
582 : JSJitInfo::Setter,
583 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
584 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
585 : false, /* isInfallible. False in setters. */
586 : false, /* isMovable. Not relevant for setters. */
587 : false, /* isEliminatable. Not relevant for setters. */
588 : false, /* isAlwaysInSlot. Only relevant for getters. */
589 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
590 : false, /* isTypedMethod. Only relevant for methods. */
591 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
592 : };
593 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
594 : static_assert(0 < 1, "There is no slot for us");
595 :
596 : static bool
597 0 : get_m21(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
598 : {
599 0 : double result(self->M21());
600 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
601 0 : args.rval().set(JS_NumberValue(double(result)));
602 0 : return true;
603 : }
604 :
605 : static bool
606 0 : set_m21(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
607 : {
608 : double arg0;
609 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
610 0 : return false;
611 : }
612 0 : self->SetM21(arg0);
613 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
614 :
615 0 : return true;
616 : }
617 :
618 : static const JSJitInfo m21_getterinfo = {
619 : { (JSJitGetterOp)get_m21 },
620 : { prototypes::id::DOMMatrix },
621 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
622 : JSJitInfo::Getter,
623 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
624 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
625 : true, /* isInfallible. False in setters. */
626 : false, /* isMovable. Not relevant for setters. */
627 : false, /* isEliminatable. Not relevant for setters. */
628 : false, /* isAlwaysInSlot. Only relevant for getters. */
629 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
630 : false, /* isTypedMethod. Only relevant for methods. */
631 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
632 : };
633 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
634 : static_assert(0 < 1, "There is no slot for us");
635 : static const JSJitInfo m21_setterinfo = {
636 : { (JSJitGetterOp)set_m21 },
637 : { prototypes::id::DOMMatrix },
638 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
639 : JSJitInfo::Setter,
640 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
641 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
642 : false, /* isInfallible. False in setters. */
643 : false, /* isMovable. Not relevant for setters. */
644 : false, /* isEliminatable. Not relevant for setters. */
645 : false, /* isAlwaysInSlot. Only relevant for getters. */
646 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
647 : false, /* isTypedMethod. Only relevant for methods. */
648 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
649 : };
650 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
651 : static_assert(0 < 1, "There is no slot for us");
652 :
653 : static bool
654 0 : get_m22(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
655 : {
656 0 : double result(self->M22());
657 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
658 0 : args.rval().set(JS_NumberValue(double(result)));
659 0 : return true;
660 : }
661 :
662 : static bool
663 0 : set_m22(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
664 : {
665 : double arg0;
666 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
667 0 : return false;
668 : }
669 0 : self->SetM22(arg0);
670 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
671 :
672 0 : return true;
673 : }
674 :
675 : static const JSJitInfo m22_getterinfo = {
676 : { (JSJitGetterOp)get_m22 },
677 : { prototypes::id::DOMMatrix },
678 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
679 : JSJitInfo::Getter,
680 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
681 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
682 : true, /* isInfallible. False in setters. */
683 : false, /* isMovable. Not relevant for setters. */
684 : false, /* isEliminatable. Not relevant for setters. */
685 : false, /* isAlwaysInSlot. Only relevant for getters. */
686 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
687 : false, /* isTypedMethod. Only relevant for methods. */
688 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
689 : };
690 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
691 : static_assert(0 < 1, "There is no slot for us");
692 : static const JSJitInfo m22_setterinfo = {
693 : { (JSJitGetterOp)set_m22 },
694 : { prototypes::id::DOMMatrix },
695 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
696 : JSJitInfo::Setter,
697 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
698 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
699 : false, /* isInfallible. False in setters. */
700 : false, /* isMovable. Not relevant for setters. */
701 : false, /* isEliminatable. Not relevant for setters. */
702 : false, /* isAlwaysInSlot. Only relevant for getters. */
703 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
704 : false, /* isTypedMethod. Only relevant for methods. */
705 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
706 : };
707 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
708 : static_assert(0 < 1, "There is no slot for us");
709 :
710 : static bool
711 0 : get_m23(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
712 : {
713 0 : double result(self->M23());
714 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
715 0 : args.rval().set(JS_NumberValue(double(result)));
716 0 : return true;
717 : }
718 :
719 : static bool
720 0 : set_m23(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
721 : {
722 : double arg0;
723 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
724 0 : return false;
725 : }
726 0 : self->SetM23(arg0);
727 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
728 :
729 0 : return true;
730 : }
731 :
732 : static const JSJitInfo m23_getterinfo = {
733 : { (JSJitGetterOp)get_m23 },
734 : { prototypes::id::DOMMatrix },
735 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
736 : JSJitInfo::Getter,
737 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
738 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
739 : true, /* isInfallible. False in setters. */
740 : false, /* isMovable. Not relevant for setters. */
741 : false, /* isEliminatable. Not relevant for setters. */
742 : false, /* isAlwaysInSlot. Only relevant for getters. */
743 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
744 : false, /* isTypedMethod. Only relevant for methods. */
745 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
746 : };
747 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
748 : static_assert(0 < 1, "There is no slot for us");
749 : static const JSJitInfo m23_setterinfo = {
750 : { (JSJitGetterOp)set_m23 },
751 : { prototypes::id::DOMMatrix },
752 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
753 : JSJitInfo::Setter,
754 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
755 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
756 : false, /* isInfallible. False in setters. */
757 : false, /* isMovable. Not relevant for setters. */
758 : false, /* isEliminatable. Not relevant for setters. */
759 : false, /* isAlwaysInSlot. Only relevant for getters. */
760 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
761 : false, /* isTypedMethod. Only relevant for methods. */
762 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
763 : };
764 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
765 : static_assert(0 < 1, "There is no slot for us");
766 :
767 : static bool
768 0 : get_m24(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
769 : {
770 0 : double result(self->M24());
771 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
772 0 : args.rval().set(JS_NumberValue(double(result)));
773 0 : return true;
774 : }
775 :
776 : static bool
777 0 : set_m24(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
778 : {
779 : double arg0;
780 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
781 0 : return false;
782 : }
783 0 : self->SetM24(arg0);
784 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
785 :
786 0 : return true;
787 : }
788 :
789 : static const JSJitInfo m24_getterinfo = {
790 : { (JSJitGetterOp)get_m24 },
791 : { prototypes::id::DOMMatrix },
792 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
793 : JSJitInfo::Getter,
794 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
795 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
796 : true, /* 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 m24_setterinfo = {
807 : { (JSJitGetterOp)set_m24 },
808 : { prototypes::id::DOMMatrix },
809 : { PrototypeTraits<prototypes::id::DOMMatrix>::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_m31(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
826 : {
827 0 : double result(self->M31());
828 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
829 0 : args.rval().set(JS_NumberValue(double(result)));
830 0 : return true;
831 : }
832 :
833 : static bool
834 0 : set_m31(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
835 : {
836 : double arg0;
837 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
838 0 : return false;
839 : }
840 0 : self->SetM31(arg0);
841 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
842 :
843 0 : return true;
844 : }
845 :
846 : static const JSJitInfo m31_getterinfo = {
847 : { (JSJitGetterOp)get_m31 },
848 : { prototypes::id::DOMMatrix },
849 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
850 : JSJitInfo::Getter,
851 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
852 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
853 : true, /* isInfallible. False in setters. */
854 : false, /* isMovable. Not relevant for setters. */
855 : false, /* isEliminatable. Not relevant for setters. */
856 : false, /* isAlwaysInSlot. Only relevant for getters. */
857 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
858 : false, /* isTypedMethod. Only relevant for methods. */
859 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
860 : };
861 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
862 : static_assert(0 < 1, "There is no slot for us");
863 : static const JSJitInfo m31_setterinfo = {
864 : { (JSJitGetterOp)set_m31 },
865 : { prototypes::id::DOMMatrix },
866 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
867 : JSJitInfo::Setter,
868 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
869 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
870 : false, /* isInfallible. False in setters. */
871 : false, /* isMovable. Not relevant for setters. */
872 : false, /* isEliminatable. Not relevant for setters. */
873 : false, /* isAlwaysInSlot. Only relevant for getters. */
874 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
875 : false, /* isTypedMethod. Only relevant for methods. */
876 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
877 : };
878 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
879 : static_assert(0 < 1, "There is no slot for us");
880 :
881 : static bool
882 0 : get_m32(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
883 : {
884 0 : double result(self->M32());
885 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
886 0 : args.rval().set(JS_NumberValue(double(result)));
887 0 : return true;
888 : }
889 :
890 : static bool
891 0 : set_m32(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
892 : {
893 : double arg0;
894 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
895 0 : return false;
896 : }
897 0 : self->SetM32(arg0);
898 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
899 :
900 0 : return true;
901 : }
902 :
903 : static const JSJitInfo m32_getterinfo = {
904 : { (JSJitGetterOp)get_m32 },
905 : { prototypes::id::DOMMatrix },
906 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
907 : JSJitInfo::Getter,
908 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
909 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
910 : true, /* isInfallible. False in setters. */
911 : false, /* isMovable. Not relevant for setters. */
912 : false, /* isEliminatable. Not relevant for setters. */
913 : false, /* isAlwaysInSlot. Only relevant for getters. */
914 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
915 : false, /* isTypedMethod. Only relevant for methods. */
916 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
917 : };
918 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
919 : static_assert(0 < 1, "There is no slot for us");
920 : static const JSJitInfo m32_setterinfo = {
921 : { (JSJitGetterOp)set_m32 },
922 : { prototypes::id::DOMMatrix },
923 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
924 : JSJitInfo::Setter,
925 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
926 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
927 : false, /* isInfallible. False in setters. */
928 : false, /* isMovable. Not relevant for setters. */
929 : false, /* isEliminatable. Not relevant for setters. */
930 : false, /* isAlwaysInSlot. Only relevant for getters. */
931 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
932 : false, /* isTypedMethod. Only relevant for methods. */
933 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
934 : };
935 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
936 : static_assert(0 < 1, "There is no slot for us");
937 :
938 : static bool
939 0 : get_m33(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
940 : {
941 0 : double result(self->M33());
942 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
943 0 : args.rval().set(JS_NumberValue(double(result)));
944 0 : return true;
945 : }
946 :
947 : static bool
948 0 : set_m33(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
949 : {
950 : double arg0;
951 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
952 0 : return false;
953 : }
954 0 : self->SetM33(arg0);
955 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
956 :
957 0 : return true;
958 : }
959 :
960 : static const JSJitInfo m33_getterinfo = {
961 : { (JSJitGetterOp)get_m33 },
962 : { prototypes::id::DOMMatrix },
963 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
964 : JSJitInfo::Getter,
965 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
966 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
967 : true, /* isInfallible. False in setters. */
968 : false, /* isMovable. Not relevant for setters. */
969 : false, /* isEliminatable. Not relevant for setters. */
970 : false, /* isAlwaysInSlot. Only relevant for getters. */
971 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
972 : false, /* isTypedMethod. Only relevant for methods. */
973 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
974 : };
975 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
976 : static_assert(0 < 1, "There is no slot for us");
977 : static const JSJitInfo m33_setterinfo = {
978 : { (JSJitGetterOp)set_m33 },
979 : { prototypes::id::DOMMatrix },
980 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
981 : JSJitInfo::Setter,
982 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
983 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
984 : false, /* isInfallible. False in setters. */
985 : false, /* isMovable. Not relevant for setters. */
986 : false, /* isEliminatable. Not relevant for setters. */
987 : false, /* isAlwaysInSlot. Only relevant for getters. */
988 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
989 : false, /* isTypedMethod. Only relevant for methods. */
990 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
991 : };
992 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
993 : static_assert(0 < 1, "There is no slot for us");
994 :
995 : static bool
996 0 : get_m34(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
997 : {
998 0 : double result(self->M34());
999 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1000 0 : args.rval().set(JS_NumberValue(double(result)));
1001 0 : return true;
1002 : }
1003 :
1004 : static bool
1005 0 : set_m34(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
1006 : {
1007 : double arg0;
1008 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1009 0 : return false;
1010 : }
1011 0 : self->SetM34(arg0);
1012 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1013 :
1014 0 : return true;
1015 : }
1016 :
1017 : static const JSJitInfo m34_getterinfo = {
1018 : { (JSJitGetterOp)get_m34 },
1019 : { prototypes::id::DOMMatrix },
1020 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1021 : JSJitInfo::Getter,
1022 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1023 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
1024 : true, /* isInfallible. False in setters. */
1025 : false, /* isMovable. Not relevant for setters. */
1026 : false, /* isEliminatable. Not relevant for setters. */
1027 : false, /* isAlwaysInSlot. Only relevant for getters. */
1028 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1029 : false, /* isTypedMethod. Only relevant for methods. */
1030 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1031 : };
1032 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1033 : static_assert(0 < 1, "There is no slot for us");
1034 : static const JSJitInfo m34_setterinfo = {
1035 : { (JSJitGetterOp)set_m34 },
1036 : { prototypes::id::DOMMatrix },
1037 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1038 : JSJitInfo::Setter,
1039 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1040 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1041 : false, /* isInfallible. False in setters. */
1042 : false, /* isMovable. Not relevant for setters. */
1043 : false, /* isEliminatable. Not relevant for setters. */
1044 : false, /* isAlwaysInSlot. Only relevant for getters. */
1045 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1046 : false, /* isTypedMethod. Only relevant for methods. */
1047 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1048 : };
1049 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1050 : static_assert(0 < 1, "There is no slot for us");
1051 :
1052 : static bool
1053 0 : get_m41(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
1054 : {
1055 0 : double result(self->M41());
1056 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1057 0 : args.rval().set(JS_NumberValue(double(result)));
1058 0 : return true;
1059 : }
1060 :
1061 : static bool
1062 0 : set_m41(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
1063 : {
1064 : double arg0;
1065 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1066 0 : return false;
1067 : }
1068 0 : self->SetM41(arg0);
1069 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1070 :
1071 0 : return true;
1072 : }
1073 :
1074 : static const JSJitInfo m41_getterinfo = {
1075 : { (JSJitGetterOp)get_m41 },
1076 : { prototypes::id::DOMMatrix },
1077 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1078 : JSJitInfo::Getter,
1079 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1080 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
1081 : true, /* isInfallible. False in setters. */
1082 : false, /* isMovable. Not relevant for setters. */
1083 : false, /* isEliminatable. Not relevant for setters. */
1084 : false, /* isAlwaysInSlot. Only relevant for getters. */
1085 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1086 : false, /* isTypedMethod. Only relevant for methods. */
1087 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1088 : };
1089 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1090 : static_assert(0 < 1, "There is no slot for us");
1091 : static const JSJitInfo m41_setterinfo = {
1092 : { (JSJitGetterOp)set_m41 },
1093 : { prototypes::id::DOMMatrix },
1094 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1095 : JSJitInfo::Setter,
1096 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1097 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1098 : false, /* isInfallible. False in setters. */
1099 : false, /* isMovable. Not relevant for setters. */
1100 : false, /* isEliminatable. Not relevant for setters. */
1101 : false, /* isAlwaysInSlot. Only relevant for getters. */
1102 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1103 : false, /* isTypedMethod. Only relevant for methods. */
1104 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1105 : };
1106 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1107 : static_assert(0 < 1, "There is no slot for us");
1108 :
1109 : static bool
1110 0 : get_m42(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
1111 : {
1112 0 : double result(self->M42());
1113 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1114 0 : args.rval().set(JS_NumberValue(double(result)));
1115 0 : return true;
1116 : }
1117 :
1118 : static bool
1119 0 : set_m42(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
1120 : {
1121 : double arg0;
1122 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1123 0 : return false;
1124 : }
1125 0 : self->SetM42(arg0);
1126 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1127 :
1128 0 : return true;
1129 : }
1130 :
1131 : static const JSJitInfo m42_getterinfo = {
1132 : { (JSJitGetterOp)get_m42 },
1133 : { prototypes::id::DOMMatrix },
1134 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1135 : JSJitInfo::Getter,
1136 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1137 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
1138 : true, /* isInfallible. False in setters. */
1139 : false, /* isMovable. Not relevant for setters. */
1140 : false, /* isEliminatable. Not relevant for setters. */
1141 : false, /* isAlwaysInSlot. Only relevant for getters. */
1142 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1143 : false, /* isTypedMethod. Only relevant for methods. */
1144 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1145 : };
1146 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1147 : static_assert(0 < 1, "There is no slot for us");
1148 : static const JSJitInfo m42_setterinfo = {
1149 : { (JSJitGetterOp)set_m42 },
1150 : { prototypes::id::DOMMatrix },
1151 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1152 : JSJitInfo::Setter,
1153 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1154 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1155 : false, /* isInfallible. False in setters. */
1156 : false, /* isMovable. Not relevant for setters. */
1157 : false, /* isEliminatable. Not relevant for setters. */
1158 : false, /* isAlwaysInSlot. Only relevant for getters. */
1159 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1160 : false, /* isTypedMethod. Only relevant for methods. */
1161 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1162 : };
1163 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1164 : static_assert(0 < 1, "There is no slot for us");
1165 :
1166 : static bool
1167 0 : get_m43(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
1168 : {
1169 0 : double result(self->M43());
1170 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1171 0 : args.rval().set(JS_NumberValue(double(result)));
1172 0 : return true;
1173 : }
1174 :
1175 : static bool
1176 0 : set_m43(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
1177 : {
1178 : double arg0;
1179 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1180 0 : return false;
1181 : }
1182 0 : self->SetM43(arg0);
1183 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1184 :
1185 0 : return true;
1186 : }
1187 :
1188 : static const JSJitInfo m43_getterinfo = {
1189 : { (JSJitGetterOp)get_m43 },
1190 : { prototypes::id::DOMMatrix },
1191 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1192 : JSJitInfo::Getter,
1193 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1194 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
1195 : true, /* isInfallible. False in setters. */
1196 : false, /* isMovable. Not relevant for setters. */
1197 : false, /* isEliminatable. Not relevant for setters. */
1198 : false, /* isAlwaysInSlot. Only relevant for getters. */
1199 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1200 : false, /* isTypedMethod. Only relevant for methods. */
1201 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1202 : };
1203 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1204 : static_assert(0 < 1, "There is no slot for us");
1205 : static const JSJitInfo m43_setterinfo = {
1206 : { (JSJitGetterOp)set_m43 },
1207 : { prototypes::id::DOMMatrix },
1208 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1209 : JSJitInfo::Setter,
1210 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1211 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1212 : false, /* isInfallible. False in setters. */
1213 : false, /* isMovable. Not relevant for setters. */
1214 : false, /* isEliminatable. Not relevant for setters. */
1215 : false, /* isAlwaysInSlot. Only relevant for getters. */
1216 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1217 : false, /* isTypedMethod. Only relevant for methods. */
1218 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1219 : };
1220 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1221 : static_assert(0 < 1, "There is no slot for us");
1222 :
1223 : static bool
1224 0 : get_m44(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitGetterCallArgs args)
1225 : {
1226 0 : double result(self->M44());
1227 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1228 0 : args.rval().set(JS_NumberValue(double(result)));
1229 0 : return true;
1230 : }
1231 :
1232 : static bool
1233 0 : set_m44(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, JSJitSetterCallArgs args)
1234 : {
1235 : double arg0;
1236 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1237 0 : return false;
1238 : }
1239 0 : self->SetM44(arg0);
1240 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1241 :
1242 0 : return true;
1243 : }
1244 :
1245 : static const JSJitInfo m44_getterinfo = {
1246 : { (JSJitGetterOp)get_m44 },
1247 : { prototypes::id::DOMMatrix },
1248 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1249 : JSJitInfo::Getter,
1250 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1251 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
1252 : true, /* isInfallible. False in setters. */
1253 : false, /* isMovable. Not relevant for setters. */
1254 : false, /* isEliminatable. Not relevant for setters. */
1255 : false, /* isAlwaysInSlot. Only relevant for getters. */
1256 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1257 : false, /* isTypedMethod. Only relevant for methods. */
1258 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1259 : };
1260 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1261 : static_assert(0 < 1, "There is no slot for us");
1262 : static const JSJitInfo m44_setterinfo = {
1263 : { (JSJitGetterOp)set_m44 },
1264 : { prototypes::id::DOMMatrix },
1265 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1266 : JSJitInfo::Setter,
1267 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1268 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1269 : false, /* isInfallible. False in setters. */
1270 : false, /* isMovable. Not relevant for setters. */
1271 : false, /* isEliminatable. Not relevant for setters. */
1272 : false, /* isAlwaysInSlot. Only relevant for getters. */
1273 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1274 : false, /* isTypedMethod. Only relevant for methods. */
1275 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1276 : };
1277 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1278 : static_assert(0 < 1, "There is no slot for us");
1279 :
1280 : static bool
1281 0 : multiplySelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1282 : {
1283 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1284 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.multiplySelf");
1285 : }
1286 0 : NonNull<mozilla::dom::DOMMatrix> arg0;
1287 0 : if (args[0].isObject()) {
1288 : {
1289 0 : nsresult rv = UnwrapObject<prototypes::id::DOMMatrix, mozilla::dom::DOMMatrix>(args[0], arg0);
1290 0 : if (NS_FAILED(rv)) {
1291 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of DOMMatrix.multiplySelf", "DOMMatrix");
1292 0 : return false;
1293 : }
1294 : }
1295 : } else {
1296 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of DOMMatrix.multiplySelf");
1297 0 : return false;
1298 : }
1299 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->MultiplySelf(NonNullHelper(arg0))));
1300 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1301 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1302 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1303 0 : return false;
1304 : }
1305 0 : return true;
1306 : }
1307 :
1308 : static const JSJitInfo multiplySelf_methodinfo = {
1309 : { (JSJitGetterOp)multiplySelf },
1310 : { prototypes::id::DOMMatrix },
1311 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1312 : JSJitInfo::Method,
1313 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1314 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1315 : false, /* isInfallible. False in setters. */
1316 : false, /* isMovable. Not relevant for setters. */
1317 : false, /* isEliminatable. Not relevant for setters. */
1318 : false, /* isAlwaysInSlot. Only relevant for getters. */
1319 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1320 : false, /* isTypedMethod. Only relevant for methods. */
1321 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1322 : };
1323 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1324 : static_assert(0 < 1, "There is no slot for us");
1325 :
1326 : static bool
1327 0 : preMultiplySelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1328 : {
1329 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1330 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.preMultiplySelf");
1331 : }
1332 0 : NonNull<mozilla::dom::DOMMatrix> arg0;
1333 0 : if (args[0].isObject()) {
1334 : {
1335 0 : nsresult rv = UnwrapObject<prototypes::id::DOMMatrix, mozilla::dom::DOMMatrix>(args[0], arg0);
1336 0 : if (NS_FAILED(rv)) {
1337 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of DOMMatrix.preMultiplySelf", "DOMMatrix");
1338 0 : return false;
1339 : }
1340 : }
1341 : } else {
1342 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of DOMMatrix.preMultiplySelf");
1343 0 : return false;
1344 : }
1345 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->PreMultiplySelf(NonNullHelper(arg0))));
1346 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1347 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1348 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1349 0 : return false;
1350 : }
1351 0 : return true;
1352 : }
1353 :
1354 : static const JSJitInfo preMultiplySelf_methodinfo = {
1355 : { (JSJitGetterOp)preMultiplySelf },
1356 : { prototypes::id::DOMMatrix },
1357 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1358 : JSJitInfo::Method,
1359 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1360 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1361 : false, /* isInfallible. False in setters. */
1362 : false, /* isMovable. Not relevant for setters. */
1363 : false, /* isEliminatable. Not relevant for setters. */
1364 : false, /* isAlwaysInSlot. Only relevant for getters. */
1365 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1366 : false, /* isTypedMethod. Only relevant for methods. */
1367 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1368 : };
1369 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1370 : static_assert(0 < 1, "There is no slot for us");
1371 :
1372 : static bool
1373 0 : translateSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1374 : {
1375 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
1376 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.translateSelf");
1377 : }
1378 : double arg0;
1379 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1380 0 : return false;
1381 : }
1382 : double arg1;
1383 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1384 0 : return false;
1385 : }
1386 : double arg2;
1387 0 : if (args.hasDefined(2)) {
1388 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
1389 0 : return false;
1390 : }
1391 : } else {
1392 0 : arg2 = 0.0;
1393 : }
1394 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->TranslateSelf(arg0, arg1, arg2)));
1395 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1396 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1397 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1398 0 : return false;
1399 : }
1400 0 : return true;
1401 : }
1402 :
1403 : static const JSJitInfo translateSelf_methodinfo = {
1404 : { (JSJitGetterOp)translateSelf },
1405 : { prototypes::id::DOMMatrix },
1406 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1407 : JSJitInfo::Method,
1408 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1409 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1410 : false, /* isInfallible. False in setters. */
1411 : false, /* isMovable. Not relevant for setters. */
1412 : false, /* isEliminatable. Not relevant for setters. */
1413 : false, /* isAlwaysInSlot. Only relevant for getters. */
1414 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1415 : false, /* isTypedMethod. Only relevant for methods. */
1416 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1417 : };
1418 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1419 : static_assert(0 < 1, "There is no slot for us");
1420 :
1421 : static bool
1422 0 : scaleSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1423 : {
1424 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1425 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.scaleSelf");
1426 : }
1427 : double arg0;
1428 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1429 0 : return false;
1430 : }
1431 : double arg1;
1432 0 : if (args.hasDefined(1)) {
1433 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1434 0 : return false;
1435 : }
1436 : } else {
1437 0 : arg1 = 0.0;
1438 : }
1439 : double arg2;
1440 0 : if (args.hasDefined(2)) {
1441 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
1442 0 : return false;
1443 : }
1444 : } else {
1445 0 : arg2 = 0.0;
1446 : }
1447 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->ScaleSelf(arg0, arg1, arg2)));
1448 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1449 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1450 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1451 0 : return false;
1452 : }
1453 0 : return true;
1454 : }
1455 :
1456 : static const JSJitInfo scaleSelf_methodinfo = {
1457 : { (JSJitGetterOp)scaleSelf },
1458 : { prototypes::id::DOMMatrix },
1459 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1460 : JSJitInfo::Method,
1461 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1462 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1463 : false, /* isInfallible. False in setters. */
1464 : false, /* isMovable. Not relevant for setters. */
1465 : false, /* isEliminatable. Not relevant for setters. */
1466 : false, /* isAlwaysInSlot. Only relevant for getters. */
1467 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1468 : false, /* isTypedMethod. Only relevant for methods. */
1469 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1470 : };
1471 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1472 : static_assert(0 < 1, "There is no slot for us");
1473 :
1474 : static bool
1475 0 : scale3dSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1476 : {
1477 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1478 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.scale3dSelf");
1479 : }
1480 : double arg0;
1481 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1482 0 : return false;
1483 : }
1484 : double arg1;
1485 0 : if (args.hasDefined(1)) {
1486 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1487 0 : return false;
1488 : }
1489 : } else {
1490 0 : arg1 = 0.0;
1491 : }
1492 : double arg2;
1493 0 : if (args.hasDefined(2)) {
1494 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
1495 0 : return false;
1496 : }
1497 : } else {
1498 0 : arg2 = 0.0;
1499 : }
1500 : double arg3;
1501 0 : if (args.hasDefined(3)) {
1502 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[3], &arg3)) {
1503 0 : return false;
1504 : }
1505 : } else {
1506 0 : arg3 = 0.0;
1507 : }
1508 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Scale3dSelf(arg0, arg1, arg2, arg3)));
1509 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1510 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1511 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1512 0 : return false;
1513 : }
1514 0 : return true;
1515 : }
1516 :
1517 : static const JSJitInfo scale3dSelf_methodinfo = {
1518 : { (JSJitGetterOp)scale3dSelf },
1519 : { prototypes::id::DOMMatrix },
1520 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1521 : JSJitInfo::Method,
1522 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1523 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1524 : false, /* isInfallible. False in setters. */
1525 : false, /* isMovable. Not relevant for setters. */
1526 : false, /* isEliminatable. Not relevant for setters. */
1527 : false, /* isAlwaysInSlot. Only relevant for getters. */
1528 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1529 : false, /* isTypedMethod. Only relevant for methods. */
1530 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1531 : };
1532 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1533 : static_assert(0 < 1, "There is no slot for us");
1534 :
1535 : static bool
1536 0 : scaleNonUniformSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1537 : {
1538 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1539 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.scaleNonUniformSelf");
1540 : }
1541 : double arg0;
1542 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1543 0 : return false;
1544 : }
1545 : double arg1;
1546 0 : if (args.hasDefined(1)) {
1547 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1548 0 : return false;
1549 : }
1550 : } else {
1551 0 : arg1 = 1.0;
1552 : }
1553 : double arg2;
1554 0 : if (args.hasDefined(2)) {
1555 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
1556 0 : return false;
1557 : }
1558 : } else {
1559 0 : arg2 = 1.0;
1560 : }
1561 : double arg3;
1562 0 : if (args.hasDefined(3)) {
1563 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[3], &arg3)) {
1564 0 : return false;
1565 : }
1566 : } else {
1567 0 : arg3 = 0.0;
1568 : }
1569 : double arg4;
1570 0 : if (args.hasDefined(4)) {
1571 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[4], &arg4)) {
1572 0 : return false;
1573 : }
1574 : } else {
1575 0 : arg4 = 0.0;
1576 : }
1577 : double arg5;
1578 0 : if (args.hasDefined(5)) {
1579 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[5], &arg5)) {
1580 0 : return false;
1581 : }
1582 : } else {
1583 0 : arg5 = 0.0;
1584 : }
1585 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->ScaleNonUniformSelf(arg0, arg1, arg2, arg3, arg4, arg5)));
1586 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1587 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1588 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1589 0 : return false;
1590 : }
1591 0 : return true;
1592 : }
1593 :
1594 : static const JSJitInfo scaleNonUniformSelf_methodinfo = {
1595 : { (JSJitGetterOp)scaleNonUniformSelf },
1596 : { prototypes::id::DOMMatrix },
1597 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1598 : JSJitInfo::Method,
1599 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1600 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1601 : false, /* isInfallible. False in setters. */
1602 : false, /* isMovable. Not relevant for setters. */
1603 : false, /* isEliminatable. Not relevant for setters. */
1604 : false, /* isAlwaysInSlot. Only relevant for getters. */
1605 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1606 : false, /* isTypedMethod. Only relevant for methods. */
1607 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1608 : };
1609 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1610 : static_assert(0 < 1, "There is no slot for us");
1611 :
1612 : static bool
1613 0 : rotateSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1614 : {
1615 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1616 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.rotateSelf");
1617 : }
1618 : double arg0;
1619 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1620 0 : return false;
1621 : }
1622 : double arg1;
1623 0 : if (args.hasDefined(1)) {
1624 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1625 0 : return false;
1626 : }
1627 : } else {
1628 0 : arg1 = 0.0;
1629 : }
1630 : double arg2;
1631 0 : if (args.hasDefined(2)) {
1632 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
1633 0 : return false;
1634 : }
1635 : } else {
1636 0 : arg2 = 0.0;
1637 : }
1638 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->RotateSelf(arg0, arg1, arg2)));
1639 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1640 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1641 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1642 0 : return false;
1643 : }
1644 0 : return true;
1645 : }
1646 :
1647 : static const JSJitInfo rotateSelf_methodinfo = {
1648 : { (JSJitGetterOp)rotateSelf },
1649 : { prototypes::id::DOMMatrix },
1650 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1651 : JSJitInfo::Method,
1652 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1653 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1654 : false, /* isInfallible. False in setters. */
1655 : false, /* isMovable. Not relevant for setters. */
1656 : false, /* isEliminatable. Not relevant for setters. */
1657 : false, /* isAlwaysInSlot. Only relevant for getters. */
1658 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1659 : false, /* isTypedMethod. Only relevant for methods. */
1660 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1661 : };
1662 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1663 : static_assert(0 < 1, "There is no slot for us");
1664 :
1665 : static bool
1666 0 : rotateFromVectorSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1667 : {
1668 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
1669 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.rotateFromVectorSelf");
1670 : }
1671 : double arg0;
1672 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1673 0 : return false;
1674 : }
1675 : double arg1;
1676 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1677 0 : return false;
1678 : }
1679 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->RotateFromVectorSelf(arg0, arg1)));
1680 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1681 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1682 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1683 0 : return false;
1684 : }
1685 0 : return true;
1686 : }
1687 :
1688 : static const JSJitInfo rotateFromVectorSelf_methodinfo = {
1689 : { (JSJitGetterOp)rotateFromVectorSelf },
1690 : { prototypes::id::DOMMatrix },
1691 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1692 : JSJitInfo::Method,
1693 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1694 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1695 : false, /* isInfallible. False in setters. */
1696 : false, /* isMovable. Not relevant for setters. */
1697 : false, /* isEliminatable. Not relevant for setters. */
1698 : false, /* isAlwaysInSlot. Only relevant for getters. */
1699 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1700 : false, /* isTypedMethod. Only relevant for methods. */
1701 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1702 : };
1703 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1704 : static_assert(0 < 1, "There is no slot for us");
1705 :
1706 : static bool
1707 0 : rotateAxisAngleSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1708 : {
1709 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
1710 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.rotateAxisAngleSelf");
1711 : }
1712 : double arg0;
1713 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1714 0 : return false;
1715 : }
1716 : double arg1;
1717 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
1718 0 : return false;
1719 : }
1720 : double arg2;
1721 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
1722 0 : return false;
1723 : }
1724 : double arg3;
1725 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[3], &arg3)) {
1726 0 : return false;
1727 : }
1728 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->RotateAxisAngleSelf(arg0, arg1, arg2, arg3)));
1729 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1730 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1731 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1732 0 : return false;
1733 : }
1734 0 : return true;
1735 : }
1736 :
1737 : static const JSJitInfo rotateAxisAngleSelf_methodinfo = {
1738 : { (JSJitGetterOp)rotateAxisAngleSelf },
1739 : { prototypes::id::DOMMatrix },
1740 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1741 : JSJitInfo::Method,
1742 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1743 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1744 : false, /* isInfallible. False in setters. */
1745 : false, /* isMovable. Not relevant for setters. */
1746 : false, /* isEliminatable. Not relevant for setters. */
1747 : false, /* isAlwaysInSlot. Only relevant for getters. */
1748 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1749 : false, /* isTypedMethod. Only relevant for methods. */
1750 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1751 : };
1752 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1753 : static_assert(0 < 1, "There is no slot for us");
1754 :
1755 : static bool
1756 0 : skewXSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1757 : {
1758 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1759 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.skewXSelf");
1760 : }
1761 : double arg0;
1762 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1763 0 : return false;
1764 : }
1765 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->SkewXSelf(arg0)));
1766 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1767 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1768 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1769 0 : return false;
1770 : }
1771 0 : return true;
1772 : }
1773 :
1774 : static const JSJitInfo skewXSelf_methodinfo = {
1775 : { (JSJitGetterOp)skewXSelf },
1776 : { prototypes::id::DOMMatrix },
1777 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1778 : JSJitInfo::Method,
1779 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1780 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1781 : false, /* isInfallible. False in setters. */
1782 : false, /* isMovable. Not relevant for setters. */
1783 : false, /* isEliminatable. Not relevant for setters. */
1784 : false, /* isAlwaysInSlot. Only relevant for getters. */
1785 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1786 : false, /* isTypedMethod. Only relevant for methods. */
1787 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1788 : };
1789 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1790 : static_assert(0 < 1, "There is no slot for us");
1791 :
1792 : static bool
1793 0 : skewYSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1794 : {
1795 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1796 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.skewYSelf");
1797 : }
1798 : double arg0;
1799 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
1800 0 : return false;
1801 : }
1802 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->SkewYSelf(arg0)));
1803 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1804 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1805 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1806 0 : return false;
1807 : }
1808 0 : return true;
1809 : }
1810 :
1811 : static const JSJitInfo skewYSelf_methodinfo = {
1812 : { (JSJitGetterOp)skewYSelf },
1813 : { prototypes::id::DOMMatrix },
1814 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1815 : JSJitInfo::Method,
1816 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1817 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1818 : false, /* isInfallible. False in setters. */
1819 : false, /* isMovable. Not relevant for setters. */
1820 : false, /* isEliminatable. Not relevant for setters. */
1821 : false, /* isAlwaysInSlot. Only relevant for getters. */
1822 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1823 : false, /* isTypedMethod. Only relevant for methods. */
1824 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1825 : };
1826 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1827 : static_assert(0 < 1, "There is no slot for us");
1828 :
1829 : static bool
1830 0 : invertSelf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1831 : {
1832 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->InvertSelf()));
1833 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1834 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1835 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1836 0 : return false;
1837 : }
1838 0 : return true;
1839 : }
1840 :
1841 : static const JSJitInfo invertSelf_methodinfo = {
1842 : { (JSJitGetterOp)invertSelf },
1843 : { prototypes::id::DOMMatrix },
1844 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1845 : JSJitInfo::Method,
1846 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1847 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1848 : false, /* isInfallible. False in setters. */
1849 : false, /* isMovable. Not relevant for setters. */
1850 : false, /* isEliminatable. Not relevant for setters. */
1851 : false, /* isAlwaysInSlot. Only relevant for getters. */
1852 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1853 : false, /* isTypedMethod. Only relevant for methods. */
1854 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1855 : };
1856 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1857 : static_assert(0 < 1, "There is no slot for us");
1858 :
1859 : static bool
1860 0 : setMatrixValue(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrix* self, const JSJitMethodCallArgs& args)
1861 : {
1862 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1863 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix.setMatrixValue");
1864 : }
1865 0 : binding_detail::FakeString arg0;
1866 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1867 0 : return false;
1868 : }
1869 0 : binding_detail::FastErrorResult rv;
1870 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->SetMatrixValue(NonNullHelper(Constify(arg0)), rv)));
1871 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1872 0 : return false;
1873 : }
1874 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1875 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1876 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1877 0 : return false;
1878 : }
1879 0 : return true;
1880 : }
1881 :
1882 : static const JSJitInfo setMatrixValue_methodinfo = {
1883 : { (JSJitGetterOp)setMatrixValue },
1884 : { prototypes::id::DOMMatrix },
1885 : { PrototypeTraits<prototypes::id::DOMMatrix>::Depth },
1886 : JSJitInfo::Method,
1887 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1888 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1889 : false, /* isInfallible. False in setters. */
1890 : false, /* isMovable. Not relevant for setters. */
1891 : false, /* isEliminatable. Not relevant for setters. */
1892 : false, /* isAlwaysInSlot. Only relevant for getters. */
1893 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1894 : false, /* isTypedMethod. Only relevant for methods. */
1895 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1896 : };
1897 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1898 : static_assert(0 < 1, "There is no slot for us");
1899 :
1900 : static bool
1901 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
1902 : {
1903 0 : mozilla::dom::DOMMatrix* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::DOMMatrix>(obj);
1904 : // We don't want to preserve if we don't have a wrapper, and we
1905 : // obviously can't preserve if we're not initialized.
1906 0 : if (self && self->GetWrapperPreserveColor()) {
1907 0 : PreserveWrapper(self);
1908 : }
1909 0 : return true;
1910 : }
1911 :
1912 : static void
1913 0 : _finalize(js::FreeOp* fop, JSObject* obj)
1914 : {
1915 0 : mozilla::dom::DOMMatrix* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::DOMMatrix>(obj);
1916 0 : if (self) {
1917 0 : ClearWrapper(self, self, obj);
1918 0 : AddForDeferredFinalization<mozilla::dom::DOMMatrix>(self);
1919 : }
1920 0 : }
1921 :
1922 : static void
1923 0 : _objectMoved(JSObject* obj, const JSObject* old)
1924 : {
1925 0 : mozilla::dom::DOMMatrix* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::DOMMatrix>(obj);
1926 0 : if (self) {
1927 0 : UpdateWrapper(self, self, obj, old);
1928 : }
1929 0 : }
1930 :
1931 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
1932 : #if defined(__clang__)
1933 : #pragma clang diagnostic push
1934 : #pragma clang diagnostic ignored "-Wmissing-braces"
1935 : #endif
1936 : static const JSFunctionSpec sMethods_specs[] = {
1937 : JS_FNSPEC("multiplySelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&multiplySelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1938 : JS_FNSPEC("preMultiplySelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&preMultiplySelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1939 : JS_FNSPEC("translateSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&translateSelf_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
1940 : JS_FNSPEC("scaleSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scaleSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1941 : JS_FNSPEC("scale3dSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scale3dSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1942 : JS_FNSPEC("scaleNonUniformSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scaleNonUniformSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1943 : JS_FNSPEC("rotateSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&rotateSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1944 : JS_FNSPEC("rotateFromVectorSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&rotateFromVectorSelf_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
1945 : JS_FNSPEC("rotateAxisAngleSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&rotateAxisAngleSelf_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
1946 : JS_FNSPEC("skewXSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&skewXSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1947 : JS_FNSPEC("skewYSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&skewYSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1948 : JS_FNSPEC("invertSelf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&invertSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
1949 : JS_FNSPEC("setMatrixValue", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&setMatrixValue_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
1950 : JS_FS_END
1951 : };
1952 : #if defined(__clang__)
1953 : #pragma clang diagnostic pop
1954 : #endif
1955 :
1956 :
1957 : // Can't be const because the pref-enabled boolean needs to be writable
1958 : static Prefable<const JSFunctionSpec> sMethods[] = {
1959 : { nullptr, &sMethods_specs[0] },
1960 : { nullptr, nullptr }
1961 : };
1962 :
1963 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
1964 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
1965 : static_assert(13 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
1966 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
1967 :
1968 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
1969 : #if defined(__clang__)
1970 : #pragma clang diagnostic push
1971 : #pragma clang diagnostic ignored "-Wmissing-braces"
1972 : #endif
1973 : static const JSPropertySpec sAttributes_specs[] = {
1974 : { "a", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &a_getterinfo, GenericBindingSetter, &a_setterinfo },
1975 : { "b", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &b_getterinfo, GenericBindingSetter, &b_setterinfo },
1976 : { "c", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &c_getterinfo, GenericBindingSetter, &c_setterinfo },
1977 : { "d", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &d_getterinfo, GenericBindingSetter, &d_setterinfo },
1978 : { "e", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &e_getterinfo, GenericBindingSetter, &e_setterinfo },
1979 : { "f", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &f_getterinfo, GenericBindingSetter, &f_setterinfo },
1980 : { "m11", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m11_getterinfo, GenericBindingSetter, &m11_setterinfo },
1981 : { "m12", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m12_getterinfo, GenericBindingSetter, &m12_setterinfo },
1982 : { "m13", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m13_getterinfo, GenericBindingSetter, &m13_setterinfo },
1983 : { "m14", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m14_getterinfo, GenericBindingSetter, &m14_setterinfo },
1984 : { "m21", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m21_getterinfo, GenericBindingSetter, &m21_setterinfo },
1985 : { "m22", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m22_getterinfo, GenericBindingSetter, &m22_setterinfo },
1986 : { "m23", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m23_getterinfo, GenericBindingSetter, &m23_setterinfo },
1987 : { "m24", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m24_getterinfo, GenericBindingSetter, &m24_setterinfo },
1988 : { "m31", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m31_getterinfo, GenericBindingSetter, &m31_setterinfo },
1989 : { "m32", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m32_getterinfo, GenericBindingSetter, &m32_setterinfo },
1990 : { "m33", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m33_getterinfo, GenericBindingSetter, &m33_setterinfo },
1991 : { "m34", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m34_getterinfo, GenericBindingSetter, &m34_setterinfo },
1992 : { "m41", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m41_getterinfo, GenericBindingSetter, &m41_setterinfo },
1993 : { "m42", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m42_getterinfo, GenericBindingSetter, &m42_setterinfo },
1994 : { "m43", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m43_getterinfo, GenericBindingSetter, &m43_setterinfo },
1995 : { "m44", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m44_getterinfo, GenericBindingSetter, &m44_setterinfo },
1996 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
1997 : };
1998 : #if defined(__clang__)
1999 : #pragma clang diagnostic pop
2000 : #endif
2001 :
2002 :
2003 : // Can't be const because the pref-enabled boolean needs to be writable
2004 : static Prefable<const JSPropertySpec> sAttributes[] = {
2005 : { nullptr, &sAttributes_specs[0] },
2006 : { nullptr, nullptr }
2007 : };
2008 :
2009 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
2010 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
2011 : static_assert(22 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
2012 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
2013 :
2014 :
2015 : static uint16_t sNativeProperties_sortedPropertyIndices[35];
2016 : static PropertyInfo sNativeProperties_propertyInfos[35];
2017 :
2018 : static const NativePropertiesN<2> sNativeProperties = {
2019 : false, 0,
2020 : false, 0,
2021 : true, 0 /* sMethods */,
2022 : true, 1 /* sAttributes */,
2023 : false, 0,
2024 : false, 0,
2025 : false, 0,
2026 : -1,
2027 : 35,
2028 : sNativeProperties_sortedPropertyIndices,
2029 : {
2030 : { sMethods, &sNativeProperties_propertyInfos[0] },
2031 : { sAttributes, &sNativeProperties_propertyInfos[13] }
2032 : }
2033 : };
2034 : static_assert(35 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
2035 : "We have a property info count that is oversized");
2036 :
2037 : static bool
2038 0 : _constructor(JSContext* cx, unsigned argc, JS::Value* vp)
2039 : {
2040 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
2041 0 : JS::Rooted<JSObject*> obj(cx, &args.callee());
2042 0 : if (!args.isConstructing()) {
2043 : // XXXbz wish I could get the name from the callee instead of
2044 : // Adding more relocations
2045 0 : return ThrowConstructorWithoutNew(cx, "DOMMatrix");
2046 : }
2047 :
2048 0 : GlobalObject global(cx, obj);
2049 0 : if (global.Failed()) {
2050 0 : return false;
2051 : }
2052 :
2053 0 : JS::Rooted<JSObject*> desiredProto(cx);
2054 0 : if (!GetDesiredProto(cx, args, &desiredProto)) {
2055 0 : return false;
2056 : }
2057 :
2058 0 : unsigned argcount = std::min(args.length(), 1u);
2059 0 : switch (argcount) {
2060 : case 0: {
2061 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
2062 0 : Maybe<JSAutoCompartment> ac;
2063 0 : if (objIsXray) {
2064 0 : obj = js::CheckedUnwrap(obj);
2065 0 : if (!obj) {
2066 0 : return false;
2067 : }
2068 0 : ac.emplace(cx, obj);
2069 0 : if (!JS_WrapObject(cx, &desiredProto)) {
2070 0 : return false;
2071 : }
2072 : }
2073 0 : binding_detail::FastErrorResult rv;
2074 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(mozilla::dom::DOMMatrix::Constructor(global, rv)));
2075 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2076 0 : return false;
2077 : }
2078 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2079 : static_assert(!IsPointer<decltype(result)>::value,
2080 : "NewObject implies that we need to keep the object alive with a strong reference.");
2081 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
2082 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2083 0 : return false;
2084 : }
2085 0 : return true;
2086 : break;
2087 : }
2088 : case 1: {
2089 0 : if (args[0].isObject()) {
2090 : do {
2091 0 : NonNull<mozilla::dom::DOMMatrixReadOnly> arg0;
2092 : {
2093 0 : nsresult rv = UnwrapObject<prototypes::id::DOMMatrixReadOnly, mozilla::dom::DOMMatrixReadOnly>(args[0], arg0);
2094 0 : if (NS_FAILED(rv)) {
2095 0 : break;
2096 : }
2097 : }
2098 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
2099 0 : Maybe<JSAutoCompartment> ac;
2100 0 : if (objIsXray) {
2101 0 : obj = js::CheckedUnwrap(obj);
2102 0 : if (!obj) {
2103 0 : return false;
2104 : }
2105 0 : ac.emplace(cx, obj);
2106 0 : if (!JS_WrapObject(cx, &desiredProto)) {
2107 0 : return false;
2108 : }
2109 : }
2110 0 : binding_detail::FastErrorResult rv;
2111 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(mozilla::dom::DOMMatrix::Constructor(global, NonNullHelper(arg0), rv)));
2112 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2113 0 : return false;
2114 : }
2115 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2116 : static_assert(!IsPointer<decltype(result)>::value,
2117 : "NewObject implies that we need to keep the object alive with a strong reference.");
2118 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
2119 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2120 0 : return false;
2121 : }
2122 0 : return true;
2123 : } while (0);
2124 : do {
2125 0 : RootedTypedArray<Float32Array> arg0(cx);
2126 0 : if (!arg0.Init(&args[0].toObject())) {
2127 0 : break;
2128 : }
2129 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
2130 0 : Maybe<JSAutoCompartment> ac;
2131 0 : if (objIsXray) {
2132 0 : obj = js::CheckedUnwrap(obj);
2133 0 : if (!obj) {
2134 0 : return false;
2135 : }
2136 0 : ac.emplace(cx, obj);
2137 0 : if (!JS_WrapObject(cx, &desiredProto)) {
2138 0 : return false;
2139 : }
2140 0 : if (!arg0.WrapIntoNewCompartment(cx)) {
2141 0 : return false;
2142 : }
2143 : }
2144 0 : binding_detail::FastErrorResult rv;
2145 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(mozilla::dom::DOMMatrix::Constructor(global, Constify(arg0), rv)));
2146 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2147 0 : return false;
2148 : }
2149 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2150 : static_assert(!IsPointer<decltype(result)>::value,
2151 : "NewObject implies that we need to keep the object alive with a strong reference.");
2152 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
2153 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2154 0 : return false;
2155 : }
2156 0 : return true;
2157 : } while (0);
2158 : do {
2159 0 : RootedTypedArray<Float64Array> arg0(cx);
2160 0 : if (!arg0.Init(&args[0].toObject())) {
2161 0 : break;
2162 : }
2163 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
2164 0 : Maybe<JSAutoCompartment> ac;
2165 0 : if (objIsXray) {
2166 0 : obj = js::CheckedUnwrap(obj);
2167 0 : if (!obj) {
2168 0 : return false;
2169 : }
2170 0 : ac.emplace(cx, obj);
2171 0 : if (!JS_WrapObject(cx, &desiredProto)) {
2172 0 : return false;
2173 : }
2174 0 : if (!arg0.WrapIntoNewCompartment(cx)) {
2175 0 : return false;
2176 : }
2177 : }
2178 0 : binding_detail::FastErrorResult rv;
2179 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(mozilla::dom::DOMMatrix::Constructor(global, Constify(arg0), rv)));
2180 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2181 0 : return false;
2182 : }
2183 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2184 : static_assert(!IsPointer<decltype(result)>::value,
2185 : "NewObject implies that we need to keep the object alive with a strong reference.");
2186 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
2187 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2188 0 : return false;
2189 : }
2190 0 : return true;
2191 : } while (0);
2192 : do {
2193 0 : binding_detail::AutoSequence<double> arg0;
2194 0 : JS::ForOfIterator iter(cx);
2195 0 : if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
2196 0 : return false;
2197 : }
2198 0 : if (!iter.valueIsIterable()) {
2199 0 : break;
2200 : }
2201 0 : binding_detail::AutoSequence<double> &arr = arg0;
2202 0 : JS::Rooted<JS::Value> temp(cx);
2203 : while (true) {
2204 : bool done;
2205 0 : if (!iter.next(&temp, &done)) {
2206 0 : return false;
2207 : }
2208 0 : if (done) {
2209 0 : break;
2210 : }
2211 0 : double* slotPtr = arr.AppendElement(mozilla::fallible);
2212 0 : if (!slotPtr) {
2213 0 : JS_ReportOutOfMemory(cx);
2214 0 : return false;
2215 : }
2216 0 : double& slot = *slotPtr;
2217 0 : if (!ValueToPrimitive<double, eDefault>(cx, temp, &slot)) {
2218 0 : return false;
2219 : }
2220 0 : }
2221 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
2222 0 : Maybe<JSAutoCompartment> ac;
2223 0 : if (objIsXray) {
2224 0 : obj = js::CheckedUnwrap(obj);
2225 0 : if (!obj) {
2226 0 : return false;
2227 : }
2228 0 : ac.emplace(cx, obj);
2229 0 : if (!JS_WrapObject(cx, &desiredProto)) {
2230 0 : return false;
2231 : }
2232 : }
2233 0 : binding_detail::FastErrorResult rv;
2234 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(mozilla::dom::DOMMatrix::Constructor(global, Constify(arg0), rv)));
2235 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2236 0 : return false;
2237 : }
2238 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2239 : static_assert(!IsPointer<decltype(result)>::value,
2240 : "NewObject implies that we need to keep the object alive with a strong reference.");
2241 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
2242 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2243 0 : return false;
2244 : }
2245 0 : return true;
2246 : } while (0);
2247 : }
2248 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
2249 0 : binding_detail::FakeString arg0;
2250 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
2251 0 : return false;
2252 : }
2253 0 : Maybe<JSAutoCompartment> ac;
2254 0 : if (objIsXray) {
2255 0 : obj = js::CheckedUnwrap(obj);
2256 0 : if (!obj) {
2257 0 : return false;
2258 : }
2259 0 : ac.emplace(cx, obj);
2260 0 : if (!JS_WrapObject(cx, &desiredProto)) {
2261 0 : return false;
2262 : }
2263 : }
2264 0 : binding_detail::FastErrorResult rv;
2265 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(mozilla::dom::DOMMatrix::Constructor(global, NonNullHelper(Constify(arg0)), rv)));
2266 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2267 0 : return false;
2268 : }
2269 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2270 : static_assert(!IsPointer<decltype(result)>::value,
2271 : "NewObject implies that we need to keep the object alive with a strong reference.");
2272 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
2273 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2274 0 : return false;
2275 : }
2276 0 : return true;
2277 : break;
2278 : }
2279 : default: {
2280 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrix");
2281 : break;
2282 : }
2283 : }
2284 : MOZ_CRASH("We have an always-returning default case");
2285 : return false;
2286 : }
2287 :
2288 : static const js::ClassOps sInterfaceObjectClassOps = {
2289 : nullptr, /* addProperty */
2290 : nullptr, /* delProperty */
2291 : nullptr, /* getProperty */
2292 : nullptr, /* setProperty */
2293 : nullptr, /* enumerate */
2294 : nullptr, /* newEnumerate */
2295 : nullptr, /* resolve */
2296 : nullptr, /* mayResolve */
2297 : nullptr, /* finalize */
2298 : _constructor, /* call */
2299 : nullptr, /* hasInstance */
2300 : _constructor, /* construct */
2301 : nullptr, /* trace */
2302 : };
2303 :
2304 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
2305 : {
2306 : "Function",
2307 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
2308 : &sInterfaceObjectClassOps,
2309 : JS_NULL_CLASS_SPEC,
2310 : JS_NULL_CLASS_EXT,
2311 : &sInterfaceObjectClassObjectOps
2312 : },
2313 : eInterface,
2314 : true,
2315 : prototypes::id::DOMMatrix,
2316 : PrototypeTraits<prototypes::id::DOMMatrix>::Depth,
2317 : sNativePropertyHooks,
2318 : "function DOMMatrix() {\n [native code]\n}",
2319 : DOMMatrixReadOnlyBinding::GetConstructorObject
2320 : };
2321 :
2322 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
2323 : {
2324 : "DOMMatrixPrototype",
2325 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
2326 : JS_NULL_CLASS_OPS,
2327 : JS_NULL_CLASS_SPEC,
2328 : JS_NULL_CLASS_EXT,
2329 : JS_NULL_OBJECT_OPS
2330 : },
2331 : eInterfacePrototype,
2332 : false,
2333 : prototypes::id::DOMMatrix,
2334 : PrototypeTraits<prototypes::id::DOMMatrix>::Depth,
2335 : sNativePropertyHooks,
2336 : "[object DOMMatrixPrototype]",
2337 : DOMMatrixReadOnlyBinding::GetProtoObject
2338 : };
2339 :
2340 : bool
2341 0 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
2342 : {
2343 : static bool sPrefValue;
2344 : static bool sPrefCacheSetUp = false;
2345 0 : if (!sPrefCacheSetUp) {
2346 0 : sPrefCacheSetUp = true;
2347 0 : Preferences::AddBoolVarCache(&sPrefValue, "layout.css.DOMMatrix.enabled");
2348 : }
2349 :
2350 0 : return sPrefValue;
2351 : }
2352 :
2353 : JSObject*
2354 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
2355 : {
2356 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
2357 : }
2358 :
2359 : static const js::ClassOps sClassOps = {
2360 : _addProperty, /* addProperty */
2361 : nullptr, /* delProperty */
2362 : nullptr, /* getProperty */
2363 : nullptr, /* setProperty */
2364 : nullptr, /* enumerate */
2365 : nullptr, /* newEnumerate */
2366 : nullptr, /* resolve */
2367 : nullptr, /* mayResolve */
2368 : _finalize, /* finalize */
2369 : nullptr, /* call */
2370 : nullptr, /* hasInstance */
2371 : nullptr, /* construct */
2372 : nullptr, /* trace */
2373 : };
2374 :
2375 : static const js::ClassExtension sClassExtension = {
2376 : nullptr, /* weakmapKeyDelegateOp */
2377 : _objectMoved /* objectMovedOp */
2378 : };
2379 :
2380 : static const DOMJSClass sClass = {
2381 : { "DOMMatrix",
2382 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
2383 : &sClassOps,
2384 : JS_NULL_CLASS_SPEC,
2385 : &sClassExtension,
2386 : JS_NULL_OBJECT_OPS
2387 : },
2388 : { prototypes::id::DOMMatrixReadOnly, prototypes::id::DOMMatrix, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
2389 : IsBaseOf<nsISupports, mozilla::dom::DOMMatrix >::value,
2390 : sNativePropertyHooks,
2391 : FindAssociatedGlobalForNative<mozilla::dom::DOMMatrix>::Get,
2392 : GetProtoObjectHandle,
2393 : GetCCParticipant<mozilla::dom::DOMMatrix>::Get()
2394 : };
2395 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
2396 : "Must have the right minimal number of reserved slots.");
2397 : static_assert(1 >= 1,
2398 : "Must have enough reserved slots.");
2399 :
2400 : const JSClass*
2401 0 : GetJSClass()
2402 : {
2403 0 : return sClass.ToJSClass();
2404 : }
2405 :
2406 : bool
2407 0 : Wrap(JSContext* aCx, mozilla::dom::DOMMatrix* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
2408 : {
2409 : MOZ_ASSERT(static_cast<mozilla::dom::DOMMatrix*>(aObject) ==
2410 : reinterpret_cast<mozilla::dom::DOMMatrix*>(aObject),
2411 : "Multiple inheritance for mozilla::dom::DOMMatrix is broken.");
2412 : MOZ_ASSERT(static_cast<mozilla::dom::DOMMatrixReadOnly*>(aObject) ==
2413 : reinterpret_cast<mozilla::dom::DOMMatrixReadOnly*>(aObject),
2414 : "Multiple inheritance for mozilla::dom::DOMMatrixReadOnly is broken.");
2415 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
2416 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
2417 0 : MOZ_ASSERT(!aCache->GetWrapper(),
2418 : "You should probably not be using Wrap() directly; use "
2419 : "GetOrCreateDOMReflector instead");
2420 :
2421 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
2422 : "nsISupports must be on our primary inheritance chain");
2423 :
2424 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
2425 0 : if (!global) {
2426 0 : return false;
2427 : }
2428 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
2429 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
2430 :
2431 : // That might have ended up wrapping us already, due to the wonders
2432 : // of XBL. Check for that, and bail out as needed.
2433 0 : aReflector.set(aCache->GetWrapper());
2434 0 : if (aReflector) {
2435 : #ifdef DEBUG
2436 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
2437 : #endif // DEBUG
2438 0 : return true;
2439 : }
2440 :
2441 0 : JSAutoCompartment ac(aCx, global);
2442 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
2443 0 : if (!canonicalProto) {
2444 0 : return false;
2445 : }
2446 0 : JS::Rooted<JSObject*> proto(aCx);
2447 0 : if (aGivenProto) {
2448 0 : proto = aGivenProto;
2449 : // Unfortunately, while aGivenProto was in the compartment of aCx
2450 : // coming in, we changed compartments to that of "parent" so may need
2451 : // to wrap the proto here.
2452 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
2453 0 : if (!JS_WrapObject(aCx, &proto)) {
2454 0 : return false;
2455 : }
2456 : }
2457 : } else {
2458 0 : proto = canonicalProto;
2459 : }
2460 :
2461 0 : BindingJSObjectCreator<mozilla::dom::DOMMatrix> creator(aCx);
2462 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
2463 0 : if (!aReflector) {
2464 0 : return false;
2465 : }
2466 :
2467 0 : aCache->SetWrapper(aReflector);
2468 0 : creator.InitializationSucceeded();
2469 :
2470 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
2471 : aCache->GetWrapperPreserveColor() == aReflector);
2472 : // If proto != canonicalProto, we have to preserve our wrapper;
2473 : // otherwise we won't be able to properly recreate it later, since
2474 : // we won't know what proto to use. Note that we don't check
2475 : // aGivenProto here, since it's entirely possible (and even
2476 : // somewhat common) to have a non-null aGivenProto which is the
2477 : // same as canonicalProto.
2478 0 : if (proto != canonicalProto) {
2479 0 : PreserveWrapper(aObject);
2480 : }
2481 :
2482 0 : return true;
2483 : }
2484 :
2485 : const NativePropertyHooks sNativePropertyHooks[] = { {
2486 : nullptr,
2487 : nullptr,
2488 : nullptr,
2489 : { sNativeProperties.Upcast(), nullptr },
2490 : prototypes::id::DOMMatrix,
2491 : constructors::id::DOMMatrix,
2492 : DOMMatrixReadOnlyBinding::sNativePropertyHooks,
2493 : &DefaultXrayExpandoObjectClass
2494 : } };
2495 :
2496 : void
2497 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
2498 : {
2499 0 : JS::Handle<JSObject*> parentProto(DOMMatrixReadOnlyBinding::GetProtoObjectHandle(aCx));
2500 0 : if (!parentProto) {
2501 0 : return;
2502 : }
2503 :
2504 0 : JS::Handle<JSObject*> constructorProto(DOMMatrixReadOnlyBinding::GetConstructorObjectHandle(aCx));
2505 0 : if (!constructorProto) {
2506 0 : return;
2507 : }
2508 :
2509 : static bool sIdsInited = false;
2510 0 : if (!sIdsInited && NS_IsMainThread()) {
2511 0 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
2512 0 : return;
2513 : }
2514 0 : sIdsInited = true;
2515 : }
2516 :
2517 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::DOMMatrix);
2518 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::DOMMatrix);
2519 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
2520 : &sPrototypeClass.mBase, protoCache,
2521 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
2522 : interfaceCache,
2523 : sNativeProperties.Upcast(),
2524 : nullptr,
2525 : "DOMMatrix", aDefineOnGlobal,
2526 : nullptr,
2527 0 : false);
2528 : }
2529 :
2530 : JS::Handle<JSObject*>
2531 0 : GetProtoObjectHandle(JSContext* aCx)
2532 : {
2533 : /* Get the interface prototype object for this class. This will create the
2534 : object as needed. */
2535 0 : bool aDefineOnGlobal = true;
2536 :
2537 : /* Make sure our global is sane. Hopefully we can remove this sometime */
2538 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
2539 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
2540 0 : return nullptr;
2541 : }
2542 :
2543 : /* Check to see whether the interface objects are already installed */
2544 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
2545 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::DOMMatrix)) {
2546 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
2547 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
2548 : }
2549 :
2550 : /*
2551 : * The object might _still_ be null, but that's OK.
2552 : *
2553 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
2554 : * traced by TraceProtoAndIfaceCache() and its contents are never
2555 : * changed after they have been set.
2556 : *
2557 : * Calling address() avoids the read read barrier that does gray
2558 : * unmarking, but it's not possible for the object to be gray here.
2559 : */
2560 :
2561 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::DOMMatrix);
2562 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
2563 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
2564 : }
2565 :
2566 : JSObject*
2567 0 : GetProtoObject(JSContext* aCx)
2568 : {
2569 0 : return GetProtoObjectHandle(aCx);
2570 : }
2571 :
2572 : JS::Handle<JSObject*>
2573 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
2574 : {
2575 : /* Get the interface object for this class. This will create the object as
2576 : needed. */
2577 :
2578 : /* Make sure our global is sane. Hopefully we can remove this sometime */
2579 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
2580 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
2581 0 : return nullptr;
2582 : }
2583 :
2584 : /* Check to see whether the interface objects are already installed */
2585 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
2586 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::DOMMatrix)) {
2587 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
2588 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
2589 : }
2590 :
2591 : /*
2592 : * The object might _still_ be null, but that's OK.
2593 : *
2594 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
2595 : * traced by TraceProtoAndIfaceCache() and its contents are never
2596 : * changed after they have been set.
2597 : *
2598 : * Calling address() avoids the read read barrier that does gray
2599 : * unmarking, but it's not possible for the object to be gray here.
2600 : */
2601 :
2602 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::DOMMatrix);
2603 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
2604 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
2605 : }
2606 :
2607 : JSObject*
2608 0 : GetConstructorObject(JSContext* aCx)
2609 : {
2610 0 : return GetConstructorObjectHandle(aCx);
2611 : }
2612 :
2613 : } // namespace DOMMatrixBinding
2614 :
2615 :
2616 :
2617 : namespace DOMMatrixReadOnlyBinding {
2618 :
2619 : static bool
2620 0 : get_a(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2621 : {
2622 0 : double result(self->A());
2623 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2624 0 : args.rval().set(JS_NumberValue(double(result)));
2625 0 : return true;
2626 : }
2627 :
2628 : static const JSJitInfo a_getterinfo = {
2629 : { (JSJitGetterOp)get_a },
2630 : { prototypes::id::DOMMatrixReadOnly },
2631 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2632 : JSJitInfo::Getter,
2633 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2634 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2635 : true, /* isInfallible. False in setters. */
2636 : false, /* isMovable. Not relevant for setters. */
2637 : false, /* isEliminatable. Not relevant for setters. */
2638 : false, /* isAlwaysInSlot. Only relevant for getters. */
2639 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2640 : false, /* isTypedMethod. Only relevant for methods. */
2641 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2642 : };
2643 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2644 : static_assert(0 < 1, "There is no slot for us");
2645 :
2646 : static bool
2647 0 : get_b(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2648 : {
2649 0 : double result(self->B());
2650 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2651 0 : args.rval().set(JS_NumberValue(double(result)));
2652 0 : return true;
2653 : }
2654 :
2655 : static const JSJitInfo b_getterinfo = {
2656 : { (JSJitGetterOp)get_b },
2657 : { prototypes::id::DOMMatrixReadOnly },
2658 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2659 : JSJitInfo::Getter,
2660 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2661 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2662 : true, /* isInfallible. False in setters. */
2663 : false, /* isMovable. Not relevant for setters. */
2664 : false, /* isEliminatable. Not relevant for setters. */
2665 : false, /* isAlwaysInSlot. Only relevant for getters. */
2666 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2667 : false, /* isTypedMethod. Only relevant for methods. */
2668 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2669 : };
2670 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2671 : static_assert(0 < 1, "There is no slot for us");
2672 :
2673 : static bool
2674 0 : get_c(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2675 : {
2676 0 : double result(self->C());
2677 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2678 0 : args.rval().set(JS_NumberValue(double(result)));
2679 0 : return true;
2680 : }
2681 :
2682 : static const JSJitInfo c_getterinfo = {
2683 : { (JSJitGetterOp)get_c },
2684 : { prototypes::id::DOMMatrixReadOnly },
2685 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2686 : JSJitInfo::Getter,
2687 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2688 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2689 : true, /* isInfallible. False in setters. */
2690 : false, /* isMovable. Not relevant for setters. */
2691 : false, /* isEliminatable. Not relevant for setters. */
2692 : false, /* isAlwaysInSlot. Only relevant for getters. */
2693 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2694 : false, /* isTypedMethod. Only relevant for methods. */
2695 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2696 : };
2697 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2698 : static_assert(0 < 1, "There is no slot for us");
2699 :
2700 : static bool
2701 0 : get_d(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2702 : {
2703 0 : double result(self->D());
2704 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2705 0 : args.rval().set(JS_NumberValue(double(result)));
2706 0 : return true;
2707 : }
2708 :
2709 : static const JSJitInfo d_getterinfo = {
2710 : { (JSJitGetterOp)get_d },
2711 : { prototypes::id::DOMMatrixReadOnly },
2712 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2713 : JSJitInfo::Getter,
2714 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2715 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2716 : true, /* isInfallible. False in setters. */
2717 : false, /* isMovable. Not relevant for setters. */
2718 : false, /* isEliminatable. Not relevant for setters. */
2719 : false, /* isAlwaysInSlot. Only relevant for getters. */
2720 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2721 : false, /* isTypedMethod. Only relevant for methods. */
2722 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2723 : };
2724 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2725 : static_assert(0 < 1, "There is no slot for us");
2726 :
2727 : static bool
2728 0 : get_e(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2729 : {
2730 0 : double result(self->E());
2731 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2732 0 : args.rval().set(JS_NumberValue(double(result)));
2733 0 : return true;
2734 : }
2735 :
2736 : static const JSJitInfo e_getterinfo = {
2737 : { (JSJitGetterOp)get_e },
2738 : { prototypes::id::DOMMatrixReadOnly },
2739 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2740 : JSJitInfo::Getter,
2741 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2742 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2743 : true, /* isInfallible. False in setters. */
2744 : false, /* isMovable. Not relevant for setters. */
2745 : false, /* isEliminatable. Not relevant for setters. */
2746 : false, /* isAlwaysInSlot. Only relevant for getters. */
2747 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2748 : false, /* isTypedMethod. Only relevant for methods. */
2749 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2750 : };
2751 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2752 : static_assert(0 < 1, "There is no slot for us");
2753 :
2754 : static bool
2755 0 : get_f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2756 : {
2757 0 : double result(self->F());
2758 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2759 0 : args.rval().set(JS_NumberValue(double(result)));
2760 0 : return true;
2761 : }
2762 :
2763 : static const JSJitInfo f_getterinfo = {
2764 : { (JSJitGetterOp)get_f },
2765 : { prototypes::id::DOMMatrixReadOnly },
2766 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2767 : JSJitInfo::Getter,
2768 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2769 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2770 : true, /* isInfallible. False in setters. */
2771 : false, /* isMovable. Not relevant for setters. */
2772 : false, /* isEliminatable. Not relevant for setters. */
2773 : false, /* isAlwaysInSlot. Only relevant for getters. */
2774 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2775 : false, /* isTypedMethod. Only relevant for methods. */
2776 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2777 : };
2778 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2779 : static_assert(0 < 1, "There is no slot for us");
2780 :
2781 : static bool
2782 0 : get_m11(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2783 : {
2784 0 : double result(self->M11());
2785 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2786 0 : args.rval().set(JS_NumberValue(double(result)));
2787 0 : return true;
2788 : }
2789 :
2790 : static const JSJitInfo m11_getterinfo = {
2791 : { (JSJitGetterOp)get_m11 },
2792 : { prototypes::id::DOMMatrixReadOnly },
2793 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2794 : JSJitInfo::Getter,
2795 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2796 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2797 : true, /* isInfallible. False in setters. */
2798 : false, /* isMovable. Not relevant for setters. */
2799 : false, /* isEliminatable. Not relevant for setters. */
2800 : false, /* isAlwaysInSlot. Only relevant for getters. */
2801 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2802 : false, /* isTypedMethod. Only relevant for methods. */
2803 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2804 : };
2805 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2806 : static_assert(0 < 1, "There is no slot for us");
2807 :
2808 : static bool
2809 0 : get_m12(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2810 : {
2811 0 : double result(self->M12());
2812 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2813 0 : args.rval().set(JS_NumberValue(double(result)));
2814 0 : return true;
2815 : }
2816 :
2817 : static const JSJitInfo m12_getterinfo = {
2818 : { (JSJitGetterOp)get_m12 },
2819 : { prototypes::id::DOMMatrixReadOnly },
2820 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2821 : JSJitInfo::Getter,
2822 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2823 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2824 : true, /* isInfallible. False in setters. */
2825 : false, /* isMovable. Not relevant for setters. */
2826 : false, /* isEliminatable. Not relevant for setters. */
2827 : false, /* isAlwaysInSlot. Only relevant for getters. */
2828 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2829 : false, /* isTypedMethod. Only relevant for methods. */
2830 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2831 : };
2832 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2833 : static_assert(0 < 1, "There is no slot for us");
2834 :
2835 : static bool
2836 0 : get_m13(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2837 : {
2838 0 : double result(self->M13());
2839 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2840 0 : args.rval().set(JS_NumberValue(double(result)));
2841 0 : return true;
2842 : }
2843 :
2844 : static const JSJitInfo m13_getterinfo = {
2845 : { (JSJitGetterOp)get_m13 },
2846 : { prototypes::id::DOMMatrixReadOnly },
2847 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2848 : JSJitInfo::Getter,
2849 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2850 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2851 : true, /* isInfallible. False in setters. */
2852 : false, /* isMovable. Not relevant for setters. */
2853 : false, /* isEliminatable. Not relevant for setters. */
2854 : false, /* isAlwaysInSlot. Only relevant for getters. */
2855 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2856 : false, /* isTypedMethod. Only relevant for methods. */
2857 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2858 : };
2859 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2860 : static_assert(0 < 1, "There is no slot for us");
2861 :
2862 : static bool
2863 0 : get_m14(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2864 : {
2865 0 : double result(self->M14());
2866 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2867 0 : args.rval().set(JS_NumberValue(double(result)));
2868 0 : return true;
2869 : }
2870 :
2871 : static const JSJitInfo m14_getterinfo = {
2872 : { (JSJitGetterOp)get_m14 },
2873 : { prototypes::id::DOMMatrixReadOnly },
2874 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2875 : JSJitInfo::Getter,
2876 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2877 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2878 : true, /* isInfallible. False in setters. */
2879 : false, /* isMovable. Not relevant for setters. */
2880 : false, /* isEliminatable. Not relevant for setters. */
2881 : false, /* isAlwaysInSlot. Only relevant for getters. */
2882 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2883 : false, /* isTypedMethod. Only relevant for methods. */
2884 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2885 : };
2886 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2887 : static_assert(0 < 1, "There is no slot for us");
2888 :
2889 : static bool
2890 0 : get_m21(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2891 : {
2892 0 : double result(self->M21());
2893 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2894 0 : args.rval().set(JS_NumberValue(double(result)));
2895 0 : return true;
2896 : }
2897 :
2898 : static const JSJitInfo m21_getterinfo = {
2899 : { (JSJitGetterOp)get_m21 },
2900 : { prototypes::id::DOMMatrixReadOnly },
2901 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2902 : JSJitInfo::Getter,
2903 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2904 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2905 : true, /* isInfallible. False in setters. */
2906 : false, /* isMovable. Not relevant for setters. */
2907 : false, /* isEliminatable. Not relevant for setters. */
2908 : false, /* isAlwaysInSlot. Only relevant for getters. */
2909 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2910 : false, /* isTypedMethod. Only relevant for methods. */
2911 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2912 : };
2913 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2914 : static_assert(0 < 1, "There is no slot for us");
2915 :
2916 : static bool
2917 0 : get_m22(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2918 : {
2919 0 : double result(self->M22());
2920 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2921 0 : args.rval().set(JS_NumberValue(double(result)));
2922 0 : return true;
2923 : }
2924 :
2925 : static const JSJitInfo m22_getterinfo = {
2926 : { (JSJitGetterOp)get_m22 },
2927 : { prototypes::id::DOMMatrixReadOnly },
2928 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2929 : JSJitInfo::Getter,
2930 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2931 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2932 : true, /* isInfallible. False in setters. */
2933 : false, /* isMovable. Not relevant for setters. */
2934 : false, /* isEliminatable. Not relevant for setters. */
2935 : false, /* isAlwaysInSlot. Only relevant for getters. */
2936 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2937 : false, /* isTypedMethod. Only relevant for methods. */
2938 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2939 : };
2940 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2941 : static_assert(0 < 1, "There is no slot for us");
2942 :
2943 : static bool
2944 0 : get_m23(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2945 : {
2946 0 : double result(self->M23());
2947 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2948 0 : args.rval().set(JS_NumberValue(double(result)));
2949 0 : return true;
2950 : }
2951 :
2952 : static const JSJitInfo m23_getterinfo = {
2953 : { (JSJitGetterOp)get_m23 },
2954 : { prototypes::id::DOMMatrixReadOnly },
2955 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2956 : JSJitInfo::Getter,
2957 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2958 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2959 : true, /* isInfallible. False in setters. */
2960 : false, /* isMovable. Not relevant for setters. */
2961 : false, /* isEliminatable. Not relevant for setters. */
2962 : false, /* isAlwaysInSlot. Only relevant for getters. */
2963 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2964 : false, /* isTypedMethod. Only relevant for methods. */
2965 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2966 : };
2967 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2968 : static_assert(0 < 1, "There is no slot for us");
2969 :
2970 : static bool
2971 0 : get_m24(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2972 : {
2973 0 : double result(self->M24());
2974 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2975 0 : args.rval().set(JS_NumberValue(double(result)));
2976 0 : return true;
2977 : }
2978 :
2979 : static const JSJitInfo m24_getterinfo = {
2980 : { (JSJitGetterOp)get_m24 },
2981 : { prototypes::id::DOMMatrixReadOnly },
2982 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
2983 : JSJitInfo::Getter,
2984 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2985 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2986 : true, /* isInfallible. False in setters. */
2987 : false, /* isMovable. Not relevant for setters. */
2988 : false, /* isEliminatable. Not relevant for setters. */
2989 : false, /* isAlwaysInSlot. Only relevant for getters. */
2990 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2991 : false, /* isTypedMethod. Only relevant for methods. */
2992 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2993 : };
2994 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2995 : static_assert(0 < 1, "There is no slot for us");
2996 :
2997 : static bool
2998 0 : get_m31(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
2999 : {
3000 0 : double result(self->M31());
3001 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3002 0 : args.rval().set(JS_NumberValue(double(result)));
3003 0 : return true;
3004 : }
3005 :
3006 : static const JSJitInfo m31_getterinfo = {
3007 : { (JSJitGetterOp)get_m31 },
3008 : { prototypes::id::DOMMatrixReadOnly },
3009 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3010 : JSJitInfo::Getter,
3011 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3012 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3013 : true, /* isInfallible. False in setters. */
3014 : false, /* isMovable. Not relevant for setters. */
3015 : false, /* isEliminatable. Not relevant for setters. */
3016 : false, /* isAlwaysInSlot. Only relevant for getters. */
3017 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3018 : false, /* isTypedMethod. Only relevant for methods. */
3019 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3020 : };
3021 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3022 : static_assert(0 < 1, "There is no slot for us");
3023 :
3024 : static bool
3025 0 : get_m32(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3026 : {
3027 0 : double result(self->M32());
3028 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3029 0 : args.rval().set(JS_NumberValue(double(result)));
3030 0 : return true;
3031 : }
3032 :
3033 : static const JSJitInfo m32_getterinfo = {
3034 : { (JSJitGetterOp)get_m32 },
3035 : { prototypes::id::DOMMatrixReadOnly },
3036 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3037 : JSJitInfo::Getter,
3038 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3039 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3040 : true, /* isInfallible. False in setters. */
3041 : false, /* isMovable. Not relevant for setters. */
3042 : false, /* isEliminatable. Not relevant for setters. */
3043 : false, /* isAlwaysInSlot. Only relevant for getters. */
3044 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3045 : false, /* isTypedMethod. Only relevant for methods. */
3046 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3047 : };
3048 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3049 : static_assert(0 < 1, "There is no slot for us");
3050 :
3051 : static bool
3052 0 : get_m33(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3053 : {
3054 0 : double result(self->M33());
3055 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3056 0 : args.rval().set(JS_NumberValue(double(result)));
3057 0 : return true;
3058 : }
3059 :
3060 : static const JSJitInfo m33_getterinfo = {
3061 : { (JSJitGetterOp)get_m33 },
3062 : { prototypes::id::DOMMatrixReadOnly },
3063 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3064 : JSJitInfo::Getter,
3065 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3066 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3067 : true, /* isInfallible. False in setters. */
3068 : false, /* isMovable. Not relevant for setters. */
3069 : false, /* isEliminatable. Not relevant for setters. */
3070 : false, /* isAlwaysInSlot. Only relevant for getters. */
3071 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3072 : false, /* isTypedMethod. Only relevant for methods. */
3073 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3074 : };
3075 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3076 : static_assert(0 < 1, "There is no slot for us");
3077 :
3078 : static bool
3079 0 : get_m34(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3080 : {
3081 0 : double result(self->M34());
3082 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3083 0 : args.rval().set(JS_NumberValue(double(result)));
3084 0 : return true;
3085 : }
3086 :
3087 : static const JSJitInfo m34_getterinfo = {
3088 : { (JSJitGetterOp)get_m34 },
3089 : { prototypes::id::DOMMatrixReadOnly },
3090 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3091 : JSJitInfo::Getter,
3092 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3093 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3094 : true, /* isInfallible. False in setters. */
3095 : false, /* isMovable. Not relevant for setters. */
3096 : false, /* isEliminatable. Not relevant for setters. */
3097 : false, /* isAlwaysInSlot. Only relevant for getters. */
3098 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3099 : false, /* isTypedMethod. Only relevant for methods. */
3100 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3101 : };
3102 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3103 : static_assert(0 < 1, "There is no slot for us");
3104 :
3105 : static bool
3106 0 : get_m41(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3107 : {
3108 0 : double result(self->M41());
3109 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3110 0 : args.rval().set(JS_NumberValue(double(result)));
3111 0 : return true;
3112 : }
3113 :
3114 : static const JSJitInfo m41_getterinfo = {
3115 : { (JSJitGetterOp)get_m41 },
3116 : { prototypes::id::DOMMatrixReadOnly },
3117 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3118 : JSJitInfo::Getter,
3119 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3120 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3121 : true, /* isInfallible. False in setters. */
3122 : false, /* isMovable. Not relevant for setters. */
3123 : false, /* isEliminatable. Not relevant for setters. */
3124 : false, /* isAlwaysInSlot. Only relevant for getters. */
3125 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3126 : false, /* isTypedMethod. Only relevant for methods. */
3127 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3128 : };
3129 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3130 : static_assert(0 < 1, "There is no slot for us");
3131 :
3132 : static bool
3133 0 : get_m42(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3134 : {
3135 0 : double result(self->M42());
3136 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3137 0 : args.rval().set(JS_NumberValue(double(result)));
3138 0 : return true;
3139 : }
3140 :
3141 : static const JSJitInfo m42_getterinfo = {
3142 : { (JSJitGetterOp)get_m42 },
3143 : { prototypes::id::DOMMatrixReadOnly },
3144 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3145 : JSJitInfo::Getter,
3146 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3147 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3148 : true, /* isInfallible. False in setters. */
3149 : false, /* isMovable. Not relevant for setters. */
3150 : false, /* isEliminatable. Not relevant for setters. */
3151 : false, /* isAlwaysInSlot. Only relevant for getters. */
3152 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3153 : false, /* isTypedMethod. Only relevant for methods. */
3154 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3155 : };
3156 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3157 : static_assert(0 < 1, "There is no slot for us");
3158 :
3159 : static bool
3160 0 : get_m43(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3161 : {
3162 0 : double result(self->M43());
3163 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3164 0 : args.rval().set(JS_NumberValue(double(result)));
3165 0 : return true;
3166 : }
3167 :
3168 : static const JSJitInfo m43_getterinfo = {
3169 : { (JSJitGetterOp)get_m43 },
3170 : { prototypes::id::DOMMatrixReadOnly },
3171 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3172 : JSJitInfo::Getter,
3173 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3174 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3175 : true, /* isInfallible. False in setters. */
3176 : false, /* isMovable. Not relevant for setters. */
3177 : false, /* isEliminatable. Not relevant for setters. */
3178 : false, /* isAlwaysInSlot. Only relevant for getters. */
3179 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3180 : false, /* isTypedMethod. Only relevant for methods. */
3181 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3182 : };
3183 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3184 : static_assert(0 < 1, "There is no slot for us");
3185 :
3186 : static bool
3187 0 : get_m44(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3188 : {
3189 0 : double result(self->M44());
3190 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3191 0 : args.rval().set(JS_NumberValue(double(result)));
3192 0 : return true;
3193 : }
3194 :
3195 : static const JSJitInfo m44_getterinfo = {
3196 : { (JSJitGetterOp)get_m44 },
3197 : { prototypes::id::DOMMatrixReadOnly },
3198 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3199 : JSJitInfo::Getter,
3200 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3201 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3202 : true, /* isInfallible. False in setters. */
3203 : false, /* isMovable. Not relevant for setters. */
3204 : false, /* isEliminatable. Not relevant for setters. */
3205 : false, /* isAlwaysInSlot. Only relevant for getters. */
3206 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3207 : false, /* isTypedMethod. Only relevant for methods. */
3208 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3209 : };
3210 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3211 : static_assert(0 < 1, "There is no slot for us");
3212 :
3213 : static bool
3214 0 : translate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3215 : {
3216 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3217 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.translate");
3218 : }
3219 : double arg0;
3220 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3221 0 : return false;
3222 : }
3223 : double arg1;
3224 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3225 0 : return false;
3226 : }
3227 : double arg2;
3228 0 : if (args.hasDefined(2)) {
3229 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
3230 0 : return false;
3231 : }
3232 : } else {
3233 0 : arg2 = 0.0;
3234 : }
3235 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Translate(arg0, arg1, arg2)));
3236 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3237 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3238 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3239 0 : return false;
3240 : }
3241 0 : return true;
3242 : }
3243 :
3244 : static const JSJitInfo translate_methodinfo = {
3245 : { (JSJitGetterOp)translate },
3246 : { prototypes::id::DOMMatrixReadOnly },
3247 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3248 : JSJitInfo::Method,
3249 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3250 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3251 : false, /* isInfallible. False in setters. */
3252 : false, /* isMovable. Not relevant for setters. */
3253 : false, /* isEliminatable. Not relevant for setters. */
3254 : false, /* isAlwaysInSlot. Only relevant for getters. */
3255 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3256 : false, /* isTypedMethod. Only relevant for methods. */
3257 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3258 : };
3259 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3260 : static_assert(0 < 1, "There is no slot for us");
3261 :
3262 : static bool
3263 0 : scale(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3264 : {
3265 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3266 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.scale");
3267 : }
3268 : double arg0;
3269 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3270 0 : return false;
3271 : }
3272 : double arg1;
3273 0 : if (args.hasDefined(1)) {
3274 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3275 0 : return false;
3276 : }
3277 : } else {
3278 0 : arg1 = 0.0;
3279 : }
3280 : double arg2;
3281 0 : if (args.hasDefined(2)) {
3282 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
3283 0 : return false;
3284 : }
3285 : } else {
3286 0 : arg2 = 0.0;
3287 : }
3288 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Scale(arg0, arg1, arg2)));
3289 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3290 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3291 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3292 0 : return false;
3293 : }
3294 0 : return true;
3295 : }
3296 :
3297 : static const JSJitInfo scale_methodinfo = {
3298 : { (JSJitGetterOp)scale },
3299 : { prototypes::id::DOMMatrixReadOnly },
3300 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3301 : JSJitInfo::Method,
3302 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3303 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3304 : false, /* isInfallible. False in setters. */
3305 : false, /* isMovable. Not relevant for setters. */
3306 : false, /* isEliminatable. Not relevant for setters. */
3307 : false, /* isAlwaysInSlot. Only relevant for getters. */
3308 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3309 : false, /* isTypedMethod. Only relevant for methods. */
3310 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3311 : };
3312 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3313 : static_assert(0 < 1, "There is no slot for us");
3314 :
3315 : static bool
3316 0 : scale3d(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3317 : {
3318 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3319 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.scale3d");
3320 : }
3321 : double arg0;
3322 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3323 0 : return false;
3324 : }
3325 : double arg1;
3326 0 : if (args.hasDefined(1)) {
3327 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3328 0 : return false;
3329 : }
3330 : } else {
3331 0 : arg1 = 0.0;
3332 : }
3333 : double arg2;
3334 0 : if (args.hasDefined(2)) {
3335 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
3336 0 : return false;
3337 : }
3338 : } else {
3339 0 : arg2 = 0.0;
3340 : }
3341 : double arg3;
3342 0 : if (args.hasDefined(3)) {
3343 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[3], &arg3)) {
3344 0 : return false;
3345 : }
3346 : } else {
3347 0 : arg3 = 0.0;
3348 : }
3349 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Scale3d(arg0, arg1, arg2, arg3)));
3350 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3351 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3352 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3353 0 : return false;
3354 : }
3355 0 : return true;
3356 : }
3357 :
3358 : static const JSJitInfo scale3d_methodinfo = {
3359 : { (JSJitGetterOp)scale3d },
3360 : { prototypes::id::DOMMatrixReadOnly },
3361 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3362 : JSJitInfo::Method,
3363 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3364 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3365 : false, /* isInfallible. False in setters. */
3366 : false, /* isMovable. Not relevant for setters. */
3367 : false, /* isEliminatable. Not relevant for setters. */
3368 : false, /* isAlwaysInSlot. Only relevant for getters. */
3369 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3370 : false, /* isTypedMethod. Only relevant for methods. */
3371 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3372 : };
3373 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3374 : static_assert(0 < 1, "There is no slot for us");
3375 :
3376 : static bool
3377 0 : scaleNonUniform(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3378 : {
3379 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3380 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.scaleNonUniform");
3381 : }
3382 : double arg0;
3383 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3384 0 : return false;
3385 : }
3386 : double arg1;
3387 0 : if (args.hasDefined(1)) {
3388 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3389 0 : return false;
3390 : }
3391 : } else {
3392 0 : arg1 = 1.0;
3393 : }
3394 : double arg2;
3395 0 : if (args.hasDefined(2)) {
3396 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
3397 0 : return false;
3398 : }
3399 : } else {
3400 0 : arg2 = 1.0;
3401 : }
3402 : double arg3;
3403 0 : if (args.hasDefined(3)) {
3404 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[3], &arg3)) {
3405 0 : return false;
3406 : }
3407 : } else {
3408 0 : arg3 = 0.0;
3409 : }
3410 : double arg4;
3411 0 : if (args.hasDefined(4)) {
3412 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[4], &arg4)) {
3413 0 : return false;
3414 : }
3415 : } else {
3416 0 : arg4 = 0.0;
3417 : }
3418 : double arg5;
3419 0 : if (args.hasDefined(5)) {
3420 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[5], &arg5)) {
3421 0 : return false;
3422 : }
3423 : } else {
3424 0 : arg5 = 0.0;
3425 : }
3426 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->ScaleNonUniform(arg0, arg1, arg2, arg3, arg4, arg5)));
3427 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3428 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3429 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3430 0 : return false;
3431 : }
3432 0 : return true;
3433 : }
3434 :
3435 : static const JSJitInfo scaleNonUniform_methodinfo = {
3436 : { (JSJitGetterOp)scaleNonUniform },
3437 : { prototypes::id::DOMMatrixReadOnly },
3438 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3439 : JSJitInfo::Method,
3440 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3441 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3442 : false, /* isInfallible. False in setters. */
3443 : false, /* isMovable. Not relevant for setters. */
3444 : false, /* isEliminatable. Not relevant for setters. */
3445 : false, /* isAlwaysInSlot. Only relevant for getters. */
3446 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3447 : false, /* isTypedMethod. Only relevant for methods. */
3448 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3449 : };
3450 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3451 : static_assert(0 < 1, "There is no slot for us");
3452 :
3453 : static bool
3454 0 : rotate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3455 : {
3456 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3457 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.rotate");
3458 : }
3459 : double arg0;
3460 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3461 0 : return false;
3462 : }
3463 : double arg1;
3464 0 : if (args.hasDefined(1)) {
3465 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3466 0 : return false;
3467 : }
3468 : } else {
3469 0 : arg1 = 0.0;
3470 : }
3471 : double arg2;
3472 0 : if (args.hasDefined(2)) {
3473 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
3474 0 : return false;
3475 : }
3476 : } else {
3477 0 : arg2 = 0.0;
3478 : }
3479 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Rotate(arg0, arg1, arg2)));
3480 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3481 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3482 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3483 0 : return false;
3484 : }
3485 0 : return true;
3486 : }
3487 :
3488 : static const JSJitInfo rotate_methodinfo = {
3489 : { (JSJitGetterOp)rotate },
3490 : { prototypes::id::DOMMatrixReadOnly },
3491 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3492 : JSJitInfo::Method,
3493 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3494 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3495 : false, /* isInfallible. False in setters. */
3496 : false, /* isMovable. Not relevant for setters. */
3497 : false, /* isEliminatable. Not relevant for setters. */
3498 : false, /* isAlwaysInSlot. Only relevant for getters. */
3499 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3500 : false, /* isTypedMethod. Only relevant for methods. */
3501 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3502 : };
3503 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3504 : static_assert(0 < 1, "There is no slot for us");
3505 :
3506 : static bool
3507 0 : rotateFromVector(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3508 : {
3509 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3510 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.rotateFromVector");
3511 : }
3512 : double arg0;
3513 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3514 0 : return false;
3515 : }
3516 : double arg1;
3517 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3518 0 : return false;
3519 : }
3520 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->RotateFromVector(arg0, arg1)));
3521 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3522 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3523 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3524 0 : return false;
3525 : }
3526 0 : return true;
3527 : }
3528 :
3529 : static const JSJitInfo rotateFromVector_methodinfo = {
3530 : { (JSJitGetterOp)rotateFromVector },
3531 : { prototypes::id::DOMMatrixReadOnly },
3532 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3533 : JSJitInfo::Method,
3534 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3535 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3536 : false, /* isInfallible. False in setters. */
3537 : false, /* isMovable. Not relevant for setters. */
3538 : false, /* isEliminatable. Not relevant for setters. */
3539 : false, /* isAlwaysInSlot. Only relevant for getters. */
3540 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3541 : false, /* isTypedMethod. Only relevant for methods. */
3542 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3543 : };
3544 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3545 : static_assert(0 < 1, "There is no slot for us");
3546 :
3547 : static bool
3548 0 : rotateAxisAngle(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3549 : {
3550 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
3551 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.rotateAxisAngle");
3552 : }
3553 : double arg0;
3554 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3555 0 : return false;
3556 : }
3557 : double arg1;
3558 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[1], &arg1)) {
3559 0 : return false;
3560 : }
3561 : double arg2;
3562 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[2], &arg2)) {
3563 0 : return false;
3564 : }
3565 : double arg3;
3566 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[3], &arg3)) {
3567 0 : return false;
3568 : }
3569 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->RotateAxisAngle(arg0, arg1, arg2, arg3)));
3570 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3571 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3572 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3573 0 : return false;
3574 : }
3575 0 : return true;
3576 : }
3577 :
3578 : static const JSJitInfo rotateAxisAngle_methodinfo = {
3579 : { (JSJitGetterOp)rotateAxisAngle },
3580 : { prototypes::id::DOMMatrixReadOnly },
3581 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3582 : JSJitInfo::Method,
3583 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3584 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3585 : false, /* isInfallible. False in setters. */
3586 : false, /* isMovable. Not relevant for setters. */
3587 : false, /* isEliminatable. Not relevant for setters. */
3588 : false, /* isAlwaysInSlot. Only relevant for getters. */
3589 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3590 : false, /* isTypedMethod. Only relevant for methods. */
3591 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3592 : };
3593 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3594 : static_assert(0 < 1, "There is no slot for us");
3595 :
3596 : static bool
3597 0 : skewX(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3598 : {
3599 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3600 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.skewX");
3601 : }
3602 : double arg0;
3603 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3604 0 : return false;
3605 : }
3606 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->SkewX(arg0)));
3607 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3608 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3609 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3610 0 : return false;
3611 : }
3612 0 : return true;
3613 : }
3614 :
3615 : static const JSJitInfo skewX_methodinfo = {
3616 : { (JSJitGetterOp)skewX },
3617 : { prototypes::id::DOMMatrixReadOnly },
3618 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3619 : JSJitInfo::Method,
3620 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3621 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3622 : false, /* isInfallible. False in setters. */
3623 : false, /* isMovable. Not relevant for setters. */
3624 : false, /* isEliminatable. Not relevant for setters. */
3625 : false, /* isAlwaysInSlot. Only relevant for getters. */
3626 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3627 : false, /* isTypedMethod. Only relevant for methods. */
3628 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3629 : };
3630 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3631 : static_assert(0 < 1, "There is no slot for us");
3632 :
3633 : static bool
3634 0 : skewY(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3635 : {
3636 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3637 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.skewY");
3638 : }
3639 : double arg0;
3640 0 : if (!ValueToPrimitive<double, eDefault>(cx, args[0], &arg0)) {
3641 0 : return false;
3642 : }
3643 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->SkewY(arg0)));
3644 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3645 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3646 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3647 0 : return false;
3648 : }
3649 0 : return true;
3650 : }
3651 :
3652 : static const JSJitInfo skewY_methodinfo = {
3653 : { (JSJitGetterOp)skewY },
3654 : { prototypes::id::DOMMatrixReadOnly },
3655 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3656 : JSJitInfo::Method,
3657 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3658 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3659 : false, /* isInfallible. False in setters. */
3660 : false, /* isMovable. Not relevant for setters. */
3661 : false, /* isEliminatable. Not relevant for setters. */
3662 : false, /* isAlwaysInSlot. Only relevant for getters. */
3663 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3664 : false, /* isTypedMethod. Only relevant for methods. */
3665 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3666 : };
3667 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3668 : static_assert(0 < 1, "There is no slot for us");
3669 :
3670 : static bool
3671 0 : multiply(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3672 : {
3673 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3674 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "DOMMatrixReadOnly.multiply");
3675 : }
3676 0 : NonNull<mozilla::dom::DOMMatrix> arg0;
3677 0 : if (args[0].isObject()) {
3678 : {
3679 0 : nsresult rv = UnwrapObject<prototypes::id::DOMMatrix, mozilla::dom::DOMMatrix>(args[0], arg0);
3680 0 : if (NS_FAILED(rv)) {
3681 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of DOMMatrixReadOnly.multiply", "DOMMatrix");
3682 0 : return false;
3683 : }
3684 : }
3685 : } else {
3686 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of DOMMatrixReadOnly.multiply");
3687 0 : return false;
3688 : }
3689 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Multiply(NonNullHelper(arg0))));
3690 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3691 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3692 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3693 0 : return false;
3694 : }
3695 0 : return true;
3696 : }
3697 :
3698 : static const JSJitInfo multiply_methodinfo = {
3699 : { (JSJitGetterOp)multiply },
3700 : { prototypes::id::DOMMatrixReadOnly },
3701 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3702 : JSJitInfo::Method,
3703 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3704 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3705 : false, /* isInfallible. False in setters. */
3706 : false, /* isMovable. Not relevant for setters. */
3707 : false, /* isEliminatable. Not relevant for setters. */
3708 : false, /* isAlwaysInSlot. Only relevant for getters. */
3709 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3710 : false, /* isTypedMethod. Only relevant for methods. */
3711 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3712 : };
3713 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3714 : static_assert(0 < 1, "There is no slot for us");
3715 :
3716 : static bool
3717 0 : flipX(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3718 : {
3719 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->FlipX()));
3720 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3721 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3722 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3723 0 : return false;
3724 : }
3725 0 : return true;
3726 : }
3727 :
3728 : static const JSJitInfo flipX_methodinfo = {
3729 : { (JSJitGetterOp)flipX },
3730 : { prototypes::id::DOMMatrixReadOnly },
3731 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3732 : JSJitInfo::Method,
3733 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3734 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3735 : false, /* isInfallible. False in setters. */
3736 : false, /* isMovable. Not relevant for setters. */
3737 : false, /* isEliminatable. Not relevant for setters. */
3738 : false, /* isAlwaysInSlot. Only relevant for getters. */
3739 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3740 : false, /* isTypedMethod. Only relevant for methods. */
3741 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3742 : };
3743 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3744 : static_assert(0 < 1, "There is no slot for us");
3745 :
3746 : static bool
3747 0 : flipY(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3748 : {
3749 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->FlipY()));
3750 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3751 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3752 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3753 0 : return false;
3754 : }
3755 0 : return true;
3756 : }
3757 :
3758 : static const JSJitInfo flipY_methodinfo = {
3759 : { (JSJitGetterOp)flipY },
3760 : { prototypes::id::DOMMatrixReadOnly },
3761 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3762 : JSJitInfo::Method,
3763 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3764 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3765 : false, /* isInfallible. False in setters. */
3766 : false, /* isMovable. Not relevant for setters. */
3767 : false, /* isEliminatable. Not relevant for setters. */
3768 : false, /* isAlwaysInSlot. Only relevant for getters. */
3769 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3770 : false, /* isTypedMethod. Only relevant for methods. */
3771 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3772 : };
3773 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3774 : static_assert(0 < 1, "There is no slot for us");
3775 :
3776 : static bool
3777 0 : inverse(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3778 : {
3779 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMMatrix>(self->Inverse()));
3780 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3781 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3782 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3783 0 : return false;
3784 : }
3785 0 : return true;
3786 : }
3787 :
3788 : static const JSJitInfo inverse_methodinfo = {
3789 : { (JSJitGetterOp)inverse },
3790 : { prototypes::id::DOMMatrixReadOnly },
3791 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3792 : JSJitInfo::Method,
3793 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3794 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3795 : false, /* isInfallible. False in setters. */
3796 : false, /* isMovable. Not relevant for setters. */
3797 : false, /* isEliminatable. Not relevant for setters. */
3798 : false, /* isAlwaysInSlot. Only relevant for getters. */
3799 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3800 : false, /* isTypedMethod. Only relevant for methods. */
3801 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3802 : };
3803 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3804 : static_assert(0 < 1, "There is no slot for us");
3805 :
3806 : static bool
3807 0 : get_is2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3808 : {
3809 0 : bool result(self->Is2D());
3810 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3811 0 : args.rval().setBoolean(result);
3812 0 : return true;
3813 : }
3814 :
3815 : static const JSJitInfo is2D_getterinfo = {
3816 : { (JSJitGetterOp)get_is2D },
3817 : { prototypes::id::DOMMatrixReadOnly },
3818 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3819 : JSJitInfo::Getter,
3820 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3821 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
3822 : true, /* isInfallible. False in setters. */
3823 : false, /* isMovable. Not relevant for setters. */
3824 : false, /* isEliminatable. Not relevant for setters. */
3825 : false, /* isAlwaysInSlot. Only relevant for getters. */
3826 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3827 : false, /* isTypedMethod. Only relevant for methods. */
3828 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3829 : };
3830 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3831 : static_assert(0 < 1, "There is no slot for us");
3832 :
3833 : static bool
3834 0 : get_identity(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, JSJitGetterCallArgs args)
3835 : {
3836 0 : bool result(self->Identity());
3837 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3838 0 : args.rval().setBoolean(result);
3839 0 : return true;
3840 : }
3841 :
3842 : static const JSJitInfo identity_getterinfo = {
3843 : { (JSJitGetterOp)get_identity },
3844 : { prototypes::id::DOMMatrixReadOnly },
3845 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3846 : JSJitInfo::Getter,
3847 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3848 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
3849 : true, /* isInfallible. False in setters. */
3850 : false, /* isMovable. Not relevant for setters. */
3851 : false, /* isEliminatable. Not relevant for setters. */
3852 : false, /* isAlwaysInSlot. Only relevant for getters. */
3853 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3854 : false, /* isTypedMethod. Only relevant for methods. */
3855 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3856 : };
3857 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3858 : static_assert(0 < 1, "There is no slot for us");
3859 :
3860 : static bool
3861 0 : transformPoint(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3862 : {
3863 0 : binding_detail::FastDOMPointInit arg0;
3864 0 : if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1 of DOMMatrixReadOnly.transformPoint", false)) {
3865 0 : return false;
3866 : }
3867 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMPoint>(self->TransformPoint(Constify(arg0))));
3868 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3869 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3870 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3871 0 : return false;
3872 : }
3873 0 : return true;
3874 : }
3875 :
3876 : static const JSJitInfo transformPoint_methodinfo = {
3877 : { (JSJitGetterOp)transformPoint },
3878 : { prototypes::id::DOMMatrixReadOnly },
3879 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3880 : JSJitInfo::Method,
3881 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3882 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3883 : false, /* isInfallible. False in setters. */
3884 : false, /* isMovable. Not relevant for setters. */
3885 : false, /* isEliminatable. Not relevant for setters. */
3886 : false, /* isAlwaysInSlot. Only relevant for getters. */
3887 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3888 : false, /* isTypedMethod. Only relevant for methods. */
3889 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3890 : };
3891 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3892 : static_assert(0 < 1, "There is no slot for us");
3893 :
3894 : static bool
3895 0 : toFloat32Array(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3896 : {
3897 0 : binding_detail::FastErrorResult rv;
3898 0 : JS::Rooted<JSObject*> result(cx);
3899 0 : self->ToFloat32Array(cx, &result, rv);
3900 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
3901 0 : return false;
3902 : }
3903 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3904 0 : JS::ExposeObjectToActiveJS(result);
3905 0 : args.rval().setObject(*result);
3906 0 : if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
3907 0 : return false;
3908 : }
3909 0 : return true;
3910 : }
3911 :
3912 : static const JSJitInfo toFloat32Array_methodinfo = {
3913 : { (JSJitGetterOp)toFloat32Array },
3914 : { prototypes::id::DOMMatrixReadOnly },
3915 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3916 : JSJitInfo::Method,
3917 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3918 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3919 : false, /* isInfallible. False in setters. */
3920 : false, /* isMovable. Not relevant for setters. */
3921 : false, /* isEliminatable. Not relevant for setters. */
3922 : false, /* isAlwaysInSlot. Only relevant for getters. */
3923 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3924 : false, /* isTypedMethod. Only relevant for methods. */
3925 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3926 : };
3927 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3928 : static_assert(0 < 1, "There is no slot for us");
3929 :
3930 : static bool
3931 0 : toFloat64Array(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3932 : {
3933 0 : binding_detail::FastErrorResult rv;
3934 0 : JS::Rooted<JSObject*> result(cx);
3935 0 : self->ToFloat64Array(cx, &result, rv);
3936 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
3937 0 : return false;
3938 : }
3939 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3940 0 : JS::ExposeObjectToActiveJS(result);
3941 0 : args.rval().setObject(*result);
3942 0 : if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
3943 0 : return false;
3944 : }
3945 0 : return true;
3946 : }
3947 :
3948 : static const JSJitInfo toFloat64Array_methodinfo = {
3949 : { (JSJitGetterOp)toFloat64Array },
3950 : { prototypes::id::DOMMatrixReadOnly },
3951 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3952 : JSJitInfo::Method,
3953 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3954 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3955 : false, /* isInfallible. False in setters. */
3956 : false, /* isMovable. Not relevant for setters. */
3957 : false, /* isEliminatable. Not relevant for setters. */
3958 : false, /* isAlwaysInSlot. Only relevant for getters. */
3959 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3960 : false, /* isTypedMethod. Only relevant for methods. */
3961 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3962 : };
3963 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3964 : static_assert(0 < 1, "There is no slot for us");
3965 :
3966 : static bool
3967 0 : __stringifier(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::DOMMatrixReadOnly* self, const JSJitMethodCallArgs& args)
3968 : {
3969 0 : DOMString result;
3970 0 : self->Stringify(result);
3971 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3972 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
3973 0 : return false;
3974 : }
3975 0 : return true;
3976 : }
3977 :
3978 : static const JSJitInfo __stringifier_methodinfo = {
3979 : { (JSJitGetterOp)__stringifier },
3980 : { prototypes::id::DOMMatrixReadOnly },
3981 : { PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth },
3982 : JSJitInfo::Method,
3983 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3984 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
3985 : false, /* isInfallible. False in setters. */
3986 : false, /* isMovable. Not relevant for setters. */
3987 : false, /* isEliminatable. Not relevant for setters. */
3988 : false, /* isAlwaysInSlot. Only relevant for getters. */
3989 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3990 : false, /* isTypedMethod. Only relevant for methods. */
3991 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3992 : };
3993 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3994 : static_assert(0 < 1, "There is no slot for us");
3995 :
3996 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
3997 : #if defined(__clang__)
3998 : #pragma clang diagnostic push
3999 : #pragma clang diagnostic ignored "-Wmissing-braces"
4000 : #endif
4001 : static const JSFunctionSpec sMethods_specs[] = {
4002 : JS_FNSPEC("translate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&translate_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
4003 : JS_FNSPEC("scale", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scale_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4004 : JS_FNSPEC("scale3d", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scale3d_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4005 : JS_FNSPEC("scaleNonUniform", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scaleNonUniform_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4006 : JS_FNSPEC("rotate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&rotate_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4007 : JS_FNSPEC("rotateFromVector", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&rotateFromVector_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
4008 : JS_FNSPEC("rotateAxisAngle", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&rotateAxisAngle_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
4009 : JS_FNSPEC("skewX", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&skewX_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4010 : JS_FNSPEC("skewY", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&skewY_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4011 : JS_FNSPEC("multiply", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&multiply_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
4012 : JS_FNSPEC("flipX", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&flipX_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4013 : JS_FNSPEC("flipY", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&flipY_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4014 : JS_FNSPEC("inverse", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&inverse_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4015 : JS_FNSPEC("transformPoint", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&transformPoint_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4016 : JS_FNSPEC("toFloat32Array", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&toFloat32Array_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4017 : JS_FNSPEC("toFloat64Array", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&toFloat64Array_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4018 : JS_FNSPEC("toString", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&__stringifier_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
4019 : JS_FS_END
4020 : };
4021 : #if defined(__clang__)
4022 : #pragma clang diagnostic pop
4023 : #endif
4024 :
4025 :
4026 : // Can't be const because the pref-enabled boolean needs to be writable
4027 : static Prefable<const JSFunctionSpec> sMethods[] = {
4028 : { nullptr, &sMethods_specs[0] },
4029 : { nullptr, nullptr }
4030 : };
4031 :
4032 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
4033 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
4034 : static_assert(17 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
4035 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
4036 :
4037 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
4038 : #if defined(__clang__)
4039 : #pragma clang diagnostic push
4040 : #pragma clang diagnostic ignored "-Wmissing-braces"
4041 : #endif
4042 : static const JSPropertySpec sAttributes_specs[] = {
4043 : { "a", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &a_getterinfo, nullptr, nullptr },
4044 : { "b", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &b_getterinfo, nullptr, nullptr },
4045 : { "c", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &c_getterinfo, nullptr, nullptr },
4046 : { "d", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &d_getterinfo, nullptr, nullptr },
4047 : { "e", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &e_getterinfo, nullptr, nullptr },
4048 : { "f", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &f_getterinfo, nullptr, nullptr },
4049 : { "m11", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m11_getterinfo, nullptr, nullptr },
4050 : { "m12", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m12_getterinfo, nullptr, nullptr },
4051 : { "m13", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m13_getterinfo, nullptr, nullptr },
4052 : { "m14", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m14_getterinfo, nullptr, nullptr },
4053 : { "m21", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m21_getterinfo, nullptr, nullptr },
4054 : { "m22", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m22_getterinfo, nullptr, nullptr },
4055 : { "m23", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m23_getterinfo, nullptr, nullptr },
4056 : { "m24", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m24_getterinfo, nullptr, nullptr },
4057 : { "m31", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m31_getterinfo, nullptr, nullptr },
4058 : { "m32", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m32_getterinfo, nullptr, nullptr },
4059 : { "m33", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m33_getterinfo, nullptr, nullptr },
4060 : { "m34", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m34_getterinfo, nullptr, nullptr },
4061 : { "m41", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m41_getterinfo, nullptr, nullptr },
4062 : { "m42", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m42_getterinfo, nullptr, nullptr },
4063 : { "m43", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m43_getterinfo, nullptr, nullptr },
4064 : { "m44", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &m44_getterinfo, nullptr, nullptr },
4065 : { "is2D", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &is2D_getterinfo, nullptr, nullptr },
4066 : { "identity", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &identity_getterinfo, nullptr, nullptr },
4067 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
4068 : };
4069 : #if defined(__clang__)
4070 : #pragma clang diagnostic pop
4071 : #endif
4072 :
4073 :
4074 : // Can't be const because the pref-enabled boolean needs to be writable
4075 : static Prefable<const JSPropertySpec> sAttributes[] = {
4076 : { nullptr, &sAttributes_specs[0] },
4077 : { nullptr, nullptr }
4078 : };
4079 :
4080 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
4081 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
4082 : static_assert(24 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
4083 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
4084 :
4085 :
4086 : static uint16_t sNativeProperties_sortedPropertyIndices[41];
4087 : static PropertyInfo sNativeProperties_propertyInfos[41];
4088 :
4089 : static const NativePropertiesN<2> sNativeProperties = {
4090 : false, 0,
4091 : false, 0,
4092 : true, 0 /* sMethods */,
4093 : true, 1 /* sAttributes */,
4094 : false, 0,
4095 : false, 0,
4096 : false, 0,
4097 : -1,
4098 : 41,
4099 : sNativeProperties_sortedPropertyIndices,
4100 : {
4101 : { sMethods, &sNativeProperties_propertyInfos[0] },
4102 : { sAttributes, &sNativeProperties_propertyInfos[17] }
4103 : }
4104 : };
4105 : static_assert(41 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
4106 : "We have a property info count that is oversized");
4107 :
4108 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
4109 : {
4110 : "Function",
4111 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
4112 : &sBoringInterfaceObjectClassClassOps,
4113 : JS_NULL_CLASS_SPEC,
4114 : JS_NULL_CLASS_EXT,
4115 : &sInterfaceObjectClassObjectOps
4116 : },
4117 : eInterface,
4118 : true,
4119 : prototypes::id::DOMMatrixReadOnly,
4120 : PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth,
4121 : sNativePropertyHooks,
4122 : "function DOMMatrixReadOnly() {\n [native code]\n}",
4123 : JS::GetRealmFunctionPrototype
4124 : };
4125 :
4126 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
4127 : {
4128 : "DOMMatrixReadOnlyPrototype",
4129 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
4130 : JS_NULL_CLASS_OPS,
4131 : JS_NULL_CLASS_SPEC,
4132 : JS_NULL_CLASS_EXT,
4133 : JS_NULL_OBJECT_OPS
4134 : },
4135 : eInterfacePrototype,
4136 : false,
4137 : prototypes::id::DOMMatrixReadOnly,
4138 : PrototypeTraits<prototypes::id::DOMMatrixReadOnly>::Depth,
4139 : sNativePropertyHooks,
4140 : "[object DOMMatrixReadOnlyPrototype]",
4141 : JS::GetRealmObjectPrototype
4142 : };
4143 :
4144 : bool
4145 0 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
4146 : {
4147 : static bool sPrefValue;
4148 : static bool sPrefCacheSetUp = false;
4149 0 : if (!sPrefCacheSetUp) {
4150 0 : sPrefCacheSetUp = true;
4151 0 : Preferences::AddBoolVarCache(&sPrefValue, "layout.css.DOMMatrix.enabled");
4152 : }
4153 :
4154 0 : return sPrefValue;
4155 : }
4156 :
4157 : JSObject*
4158 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
4159 : {
4160 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
4161 : }
4162 :
4163 : const NativePropertyHooks sNativePropertyHooks[] = { {
4164 : nullptr,
4165 : nullptr,
4166 : nullptr,
4167 : { sNativeProperties.Upcast(), nullptr },
4168 : prototypes::id::DOMMatrixReadOnly,
4169 : constructors::id::DOMMatrixReadOnly,
4170 : nullptr,
4171 : &DefaultXrayExpandoObjectClass
4172 : } };
4173 :
4174 : void
4175 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
4176 : {
4177 0 : JS::Rooted<JSObject*> parentProto(aCx, JS::GetRealmObjectPrototype(aCx));
4178 0 : if (!parentProto) {
4179 0 : return;
4180 : }
4181 :
4182 0 : JS::Rooted<JSObject*> constructorProto(aCx, JS::GetRealmFunctionPrototype(aCx));
4183 0 : if (!constructorProto) {
4184 0 : return;
4185 : }
4186 :
4187 : static bool sIdsInited = false;
4188 0 : if (!sIdsInited && NS_IsMainThread()) {
4189 0 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
4190 0 : return;
4191 : }
4192 0 : sIdsInited = true;
4193 : }
4194 :
4195 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::DOMMatrixReadOnly);
4196 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::DOMMatrixReadOnly);
4197 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
4198 : &sPrototypeClass.mBase, protoCache,
4199 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
4200 : interfaceCache,
4201 : sNativeProperties.Upcast(),
4202 : nullptr,
4203 : "DOMMatrixReadOnly", aDefineOnGlobal,
4204 : nullptr,
4205 0 : false);
4206 : }
4207 :
4208 : JS::Handle<JSObject*>
4209 0 : GetProtoObjectHandle(JSContext* aCx)
4210 : {
4211 : /* Get the interface prototype object for this class. This will create the
4212 : object as needed. */
4213 0 : bool aDefineOnGlobal = true;
4214 :
4215 : /* Make sure our global is sane. Hopefully we can remove this sometime */
4216 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
4217 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
4218 0 : return nullptr;
4219 : }
4220 :
4221 : /* Check to see whether the interface objects are already installed */
4222 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
4223 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::DOMMatrixReadOnly)) {
4224 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
4225 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
4226 : }
4227 :
4228 : /*
4229 : * The object might _still_ be null, but that's OK.
4230 : *
4231 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
4232 : * traced by TraceProtoAndIfaceCache() and its contents are never
4233 : * changed after they have been set.
4234 : *
4235 : * Calling address() avoids the read read barrier that does gray
4236 : * unmarking, but it's not possible for the object to be gray here.
4237 : */
4238 :
4239 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::DOMMatrixReadOnly);
4240 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
4241 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
4242 : }
4243 :
4244 : JSObject*
4245 0 : GetProtoObject(JSContext* aCx)
4246 : {
4247 0 : return GetProtoObjectHandle(aCx);
4248 : }
4249 :
4250 : JS::Handle<JSObject*>
4251 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
4252 : {
4253 : /* Get the interface object for this class. This will create the object as
4254 : needed. */
4255 :
4256 : /* Make sure our global is sane. Hopefully we can remove this sometime */
4257 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
4258 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
4259 0 : return nullptr;
4260 : }
4261 :
4262 : /* Check to see whether the interface objects are already installed */
4263 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
4264 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::DOMMatrixReadOnly)) {
4265 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
4266 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
4267 : }
4268 :
4269 : /*
4270 : * The object might _still_ be null, but that's OK.
4271 : *
4272 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
4273 : * traced by TraceProtoAndIfaceCache() and its contents are never
4274 : * changed after they have been set.
4275 : *
4276 : * Calling address() avoids the read read barrier that does gray
4277 : * unmarking, but it's not possible for the object to be gray here.
4278 : */
4279 :
4280 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::DOMMatrixReadOnly);
4281 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
4282 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
4283 : }
4284 :
4285 : JSObject*
4286 0 : GetConstructorObject(JSContext* aCx)
4287 : {
4288 0 : return GetConstructorObjectHandle(aCx);
4289 : }
4290 :
4291 : } // namespace DOMMatrixReadOnlyBinding
4292 :
4293 :
4294 :
4295 : } // namespace dom
4296 : } // namespace mozilla
|