Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM WebGL2RenderingContext.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #include "WebGL2Context.h"
4 : #include "WebGL2RenderingContextBinding.h"
5 : #include "WebGLActiveInfo.h"
6 : #include "WebGLBuffer.h"
7 : #include "WebGLExtensions.h"
8 : #include "WebGLFramebuffer.h"
9 : #include "WebGLProgram.h"
10 : #include "WebGLQuery.h"
11 : #include "WebGLRenderbuffer.h"
12 : #include "WebGLRenderingContextBinding.h"
13 : #include "WebGLSampler.h"
14 : #include "WebGLShader.h"
15 : #include "WebGLShaderPrecisionFormat.h"
16 : #include "WebGLSync.h"
17 : #include "WebGLTexture.h"
18 : #include "WebGLTransformFeedback.h"
19 : #include "WebGLUniformLocation.h"
20 : #include "WebGLVertexArray.h"
21 : #include "WrapperFactory.h"
22 : #include "jsfriendapi.h"
23 : #include "mozilla/OwningNonNull.h"
24 : #include "mozilla/Preferences.h"
25 : #include "mozilla/dom/BindingUtils.h"
26 : #include "mozilla/dom/DOMJSClass.h"
27 : #include "mozilla/dom/HTMLCanvasElement.h"
28 : #include "mozilla/dom/HTMLImageElement.h"
29 : #include "mozilla/dom/HTMLVideoElement.h"
30 : #include "mozilla/dom/ImageBitmap.h"
31 : #include "mozilla/dom/ImageData.h"
32 : #include "mozilla/dom/NonRefcountedDOMObject.h"
33 : #include "mozilla/dom/Nullable.h"
34 : #include "mozilla/dom/PrimitiveConversions.h"
35 : #include "mozilla/dom/TypedArray.h"
36 : #include "mozilla/dom/UnionConversions.h"
37 : #include "mozilla/dom/XrayExpandoClass.h"
38 : #include "nsContentUtils.h"
39 :
40 : namespace mozilla {
41 : namespace dom {
42 :
43 : bool
44 0 : Uint32ArrayOrUnsignedLongSequence::ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const
45 : {
46 0 : switch (mType) {
47 : case eUninitialized: {
48 0 : return false;
49 : break;
50 : }
51 : case eUint32Array: {
52 0 : rval.setObject(*mValue.mUint32Array.Value().Obj());
53 0 : if (!MaybeWrapNonDOMObjectValue(cx, rval)) {
54 0 : return false;
55 : }
56 0 : return true;
57 : break;
58 : }
59 : case eUnsignedLongSequence: {
60 :
61 0 : uint32_t length = mValue.mUnsignedLongSequence.Value().Length();
62 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
63 0 : if (!returnArray) {
64 0 : return false;
65 : }
66 : // Scope for 'tmp'
67 : {
68 0 : JS::Rooted<JS::Value> tmp(cx);
69 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
70 : // Control block to let us common up the JS_DefineElement calls when there
71 : // are different ways to succeed at wrapping the object.
72 : do {
73 0 : tmp.setNumber(mValue.mUnsignedLongSequence.Value()[sequenceIdx0]);
74 0 : break;
75 : } while (0);
76 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
77 : JSPROP_ENUMERATE)) {
78 0 : return false;
79 : }
80 : }
81 : }
82 0 : rval.setObject(*returnArray);
83 0 : return true;
84 : break;
85 : }
86 : default: {
87 0 : return false;
88 : break;
89 : }
90 : }
91 :
92 : return false;
93 : }
94 :
95 :
96 : Uint32Array&
97 0 : OwningUint32ArrayOrUnsignedLongSequence::RawSetAsUint32Array()
98 : {
99 0 : if (mType == eUint32Array) {
100 0 : return mValue.mUint32Array.Value();
101 : }
102 0 : MOZ_ASSERT(mType == eUninitialized);
103 0 : mType = eUint32Array;
104 0 : return mValue.mUint32Array.SetValue();
105 : }
106 :
107 : Uint32Array&
108 0 : OwningUint32ArrayOrUnsignedLongSequence::SetAsUint32Array()
109 : {
110 0 : if (mType == eUint32Array) {
111 0 : return mValue.mUint32Array.Value();
112 : }
113 0 : Uninit();
114 0 : mType = eUint32Array;
115 0 : return mValue.mUint32Array.SetValue();
116 : }
117 :
118 : bool
119 0 : OwningUint32ArrayOrUnsignedLongSequence::TrySetToUint32Array(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl)
120 : {
121 0 : tryNext = false;
122 : { // scope for memberSlot
123 0 : Uint32Array& memberSlot = RawSetAsUint32Array();
124 0 : if (!memberSlot.Init(&value.toObject())) {
125 0 : DestroyUint32Array();
126 0 : tryNext = true;
127 0 : return true;
128 : }
129 : }
130 0 : return true;
131 : }
132 :
133 : void
134 0 : OwningUint32ArrayOrUnsignedLongSequence::DestroyUint32Array()
135 : {
136 0 : MOZ_ASSERT(IsUint32Array(), "Wrong type!");
137 0 : mValue.mUint32Array.Destroy();
138 0 : mType = eUninitialized;
139 0 : }
140 :
141 :
142 :
143 :
144 : Sequence<uint32_t>&
145 0 : OwningUint32ArrayOrUnsignedLongSequence::RawSetAsUnsignedLongSequence()
146 : {
147 0 : if (mType == eUnsignedLongSequence) {
148 0 : return mValue.mUnsignedLongSequence.Value();
149 : }
150 0 : MOZ_ASSERT(mType == eUninitialized);
151 0 : mType = eUnsignedLongSequence;
152 0 : return mValue.mUnsignedLongSequence.SetValue();
153 : }
154 :
155 : Sequence<uint32_t>&
156 0 : OwningUint32ArrayOrUnsignedLongSequence::SetAsUnsignedLongSequence()
157 : {
158 0 : if (mType == eUnsignedLongSequence) {
159 0 : return mValue.mUnsignedLongSequence.Value();
160 : }
161 0 : Uninit();
162 0 : mType = eUnsignedLongSequence;
163 0 : return mValue.mUnsignedLongSequence.SetValue();
164 : }
165 :
166 : bool
167 0 : OwningUint32ArrayOrUnsignedLongSequence::TrySetToUnsignedLongSequence(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl)
168 : {
169 0 : tryNext = false;
170 : { // scope for memberSlot
171 0 : Sequence<uint32_t>& memberSlot = RawSetAsUnsignedLongSequence();
172 0 : JS::ForOfIterator iter(cx);
173 0 : if (!iter.init(value, JS::ForOfIterator::AllowNonIterable)) {
174 0 : return false;
175 : }
176 0 : if (!iter.valueIsIterable()) {
177 0 : DestroyUnsignedLongSequence();
178 0 : tryNext = true;
179 0 : return true;
180 : }
181 0 : Sequence<uint32_t> &arr = memberSlot;
182 0 : JS::Rooted<JS::Value> temp(cx);
183 : while (true) {
184 : bool done;
185 0 : if (!iter.next(&temp, &done)) {
186 0 : return false;
187 : }
188 0 : if (done) {
189 0 : break;
190 : }
191 0 : uint32_t* slotPtr = arr.AppendElement(mozilla::fallible);
192 0 : if (!slotPtr) {
193 0 : JS_ReportOutOfMemory(cx);
194 0 : return false;
195 : }
196 0 : uint32_t& slot = *slotPtr;
197 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, temp, &slot)) {
198 0 : return false;
199 : }
200 0 : }
201 : }
202 0 : return true;
203 : }
204 :
205 : void
206 0 : OwningUint32ArrayOrUnsignedLongSequence::DestroyUnsignedLongSequence()
207 : {
208 0 : MOZ_ASSERT(IsUnsignedLongSequence(), "Wrong type!");
209 0 : mValue.mUnsignedLongSequence.Destroy();
210 0 : mType = eUninitialized;
211 0 : }
212 :
213 :
214 :
215 :
216 : void
217 0 : OwningUint32ArrayOrUnsignedLongSequence::Uninit()
218 : {
219 0 : switch (mType) {
220 : case eUninitialized: {
221 0 : break;
222 : }
223 : case eUint32Array: {
224 0 : DestroyUint32Array();
225 0 : break;
226 : }
227 : case eUnsignedLongSequence: {
228 0 : DestroyUnsignedLongSequence();
229 0 : break;
230 : }
231 : }
232 0 : }
233 :
234 : bool
235 0 : OwningUint32ArrayOrUnsignedLongSequence::ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const
236 : {
237 0 : switch (mType) {
238 : case eUninitialized: {
239 0 : return false;
240 : break;
241 : }
242 : case eUint32Array: {
243 0 : rval.setObject(*mValue.mUint32Array.Value().Obj());
244 0 : if (!MaybeWrapNonDOMObjectValue(cx, rval)) {
245 0 : return false;
246 : }
247 0 : return true;
248 : break;
249 : }
250 : case eUnsignedLongSequence: {
251 :
252 0 : uint32_t length = mValue.mUnsignedLongSequence.Value().Length();
253 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
254 0 : if (!returnArray) {
255 0 : return false;
256 : }
257 : // Scope for 'tmp'
258 : {
259 0 : JS::Rooted<JS::Value> tmp(cx);
260 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
261 : // Control block to let us common up the JS_DefineElement calls when there
262 : // are different ways to succeed at wrapping the object.
263 : do {
264 0 : tmp.setNumber(mValue.mUnsignedLongSequence.Value()[sequenceIdx0]);
265 0 : break;
266 : } while (0);
267 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
268 : JSPROP_ENUMERATE)) {
269 0 : return false;
270 : }
271 : }
272 : }
273 0 : rval.setObject(*returnArray);
274 0 : return true;
275 : break;
276 : }
277 : default: {
278 0 : return false;
279 : break;
280 : }
281 : }
282 :
283 : return false;
284 : }
285 :
286 : void
287 0 : OwningUint32ArrayOrUnsignedLongSequence::TraceUnion(JSTracer* trc)
288 : {
289 0 : switch (mType) {
290 : case eUint32Array: {
291 0 : mValue.mUint32Array.Value().TraceSelf(trc);
292 0 : break;
293 : }
294 : default: {
295 0 : break;
296 : }
297 : }
298 0 : }
299 :
300 :
301 : namespace EXT_color_buffer_floatBinding {
302 :
303 : static bool
304 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
305 : {
306 0 : mozilla::WebGLExtensionEXTColorBufferFloat* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLExtensionEXTColorBufferFloat>(obj);
307 : // We don't want to preserve if we don't have a wrapper, and we
308 : // obviously can't preserve if we're not initialized.
309 0 : if (self && self->GetWrapperPreserveColor()) {
310 0 : PreserveWrapper(self);
311 : }
312 0 : return true;
313 : }
314 :
315 : static void
316 0 : _finalize(js::FreeOp* fop, JSObject* obj)
317 : {
318 0 : mozilla::WebGLExtensionEXTColorBufferFloat* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLExtensionEXTColorBufferFloat>(obj);
319 0 : if (self) {
320 0 : ClearWrapper(self, self, obj);
321 0 : AddForDeferredFinalization<mozilla::WebGLExtensionEXTColorBufferFloat>(self);
322 : }
323 0 : }
324 :
325 : static void
326 0 : _objectMoved(JSObject* obj, const JSObject* old)
327 : {
328 0 : mozilla::WebGLExtensionEXTColorBufferFloat* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLExtensionEXTColorBufferFloat>(obj);
329 0 : if (self) {
330 0 : UpdateWrapper(self, self, obj, old);
331 : }
332 0 : }
333 :
334 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
335 : {
336 : "EXT_color_buffer_floatPrototype",
337 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
338 : JS_NULL_CLASS_OPS,
339 : JS_NULL_CLASS_SPEC,
340 : JS_NULL_CLASS_EXT,
341 : JS_NULL_OBJECT_OPS
342 : },
343 : eInterfacePrototype,
344 : false,
345 : prototypes::id::EXT_color_buffer_float,
346 : PrototypeTraits<prototypes::id::EXT_color_buffer_float>::Depth,
347 : sNativePropertyHooks,
348 : "[object EXT_color_buffer_floatPrototype]",
349 : JS::GetRealmObjectPrototype
350 : };
351 :
352 : static const js::ClassOps sClassOps = {
353 : _addProperty, /* addProperty */
354 : nullptr, /* delProperty */
355 : nullptr, /* getProperty */
356 : nullptr, /* setProperty */
357 : nullptr, /* enumerate */
358 : nullptr, /* newEnumerate */
359 : nullptr, /* resolve */
360 : nullptr, /* mayResolve */
361 : _finalize, /* finalize */
362 : nullptr, /* call */
363 : nullptr, /* hasInstance */
364 : nullptr, /* construct */
365 : nullptr, /* trace */
366 : };
367 :
368 : static const js::ClassExtension sClassExtension = {
369 : nullptr, /* weakmapKeyDelegateOp */
370 : _objectMoved /* objectMovedOp */
371 : };
372 :
373 : static const DOMJSClass sClass = {
374 : { "EXT_color_buffer_float",
375 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
376 : &sClassOps,
377 : JS_NULL_CLASS_SPEC,
378 : &sClassExtension,
379 : JS_NULL_OBJECT_OPS
380 : },
381 : { prototypes::id::EXT_color_buffer_float, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
382 : IsBaseOf<nsISupports, mozilla::WebGLExtensionEXTColorBufferFloat >::value,
383 : sNativePropertyHooks,
384 : FindAssociatedGlobalForNative<mozilla::WebGLExtensionEXTColorBufferFloat>::Get,
385 : GetProtoObjectHandle,
386 : GetCCParticipant<mozilla::WebGLExtensionEXTColorBufferFloat>::Get()
387 : };
388 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
389 : "Must have the right minimal number of reserved slots.");
390 : static_assert(1 >= 1,
391 : "Must have enough reserved slots.");
392 :
393 : const JSClass*
394 0 : GetJSClass()
395 : {
396 0 : return sClass.ToJSClass();
397 : }
398 :
399 : bool
400 0 : Wrap(JSContext* aCx, mozilla::WebGLExtensionEXTColorBufferFloat* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
401 : {
402 : MOZ_ASSERT(static_cast<mozilla::WebGLExtensionEXTColorBufferFloat*>(aObject) ==
403 : reinterpret_cast<mozilla::WebGLExtensionEXTColorBufferFloat*>(aObject),
404 : "Multiple inheritance for mozilla::WebGLExtensionEXTColorBufferFloat is broken.");
405 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
406 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
407 0 : MOZ_ASSERT(!aCache->GetWrapper(),
408 : "You should probably not be using Wrap() directly; use "
409 : "GetOrCreateDOMReflector instead");
410 :
411 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
412 : "nsISupports must be on our primary inheritance chain");
413 :
414 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
415 0 : if (!global) {
416 0 : return false;
417 : }
418 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
419 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
420 :
421 : // That might have ended up wrapping us already, due to the wonders
422 : // of XBL. Check for that, and bail out as needed.
423 0 : aReflector.set(aCache->GetWrapper());
424 0 : if (aReflector) {
425 : #ifdef DEBUG
426 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
427 : #endif // DEBUG
428 0 : return true;
429 : }
430 :
431 0 : JSAutoCompartment ac(aCx, global);
432 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
433 0 : if (!canonicalProto) {
434 0 : return false;
435 : }
436 0 : JS::Rooted<JSObject*> proto(aCx);
437 0 : if (aGivenProto) {
438 0 : proto = aGivenProto;
439 : // Unfortunately, while aGivenProto was in the compartment of aCx
440 : // coming in, we changed compartments to that of "parent" so may need
441 : // to wrap the proto here.
442 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
443 0 : if (!JS_WrapObject(aCx, &proto)) {
444 0 : return false;
445 : }
446 : }
447 : } else {
448 0 : proto = canonicalProto;
449 : }
450 :
451 0 : BindingJSObjectCreator<mozilla::WebGLExtensionEXTColorBufferFloat> creator(aCx);
452 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
453 0 : if (!aReflector) {
454 0 : return false;
455 : }
456 :
457 0 : aCache->SetWrapper(aReflector);
458 0 : creator.InitializationSucceeded();
459 :
460 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
461 : aCache->GetWrapperPreserveColor() == aReflector);
462 : // If proto != canonicalProto, we have to preserve our wrapper;
463 : // otherwise we won't be able to properly recreate it later, since
464 : // we won't know what proto to use. Note that we don't check
465 : // aGivenProto here, since it's entirely possible (and even
466 : // somewhat common) to have a non-null aGivenProto which is the
467 : // same as canonicalProto.
468 0 : if (proto != canonicalProto) {
469 0 : PreserveWrapper(aObject);
470 : }
471 :
472 0 : return true;
473 : }
474 :
475 : const NativePropertyHooks sNativePropertyHooks[] = { {
476 : nullptr,
477 : nullptr,
478 : nullptr,
479 : { nullptr, nullptr },
480 : prototypes::id::EXT_color_buffer_float,
481 : constructors::id::_ID_Count,
482 : nullptr,
483 : &DefaultXrayExpandoObjectClass
484 : } };
485 :
486 : void
487 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
488 : {
489 0 : JS::Rooted<JSObject*> parentProto(aCx, JS::GetRealmObjectPrototype(aCx));
490 0 : if (!parentProto) {
491 0 : return;
492 : }
493 :
494 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::EXT_color_buffer_float);
495 0 : JS::Heap<JSObject*>* interfaceCache = nullptr;
496 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
497 : &sPrototypeClass.mBase, protoCache,
498 : nullptr, nullptr, 0, nullptr,
499 : interfaceCache,
500 : nullptr,
501 : nullptr,
502 : nullptr, aDefineOnGlobal,
503 : nullptr,
504 0 : false);
505 : }
506 :
507 : JS::Handle<JSObject*>
508 0 : GetProtoObjectHandle(JSContext* aCx)
509 : {
510 : /* Get the interface prototype object for this class. This will create the
511 : object as needed. */
512 0 : bool aDefineOnGlobal = true;
513 :
514 : /* Make sure our global is sane. Hopefully we can remove this sometime */
515 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
516 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
517 0 : return nullptr;
518 : }
519 :
520 : /* Check to see whether the interface objects are already installed */
521 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
522 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::EXT_color_buffer_float)) {
523 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
524 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
525 : }
526 :
527 : /*
528 : * The object might _still_ be null, but that's OK.
529 : *
530 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
531 : * traced by TraceProtoAndIfaceCache() and its contents are never
532 : * changed after they have been set.
533 : *
534 : * Calling address() avoids the read read barrier that does gray
535 : * unmarking, but it's not possible for the object to be gray here.
536 : */
537 :
538 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::EXT_color_buffer_float);
539 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
540 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
541 : }
542 :
543 : } // namespace EXT_color_buffer_floatBinding
544 :
545 :
546 :
547 : namespace WebGL2RenderingContextBinding {
548 :
549 : static bool
550 0 : bufferData(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
551 : {
552 0 : unsigned argcount = std::min(args.length(), 5u);
553 0 : switch (argcount) {
554 : case 3: {
555 : uint32_t arg0;
556 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
557 0 : return false;
558 : }
559 0 : if (args[1].isNullOrUndefined()) {
560 0 : RootedTypedArray<Nullable<ArrayBuffer>> arg1(cx);
561 0 : arg1.SetNull();
562 : uint32_t arg2;
563 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
564 0 : return false;
565 : }
566 0 : self->BufferData(arg0, Constify(arg1), arg2);
567 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
568 0 : args.rval().setUndefined();
569 0 : return true;
570 : }
571 0 : if (args[1].isObject()) {
572 : do {
573 0 : RootedTypedArray<Nullable<ArrayBuffer>> arg1(cx);
574 0 : if (!arg1.SetValue().Init(&args[1].toObject())) {
575 0 : break;
576 : }
577 : uint32_t arg2;
578 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
579 0 : return false;
580 : }
581 0 : self->BufferData(arg0, Constify(arg1), arg2);
582 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
583 0 : args.rval().setUndefined();
584 0 : return true;
585 : } while (0);
586 : do {
587 0 : RootedTypedArray<ArrayBufferView> arg1(cx);
588 0 : if (!arg1.Init(&args[1].toObject())) {
589 0 : break;
590 : }
591 : uint32_t arg2;
592 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
593 0 : return false;
594 : }
595 0 : self->BufferData(arg0, Constify(arg1), arg2);
596 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
597 0 : args.rval().setUndefined();
598 0 : return true;
599 : } while (0);
600 : }
601 : int64_t arg1;
602 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[1], &arg1)) {
603 0 : return false;
604 : }
605 : uint32_t arg2;
606 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
607 0 : return false;
608 : }
609 0 : self->BufferData(arg0, arg1, arg2);
610 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
611 0 : args.rval().setUndefined();
612 0 : return true;
613 : break;
614 : }
615 : case 4: {
616 : MOZ_FALLTHROUGH;
617 : }
618 : case 5: {
619 : uint32_t arg0;
620 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
621 0 : return false;
622 : }
623 0 : RootedTypedArray<ArrayBufferView> arg1(cx);
624 0 : if (args[1].isObject()) {
625 0 : if (!arg1.Init(&args[1].toObject())) {
626 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bufferData", "ArrayBufferView");
627 0 : return false;
628 : }
629 : } else {
630 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bufferData");
631 0 : return false;
632 : }
633 : uint32_t arg2;
634 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
635 0 : return false;
636 : }
637 : uint32_t arg3;
638 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
639 0 : return false;
640 : }
641 : uint32_t arg4;
642 0 : if (args.hasDefined(4)) {
643 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
644 0 : return false;
645 : }
646 : } else {
647 0 : arg4 = 0U;
648 : }
649 0 : self->BufferData(arg0, Constify(arg1), arg2, arg3, arg4);
650 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
651 0 : args.rval().setUndefined();
652 0 : return true;
653 : break;
654 : }
655 : default: {
656 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bufferData");
657 : break;
658 : }
659 : }
660 : MOZ_CRASH("We have an always-returning default case");
661 : return false;
662 : }
663 :
664 : static const JSJitInfo bufferData_methodinfo = {
665 : { (JSJitGetterOp)bufferData },
666 : { prototypes::id::WebGL2RenderingContext },
667 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
668 : JSJitInfo::Method,
669 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
670 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
671 : false, /* isInfallible. False in setters. */
672 : false, /* isMovable. Not relevant for setters. */
673 : false, /* isEliminatable. Not relevant for setters. */
674 : false, /* isAlwaysInSlot. Only relevant for getters. */
675 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
676 : false, /* isTypedMethod. Only relevant for methods. */
677 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
678 : };
679 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
680 : static_assert(0 < 1, "There is no slot for us");
681 :
682 : static bool
683 0 : bufferSubData(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
684 : {
685 0 : unsigned argcount = std::min(args.length(), 5u);
686 0 : switch (argcount) {
687 : case 3: {
688 : uint32_t arg0;
689 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
690 0 : return false;
691 : }
692 : int64_t arg1;
693 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[1], &arg1)) {
694 0 : return false;
695 : }
696 0 : if (args[2].isObject()) {
697 : do {
698 0 : RootedTypedArray<ArrayBuffer> arg2(cx);
699 0 : if (!arg2.Init(&args[2].toObject())) {
700 0 : break;
701 : }
702 0 : self->BufferSubData(arg0, arg1, Constify(arg2));
703 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
704 0 : args.rval().setUndefined();
705 0 : return true;
706 : } while (0);
707 : do {
708 0 : RootedTypedArray<ArrayBufferView> arg2(cx);
709 0 : if (!arg2.Init(&args[2].toObject())) {
710 0 : break;
711 : }
712 0 : self->BufferSubData(arg0, arg1, Constify(arg2));
713 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
714 0 : args.rval().setUndefined();
715 0 : return true;
716 : } while (0);
717 : }
718 0 : return ThrowErrorMessage(cx, MSG_OVERLOAD_RESOLUTION_FAILED, "3", "3", "WebGL2RenderingContext.bufferSubData");
719 : break;
720 : }
721 : case 4: {
722 : MOZ_FALLTHROUGH;
723 : }
724 : case 5: {
725 : uint32_t arg0;
726 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
727 0 : return false;
728 : }
729 : int64_t arg1;
730 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[1], &arg1)) {
731 0 : return false;
732 : }
733 0 : RootedTypedArray<ArrayBufferView> arg2(cx);
734 0 : if (args[2].isObject()) {
735 0 : if (!arg2.Init(&args[2].toObject())) {
736 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 3 of WebGL2RenderingContext.bufferSubData", "ArrayBufferView");
737 0 : return false;
738 : }
739 : } else {
740 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of WebGL2RenderingContext.bufferSubData");
741 0 : return false;
742 : }
743 : uint32_t arg3;
744 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
745 0 : return false;
746 : }
747 : uint32_t arg4;
748 0 : if (args.hasDefined(4)) {
749 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
750 0 : return false;
751 : }
752 : } else {
753 0 : arg4 = 0U;
754 : }
755 0 : self->BufferSubData(arg0, arg1, Constify(arg2), arg3, arg4);
756 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
757 0 : args.rval().setUndefined();
758 0 : return true;
759 : break;
760 : }
761 : default: {
762 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bufferSubData");
763 : break;
764 : }
765 : }
766 : MOZ_CRASH("We have an always-returning default case");
767 : return false;
768 : }
769 :
770 : static const JSJitInfo bufferSubData_methodinfo = {
771 : { (JSJitGetterOp)bufferSubData },
772 : { prototypes::id::WebGL2RenderingContext },
773 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
774 : JSJitInfo::Method,
775 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
776 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
777 : false, /* isInfallible. False in setters. */
778 : false, /* isMovable. Not relevant for setters. */
779 : false, /* isEliminatable. Not relevant for setters. */
780 : false, /* isAlwaysInSlot. Only relevant for getters. */
781 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
782 : false, /* isTypedMethod. Only relevant for methods. */
783 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
784 : };
785 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
786 : static_assert(0 < 1, "There is no slot for us");
787 :
788 : static bool
789 0 : copyBufferSubData(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
790 : {
791 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
792 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.copyBufferSubData");
793 : }
794 : uint32_t arg0;
795 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
796 0 : return false;
797 : }
798 : uint32_t arg1;
799 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
800 0 : return false;
801 : }
802 : int64_t arg2;
803 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[2], &arg2)) {
804 0 : return false;
805 : }
806 : int64_t arg3;
807 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[3], &arg3)) {
808 0 : return false;
809 : }
810 : int64_t arg4;
811 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[4], &arg4)) {
812 0 : return false;
813 : }
814 0 : self->CopyBufferSubData(arg0, arg1, arg2, arg3, arg4);
815 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
816 0 : args.rval().setUndefined();
817 0 : return true;
818 : }
819 :
820 : static const JSJitInfo copyBufferSubData_methodinfo = {
821 : { (JSJitGetterOp)copyBufferSubData },
822 : { prototypes::id::WebGL2RenderingContext },
823 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
824 : JSJitInfo::Method,
825 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
826 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
827 : false, /* isInfallible. False in setters. */
828 : false, /* isMovable. Not relevant for setters. */
829 : false, /* isEliminatable. Not relevant for setters. */
830 : false, /* isAlwaysInSlot. Only relevant for getters. */
831 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
832 : false, /* isTypedMethod. Only relevant for methods. */
833 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
834 : };
835 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
836 : static_assert(0 < 1, "There is no slot for us");
837 :
838 : static bool
839 0 : getBufferSubData(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
840 : {
841 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
842 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getBufferSubData");
843 : }
844 : uint32_t arg0;
845 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
846 0 : return false;
847 : }
848 : int64_t arg1;
849 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[1], &arg1)) {
850 0 : return false;
851 : }
852 0 : RootedTypedArray<ArrayBufferView> arg2(cx);
853 0 : if (args[2].isObject()) {
854 0 : if (!arg2.Init(&args[2].toObject())) {
855 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 3 of WebGL2RenderingContext.getBufferSubData", "ArrayBufferView");
856 0 : return false;
857 : }
858 : } else {
859 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of WebGL2RenderingContext.getBufferSubData");
860 0 : return false;
861 : }
862 : uint32_t arg3;
863 0 : if (args.hasDefined(3)) {
864 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
865 0 : return false;
866 : }
867 : } else {
868 0 : arg3 = 0U;
869 : }
870 : uint32_t arg4;
871 0 : if (args.hasDefined(4)) {
872 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
873 0 : return false;
874 : }
875 : } else {
876 0 : arg4 = 0U;
877 : }
878 0 : self->GetBufferSubData(arg0, arg1, Constify(arg2), arg3, arg4);
879 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
880 0 : args.rval().setUndefined();
881 0 : return true;
882 : }
883 :
884 : static const JSJitInfo getBufferSubData_methodinfo = {
885 : { (JSJitGetterOp)getBufferSubData },
886 : { prototypes::id::WebGL2RenderingContext },
887 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
888 : JSJitInfo::Method,
889 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
890 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
891 : false, /* isInfallible. False in setters. */
892 : false, /* isMovable. Not relevant for setters. */
893 : false, /* isEliminatable. Not relevant for setters. */
894 : false, /* isAlwaysInSlot. Only relevant for getters. */
895 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
896 : false, /* isTypedMethod. Only relevant for methods. */
897 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
898 : };
899 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
900 : static_assert(0 < 1, "There is no slot for us");
901 :
902 : static bool
903 0 : blitFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
904 : {
905 0 : if (MOZ_UNLIKELY(args.length() < 10)) {
906 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.blitFramebuffer");
907 : }
908 : int32_t arg0;
909 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
910 0 : return false;
911 : }
912 : int32_t arg1;
913 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
914 0 : return false;
915 : }
916 : int32_t arg2;
917 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
918 0 : return false;
919 : }
920 : int32_t arg3;
921 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
922 0 : return false;
923 : }
924 : int32_t arg4;
925 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
926 0 : return false;
927 : }
928 : int32_t arg5;
929 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
930 0 : return false;
931 : }
932 : int32_t arg6;
933 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
934 0 : return false;
935 : }
936 : int32_t arg7;
937 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
938 0 : return false;
939 : }
940 : uint32_t arg8;
941 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
942 0 : return false;
943 : }
944 : uint32_t arg9;
945 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
946 0 : return false;
947 : }
948 0 : self->BlitFramebuffer(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
949 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
950 0 : args.rval().setUndefined();
951 0 : return true;
952 : }
953 :
954 : static const JSJitInfo blitFramebuffer_methodinfo = {
955 : { (JSJitGetterOp)blitFramebuffer },
956 : { prototypes::id::WebGL2RenderingContext },
957 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
958 : JSJitInfo::Method,
959 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
960 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
961 : false, /* isInfallible. False in setters. */
962 : false, /* isMovable. Not relevant for setters. */
963 : false, /* isEliminatable. Not relevant for setters. */
964 : false, /* isAlwaysInSlot. Only relevant for getters. */
965 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
966 : false, /* isTypedMethod. Only relevant for methods. */
967 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
968 : };
969 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
970 : static_assert(0 < 1, "There is no slot for us");
971 :
972 : static bool
973 0 : framebufferTextureLayer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
974 : {
975 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
976 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.framebufferTextureLayer");
977 : }
978 : uint32_t arg0;
979 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
980 0 : return false;
981 : }
982 : uint32_t arg1;
983 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
984 0 : return false;
985 : }
986 : mozilla::WebGLTexture* arg2;
987 0 : if (args[2].isObject()) {
988 : {
989 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTexture, mozilla::WebGLTexture>(args[2], arg2);
990 0 : if (NS_FAILED(rv)) {
991 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 3 of WebGL2RenderingContext.framebufferTextureLayer", "WebGLTexture");
992 0 : return false;
993 : }
994 : }
995 0 : } else if (args[2].isNullOrUndefined()) {
996 0 : arg2 = nullptr;
997 : } else {
998 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of WebGL2RenderingContext.framebufferTextureLayer");
999 0 : return false;
1000 : }
1001 : int32_t arg3;
1002 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1003 0 : return false;
1004 : }
1005 : int32_t arg4;
1006 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1007 0 : return false;
1008 : }
1009 0 : self->FramebufferTextureLayer(arg0, arg1, Constify(arg2), arg3, arg4);
1010 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1011 0 : args.rval().setUndefined();
1012 0 : return true;
1013 : }
1014 :
1015 : static const JSJitInfo framebufferTextureLayer_methodinfo = {
1016 : { (JSJitGetterOp)framebufferTextureLayer },
1017 : { prototypes::id::WebGL2RenderingContext },
1018 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1019 : JSJitInfo::Method,
1020 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1021 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1022 : false, /* isInfallible. False in setters. */
1023 : false, /* isMovable. Not relevant for setters. */
1024 : false, /* isEliminatable. Not relevant for setters. */
1025 : false, /* isAlwaysInSlot. Only relevant for getters. */
1026 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1027 : false, /* isTypedMethod. Only relevant for methods. */
1028 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1029 : };
1030 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1031 : static_assert(0 < 1, "There is no slot for us");
1032 :
1033 : static bool
1034 0 : invalidateFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1035 : {
1036 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
1037 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.invalidateFramebuffer");
1038 : }
1039 : uint32_t arg0;
1040 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1041 0 : return false;
1042 : }
1043 0 : binding_detail::AutoSequence<uint32_t> arg1;
1044 0 : if (args[1].isObject()) {
1045 0 : JS::ForOfIterator iter(cx);
1046 0 : if (!iter.init(args[1], JS::ForOfIterator::AllowNonIterable)) {
1047 0 : return false;
1048 : }
1049 0 : if (!iter.valueIsIterable()) {
1050 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.invalidateFramebuffer");
1051 0 : return false;
1052 : }
1053 0 : binding_detail::AutoSequence<uint32_t> &arr = arg1;
1054 0 : JS::Rooted<JS::Value> temp(cx);
1055 : while (true) {
1056 : bool done;
1057 0 : if (!iter.next(&temp, &done)) {
1058 0 : return false;
1059 : }
1060 0 : if (done) {
1061 0 : break;
1062 : }
1063 0 : uint32_t* slotPtr = arr.AppendElement(mozilla::fallible);
1064 0 : if (!slotPtr) {
1065 0 : JS_ReportOutOfMemory(cx);
1066 0 : return false;
1067 : }
1068 0 : uint32_t& slot = *slotPtr;
1069 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, temp, &slot)) {
1070 0 : return false;
1071 : }
1072 0 : }
1073 : } else {
1074 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.invalidateFramebuffer");
1075 0 : return false;
1076 : }
1077 0 : binding_detail::FastErrorResult rv;
1078 0 : self->InvalidateFramebuffer(arg0, Constify(arg1), rv);
1079 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1080 0 : return false;
1081 : }
1082 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1083 0 : args.rval().setUndefined();
1084 0 : return true;
1085 : }
1086 :
1087 : static const JSJitInfo invalidateFramebuffer_methodinfo = {
1088 : { (JSJitGetterOp)invalidateFramebuffer },
1089 : { prototypes::id::WebGL2RenderingContext },
1090 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1091 : JSJitInfo::Method,
1092 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1093 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1094 : false, /* isInfallible. False in setters. */
1095 : false, /* isMovable. Not relevant for setters. */
1096 : false, /* isEliminatable. Not relevant for setters. */
1097 : false, /* isAlwaysInSlot. Only relevant for getters. */
1098 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1099 : false, /* isTypedMethod. Only relevant for methods. */
1100 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1101 : };
1102 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1103 : static_assert(0 < 1, "There is no slot for us");
1104 :
1105 : static bool
1106 0 : invalidateSubFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1107 : {
1108 0 : if (MOZ_UNLIKELY(args.length() < 6)) {
1109 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.invalidateSubFramebuffer");
1110 : }
1111 : uint32_t arg0;
1112 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1113 0 : return false;
1114 : }
1115 0 : binding_detail::AutoSequence<uint32_t> arg1;
1116 0 : if (args[1].isObject()) {
1117 0 : JS::ForOfIterator iter(cx);
1118 0 : if (!iter.init(args[1], JS::ForOfIterator::AllowNonIterable)) {
1119 0 : return false;
1120 : }
1121 0 : if (!iter.valueIsIterable()) {
1122 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.invalidateSubFramebuffer");
1123 0 : return false;
1124 : }
1125 0 : binding_detail::AutoSequence<uint32_t> &arr = arg1;
1126 0 : JS::Rooted<JS::Value> temp(cx);
1127 : while (true) {
1128 : bool done;
1129 0 : if (!iter.next(&temp, &done)) {
1130 0 : return false;
1131 : }
1132 0 : if (done) {
1133 0 : break;
1134 : }
1135 0 : uint32_t* slotPtr = arr.AppendElement(mozilla::fallible);
1136 0 : if (!slotPtr) {
1137 0 : JS_ReportOutOfMemory(cx);
1138 0 : return false;
1139 : }
1140 0 : uint32_t& slot = *slotPtr;
1141 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, temp, &slot)) {
1142 0 : return false;
1143 : }
1144 0 : }
1145 : } else {
1146 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.invalidateSubFramebuffer");
1147 0 : return false;
1148 : }
1149 : int32_t arg2;
1150 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
1151 0 : return false;
1152 : }
1153 : int32_t arg3;
1154 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1155 0 : return false;
1156 : }
1157 : int32_t arg4;
1158 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1159 0 : return false;
1160 : }
1161 : int32_t arg5;
1162 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
1163 0 : return false;
1164 : }
1165 0 : binding_detail::FastErrorResult rv;
1166 0 : self->InvalidateSubFramebuffer(arg0, Constify(arg1), arg2, arg3, arg4, arg5, rv);
1167 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1168 0 : return false;
1169 : }
1170 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1171 0 : args.rval().setUndefined();
1172 0 : return true;
1173 : }
1174 :
1175 : static const JSJitInfo invalidateSubFramebuffer_methodinfo = {
1176 : { (JSJitGetterOp)invalidateSubFramebuffer },
1177 : { prototypes::id::WebGL2RenderingContext },
1178 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1179 : JSJitInfo::Method,
1180 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1181 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1182 : false, /* isInfallible. False in setters. */
1183 : false, /* isMovable. Not relevant for setters. */
1184 : false, /* isEliminatable. Not relevant for setters. */
1185 : false, /* isAlwaysInSlot. Only relevant for getters. */
1186 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1187 : false, /* isTypedMethod. Only relevant for methods. */
1188 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1189 : };
1190 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1191 : static_assert(0 < 1, "There is no slot for us");
1192 :
1193 : static bool
1194 0 : readBuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1195 : {
1196 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1197 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.readBuffer");
1198 : }
1199 : uint32_t arg0;
1200 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1201 0 : return false;
1202 : }
1203 0 : self->ReadBuffer(arg0);
1204 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1205 0 : args.rval().setUndefined();
1206 0 : return true;
1207 : }
1208 :
1209 : static const JSJitInfo readBuffer_methodinfo = {
1210 : { (JSJitGetterOp)readBuffer },
1211 : { prototypes::id::WebGL2RenderingContext },
1212 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1213 : JSJitInfo::Method,
1214 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1215 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1216 : false, /* isInfallible. False in setters. */
1217 : false, /* isMovable. Not relevant for setters. */
1218 : false, /* isEliminatable. Not relevant for setters. */
1219 : false, /* isAlwaysInSlot. Only relevant for getters. */
1220 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1221 : false, /* isTypedMethod. Only relevant for methods. */
1222 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1223 : };
1224 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1225 : static_assert(0 < 1, "There is no slot for us");
1226 :
1227 : static bool
1228 0 : getInternalformatParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1229 : {
1230 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
1231 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getInternalformatParameter");
1232 : }
1233 : uint32_t arg0;
1234 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1235 0 : return false;
1236 : }
1237 : uint32_t arg1;
1238 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
1239 0 : return false;
1240 : }
1241 : uint32_t arg2;
1242 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
1243 0 : return false;
1244 : }
1245 0 : binding_detail::FastErrorResult rv;
1246 0 : JS::Rooted<JS::Value> result(cx);
1247 0 : self->GetInternalformatParameter(cx, arg0, arg1, arg2, &result, rv);
1248 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1249 0 : return false;
1250 : }
1251 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1252 0 : JS::ExposeValueToActiveJS(result);
1253 0 : args.rval().set(result);
1254 0 : if (!MaybeWrapValue(cx, args.rval())) {
1255 0 : return false;
1256 : }
1257 0 : return true;
1258 : }
1259 :
1260 : static const JSJitInfo getInternalformatParameter_methodinfo = {
1261 : { (JSJitGetterOp)getInternalformatParameter },
1262 : { prototypes::id::WebGL2RenderingContext },
1263 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1264 : JSJitInfo::Method,
1265 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1266 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1267 : false, /* isInfallible. False in setters. */
1268 : false, /* isMovable. Not relevant for setters. */
1269 : false, /* isEliminatable. Not relevant for setters. */
1270 : false, /* isAlwaysInSlot. Only relevant for getters. */
1271 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1272 : false, /* isTypedMethod. Only relevant for methods. */
1273 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1274 : };
1275 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1276 : static_assert(0 < 1, "There is no slot for us");
1277 :
1278 : static bool
1279 0 : renderbufferStorageMultisample(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1280 : {
1281 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
1282 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.renderbufferStorageMultisample");
1283 : }
1284 : uint32_t arg0;
1285 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1286 0 : return false;
1287 : }
1288 : int32_t arg1;
1289 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1290 0 : return false;
1291 : }
1292 : uint32_t arg2;
1293 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
1294 0 : return false;
1295 : }
1296 : int32_t arg3;
1297 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1298 0 : return false;
1299 : }
1300 : int32_t arg4;
1301 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1302 0 : return false;
1303 : }
1304 0 : self->RenderbufferStorageMultisample(arg0, arg1, arg2, arg3, arg4);
1305 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1306 0 : args.rval().setUndefined();
1307 0 : return true;
1308 : }
1309 :
1310 : static const JSJitInfo renderbufferStorageMultisample_methodinfo = {
1311 : { (JSJitGetterOp)renderbufferStorageMultisample },
1312 : { prototypes::id::WebGL2RenderingContext },
1313 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1314 : JSJitInfo::Method,
1315 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1316 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1317 : false, /* isInfallible. False in setters. */
1318 : false, /* isMovable. Not relevant for setters. */
1319 : false, /* isEliminatable. Not relevant for setters. */
1320 : false, /* isAlwaysInSlot. Only relevant for getters. */
1321 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1322 : false, /* isTypedMethod. Only relevant for methods. */
1323 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1324 : };
1325 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1326 : static_assert(0 < 1, "There is no slot for us");
1327 :
1328 : static bool
1329 0 : texStorage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1330 : {
1331 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
1332 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texStorage2D");
1333 : }
1334 : uint32_t arg0;
1335 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1336 0 : return false;
1337 : }
1338 : int32_t arg1;
1339 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1340 0 : return false;
1341 : }
1342 : uint32_t arg2;
1343 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
1344 0 : return false;
1345 : }
1346 : int32_t arg3;
1347 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1348 0 : return false;
1349 : }
1350 : int32_t arg4;
1351 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1352 0 : return false;
1353 : }
1354 0 : self->TexStorage2D(arg0, arg1, arg2, arg3, arg4);
1355 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1356 0 : args.rval().setUndefined();
1357 0 : return true;
1358 : }
1359 :
1360 : static const JSJitInfo texStorage2D_methodinfo = {
1361 : { (JSJitGetterOp)texStorage2D },
1362 : { prototypes::id::WebGL2RenderingContext },
1363 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1364 : JSJitInfo::Method,
1365 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1366 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1367 : false, /* isInfallible. False in setters. */
1368 : false, /* isMovable. Not relevant for setters. */
1369 : false, /* isEliminatable. Not relevant for setters. */
1370 : false, /* isAlwaysInSlot. Only relevant for getters. */
1371 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1372 : false, /* isTypedMethod. Only relevant for methods. */
1373 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1374 : };
1375 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1376 : static_assert(0 < 1, "There is no slot for us");
1377 :
1378 : static bool
1379 0 : texStorage3D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1380 : {
1381 0 : if (MOZ_UNLIKELY(args.length() < 6)) {
1382 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texStorage3D");
1383 : }
1384 : uint32_t arg0;
1385 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1386 0 : return false;
1387 : }
1388 : int32_t arg1;
1389 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1390 0 : return false;
1391 : }
1392 : uint32_t arg2;
1393 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
1394 0 : return false;
1395 : }
1396 : int32_t arg3;
1397 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1398 0 : return false;
1399 : }
1400 : int32_t arg4;
1401 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1402 0 : return false;
1403 : }
1404 : int32_t arg5;
1405 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
1406 0 : return false;
1407 : }
1408 0 : self->TexStorage3D(arg0, arg1, arg2, arg3, arg4, arg5);
1409 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1410 0 : args.rval().setUndefined();
1411 0 : return true;
1412 : }
1413 :
1414 : static const JSJitInfo texStorage3D_methodinfo = {
1415 : { (JSJitGetterOp)texStorage3D },
1416 : { prototypes::id::WebGL2RenderingContext },
1417 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1418 : JSJitInfo::Method,
1419 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1420 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1421 : false, /* isInfallible. False in setters. */
1422 : false, /* isMovable. Not relevant for setters. */
1423 : false, /* isEliminatable. Not relevant for setters. */
1424 : false, /* isAlwaysInSlot. Only relevant for getters. */
1425 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1426 : false, /* isTypedMethod. Only relevant for methods. */
1427 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1428 : };
1429 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1430 : static_assert(0 < 1, "There is no slot for us");
1431 :
1432 : static bool
1433 0 : texImage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1434 : {
1435 0 : unsigned argcount = std::min(args.length(), 10u);
1436 0 : switch (argcount) {
1437 : case 6: {
1438 : uint32_t arg0;
1439 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1440 0 : return false;
1441 : }
1442 : int32_t arg1;
1443 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1444 0 : return false;
1445 : }
1446 : int32_t arg2;
1447 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
1448 0 : return false;
1449 : }
1450 : uint32_t arg3;
1451 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
1452 0 : return false;
1453 : }
1454 : uint32_t arg4;
1455 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
1456 0 : return false;
1457 : }
1458 0 : if (args[5].isObject()) {
1459 : do {
1460 0 : NonNull<mozilla::dom::HTMLCanvasElement> arg5;
1461 : {
1462 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLCanvasElement, mozilla::dom::HTMLCanvasElement>(args[5], arg5);
1463 0 : if (NS_FAILED(rv)) {
1464 0 : break;
1465 : }
1466 : }
1467 0 : binding_detail::FastErrorResult rv;
1468 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, NonNullHelper(arg5), rv);
1469 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1470 0 : return false;
1471 : }
1472 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1473 0 : args.rval().setUndefined();
1474 0 : return true;
1475 : } while (0);
1476 : do {
1477 0 : NonNull<mozilla::dom::HTMLImageElement> arg5;
1478 : {
1479 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLImageElement, mozilla::dom::HTMLImageElement>(args[5], arg5);
1480 0 : if (NS_FAILED(rv)) {
1481 0 : break;
1482 : }
1483 : }
1484 0 : binding_detail::FastErrorResult rv;
1485 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, NonNullHelper(arg5), rv);
1486 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1487 0 : return false;
1488 : }
1489 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1490 0 : args.rval().setUndefined();
1491 0 : return true;
1492 : } while (0);
1493 : do {
1494 0 : NonNull<mozilla::dom::HTMLVideoElement> arg5;
1495 : {
1496 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLVideoElement, mozilla::dom::HTMLVideoElement>(args[5], arg5);
1497 0 : if (NS_FAILED(rv)) {
1498 0 : break;
1499 : }
1500 : }
1501 0 : binding_detail::FastErrorResult rv;
1502 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, NonNullHelper(arg5), rv);
1503 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1504 0 : return false;
1505 : }
1506 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1507 0 : args.rval().setUndefined();
1508 0 : return true;
1509 : } while (0);
1510 : do {
1511 0 : NonNull<mozilla::dom::ImageBitmap> arg5;
1512 : {
1513 0 : nsresult rv = UnwrapObject<prototypes::id::ImageBitmap, mozilla::dom::ImageBitmap>(args[5], arg5);
1514 0 : if (NS_FAILED(rv)) {
1515 0 : break;
1516 : }
1517 : }
1518 0 : binding_detail::FastErrorResult rv;
1519 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, NonNullHelper(arg5), rv);
1520 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1521 0 : return false;
1522 : }
1523 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1524 0 : args.rval().setUndefined();
1525 0 : return true;
1526 : } while (0);
1527 : do {
1528 0 : NonNull<mozilla::dom::ImageData> arg5;
1529 : {
1530 0 : nsresult rv = UnwrapObject<prototypes::id::ImageData, mozilla::dom::ImageData>(args[5], arg5);
1531 0 : if (NS_FAILED(rv)) {
1532 0 : break;
1533 : }
1534 : }
1535 0 : binding_detail::FastErrorResult rv;
1536 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, NonNullHelper(arg5), rv);
1537 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1538 0 : return false;
1539 : }
1540 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1541 0 : args.rval().setUndefined();
1542 0 : return true;
1543 : } while (0);
1544 : }
1545 0 : return ThrowErrorMessage(cx, MSG_OVERLOAD_RESOLUTION_FAILED, "6", "6", "WebGL2RenderingContext.texImage2D");
1546 : break;
1547 : }
1548 : case 9: {
1549 : uint32_t arg0;
1550 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1551 0 : return false;
1552 : }
1553 : int32_t arg1;
1554 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1555 0 : return false;
1556 : }
1557 : int32_t arg2;
1558 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
1559 0 : return false;
1560 : }
1561 : int32_t arg3;
1562 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1563 0 : return false;
1564 : }
1565 : int32_t arg4;
1566 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1567 0 : return false;
1568 : }
1569 : int32_t arg5;
1570 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
1571 0 : return false;
1572 : }
1573 : uint32_t arg6;
1574 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[6], &arg6)) {
1575 0 : return false;
1576 : }
1577 : uint32_t arg7;
1578 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
1579 0 : return false;
1580 : }
1581 0 : if (args[8].isNullOrUndefined()) {
1582 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg8(cx);
1583 0 : arg8.SetNull();
1584 0 : binding_detail::FastErrorResult rv;
1585 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, Constify(arg8), rv);
1586 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1587 0 : return false;
1588 : }
1589 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1590 0 : args.rval().setUndefined();
1591 0 : return true;
1592 : }
1593 0 : if (args[8].isObject()) {
1594 : do {
1595 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg8(cx);
1596 0 : if (!arg8.SetValue().Init(&args[8].toObject())) {
1597 0 : break;
1598 : }
1599 0 : binding_detail::FastErrorResult rv;
1600 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, Constify(arg8), rv);
1601 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1602 0 : return false;
1603 : }
1604 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1605 0 : args.rval().setUndefined();
1606 0 : return true;
1607 : } while (0);
1608 : do {
1609 0 : NonNull<mozilla::dom::HTMLCanvasElement> arg8;
1610 : {
1611 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLCanvasElement, mozilla::dom::HTMLCanvasElement>(args[8], arg8);
1612 0 : if (NS_FAILED(rv)) {
1613 0 : break;
1614 : }
1615 : }
1616 0 : binding_detail::FastErrorResult rv;
1617 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1618 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1619 0 : return false;
1620 : }
1621 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1622 0 : args.rval().setUndefined();
1623 0 : return true;
1624 : } while (0);
1625 : do {
1626 0 : NonNull<mozilla::dom::HTMLImageElement> arg8;
1627 : {
1628 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLImageElement, mozilla::dom::HTMLImageElement>(args[8], arg8);
1629 0 : if (NS_FAILED(rv)) {
1630 0 : break;
1631 : }
1632 : }
1633 0 : binding_detail::FastErrorResult rv;
1634 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1635 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1636 0 : return false;
1637 : }
1638 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1639 0 : args.rval().setUndefined();
1640 0 : return true;
1641 : } while (0);
1642 : do {
1643 0 : NonNull<mozilla::dom::HTMLVideoElement> arg8;
1644 : {
1645 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLVideoElement, mozilla::dom::HTMLVideoElement>(args[8], arg8);
1646 0 : if (NS_FAILED(rv)) {
1647 0 : break;
1648 : }
1649 : }
1650 0 : binding_detail::FastErrorResult rv;
1651 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1652 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1653 0 : return false;
1654 : }
1655 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1656 0 : args.rval().setUndefined();
1657 0 : return true;
1658 : } while (0);
1659 : do {
1660 0 : NonNull<mozilla::dom::ImageBitmap> arg8;
1661 : {
1662 0 : nsresult rv = UnwrapObject<prototypes::id::ImageBitmap, mozilla::dom::ImageBitmap>(args[8], arg8);
1663 0 : if (NS_FAILED(rv)) {
1664 0 : break;
1665 : }
1666 : }
1667 0 : binding_detail::FastErrorResult rv;
1668 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1669 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1670 0 : return false;
1671 : }
1672 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1673 0 : args.rval().setUndefined();
1674 0 : return true;
1675 : } while (0);
1676 : do {
1677 0 : NonNull<mozilla::dom::ImageData> arg8;
1678 : {
1679 0 : nsresult rv = UnwrapObject<prototypes::id::ImageData, mozilla::dom::ImageData>(args[8], arg8);
1680 0 : if (NS_FAILED(rv)) {
1681 0 : break;
1682 : }
1683 : }
1684 0 : binding_detail::FastErrorResult rv;
1685 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1686 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1687 0 : return false;
1688 : }
1689 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1690 0 : args.rval().setUndefined();
1691 0 : return true;
1692 : } while (0);
1693 : }
1694 : int64_t arg8;
1695 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[8], &arg8)) {
1696 0 : return false;
1697 : }
1698 0 : binding_detail::FastErrorResult rv;
1699 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, rv);
1700 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1701 0 : return false;
1702 : }
1703 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1704 0 : args.rval().setUndefined();
1705 0 : return true;
1706 : break;
1707 : }
1708 : case 10: {
1709 : uint32_t arg0;
1710 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1711 0 : return false;
1712 : }
1713 : int32_t arg1;
1714 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1715 0 : return false;
1716 : }
1717 : int32_t arg2;
1718 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
1719 0 : return false;
1720 : }
1721 : int32_t arg3;
1722 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1723 0 : return false;
1724 : }
1725 : int32_t arg4;
1726 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1727 0 : return false;
1728 : }
1729 : int32_t arg5;
1730 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
1731 0 : return false;
1732 : }
1733 : uint32_t arg6;
1734 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[6], &arg6)) {
1735 0 : return false;
1736 : }
1737 : uint32_t arg7;
1738 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
1739 0 : return false;
1740 : }
1741 0 : RootedTypedArray<ArrayBufferView> arg8(cx);
1742 0 : if (args[8].isObject()) {
1743 0 : if (!arg8.Init(&args[8].toObject())) {
1744 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 9 of WebGL2RenderingContext.texImage2D", "ArrayBufferView");
1745 0 : return false;
1746 : }
1747 : } else {
1748 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 9 of WebGL2RenderingContext.texImage2D");
1749 0 : return false;
1750 : }
1751 : uint32_t arg9;
1752 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
1753 0 : return false;
1754 : }
1755 0 : binding_detail::FastErrorResult rv;
1756 0 : self->TexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, Constify(arg8), arg9, rv);
1757 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1758 0 : return false;
1759 : }
1760 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1761 0 : args.rval().setUndefined();
1762 0 : return true;
1763 : break;
1764 : }
1765 : default: {
1766 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texImage2D");
1767 : break;
1768 : }
1769 : }
1770 : MOZ_CRASH("We have an always-returning default case");
1771 : return false;
1772 : }
1773 :
1774 : static const JSJitInfo texImage2D_methodinfo = {
1775 : { (JSJitGetterOp)texImage2D },
1776 : { prototypes::id::WebGL2RenderingContext },
1777 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
1778 : JSJitInfo::Method,
1779 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1780 : JSVAL_TYPE_UNDEFINED, /* 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 : texSubImage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
1794 : {
1795 0 : unsigned argcount = std::min(args.length(), 10u);
1796 0 : switch (argcount) {
1797 : case 7: {
1798 : uint32_t arg0;
1799 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1800 0 : return false;
1801 : }
1802 : int32_t arg1;
1803 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1804 0 : return false;
1805 : }
1806 : int32_t arg2;
1807 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
1808 0 : return false;
1809 : }
1810 : int32_t arg3;
1811 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1812 0 : return false;
1813 : }
1814 : uint32_t arg4;
1815 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
1816 0 : return false;
1817 : }
1818 : uint32_t arg5;
1819 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[5], &arg5)) {
1820 0 : return false;
1821 : }
1822 0 : if (args[6].isObject()) {
1823 : do {
1824 0 : NonNull<mozilla::dom::HTMLCanvasElement> arg6;
1825 : {
1826 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLCanvasElement, mozilla::dom::HTMLCanvasElement>(args[6], arg6);
1827 0 : if (NS_FAILED(rv)) {
1828 0 : break;
1829 : }
1830 : }
1831 0 : binding_detail::FastErrorResult rv;
1832 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, NonNullHelper(arg6), rv);
1833 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1834 0 : return false;
1835 : }
1836 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1837 0 : args.rval().setUndefined();
1838 0 : return true;
1839 : } while (0);
1840 : do {
1841 0 : NonNull<mozilla::dom::HTMLImageElement> arg6;
1842 : {
1843 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLImageElement, mozilla::dom::HTMLImageElement>(args[6], arg6);
1844 0 : if (NS_FAILED(rv)) {
1845 0 : break;
1846 : }
1847 : }
1848 0 : binding_detail::FastErrorResult rv;
1849 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, NonNullHelper(arg6), rv);
1850 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1851 0 : return false;
1852 : }
1853 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1854 0 : args.rval().setUndefined();
1855 0 : return true;
1856 : } while (0);
1857 : do {
1858 0 : NonNull<mozilla::dom::HTMLVideoElement> arg6;
1859 : {
1860 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLVideoElement, mozilla::dom::HTMLVideoElement>(args[6], arg6);
1861 0 : if (NS_FAILED(rv)) {
1862 0 : break;
1863 : }
1864 : }
1865 0 : binding_detail::FastErrorResult rv;
1866 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, NonNullHelper(arg6), rv);
1867 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1868 0 : return false;
1869 : }
1870 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1871 0 : args.rval().setUndefined();
1872 0 : return true;
1873 : } while (0);
1874 : do {
1875 0 : NonNull<mozilla::dom::ImageBitmap> arg6;
1876 : {
1877 0 : nsresult rv = UnwrapObject<prototypes::id::ImageBitmap, mozilla::dom::ImageBitmap>(args[6], arg6);
1878 0 : if (NS_FAILED(rv)) {
1879 0 : break;
1880 : }
1881 : }
1882 0 : binding_detail::FastErrorResult rv;
1883 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, NonNullHelper(arg6), rv);
1884 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1885 0 : return false;
1886 : }
1887 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1888 0 : args.rval().setUndefined();
1889 0 : return true;
1890 : } while (0);
1891 : do {
1892 0 : NonNull<mozilla::dom::ImageData> arg6;
1893 : {
1894 0 : nsresult rv = UnwrapObject<prototypes::id::ImageData, mozilla::dom::ImageData>(args[6], arg6);
1895 0 : if (NS_FAILED(rv)) {
1896 0 : break;
1897 : }
1898 : }
1899 0 : binding_detail::FastErrorResult rv;
1900 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, NonNullHelper(arg6), rv);
1901 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1902 0 : return false;
1903 : }
1904 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1905 0 : args.rval().setUndefined();
1906 0 : return true;
1907 : } while (0);
1908 : }
1909 0 : return ThrowErrorMessage(cx, MSG_OVERLOAD_RESOLUTION_FAILED, "7", "7", "WebGL2RenderingContext.texSubImage2D");
1910 : break;
1911 : }
1912 : case 9: {
1913 : uint32_t arg0;
1914 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
1915 0 : return false;
1916 : }
1917 : int32_t arg1;
1918 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
1919 0 : return false;
1920 : }
1921 : int32_t arg2;
1922 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
1923 0 : return false;
1924 : }
1925 : int32_t arg3;
1926 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
1927 0 : return false;
1928 : }
1929 : int32_t arg4;
1930 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
1931 0 : return false;
1932 : }
1933 : int32_t arg5;
1934 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
1935 0 : return false;
1936 : }
1937 : uint32_t arg6;
1938 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[6], &arg6)) {
1939 0 : return false;
1940 : }
1941 : uint32_t arg7;
1942 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
1943 0 : return false;
1944 : }
1945 0 : if (args[8].isNullOrUndefined()) {
1946 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg8(cx);
1947 0 : arg8.SetNull();
1948 0 : binding_detail::FastErrorResult rv;
1949 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, Constify(arg8), rv);
1950 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1951 0 : return false;
1952 : }
1953 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1954 0 : args.rval().setUndefined();
1955 0 : return true;
1956 : }
1957 0 : if (args[8].isObject()) {
1958 : do {
1959 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg8(cx);
1960 0 : if (!arg8.SetValue().Init(&args[8].toObject())) {
1961 0 : break;
1962 : }
1963 0 : binding_detail::FastErrorResult rv;
1964 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, Constify(arg8), rv);
1965 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1966 0 : return false;
1967 : }
1968 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1969 0 : args.rval().setUndefined();
1970 0 : return true;
1971 : } while (0);
1972 : do {
1973 0 : NonNull<mozilla::dom::HTMLCanvasElement> arg8;
1974 : {
1975 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLCanvasElement, mozilla::dom::HTMLCanvasElement>(args[8], arg8);
1976 0 : if (NS_FAILED(rv)) {
1977 0 : break;
1978 : }
1979 : }
1980 0 : binding_detail::FastErrorResult rv;
1981 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1982 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1983 0 : return false;
1984 : }
1985 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1986 0 : args.rval().setUndefined();
1987 0 : return true;
1988 : } while (0);
1989 : do {
1990 0 : NonNull<mozilla::dom::HTMLImageElement> arg8;
1991 : {
1992 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLImageElement, mozilla::dom::HTMLImageElement>(args[8], arg8);
1993 0 : if (NS_FAILED(rv)) {
1994 0 : break;
1995 : }
1996 : }
1997 0 : binding_detail::FastErrorResult rv;
1998 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
1999 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2000 0 : return false;
2001 : }
2002 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2003 0 : args.rval().setUndefined();
2004 0 : return true;
2005 : } while (0);
2006 : do {
2007 0 : NonNull<mozilla::dom::HTMLVideoElement> arg8;
2008 : {
2009 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLVideoElement, mozilla::dom::HTMLVideoElement>(args[8], arg8);
2010 0 : if (NS_FAILED(rv)) {
2011 0 : break;
2012 : }
2013 : }
2014 0 : binding_detail::FastErrorResult rv;
2015 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
2016 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2017 0 : return false;
2018 : }
2019 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2020 0 : args.rval().setUndefined();
2021 0 : return true;
2022 : } while (0);
2023 : do {
2024 0 : NonNull<mozilla::dom::ImageBitmap> arg8;
2025 : {
2026 0 : nsresult rv = UnwrapObject<prototypes::id::ImageBitmap, mozilla::dom::ImageBitmap>(args[8], arg8);
2027 0 : if (NS_FAILED(rv)) {
2028 0 : break;
2029 : }
2030 : }
2031 0 : binding_detail::FastErrorResult rv;
2032 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
2033 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2034 0 : return false;
2035 : }
2036 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2037 0 : args.rval().setUndefined();
2038 0 : return true;
2039 : } while (0);
2040 : do {
2041 0 : NonNull<mozilla::dom::ImageData> arg8;
2042 : {
2043 0 : nsresult rv = UnwrapObject<prototypes::id::ImageData, mozilla::dom::ImageData>(args[8], arg8);
2044 0 : if (NS_FAILED(rv)) {
2045 0 : break;
2046 : }
2047 : }
2048 0 : binding_detail::FastErrorResult rv;
2049 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, NonNullHelper(arg8), rv);
2050 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2051 0 : return false;
2052 : }
2053 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2054 0 : args.rval().setUndefined();
2055 0 : return true;
2056 : } while (0);
2057 : }
2058 : int64_t arg8;
2059 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[8], &arg8)) {
2060 0 : return false;
2061 : }
2062 0 : binding_detail::FastErrorResult rv;
2063 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, rv);
2064 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2065 0 : return false;
2066 : }
2067 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2068 0 : args.rval().setUndefined();
2069 0 : return true;
2070 : break;
2071 : }
2072 : case 10: {
2073 : uint32_t arg0;
2074 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2075 0 : return false;
2076 : }
2077 : int32_t arg1;
2078 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2079 0 : return false;
2080 : }
2081 : int32_t arg2;
2082 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
2083 0 : return false;
2084 : }
2085 : int32_t arg3;
2086 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2087 0 : return false;
2088 : }
2089 : int32_t arg4;
2090 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2091 0 : return false;
2092 : }
2093 : int32_t arg5;
2094 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2095 0 : return false;
2096 : }
2097 : uint32_t arg6;
2098 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[6], &arg6)) {
2099 0 : return false;
2100 : }
2101 : uint32_t arg7;
2102 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
2103 0 : return false;
2104 : }
2105 0 : RootedTypedArray<ArrayBufferView> arg8(cx);
2106 0 : if (args[8].isObject()) {
2107 0 : if (!arg8.Init(&args[8].toObject())) {
2108 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 9 of WebGL2RenderingContext.texSubImage2D", "ArrayBufferView");
2109 0 : return false;
2110 : }
2111 : } else {
2112 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 9 of WebGL2RenderingContext.texSubImage2D");
2113 0 : return false;
2114 : }
2115 : uint32_t arg9;
2116 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
2117 0 : return false;
2118 : }
2119 0 : binding_detail::FastErrorResult rv;
2120 0 : self->TexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, Constify(arg8), arg9, rv);
2121 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2122 0 : return false;
2123 : }
2124 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2125 0 : args.rval().setUndefined();
2126 0 : return true;
2127 : break;
2128 : }
2129 : default: {
2130 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texSubImage2D");
2131 : break;
2132 : }
2133 : }
2134 : MOZ_CRASH("We have an always-returning default case");
2135 : return false;
2136 : }
2137 :
2138 : static const JSJitInfo texSubImage2D_methodinfo = {
2139 : { (JSJitGetterOp)texSubImage2D },
2140 : { prototypes::id::WebGL2RenderingContext },
2141 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
2142 : JSJitInfo::Method,
2143 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2144 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2145 : false, /* isInfallible. False in setters. */
2146 : false, /* isMovable. Not relevant for setters. */
2147 : false, /* isEliminatable. Not relevant for setters. */
2148 : false, /* isAlwaysInSlot. Only relevant for getters. */
2149 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2150 : false, /* isTypedMethod. Only relevant for methods. */
2151 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2152 : };
2153 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2154 : static_assert(0 < 1, "There is no slot for us");
2155 :
2156 : static bool
2157 0 : texImage3D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
2158 : {
2159 0 : unsigned argcount = std::min(args.length(), 11u);
2160 0 : switch (argcount) {
2161 : case 10: {
2162 : uint32_t arg0;
2163 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2164 0 : return false;
2165 : }
2166 : int32_t arg1;
2167 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2168 0 : return false;
2169 : }
2170 : int32_t arg2;
2171 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
2172 0 : return false;
2173 : }
2174 : int32_t arg3;
2175 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2176 0 : return false;
2177 : }
2178 : int32_t arg4;
2179 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2180 0 : return false;
2181 : }
2182 : int32_t arg5;
2183 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2184 0 : return false;
2185 : }
2186 : int32_t arg6;
2187 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
2188 0 : return false;
2189 : }
2190 : uint32_t arg7;
2191 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
2192 0 : return false;
2193 : }
2194 : uint32_t arg8;
2195 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2196 0 : return false;
2197 : }
2198 0 : if (args[9].isNullOrUndefined()) {
2199 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg9(cx);
2200 0 : arg9.SetNull();
2201 0 : binding_detail::FastErrorResult rv;
2202 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, Constify(arg9), rv);
2203 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2204 0 : return false;
2205 : }
2206 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2207 0 : args.rval().setUndefined();
2208 0 : return true;
2209 : }
2210 0 : if (args[9].isObject()) {
2211 : do {
2212 0 : NonNull<mozilla::dom::HTMLCanvasElement> arg9;
2213 : {
2214 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLCanvasElement, mozilla::dom::HTMLCanvasElement>(args[9], arg9);
2215 0 : if (NS_FAILED(rv)) {
2216 0 : break;
2217 : }
2218 : }
2219 0 : binding_detail::FastErrorResult rv;
2220 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, NonNullHelper(arg9), rv);
2221 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2222 0 : return false;
2223 : }
2224 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2225 0 : args.rval().setUndefined();
2226 0 : return true;
2227 : } while (0);
2228 : do {
2229 0 : NonNull<mozilla::dom::HTMLImageElement> arg9;
2230 : {
2231 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLImageElement, mozilla::dom::HTMLImageElement>(args[9], arg9);
2232 0 : if (NS_FAILED(rv)) {
2233 0 : break;
2234 : }
2235 : }
2236 0 : binding_detail::FastErrorResult rv;
2237 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, NonNullHelper(arg9), rv);
2238 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2239 0 : return false;
2240 : }
2241 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2242 0 : args.rval().setUndefined();
2243 0 : return true;
2244 : } while (0);
2245 : do {
2246 0 : NonNull<mozilla::dom::HTMLVideoElement> arg9;
2247 : {
2248 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLVideoElement, mozilla::dom::HTMLVideoElement>(args[9], arg9);
2249 0 : if (NS_FAILED(rv)) {
2250 0 : break;
2251 : }
2252 : }
2253 0 : binding_detail::FastErrorResult rv;
2254 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, NonNullHelper(arg9), rv);
2255 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2256 0 : return false;
2257 : }
2258 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2259 0 : args.rval().setUndefined();
2260 0 : return true;
2261 : } while (0);
2262 : do {
2263 0 : NonNull<mozilla::dom::ImageBitmap> arg9;
2264 : {
2265 0 : nsresult rv = UnwrapObject<prototypes::id::ImageBitmap, mozilla::dom::ImageBitmap>(args[9], arg9);
2266 0 : if (NS_FAILED(rv)) {
2267 0 : break;
2268 : }
2269 : }
2270 0 : binding_detail::FastErrorResult rv;
2271 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, NonNullHelper(arg9), rv);
2272 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2273 0 : return false;
2274 : }
2275 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2276 0 : args.rval().setUndefined();
2277 0 : return true;
2278 : } while (0);
2279 : do {
2280 0 : NonNull<mozilla::dom::ImageData> arg9;
2281 : {
2282 0 : nsresult rv = UnwrapObject<prototypes::id::ImageData, mozilla::dom::ImageData>(args[9], arg9);
2283 0 : if (NS_FAILED(rv)) {
2284 0 : break;
2285 : }
2286 : }
2287 0 : binding_detail::FastErrorResult rv;
2288 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, NonNullHelper(arg9), rv);
2289 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2290 0 : return false;
2291 : }
2292 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2293 0 : args.rval().setUndefined();
2294 0 : return true;
2295 : } while (0);
2296 : do {
2297 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg9(cx);
2298 0 : if (!arg9.SetValue().Init(&args[9].toObject())) {
2299 0 : break;
2300 : }
2301 0 : binding_detail::FastErrorResult rv;
2302 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, Constify(arg9), rv);
2303 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2304 0 : return false;
2305 : }
2306 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2307 0 : args.rval().setUndefined();
2308 0 : return true;
2309 : } while (0);
2310 : }
2311 : int64_t arg9;
2312 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[9], &arg9)) {
2313 0 : return false;
2314 : }
2315 0 : binding_detail::FastErrorResult rv;
2316 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, rv);
2317 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2318 0 : return false;
2319 : }
2320 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2321 0 : args.rval().setUndefined();
2322 0 : return true;
2323 : break;
2324 : }
2325 : case 11: {
2326 : uint32_t arg0;
2327 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2328 0 : return false;
2329 : }
2330 : int32_t arg1;
2331 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2332 0 : return false;
2333 : }
2334 : int32_t arg2;
2335 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
2336 0 : return false;
2337 : }
2338 : int32_t arg3;
2339 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2340 0 : return false;
2341 : }
2342 : int32_t arg4;
2343 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2344 0 : return false;
2345 : }
2346 : int32_t arg5;
2347 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2348 0 : return false;
2349 : }
2350 : int32_t arg6;
2351 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
2352 0 : return false;
2353 : }
2354 : uint32_t arg7;
2355 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
2356 0 : return false;
2357 : }
2358 : uint32_t arg8;
2359 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2360 0 : return false;
2361 : }
2362 0 : RootedTypedArray<ArrayBufferView> arg9(cx);
2363 0 : if (args[9].isObject()) {
2364 0 : if (!arg9.Init(&args[9].toObject())) {
2365 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 10 of WebGL2RenderingContext.texImage3D", "ArrayBufferView");
2366 0 : return false;
2367 : }
2368 : } else {
2369 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 10 of WebGL2RenderingContext.texImage3D");
2370 0 : return false;
2371 : }
2372 : uint32_t arg10;
2373 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[10], &arg10)) {
2374 0 : return false;
2375 : }
2376 0 : binding_detail::FastErrorResult rv;
2377 0 : self->TexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, Constify(arg9), arg10, rv);
2378 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2379 0 : return false;
2380 : }
2381 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2382 0 : args.rval().setUndefined();
2383 0 : return true;
2384 : break;
2385 : }
2386 : default: {
2387 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texImage3D");
2388 : break;
2389 : }
2390 : }
2391 : MOZ_CRASH("We have an always-returning default case");
2392 : return false;
2393 : }
2394 :
2395 : static const JSJitInfo texImage3D_methodinfo = {
2396 : { (JSJitGetterOp)texImage3D },
2397 : { prototypes::id::WebGL2RenderingContext },
2398 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
2399 : JSJitInfo::Method,
2400 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2401 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2402 : false, /* isInfallible. False in setters. */
2403 : false, /* isMovable. Not relevant for setters. */
2404 : false, /* isEliminatable. Not relevant for setters. */
2405 : false, /* isAlwaysInSlot. Only relevant for getters. */
2406 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2407 : false, /* isTypedMethod. Only relevant for methods. */
2408 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2409 : };
2410 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2411 : static_assert(0 < 1, "There is no slot for us");
2412 :
2413 : static bool
2414 0 : texSubImage3D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
2415 : {
2416 0 : unsigned argcount = std::min(args.length(), 12u);
2417 0 : switch (argcount) {
2418 : case 11: {
2419 : uint32_t arg0;
2420 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2421 0 : return false;
2422 : }
2423 : int32_t arg1;
2424 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2425 0 : return false;
2426 : }
2427 : int32_t arg2;
2428 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
2429 0 : return false;
2430 : }
2431 : int32_t arg3;
2432 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2433 0 : return false;
2434 : }
2435 : int32_t arg4;
2436 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2437 0 : return false;
2438 : }
2439 : int32_t arg5;
2440 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2441 0 : return false;
2442 : }
2443 : int32_t arg6;
2444 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
2445 0 : return false;
2446 : }
2447 : int32_t arg7;
2448 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
2449 0 : return false;
2450 : }
2451 : uint32_t arg8;
2452 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2453 0 : return false;
2454 : }
2455 : uint32_t arg9;
2456 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
2457 0 : return false;
2458 : }
2459 0 : if (args[10].isNullOrUndefined()) {
2460 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg10(cx);
2461 0 : arg10.SetNull();
2462 : uint32_t arg11;
2463 0 : if (args.hasDefined(11)) {
2464 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[11], &arg11)) {
2465 0 : return false;
2466 : }
2467 : } else {
2468 0 : arg11 = 0U;
2469 : }
2470 0 : binding_detail::FastErrorResult rv;
2471 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, Constify(arg10), arg11, rv);
2472 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2473 0 : return false;
2474 : }
2475 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2476 0 : args.rval().setUndefined();
2477 0 : return true;
2478 : }
2479 0 : if (args[10].isObject()) {
2480 : do {
2481 0 : NonNull<mozilla::dom::HTMLCanvasElement> arg10;
2482 : {
2483 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLCanvasElement, mozilla::dom::HTMLCanvasElement>(args[10], arg10);
2484 0 : if (NS_FAILED(rv)) {
2485 0 : break;
2486 : }
2487 : }
2488 0 : binding_detail::FastErrorResult rv;
2489 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, NonNullHelper(arg10), rv);
2490 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2491 0 : return false;
2492 : }
2493 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2494 0 : args.rval().setUndefined();
2495 0 : return true;
2496 : } while (0);
2497 : do {
2498 0 : NonNull<mozilla::dom::HTMLImageElement> arg10;
2499 : {
2500 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLImageElement, mozilla::dom::HTMLImageElement>(args[10], arg10);
2501 0 : if (NS_FAILED(rv)) {
2502 0 : break;
2503 : }
2504 : }
2505 0 : binding_detail::FastErrorResult rv;
2506 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, NonNullHelper(arg10), rv);
2507 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2508 0 : return false;
2509 : }
2510 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2511 0 : args.rval().setUndefined();
2512 0 : return true;
2513 : } while (0);
2514 : do {
2515 0 : NonNull<mozilla::dom::HTMLVideoElement> arg10;
2516 : {
2517 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLVideoElement, mozilla::dom::HTMLVideoElement>(args[10], arg10);
2518 0 : if (NS_FAILED(rv)) {
2519 0 : break;
2520 : }
2521 : }
2522 0 : binding_detail::FastErrorResult rv;
2523 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, NonNullHelper(arg10), rv);
2524 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2525 0 : return false;
2526 : }
2527 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2528 0 : args.rval().setUndefined();
2529 0 : return true;
2530 : } while (0);
2531 : do {
2532 0 : NonNull<mozilla::dom::ImageBitmap> arg10;
2533 : {
2534 0 : nsresult rv = UnwrapObject<prototypes::id::ImageBitmap, mozilla::dom::ImageBitmap>(args[10], arg10);
2535 0 : if (NS_FAILED(rv)) {
2536 0 : break;
2537 : }
2538 : }
2539 0 : binding_detail::FastErrorResult rv;
2540 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, NonNullHelper(arg10), rv);
2541 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2542 0 : return false;
2543 : }
2544 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2545 0 : args.rval().setUndefined();
2546 0 : return true;
2547 : } while (0);
2548 : do {
2549 0 : NonNull<mozilla::dom::ImageData> arg10;
2550 : {
2551 0 : nsresult rv = UnwrapObject<prototypes::id::ImageData, mozilla::dom::ImageData>(args[10], arg10);
2552 0 : if (NS_FAILED(rv)) {
2553 0 : break;
2554 : }
2555 : }
2556 0 : binding_detail::FastErrorResult rv;
2557 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, NonNullHelper(arg10), rv);
2558 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2559 0 : return false;
2560 : }
2561 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2562 0 : args.rval().setUndefined();
2563 0 : return true;
2564 : } while (0);
2565 : do {
2566 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg10(cx);
2567 0 : if (!arg10.SetValue().Init(&args[10].toObject())) {
2568 0 : break;
2569 : }
2570 : uint32_t arg11;
2571 0 : if (args.hasDefined(11)) {
2572 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[11], &arg11)) {
2573 0 : return false;
2574 : }
2575 : } else {
2576 0 : arg11 = 0U;
2577 : }
2578 0 : binding_detail::FastErrorResult rv;
2579 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, Constify(arg10), arg11, rv);
2580 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2581 0 : return false;
2582 : }
2583 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2584 0 : args.rval().setUndefined();
2585 0 : return true;
2586 : } while (0);
2587 : }
2588 : int64_t arg10;
2589 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[10], &arg10)) {
2590 0 : return false;
2591 : }
2592 0 : binding_detail::FastErrorResult rv;
2593 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, rv);
2594 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2595 0 : return false;
2596 : }
2597 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2598 0 : args.rval().setUndefined();
2599 0 : return true;
2600 : break;
2601 : }
2602 : case 12: {
2603 : uint32_t arg0;
2604 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2605 0 : return false;
2606 : }
2607 : int32_t arg1;
2608 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2609 0 : return false;
2610 : }
2611 : int32_t arg2;
2612 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
2613 0 : return false;
2614 : }
2615 : int32_t arg3;
2616 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2617 0 : return false;
2618 : }
2619 : int32_t arg4;
2620 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2621 0 : return false;
2622 : }
2623 : int32_t arg5;
2624 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2625 0 : return false;
2626 : }
2627 : int32_t arg6;
2628 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
2629 0 : return false;
2630 : }
2631 : int32_t arg7;
2632 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
2633 0 : return false;
2634 : }
2635 : uint32_t arg8;
2636 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2637 0 : return false;
2638 : }
2639 : uint32_t arg9;
2640 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
2641 0 : return false;
2642 : }
2643 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg10(cx);
2644 0 : if (args[10].isObject()) {
2645 0 : if (!arg10.SetValue().Init(&args[10].toObject())) {
2646 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 11 of WebGL2RenderingContext.texSubImage3D", "ArrayBufferViewOrNull");
2647 0 : return false;
2648 : }
2649 0 : } else if (args[10].isNullOrUndefined()) {
2650 0 : arg10.SetNull();
2651 : } else {
2652 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 11 of WebGL2RenderingContext.texSubImage3D");
2653 0 : return false;
2654 : }
2655 : uint32_t arg11;
2656 0 : if (args.hasDefined(11)) {
2657 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[11], &arg11)) {
2658 0 : return false;
2659 : }
2660 : } else {
2661 0 : arg11 = 0U;
2662 : }
2663 0 : binding_detail::FastErrorResult rv;
2664 0 : self->TexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, Constify(arg10), arg11, rv);
2665 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2666 0 : return false;
2667 : }
2668 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2669 0 : args.rval().setUndefined();
2670 0 : return true;
2671 : break;
2672 : }
2673 : default: {
2674 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texSubImage3D");
2675 : break;
2676 : }
2677 : }
2678 : MOZ_CRASH("We have an always-returning default case");
2679 : return false;
2680 : }
2681 :
2682 : static const JSJitInfo texSubImage3D_methodinfo = {
2683 : { (JSJitGetterOp)texSubImage3D },
2684 : { prototypes::id::WebGL2RenderingContext },
2685 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
2686 : JSJitInfo::Method,
2687 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2688 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2689 : false, /* 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 : copyTexSubImage3D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
2702 : {
2703 0 : if (MOZ_UNLIKELY(args.length() < 9)) {
2704 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.copyTexSubImage3D");
2705 : }
2706 : uint32_t arg0;
2707 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2708 0 : return false;
2709 : }
2710 : int32_t arg1;
2711 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2712 0 : return false;
2713 : }
2714 : int32_t arg2;
2715 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
2716 0 : return false;
2717 : }
2718 : int32_t arg3;
2719 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2720 0 : return false;
2721 : }
2722 : int32_t arg4;
2723 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2724 0 : return false;
2725 : }
2726 : int32_t arg5;
2727 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2728 0 : return false;
2729 : }
2730 : int32_t arg6;
2731 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
2732 0 : return false;
2733 : }
2734 : int32_t arg7;
2735 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
2736 0 : return false;
2737 : }
2738 : int32_t arg8;
2739 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[8], &arg8)) {
2740 0 : return false;
2741 : }
2742 0 : self->CopyTexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2743 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2744 0 : args.rval().setUndefined();
2745 0 : return true;
2746 : }
2747 :
2748 : static const JSJitInfo copyTexSubImage3D_methodinfo = {
2749 : { (JSJitGetterOp)copyTexSubImage3D },
2750 : { prototypes::id::WebGL2RenderingContext },
2751 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
2752 : JSJitInfo::Method,
2753 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2754 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2755 : false, /* isInfallible. False in setters. */
2756 : false, /* isMovable. Not relevant for setters. */
2757 : false, /* isEliminatable. Not relevant for setters. */
2758 : false, /* isAlwaysInSlot. Only relevant for getters. */
2759 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2760 : false, /* isTypedMethod. Only relevant for methods. */
2761 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2762 : };
2763 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2764 : static_assert(0 < 1, "There is no slot for us");
2765 :
2766 : static bool
2767 0 : compressedTexImage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
2768 : {
2769 0 : unsigned argcount = std::min(args.length(), 9u);
2770 0 : switch (argcount) {
2771 : case 7: {
2772 : uint32_t arg0;
2773 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2774 0 : return false;
2775 : }
2776 : int32_t arg1;
2777 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2778 0 : return false;
2779 : }
2780 : uint32_t arg2;
2781 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
2782 0 : return false;
2783 : }
2784 : int32_t arg3;
2785 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2786 0 : return false;
2787 : }
2788 : int32_t arg4;
2789 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2790 0 : return false;
2791 : }
2792 : int32_t arg5;
2793 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2794 0 : return false;
2795 : }
2796 0 : if (args[6].isObject()) {
2797 : do {
2798 0 : RootedTypedArray<ArrayBufferView> arg6(cx);
2799 0 : if (!arg6.Init(&args[6].toObject())) {
2800 0 : break;
2801 : }
2802 : uint32_t arg7;
2803 0 : if (args.hasDefined(7)) {
2804 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
2805 0 : return false;
2806 : }
2807 : } else {
2808 0 : arg7 = 0U;
2809 : }
2810 : uint32_t arg8;
2811 0 : if (args.hasDefined(8)) {
2812 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2813 0 : return false;
2814 : }
2815 : } else {
2816 0 : arg8 = 0U;
2817 : }
2818 0 : self->CompressedTexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, Constify(arg6), arg7, arg8);
2819 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2820 0 : args.rval().setUndefined();
2821 0 : return true;
2822 : } while (0);
2823 : }
2824 : int64_t arg6;
2825 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[6], &arg6)) {
2826 0 : return false;
2827 : }
2828 0 : self->CompressedTexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
2829 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2830 0 : args.rval().setUndefined();
2831 0 : return true;
2832 : break;
2833 : }
2834 : case 8: {
2835 : MOZ_FALLTHROUGH;
2836 : }
2837 : case 9: {
2838 : uint32_t arg0;
2839 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2840 0 : return false;
2841 : }
2842 : int32_t arg1;
2843 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2844 0 : return false;
2845 : }
2846 : uint32_t arg2;
2847 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
2848 0 : return false;
2849 : }
2850 : int32_t arg3;
2851 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2852 0 : return false;
2853 : }
2854 : int32_t arg4;
2855 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2856 0 : return false;
2857 : }
2858 : int32_t arg5;
2859 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2860 0 : return false;
2861 : }
2862 0 : RootedTypedArray<ArrayBufferView> arg6(cx);
2863 0 : if (args[6].isObject()) {
2864 0 : if (!arg6.Init(&args[6].toObject())) {
2865 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 7 of WebGL2RenderingContext.compressedTexImage2D", "ArrayBufferView");
2866 0 : return false;
2867 : }
2868 : } else {
2869 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 7 of WebGL2RenderingContext.compressedTexImage2D");
2870 0 : return false;
2871 : }
2872 : uint32_t arg7;
2873 0 : if (args.hasDefined(7)) {
2874 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
2875 0 : return false;
2876 : }
2877 : } else {
2878 0 : arg7 = 0U;
2879 : }
2880 : uint32_t arg8;
2881 0 : if (args.hasDefined(8)) {
2882 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2883 0 : return false;
2884 : }
2885 : } else {
2886 0 : arg8 = 0U;
2887 : }
2888 0 : self->CompressedTexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, Constify(arg6), arg7, arg8);
2889 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2890 0 : args.rval().setUndefined();
2891 0 : return true;
2892 : break;
2893 : }
2894 : default: {
2895 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.compressedTexImage2D");
2896 : break;
2897 : }
2898 : }
2899 : MOZ_CRASH("We have an always-returning default case");
2900 : return false;
2901 : }
2902 :
2903 : static const JSJitInfo compressedTexImage2D_methodinfo = {
2904 : { (JSJitGetterOp)compressedTexImage2D },
2905 : { prototypes::id::WebGL2RenderingContext },
2906 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
2907 : JSJitInfo::Method,
2908 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2909 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2910 : false, /* isInfallible. False in setters. */
2911 : false, /* isMovable. Not relevant for setters. */
2912 : false, /* isEliminatable. Not relevant for setters. */
2913 : false, /* isAlwaysInSlot. Only relevant for getters. */
2914 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2915 : false, /* isTypedMethod. Only relevant for methods. */
2916 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2917 : };
2918 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2919 : static_assert(0 < 1, "There is no slot for us");
2920 :
2921 : static bool
2922 0 : compressedTexImage3D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
2923 : {
2924 0 : unsigned argcount = std::min(args.length(), 10u);
2925 0 : switch (argcount) {
2926 : case 8: {
2927 : uint32_t arg0;
2928 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2929 0 : return false;
2930 : }
2931 : int32_t arg1;
2932 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
2933 0 : return false;
2934 : }
2935 : uint32_t arg2;
2936 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
2937 0 : return false;
2938 : }
2939 : int32_t arg3;
2940 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
2941 0 : return false;
2942 : }
2943 : int32_t arg4;
2944 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
2945 0 : return false;
2946 : }
2947 : int32_t arg5;
2948 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
2949 0 : return false;
2950 : }
2951 : int32_t arg6;
2952 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
2953 0 : return false;
2954 : }
2955 0 : if (args[7].isObject()) {
2956 : do {
2957 0 : RootedTypedArray<ArrayBufferView> arg7(cx);
2958 0 : if (!arg7.Init(&args[7].toObject())) {
2959 0 : break;
2960 : }
2961 : uint32_t arg8;
2962 0 : if (args.hasDefined(8)) {
2963 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
2964 0 : return false;
2965 : }
2966 : } else {
2967 0 : arg8 = 0U;
2968 : }
2969 : uint32_t arg9;
2970 0 : if (args.hasDefined(9)) {
2971 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
2972 0 : return false;
2973 : }
2974 : } else {
2975 0 : arg9 = 0U;
2976 : }
2977 0 : self->CompressedTexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, Constify(arg7), arg8, arg9);
2978 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2979 0 : args.rval().setUndefined();
2980 0 : return true;
2981 : } while (0);
2982 : }
2983 : int64_t arg7;
2984 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[7], &arg7)) {
2985 0 : return false;
2986 : }
2987 0 : self->CompressedTexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2988 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2989 0 : args.rval().setUndefined();
2990 0 : return true;
2991 : break;
2992 : }
2993 : case 9: {
2994 : MOZ_FALLTHROUGH;
2995 : }
2996 : case 10: {
2997 : uint32_t arg0;
2998 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
2999 0 : return false;
3000 : }
3001 : int32_t arg1;
3002 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
3003 0 : return false;
3004 : }
3005 : uint32_t arg2;
3006 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3007 0 : return false;
3008 : }
3009 : int32_t arg3;
3010 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
3011 0 : return false;
3012 : }
3013 : int32_t arg4;
3014 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
3015 0 : return false;
3016 : }
3017 : int32_t arg5;
3018 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
3019 0 : return false;
3020 : }
3021 : int32_t arg6;
3022 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
3023 0 : return false;
3024 : }
3025 0 : RootedTypedArray<ArrayBufferView> arg7(cx);
3026 0 : if (args[7].isObject()) {
3027 0 : if (!arg7.Init(&args[7].toObject())) {
3028 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 8 of WebGL2RenderingContext.compressedTexImage3D", "ArrayBufferView");
3029 0 : return false;
3030 : }
3031 : } else {
3032 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 8 of WebGL2RenderingContext.compressedTexImage3D");
3033 0 : return false;
3034 : }
3035 : uint32_t arg8;
3036 0 : if (args.hasDefined(8)) {
3037 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
3038 0 : return false;
3039 : }
3040 : } else {
3041 0 : arg8 = 0U;
3042 : }
3043 : uint32_t arg9;
3044 0 : if (args.hasDefined(9)) {
3045 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
3046 0 : return false;
3047 : }
3048 : } else {
3049 0 : arg9 = 0U;
3050 : }
3051 0 : self->CompressedTexImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, Constify(arg7), arg8, arg9);
3052 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3053 0 : args.rval().setUndefined();
3054 0 : return true;
3055 : break;
3056 : }
3057 : default: {
3058 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.compressedTexImage3D");
3059 : break;
3060 : }
3061 : }
3062 : MOZ_CRASH("We have an always-returning default case");
3063 : return false;
3064 : }
3065 :
3066 : static const JSJitInfo compressedTexImage3D_methodinfo = {
3067 : { (JSJitGetterOp)compressedTexImage3D },
3068 : { prototypes::id::WebGL2RenderingContext },
3069 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3070 : JSJitInfo::Method,
3071 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3072 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3073 : false, /* isInfallible. False in setters. */
3074 : false, /* isMovable. Not relevant for setters. */
3075 : false, /* isEliminatable. Not relevant for setters. */
3076 : false, /* isAlwaysInSlot. Only relevant for getters. */
3077 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3078 : false, /* isTypedMethod. Only relevant for methods. */
3079 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3080 : };
3081 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3082 : static_assert(0 < 1, "There is no slot for us");
3083 :
3084 : static bool
3085 0 : compressedTexSubImage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3086 : {
3087 0 : unsigned argcount = std::min(args.length(), 10u);
3088 0 : switch (argcount) {
3089 : case 8: {
3090 : uint32_t arg0;
3091 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
3092 0 : return false;
3093 : }
3094 : int32_t arg1;
3095 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
3096 0 : return false;
3097 : }
3098 : int32_t arg2;
3099 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
3100 0 : return false;
3101 : }
3102 : int32_t arg3;
3103 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
3104 0 : return false;
3105 : }
3106 : int32_t arg4;
3107 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
3108 0 : return false;
3109 : }
3110 : int32_t arg5;
3111 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
3112 0 : return false;
3113 : }
3114 : uint32_t arg6;
3115 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[6], &arg6)) {
3116 0 : return false;
3117 : }
3118 0 : if (args[7].isObject()) {
3119 : do {
3120 0 : RootedTypedArray<ArrayBufferView> arg7(cx);
3121 0 : if (!arg7.Init(&args[7].toObject())) {
3122 0 : break;
3123 : }
3124 : uint32_t arg8;
3125 0 : if (args.hasDefined(8)) {
3126 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
3127 0 : return false;
3128 : }
3129 : } else {
3130 0 : arg8 = 0U;
3131 : }
3132 : uint32_t arg9;
3133 0 : if (args.hasDefined(9)) {
3134 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
3135 0 : return false;
3136 : }
3137 : } else {
3138 0 : arg9 = 0U;
3139 : }
3140 0 : self->CompressedTexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, Constify(arg7), arg8, arg9);
3141 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3142 0 : args.rval().setUndefined();
3143 0 : return true;
3144 : } while (0);
3145 : }
3146 : int64_t arg7;
3147 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[7], &arg7)) {
3148 0 : return false;
3149 : }
3150 0 : self->CompressedTexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
3151 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3152 0 : args.rval().setUndefined();
3153 0 : return true;
3154 : break;
3155 : }
3156 : case 9: {
3157 : MOZ_FALLTHROUGH;
3158 : }
3159 : case 10: {
3160 : uint32_t arg0;
3161 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
3162 0 : return false;
3163 : }
3164 : int32_t arg1;
3165 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
3166 0 : return false;
3167 : }
3168 : int32_t arg2;
3169 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
3170 0 : return false;
3171 : }
3172 : int32_t arg3;
3173 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
3174 0 : return false;
3175 : }
3176 : int32_t arg4;
3177 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
3178 0 : return false;
3179 : }
3180 : int32_t arg5;
3181 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
3182 0 : return false;
3183 : }
3184 : uint32_t arg6;
3185 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[6], &arg6)) {
3186 0 : return false;
3187 : }
3188 0 : RootedTypedArray<ArrayBufferView> arg7(cx);
3189 0 : if (args[7].isObject()) {
3190 0 : if (!arg7.Init(&args[7].toObject())) {
3191 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 8 of WebGL2RenderingContext.compressedTexSubImage2D", "ArrayBufferView");
3192 0 : return false;
3193 : }
3194 : } else {
3195 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 8 of WebGL2RenderingContext.compressedTexSubImage2D");
3196 0 : return false;
3197 : }
3198 : uint32_t arg8;
3199 0 : if (args.hasDefined(8)) {
3200 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
3201 0 : return false;
3202 : }
3203 : } else {
3204 0 : arg8 = 0U;
3205 : }
3206 : uint32_t arg9;
3207 0 : if (args.hasDefined(9)) {
3208 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[9], &arg9)) {
3209 0 : return false;
3210 : }
3211 : } else {
3212 0 : arg9 = 0U;
3213 : }
3214 0 : self->CompressedTexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, Constify(arg7), arg8, arg9);
3215 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3216 0 : args.rval().setUndefined();
3217 0 : return true;
3218 : break;
3219 : }
3220 : default: {
3221 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.compressedTexSubImage2D");
3222 : break;
3223 : }
3224 : }
3225 : MOZ_CRASH("We have an always-returning default case");
3226 : return false;
3227 : }
3228 :
3229 : static const JSJitInfo compressedTexSubImage2D_methodinfo = {
3230 : { (JSJitGetterOp)compressedTexSubImage2D },
3231 : { prototypes::id::WebGL2RenderingContext },
3232 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3233 : JSJitInfo::Method,
3234 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3235 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3236 : false, /* isInfallible. False in setters. */
3237 : false, /* isMovable. Not relevant for setters. */
3238 : false, /* isEliminatable. Not relevant for setters. */
3239 : false, /* isAlwaysInSlot. Only relevant for getters. */
3240 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3241 : false, /* isTypedMethod. Only relevant for methods. */
3242 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3243 : };
3244 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3245 : static_assert(0 < 1, "There is no slot for us");
3246 :
3247 : static bool
3248 0 : compressedTexSubImage3D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3249 : {
3250 0 : unsigned argcount = std::min(args.length(), 12u);
3251 0 : switch (argcount) {
3252 : case 10: {
3253 : uint32_t arg0;
3254 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
3255 0 : return false;
3256 : }
3257 : int32_t arg1;
3258 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
3259 0 : return false;
3260 : }
3261 : int32_t arg2;
3262 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
3263 0 : return false;
3264 : }
3265 : int32_t arg3;
3266 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
3267 0 : return false;
3268 : }
3269 : int32_t arg4;
3270 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
3271 0 : return false;
3272 : }
3273 : int32_t arg5;
3274 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
3275 0 : return false;
3276 : }
3277 : int32_t arg6;
3278 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
3279 0 : return false;
3280 : }
3281 : int32_t arg7;
3282 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
3283 0 : return false;
3284 : }
3285 : uint32_t arg8;
3286 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
3287 0 : return false;
3288 : }
3289 0 : if (args[9].isObject()) {
3290 : do {
3291 0 : RootedTypedArray<ArrayBufferView> arg9(cx);
3292 0 : if (!arg9.Init(&args[9].toObject())) {
3293 0 : break;
3294 : }
3295 : uint32_t arg10;
3296 0 : if (args.hasDefined(10)) {
3297 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[10], &arg10)) {
3298 0 : return false;
3299 : }
3300 : } else {
3301 0 : arg10 = 0U;
3302 : }
3303 : uint32_t arg11;
3304 0 : if (args.hasDefined(11)) {
3305 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[11], &arg11)) {
3306 0 : return false;
3307 : }
3308 : } else {
3309 0 : arg11 = 0U;
3310 : }
3311 0 : self->CompressedTexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, Constify(arg9), arg10, arg11);
3312 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3313 0 : args.rval().setUndefined();
3314 0 : return true;
3315 : } while (0);
3316 : }
3317 : int64_t arg9;
3318 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[9], &arg9)) {
3319 0 : return false;
3320 : }
3321 0 : self->CompressedTexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
3322 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3323 0 : args.rval().setUndefined();
3324 0 : return true;
3325 : break;
3326 : }
3327 : case 11: {
3328 : MOZ_FALLTHROUGH;
3329 : }
3330 : case 12: {
3331 : uint32_t arg0;
3332 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
3333 0 : return false;
3334 : }
3335 : int32_t arg1;
3336 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
3337 0 : return false;
3338 : }
3339 : int32_t arg2;
3340 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
3341 0 : return false;
3342 : }
3343 : int32_t arg3;
3344 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
3345 0 : return false;
3346 : }
3347 : int32_t arg4;
3348 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
3349 0 : return false;
3350 : }
3351 : int32_t arg5;
3352 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
3353 0 : return false;
3354 : }
3355 : int32_t arg6;
3356 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
3357 0 : return false;
3358 : }
3359 : int32_t arg7;
3360 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
3361 0 : return false;
3362 : }
3363 : uint32_t arg8;
3364 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[8], &arg8)) {
3365 0 : return false;
3366 : }
3367 0 : RootedTypedArray<ArrayBufferView> arg9(cx);
3368 0 : if (args[9].isObject()) {
3369 0 : if (!arg9.Init(&args[9].toObject())) {
3370 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 10 of WebGL2RenderingContext.compressedTexSubImage3D", "ArrayBufferView");
3371 0 : return false;
3372 : }
3373 : } else {
3374 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 10 of WebGL2RenderingContext.compressedTexSubImage3D");
3375 0 : return false;
3376 : }
3377 : uint32_t arg10;
3378 0 : if (args.hasDefined(10)) {
3379 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[10], &arg10)) {
3380 0 : return false;
3381 : }
3382 : } else {
3383 0 : arg10 = 0U;
3384 : }
3385 : uint32_t arg11;
3386 0 : if (args.hasDefined(11)) {
3387 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[11], &arg11)) {
3388 0 : return false;
3389 : }
3390 : } else {
3391 0 : arg11 = 0U;
3392 : }
3393 0 : self->CompressedTexSubImage3D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, Constify(arg9), arg10, arg11);
3394 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3395 0 : args.rval().setUndefined();
3396 0 : return true;
3397 : break;
3398 : }
3399 : default: {
3400 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.compressedTexSubImage3D");
3401 : break;
3402 : }
3403 : }
3404 : MOZ_CRASH("We have an always-returning default case");
3405 : return false;
3406 : }
3407 :
3408 : static const JSJitInfo compressedTexSubImage3D_methodinfo = {
3409 : { (JSJitGetterOp)compressedTexSubImage3D },
3410 : { prototypes::id::WebGL2RenderingContext },
3411 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3412 : JSJitInfo::Method,
3413 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3414 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3415 : false, /* isInfallible. False in setters. */
3416 : false, /* isMovable. Not relevant for setters. */
3417 : false, /* isEliminatable. Not relevant for setters. */
3418 : false, /* isAlwaysInSlot. Only relevant for getters. */
3419 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3420 : false, /* isTypedMethod. Only relevant for methods. */
3421 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3422 : };
3423 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3424 : static_assert(0 < 1, "There is no slot for us");
3425 :
3426 : static bool
3427 0 : getFragDataLocation(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3428 : {
3429 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3430 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getFragDataLocation");
3431 : }
3432 0 : NonNull<mozilla::WebGLProgram> arg0;
3433 0 : if (args[0].isObject()) {
3434 : {
3435 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
3436 0 : if (NS_FAILED(rv)) {
3437 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getFragDataLocation", "WebGLProgram");
3438 0 : return false;
3439 : }
3440 : }
3441 : } else {
3442 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getFragDataLocation");
3443 0 : return false;
3444 : }
3445 0 : binding_detail::FakeString arg1;
3446 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
3447 0 : return false;
3448 : }
3449 0 : int32_t result(self->GetFragDataLocation(NonNullHelper(arg0), NonNullHelper(Constify(arg1))));
3450 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3451 0 : args.rval().setInt32(int32_t(result));
3452 0 : return true;
3453 : }
3454 :
3455 : static const JSJitInfo getFragDataLocation_methodinfo = {
3456 : { (JSJitGetterOp)getFragDataLocation },
3457 : { prototypes::id::WebGL2RenderingContext },
3458 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3459 : JSJitInfo::Method,
3460 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3461 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3462 : false, /* isInfallible. False in setters. */
3463 : false, /* isMovable. Not relevant for setters. */
3464 : false, /* isEliminatable. Not relevant for setters. */
3465 : false, /* isAlwaysInSlot. Only relevant for getters. */
3466 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3467 : false, /* isTypedMethod. Only relevant for methods. */
3468 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3469 : };
3470 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3471 : static_assert(0 < 1, "There is no slot for us");
3472 :
3473 : static bool
3474 0 : uniform1ui(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3475 : {
3476 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3477 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform1ui");
3478 : }
3479 : mozilla::WebGLUniformLocation* arg0;
3480 0 : if (args[0].isObject()) {
3481 : {
3482 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3483 0 : if (NS_FAILED(rv)) {
3484 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform1ui", "WebGLUniformLocation");
3485 0 : return false;
3486 : }
3487 : }
3488 0 : } else if (args[0].isNullOrUndefined()) {
3489 0 : arg0 = nullptr;
3490 : } else {
3491 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform1ui");
3492 0 : return false;
3493 : }
3494 : uint32_t arg1;
3495 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
3496 0 : return false;
3497 : }
3498 0 : self->Uniform1ui(Constify(arg0), arg1);
3499 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3500 0 : args.rval().setUndefined();
3501 0 : return true;
3502 : }
3503 :
3504 : static const JSJitInfo uniform1ui_methodinfo = {
3505 : { (JSJitGetterOp)uniform1ui },
3506 : { prototypes::id::WebGL2RenderingContext },
3507 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3508 : JSJitInfo::Method,
3509 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3510 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3511 : false, /* isInfallible. False in setters. */
3512 : false, /* isMovable. Not relevant for setters. */
3513 : false, /* isEliminatable. Not relevant for setters. */
3514 : false, /* isAlwaysInSlot. Only relevant for getters. */
3515 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3516 : false, /* isTypedMethod. Only relevant for methods. */
3517 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3518 : };
3519 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3520 : static_assert(0 < 1, "There is no slot for us");
3521 :
3522 : static bool
3523 0 : uniform2ui(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3524 : {
3525 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
3526 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform2ui");
3527 : }
3528 : mozilla::WebGLUniformLocation* arg0;
3529 0 : if (args[0].isObject()) {
3530 : {
3531 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3532 0 : if (NS_FAILED(rv)) {
3533 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform2ui", "WebGLUniformLocation");
3534 0 : return false;
3535 : }
3536 : }
3537 0 : } else if (args[0].isNullOrUndefined()) {
3538 0 : arg0 = nullptr;
3539 : } else {
3540 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform2ui");
3541 0 : return false;
3542 : }
3543 : uint32_t arg1;
3544 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
3545 0 : return false;
3546 : }
3547 : uint32_t arg2;
3548 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3549 0 : return false;
3550 : }
3551 0 : self->Uniform2ui(Constify(arg0), arg1, arg2);
3552 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3553 0 : args.rval().setUndefined();
3554 0 : return true;
3555 : }
3556 :
3557 : static const JSJitInfo uniform2ui_methodinfo = {
3558 : { (JSJitGetterOp)uniform2ui },
3559 : { prototypes::id::WebGL2RenderingContext },
3560 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3561 : JSJitInfo::Method,
3562 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3563 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3564 : false, /* isInfallible. False in setters. */
3565 : false, /* isMovable. Not relevant for setters. */
3566 : false, /* isEliminatable. Not relevant for setters. */
3567 : false, /* isAlwaysInSlot. Only relevant for getters. */
3568 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3569 : false, /* isTypedMethod. Only relevant for methods. */
3570 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3571 : };
3572 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3573 : static_assert(0 < 1, "There is no slot for us");
3574 :
3575 : static bool
3576 0 : uniform3ui(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3577 : {
3578 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
3579 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform3ui");
3580 : }
3581 : mozilla::WebGLUniformLocation* arg0;
3582 0 : if (args[0].isObject()) {
3583 : {
3584 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3585 0 : if (NS_FAILED(rv)) {
3586 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform3ui", "WebGLUniformLocation");
3587 0 : return false;
3588 : }
3589 : }
3590 0 : } else if (args[0].isNullOrUndefined()) {
3591 0 : arg0 = nullptr;
3592 : } else {
3593 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform3ui");
3594 0 : return false;
3595 : }
3596 : uint32_t arg1;
3597 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
3598 0 : return false;
3599 : }
3600 : uint32_t arg2;
3601 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3602 0 : return false;
3603 : }
3604 : uint32_t arg3;
3605 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
3606 0 : return false;
3607 : }
3608 0 : self->Uniform3ui(Constify(arg0), arg1, arg2, arg3);
3609 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3610 0 : args.rval().setUndefined();
3611 0 : return true;
3612 : }
3613 :
3614 : static const JSJitInfo uniform3ui_methodinfo = {
3615 : { (JSJitGetterOp)uniform3ui },
3616 : { prototypes::id::WebGL2RenderingContext },
3617 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3618 : JSJitInfo::Method,
3619 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3620 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3621 : false, /* isInfallible. False in setters. */
3622 : false, /* isMovable. Not relevant for setters. */
3623 : false, /* isEliminatable. Not relevant for setters. */
3624 : false, /* isAlwaysInSlot. Only relevant for getters. */
3625 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3626 : false, /* isTypedMethod. Only relevant for methods. */
3627 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3628 : };
3629 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3630 : static_assert(0 < 1, "There is no slot for us");
3631 :
3632 : static bool
3633 0 : uniform4ui(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3634 : {
3635 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
3636 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform4ui");
3637 : }
3638 : mozilla::WebGLUniformLocation* arg0;
3639 0 : if (args[0].isObject()) {
3640 : {
3641 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3642 0 : if (NS_FAILED(rv)) {
3643 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform4ui", "WebGLUniformLocation");
3644 0 : return false;
3645 : }
3646 : }
3647 0 : } else if (args[0].isNullOrUndefined()) {
3648 0 : arg0 = nullptr;
3649 : } else {
3650 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform4ui");
3651 0 : return false;
3652 : }
3653 : uint32_t arg1;
3654 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
3655 0 : return false;
3656 : }
3657 : uint32_t arg2;
3658 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3659 0 : return false;
3660 : }
3661 : uint32_t arg3;
3662 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
3663 0 : return false;
3664 : }
3665 : uint32_t arg4;
3666 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
3667 0 : return false;
3668 : }
3669 0 : self->Uniform4ui(Constify(arg0), arg1, arg2, arg3, arg4);
3670 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3671 0 : args.rval().setUndefined();
3672 0 : return true;
3673 : }
3674 :
3675 : static const JSJitInfo uniform4ui_methodinfo = {
3676 : { (JSJitGetterOp)uniform4ui },
3677 : { prototypes::id::WebGL2RenderingContext },
3678 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3679 : JSJitInfo::Method,
3680 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3681 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3682 : false, /* isInfallible. False in setters. */
3683 : false, /* isMovable. Not relevant for setters. */
3684 : false, /* isEliminatable. Not relevant for setters. */
3685 : false, /* isAlwaysInSlot. Only relevant for getters. */
3686 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3687 : false, /* isTypedMethod. Only relevant for methods. */
3688 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3689 : };
3690 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3691 : static_assert(0 < 1, "There is no slot for us");
3692 :
3693 : static bool
3694 0 : uniform1fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3695 : {
3696 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3697 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform1fv");
3698 : }
3699 : mozilla::WebGLUniformLocation* arg0;
3700 0 : if (args[0].isObject()) {
3701 : {
3702 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3703 0 : if (NS_FAILED(rv)) {
3704 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform1fv", "WebGLUniformLocation");
3705 0 : return false;
3706 : }
3707 : }
3708 0 : } else if (args[0].isNullOrUndefined()) {
3709 0 : arg0 = nullptr;
3710 : } else {
3711 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform1fv");
3712 0 : return false;
3713 : }
3714 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
3715 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
3716 : {
3717 0 : bool done = false, failed = false, tryNext;
3718 0 : if (args[1].isObject()) {
3719 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
3720 :
3721 0 : if (!done) {
3722 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
3723 : }
3724 : }
3725 0 : if (failed) {
3726 0 : return false;
3727 : }
3728 0 : if (!done) {
3729 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform1fv", "Float32Array, UnrestrictedFloatSequence");
3730 0 : return false;
3731 : }
3732 : }
3733 : uint32_t arg2;
3734 0 : if (args.hasDefined(2)) {
3735 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3736 0 : return false;
3737 : }
3738 : } else {
3739 0 : arg2 = 0U;
3740 : }
3741 : uint32_t arg3;
3742 0 : if (args.hasDefined(3)) {
3743 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
3744 0 : return false;
3745 : }
3746 : } else {
3747 0 : arg3 = 0U;
3748 : }
3749 0 : self->Uniform1fv(Constify(arg0), Constify(arg1), arg2, arg3);
3750 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3751 0 : args.rval().setUndefined();
3752 0 : return true;
3753 : }
3754 :
3755 : static const JSJitInfo uniform1fv_methodinfo = {
3756 : { (JSJitGetterOp)uniform1fv },
3757 : { prototypes::id::WebGL2RenderingContext },
3758 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3759 : JSJitInfo::Method,
3760 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3761 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3762 : false, /* isInfallible. False in setters. */
3763 : false, /* isMovable. Not relevant for setters. */
3764 : false, /* isEliminatable. Not relevant for setters. */
3765 : false, /* isAlwaysInSlot. Only relevant for getters. */
3766 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3767 : false, /* isTypedMethod. Only relevant for methods. */
3768 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3769 : };
3770 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3771 : static_assert(0 < 1, "There is no slot for us");
3772 :
3773 : static bool
3774 0 : uniform2fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3775 : {
3776 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3777 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform2fv");
3778 : }
3779 : mozilla::WebGLUniformLocation* arg0;
3780 0 : if (args[0].isObject()) {
3781 : {
3782 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3783 0 : if (NS_FAILED(rv)) {
3784 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform2fv", "WebGLUniformLocation");
3785 0 : return false;
3786 : }
3787 : }
3788 0 : } else if (args[0].isNullOrUndefined()) {
3789 0 : arg0 = nullptr;
3790 : } else {
3791 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform2fv");
3792 0 : return false;
3793 : }
3794 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
3795 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
3796 : {
3797 0 : bool done = false, failed = false, tryNext;
3798 0 : if (args[1].isObject()) {
3799 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
3800 :
3801 0 : if (!done) {
3802 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
3803 : }
3804 : }
3805 0 : if (failed) {
3806 0 : return false;
3807 : }
3808 0 : if (!done) {
3809 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform2fv", "Float32Array, UnrestrictedFloatSequence");
3810 0 : return false;
3811 : }
3812 : }
3813 : uint32_t arg2;
3814 0 : if (args.hasDefined(2)) {
3815 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3816 0 : return false;
3817 : }
3818 : } else {
3819 0 : arg2 = 0U;
3820 : }
3821 : uint32_t arg3;
3822 0 : if (args.hasDefined(3)) {
3823 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
3824 0 : return false;
3825 : }
3826 : } else {
3827 0 : arg3 = 0U;
3828 : }
3829 0 : self->Uniform2fv(Constify(arg0), Constify(arg1), arg2, arg3);
3830 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3831 0 : args.rval().setUndefined();
3832 0 : return true;
3833 : }
3834 :
3835 : static const JSJitInfo uniform2fv_methodinfo = {
3836 : { (JSJitGetterOp)uniform2fv },
3837 : { prototypes::id::WebGL2RenderingContext },
3838 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3839 : JSJitInfo::Method,
3840 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3841 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3842 : false, /* isInfallible. False in setters. */
3843 : false, /* isMovable. Not relevant for setters. */
3844 : false, /* isEliminatable. Not relevant for setters. */
3845 : false, /* isAlwaysInSlot. Only relevant for getters. */
3846 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3847 : false, /* isTypedMethod. Only relevant for methods. */
3848 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3849 : };
3850 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3851 : static_assert(0 < 1, "There is no slot for us");
3852 :
3853 : static bool
3854 0 : uniform3fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3855 : {
3856 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3857 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform3fv");
3858 : }
3859 : mozilla::WebGLUniformLocation* arg0;
3860 0 : if (args[0].isObject()) {
3861 : {
3862 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3863 0 : if (NS_FAILED(rv)) {
3864 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform3fv", "WebGLUniformLocation");
3865 0 : return false;
3866 : }
3867 : }
3868 0 : } else if (args[0].isNullOrUndefined()) {
3869 0 : arg0 = nullptr;
3870 : } else {
3871 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform3fv");
3872 0 : return false;
3873 : }
3874 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
3875 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
3876 : {
3877 0 : bool done = false, failed = false, tryNext;
3878 0 : if (args[1].isObject()) {
3879 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
3880 :
3881 0 : if (!done) {
3882 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
3883 : }
3884 : }
3885 0 : if (failed) {
3886 0 : return false;
3887 : }
3888 0 : if (!done) {
3889 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform3fv", "Float32Array, UnrestrictedFloatSequence");
3890 0 : return false;
3891 : }
3892 : }
3893 : uint32_t arg2;
3894 0 : if (args.hasDefined(2)) {
3895 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3896 0 : return false;
3897 : }
3898 : } else {
3899 0 : arg2 = 0U;
3900 : }
3901 : uint32_t arg3;
3902 0 : if (args.hasDefined(3)) {
3903 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
3904 0 : return false;
3905 : }
3906 : } else {
3907 0 : arg3 = 0U;
3908 : }
3909 0 : self->Uniform3fv(Constify(arg0), Constify(arg1), arg2, arg3);
3910 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3911 0 : args.rval().setUndefined();
3912 0 : return true;
3913 : }
3914 :
3915 : static const JSJitInfo uniform3fv_methodinfo = {
3916 : { (JSJitGetterOp)uniform3fv },
3917 : { prototypes::id::WebGL2RenderingContext },
3918 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3919 : JSJitInfo::Method,
3920 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3921 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3922 : false, /* isInfallible. False in setters. */
3923 : false, /* isMovable. Not relevant for setters. */
3924 : false, /* isEliminatable. Not relevant for setters. */
3925 : false, /* isAlwaysInSlot. Only relevant for getters. */
3926 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3927 : false, /* isTypedMethod. Only relevant for methods. */
3928 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3929 : };
3930 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3931 : static_assert(0 < 1, "There is no slot for us");
3932 :
3933 : static bool
3934 0 : uniform4fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
3935 : {
3936 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3937 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform4fv");
3938 : }
3939 : mozilla::WebGLUniformLocation* arg0;
3940 0 : if (args[0].isObject()) {
3941 : {
3942 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
3943 0 : if (NS_FAILED(rv)) {
3944 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform4fv", "WebGLUniformLocation");
3945 0 : return false;
3946 : }
3947 : }
3948 0 : } else if (args[0].isNullOrUndefined()) {
3949 0 : arg0 = nullptr;
3950 : } else {
3951 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform4fv");
3952 0 : return false;
3953 : }
3954 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
3955 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
3956 : {
3957 0 : bool done = false, failed = false, tryNext;
3958 0 : if (args[1].isObject()) {
3959 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
3960 :
3961 0 : if (!done) {
3962 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
3963 : }
3964 : }
3965 0 : if (failed) {
3966 0 : return false;
3967 : }
3968 0 : if (!done) {
3969 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform4fv", "Float32Array, UnrestrictedFloatSequence");
3970 0 : return false;
3971 : }
3972 : }
3973 : uint32_t arg2;
3974 0 : if (args.hasDefined(2)) {
3975 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
3976 0 : return false;
3977 : }
3978 : } else {
3979 0 : arg2 = 0U;
3980 : }
3981 : uint32_t arg3;
3982 0 : if (args.hasDefined(3)) {
3983 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
3984 0 : return false;
3985 : }
3986 : } else {
3987 0 : arg3 = 0U;
3988 : }
3989 0 : self->Uniform4fv(Constify(arg0), Constify(arg1), arg2, arg3);
3990 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3991 0 : args.rval().setUndefined();
3992 0 : return true;
3993 : }
3994 :
3995 : static const JSJitInfo uniform4fv_methodinfo = {
3996 : { (JSJitGetterOp)uniform4fv },
3997 : { prototypes::id::WebGL2RenderingContext },
3998 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
3999 : JSJitInfo::Method,
4000 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4001 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4002 : false, /* isInfallible. False in setters. */
4003 : false, /* isMovable. Not relevant for setters. */
4004 : false, /* isEliminatable. Not relevant for setters. */
4005 : false, /* isAlwaysInSlot. Only relevant for getters. */
4006 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4007 : false, /* isTypedMethod. Only relevant for methods. */
4008 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4009 : };
4010 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4011 : static_assert(0 < 1, "There is no slot for us");
4012 :
4013 : static bool
4014 0 : uniform1iv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4015 : {
4016 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4017 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform1iv");
4018 : }
4019 : mozilla::WebGLUniformLocation* arg0;
4020 0 : if (args[0].isObject()) {
4021 : {
4022 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4023 0 : if (NS_FAILED(rv)) {
4024 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform1iv", "WebGLUniformLocation");
4025 0 : return false;
4026 : }
4027 : }
4028 0 : } else if (args[0].isNullOrUndefined()) {
4029 0 : arg0 = nullptr;
4030 : } else {
4031 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform1iv");
4032 0 : return false;
4033 : }
4034 0 : Int32ArrayOrLongSequence arg1;
4035 0 : Int32ArrayOrLongSequenceArgument arg1_holder(arg1);
4036 : {
4037 0 : bool done = false, failed = false, tryNext;
4038 0 : if (args[1].isObject()) {
4039 0 : done = (failed = !arg1_holder.TrySetToInt32Array(cx, args[1], tryNext, false)) || !tryNext;
4040 :
4041 0 : if (!done) {
4042 0 : done = (failed = !arg1_holder.TrySetToLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4043 : }
4044 : }
4045 0 : if (failed) {
4046 0 : return false;
4047 : }
4048 0 : if (!done) {
4049 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform1iv", "Int32Array, LongSequence");
4050 0 : return false;
4051 : }
4052 : }
4053 : uint32_t arg2;
4054 0 : if (args.hasDefined(2)) {
4055 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4056 0 : return false;
4057 : }
4058 : } else {
4059 0 : arg2 = 0U;
4060 : }
4061 : uint32_t arg3;
4062 0 : if (args.hasDefined(3)) {
4063 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4064 0 : return false;
4065 : }
4066 : } else {
4067 0 : arg3 = 0U;
4068 : }
4069 0 : self->Uniform1iv(Constify(arg0), Constify(arg1), arg2, arg3);
4070 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4071 0 : args.rval().setUndefined();
4072 0 : return true;
4073 : }
4074 :
4075 : static const JSJitInfo uniform1iv_methodinfo = {
4076 : { (JSJitGetterOp)uniform1iv },
4077 : { prototypes::id::WebGL2RenderingContext },
4078 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4079 : JSJitInfo::Method,
4080 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4081 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4082 : false, /* isInfallible. False in setters. */
4083 : false, /* isMovable. Not relevant for setters. */
4084 : false, /* isEliminatable. Not relevant for setters. */
4085 : false, /* isAlwaysInSlot. Only relevant for getters. */
4086 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4087 : false, /* isTypedMethod. Only relevant for methods. */
4088 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4089 : };
4090 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4091 : static_assert(0 < 1, "There is no slot for us");
4092 :
4093 : static bool
4094 0 : uniform2iv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4095 : {
4096 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4097 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform2iv");
4098 : }
4099 : mozilla::WebGLUniformLocation* arg0;
4100 0 : if (args[0].isObject()) {
4101 : {
4102 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4103 0 : if (NS_FAILED(rv)) {
4104 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform2iv", "WebGLUniformLocation");
4105 0 : return false;
4106 : }
4107 : }
4108 0 : } else if (args[0].isNullOrUndefined()) {
4109 0 : arg0 = nullptr;
4110 : } else {
4111 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform2iv");
4112 0 : return false;
4113 : }
4114 0 : Int32ArrayOrLongSequence arg1;
4115 0 : Int32ArrayOrLongSequenceArgument arg1_holder(arg1);
4116 : {
4117 0 : bool done = false, failed = false, tryNext;
4118 0 : if (args[1].isObject()) {
4119 0 : done = (failed = !arg1_holder.TrySetToInt32Array(cx, args[1], tryNext, false)) || !tryNext;
4120 :
4121 0 : if (!done) {
4122 0 : done = (failed = !arg1_holder.TrySetToLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4123 : }
4124 : }
4125 0 : if (failed) {
4126 0 : return false;
4127 : }
4128 0 : if (!done) {
4129 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform2iv", "Int32Array, LongSequence");
4130 0 : return false;
4131 : }
4132 : }
4133 : uint32_t arg2;
4134 0 : if (args.hasDefined(2)) {
4135 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4136 0 : return false;
4137 : }
4138 : } else {
4139 0 : arg2 = 0U;
4140 : }
4141 : uint32_t arg3;
4142 0 : if (args.hasDefined(3)) {
4143 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4144 0 : return false;
4145 : }
4146 : } else {
4147 0 : arg3 = 0U;
4148 : }
4149 0 : self->Uniform2iv(Constify(arg0), Constify(arg1), arg2, arg3);
4150 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4151 0 : args.rval().setUndefined();
4152 0 : return true;
4153 : }
4154 :
4155 : static const JSJitInfo uniform2iv_methodinfo = {
4156 : { (JSJitGetterOp)uniform2iv },
4157 : { prototypes::id::WebGL2RenderingContext },
4158 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4159 : JSJitInfo::Method,
4160 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4161 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4162 : false, /* isInfallible. False in setters. */
4163 : false, /* isMovable. Not relevant for setters. */
4164 : false, /* isEliminatable. Not relevant for setters. */
4165 : false, /* isAlwaysInSlot. Only relevant for getters. */
4166 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4167 : false, /* isTypedMethod. Only relevant for methods. */
4168 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4169 : };
4170 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4171 : static_assert(0 < 1, "There is no slot for us");
4172 :
4173 : static bool
4174 0 : uniform3iv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4175 : {
4176 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4177 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform3iv");
4178 : }
4179 : mozilla::WebGLUniformLocation* arg0;
4180 0 : if (args[0].isObject()) {
4181 : {
4182 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4183 0 : if (NS_FAILED(rv)) {
4184 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform3iv", "WebGLUniformLocation");
4185 0 : return false;
4186 : }
4187 : }
4188 0 : } else if (args[0].isNullOrUndefined()) {
4189 0 : arg0 = nullptr;
4190 : } else {
4191 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform3iv");
4192 0 : return false;
4193 : }
4194 0 : Int32ArrayOrLongSequence arg1;
4195 0 : Int32ArrayOrLongSequenceArgument arg1_holder(arg1);
4196 : {
4197 0 : bool done = false, failed = false, tryNext;
4198 0 : if (args[1].isObject()) {
4199 0 : done = (failed = !arg1_holder.TrySetToInt32Array(cx, args[1], tryNext, false)) || !tryNext;
4200 :
4201 0 : if (!done) {
4202 0 : done = (failed = !arg1_holder.TrySetToLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4203 : }
4204 : }
4205 0 : if (failed) {
4206 0 : return false;
4207 : }
4208 0 : if (!done) {
4209 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform3iv", "Int32Array, LongSequence");
4210 0 : return false;
4211 : }
4212 : }
4213 : uint32_t arg2;
4214 0 : if (args.hasDefined(2)) {
4215 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4216 0 : return false;
4217 : }
4218 : } else {
4219 0 : arg2 = 0U;
4220 : }
4221 : uint32_t arg3;
4222 0 : if (args.hasDefined(3)) {
4223 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4224 0 : return false;
4225 : }
4226 : } else {
4227 0 : arg3 = 0U;
4228 : }
4229 0 : self->Uniform3iv(Constify(arg0), Constify(arg1), arg2, arg3);
4230 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4231 0 : args.rval().setUndefined();
4232 0 : return true;
4233 : }
4234 :
4235 : static const JSJitInfo uniform3iv_methodinfo = {
4236 : { (JSJitGetterOp)uniform3iv },
4237 : { prototypes::id::WebGL2RenderingContext },
4238 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4239 : JSJitInfo::Method,
4240 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4241 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4242 : false, /* isInfallible. False in setters. */
4243 : false, /* isMovable. Not relevant for setters. */
4244 : false, /* isEliminatable. Not relevant for setters. */
4245 : false, /* isAlwaysInSlot. Only relevant for getters. */
4246 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4247 : false, /* isTypedMethod. Only relevant for methods. */
4248 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4249 : };
4250 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4251 : static_assert(0 < 1, "There is no slot for us");
4252 :
4253 : static bool
4254 0 : uniform4iv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4255 : {
4256 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4257 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform4iv");
4258 : }
4259 : mozilla::WebGLUniformLocation* arg0;
4260 0 : if (args[0].isObject()) {
4261 : {
4262 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4263 0 : if (NS_FAILED(rv)) {
4264 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform4iv", "WebGLUniformLocation");
4265 0 : return false;
4266 : }
4267 : }
4268 0 : } else if (args[0].isNullOrUndefined()) {
4269 0 : arg0 = nullptr;
4270 : } else {
4271 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform4iv");
4272 0 : return false;
4273 : }
4274 0 : Int32ArrayOrLongSequence arg1;
4275 0 : Int32ArrayOrLongSequenceArgument arg1_holder(arg1);
4276 : {
4277 0 : bool done = false, failed = false, tryNext;
4278 0 : if (args[1].isObject()) {
4279 0 : done = (failed = !arg1_holder.TrySetToInt32Array(cx, args[1], tryNext, false)) || !tryNext;
4280 :
4281 0 : if (!done) {
4282 0 : done = (failed = !arg1_holder.TrySetToLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4283 : }
4284 : }
4285 0 : if (failed) {
4286 0 : return false;
4287 : }
4288 0 : if (!done) {
4289 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform4iv", "Int32Array, LongSequence");
4290 0 : return false;
4291 : }
4292 : }
4293 : uint32_t arg2;
4294 0 : if (args.hasDefined(2)) {
4295 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4296 0 : return false;
4297 : }
4298 : } else {
4299 0 : arg2 = 0U;
4300 : }
4301 : uint32_t arg3;
4302 0 : if (args.hasDefined(3)) {
4303 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4304 0 : return false;
4305 : }
4306 : } else {
4307 0 : arg3 = 0U;
4308 : }
4309 0 : self->Uniform4iv(Constify(arg0), Constify(arg1), arg2, arg3);
4310 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4311 0 : args.rval().setUndefined();
4312 0 : return true;
4313 : }
4314 :
4315 : static const JSJitInfo uniform4iv_methodinfo = {
4316 : { (JSJitGetterOp)uniform4iv },
4317 : { prototypes::id::WebGL2RenderingContext },
4318 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4319 : JSJitInfo::Method,
4320 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4321 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4322 : false, /* isInfallible. False in setters. */
4323 : false, /* isMovable. Not relevant for setters. */
4324 : false, /* isEliminatable. Not relevant for setters. */
4325 : false, /* isAlwaysInSlot. Only relevant for getters. */
4326 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4327 : false, /* isTypedMethod. Only relevant for methods. */
4328 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4329 : };
4330 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4331 : static_assert(0 < 1, "There is no slot for us");
4332 :
4333 : static bool
4334 0 : uniform1uiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4335 : {
4336 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4337 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform1uiv");
4338 : }
4339 : mozilla::WebGLUniformLocation* arg0;
4340 0 : if (args[0].isObject()) {
4341 : {
4342 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4343 0 : if (NS_FAILED(rv)) {
4344 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform1uiv", "WebGLUniformLocation");
4345 0 : return false;
4346 : }
4347 : }
4348 0 : } else if (args[0].isNullOrUndefined()) {
4349 0 : arg0 = nullptr;
4350 : } else {
4351 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform1uiv");
4352 0 : return false;
4353 : }
4354 0 : Uint32ArrayOrUnsignedLongSequence arg1;
4355 0 : Uint32ArrayOrUnsignedLongSequenceArgument arg1_holder(arg1);
4356 : {
4357 0 : bool done = false, failed = false, tryNext;
4358 0 : if (args[1].isObject()) {
4359 0 : done = (failed = !arg1_holder.TrySetToUint32Array(cx, args[1], tryNext, false)) || !tryNext;
4360 :
4361 0 : if (!done) {
4362 0 : done = (failed = !arg1_holder.TrySetToUnsignedLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4363 : }
4364 : }
4365 0 : if (failed) {
4366 0 : return false;
4367 : }
4368 0 : if (!done) {
4369 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform1uiv", "Uint32Array, UnsignedLongSequence");
4370 0 : return false;
4371 : }
4372 : }
4373 : uint32_t arg2;
4374 0 : if (args.hasDefined(2)) {
4375 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4376 0 : return false;
4377 : }
4378 : } else {
4379 0 : arg2 = 0U;
4380 : }
4381 : uint32_t arg3;
4382 0 : if (args.hasDefined(3)) {
4383 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4384 0 : return false;
4385 : }
4386 : } else {
4387 0 : arg3 = 0U;
4388 : }
4389 0 : self->Uniform1uiv(Constify(arg0), Constify(arg1), arg2, arg3);
4390 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4391 0 : args.rval().setUndefined();
4392 0 : return true;
4393 : }
4394 :
4395 : static const JSJitInfo uniform1uiv_methodinfo = {
4396 : { (JSJitGetterOp)uniform1uiv },
4397 : { prototypes::id::WebGL2RenderingContext },
4398 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4399 : JSJitInfo::Method,
4400 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4401 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4402 : false, /* isInfallible. False in setters. */
4403 : false, /* isMovable. Not relevant for setters. */
4404 : false, /* isEliminatable. Not relevant for setters. */
4405 : false, /* isAlwaysInSlot. Only relevant for getters. */
4406 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4407 : false, /* isTypedMethod. Only relevant for methods. */
4408 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4409 : };
4410 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4411 : static_assert(0 < 1, "There is no slot for us");
4412 :
4413 : static bool
4414 0 : uniform2uiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4415 : {
4416 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4417 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform2uiv");
4418 : }
4419 : mozilla::WebGLUniformLocation* arg0;
4420 0 : if (args[0].isObject()) {
4421 : {
4422 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4423 0 : if (NS_FAILED(rv)) {
4424 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform2uiv", "WebGLUniformLocation");
4425 0 : return false;
4426 : }
4427 : }
4428 0 : } else if (args[0].isNullOrUndefined()) {
4429 0 : arg0 = nullptr;
4430 : } else {
4431 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform2uiv");
4432 0 : return false;
4433 : }
4434 0 : Uint32ArrayOrUnsignedLongSequence arg1;
4435 0 : Uint32ArrayOrUnsignedLongSequenceArgument arg1_holder(arg1);
4436 : {
4437 0 : bool done = false, failed = false, tryNext;
4438 0 : if (args[1].isObject()) {
4439 0 : done = (failed = !arg1_holder.TrySetToUint32Array(cx, args[1], tryNext, false)) || !tryNext;
4440 :
4441 0 : if (!done) {
4442 0 : done = (failed = !arg1_holder.TrySetToUnsignedLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4443 : }
4444 : }
4445 0 : if (failed) {
4446 0 : return false;
4447 : }
4448 0 : if (!done) {
4449 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform2uiv", "Uint32Array, UnsignedLongSequence");
4450 0 : return false;
4451 : }
4452 : }
4453 : uint32_t arg2;
4454 0 : if (args.hasDefined(2)) {
4455 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4456 0 : return false;
4457 : }
4458 : } else {
4459 0 : arg2 = 0U;
4460 : }
4461 : uint32_t arg3;
4462 0 : if (args.hasDefined(3)) {
4463 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4464 0 : return false;
4465 : }
4466 : } else {
4467 0 : arg3 = 0U;
4468 : }
4469 0 : self->Uniform2uiv(Constify(arg0), Constify(arg1), arg2, arg3);
4470 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4471 0 : args.rval().setUndefined();
4472 0 : return true;
4473 : }
4474 :
4475 : static const JSJitInfo uniform2uiv_methodinfo = {
4476 : { (JSJitGetterOp)uniform2uiv },
4477 : { prototypes::id::WebGL2RenderingContext },
4478 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4479 : JSJitInfo::Method,
4480 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4481 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4482 : false, /* isInfallible. False in setters. */
4483 : false, /* isMovable. Not relevant for setters. */
4484 : false, /* isEliminatable. Not relevant for setters. */
4485 : false, /* isAlwaysInSlot. Only relevant for getters. */
4486 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4487 : false, /* isTypedMethod. Only relevant for methods. */
4488 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4489 : };
4490 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4491 : static_assert(0 < 1, "There is no slot for us");
4492 :
4493 : static bool
4494 0 : uniform3uiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4495 : {
4496 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4497 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform3uiv");
4498 : }
4499 : mozilla::WebGLUniformLocation* arg0;
4500 0 : if (args[0].isObject()) {
4501 : {
4502 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4503 0 : if (NS_FAILED(rv)) {
4504 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform3uiv", "WebGLUniformLocation");
4505 0 : return false;
4506 : }
4507 : }
4508 0 : } else if (args[0].isNullOrUndefined()) {
4509 0 : arg0 = nullptr;
4510 : } else {
4511 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform3uiv");
4512 0 : return false;
4513 : }
4514 0 : Uint32ArrayOrUnsignedLongSequence arg1;
4515 0 : Uint32ArrayOrUnsignedLongSequenceArgument arg1_holder(arg1);
4516 : {
4517 0 : bool done = false, failed = false, tryNext;
4518 0 : if (args[1].isObject()) {
4519 0 : done = (failed = !arg1_holder.TrySetToUint32Array(cx, args[1], tryNext, false)) || !tryNext;
4520 :
4521 0 : if (!done) {
4522 0 : done = (failed = !arg1_holder.TrySetToUnsignedLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4523 : }
4524 : }
4525 0 : if (failed) {
4526 0 : return false;
4527 : }
4528 0 : if (!done) {
4529 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform3uiv", "Uint32Array, UnsignedLongSequence");
4530 0 : return false;
4531 : }
4532 : }
4533 : uint32_t arg2;
4534 0 : if (args.hasDefined(2)) {
4535 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4536 0 : return false;
4537 : }
4538 : } else {
4539 0 : arg2 = 0U;
4540 : }
4541 : uint32_t arg3;
4542 0 : if (args.hasDefined(3)) {
4543 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4544 0 : return false;
4545 : }
4546 : } else {
4547 0 : arg3 = 0U;
4548 : }
4549 0 : self->Uniform3uiv(Constify(arg0), Constify(arg1), arg2, arg3);
4550 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4551 0 : args.rval().setUndefined();
4552 0 : return true;
4553 : }
4554 :
4555 : static const JSJitInfo uniform3uiv_methodinfo = {
4556 : { (JSJitGetterOp)uniform3uiv },
4557 : { prototypes::id::WebGL2RenderingContext },
4558 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4559 : JSJitInfo::Method,
4560 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4561 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4562 : false, /* isInfallible. False in setters. */
4563 : false, /* isMovable. Not relevant for setters. */
4564 : false, /* isEliminatable. Not relevant for setters. */
4565 : false, /* isAlwaysInSlot. Only relevant for getters. */
4566 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4567 : false, /* isTypedMethod. Only relevant for methods. */
4568 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4569 : };
4570 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4571 : static_assert(0 < 1, "There is no slot for us");
4572 :
4573 : static bool
4574 0 : uniform4uiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4575 : {
4576 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
4577 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform4uiv");
4578 : }
4579 : mozilla::WebGLUniformLocation* arg0;
4580 0 : if (args[0].isObject()) {
4581 : {
4582 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4583 0 : if (NS_FAILED(rv)) {
4584 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform4uiv", "WebGLUniformLocation");
4585 0 : return false;
4586 : }
4587 : }
4588 0 : } else if (args[0].isNullOrUndefined()) {
4589 0 : arg0 = nullptr;
4590 : } else {
4591 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform4uiv");
4592 0 : return false;
4593 : }
4594 0 : Uint32ArrayOrUnsignedLongSequence arg1;
4595 0 : Uint32ArrayOrUnsignedLongSequenceArgument arg1_holder(arg1);
4596 : {
4597 0 : bool done = false, failed = false, tryNext;
4598 0 : if (args[1].isObject()) {
4599 0 : done = (failed = !arg1_holder.TrySetToUint32Array(cx, args[1], tryNext, false)) || !tryNext;
4600 :
4601 0 : if (!done) {
4602 0 : done = (failed = !arg1_holder.TrySetToUnsignedLongSequence(cx, args[1], tryNext, false)) || !tryNext;
4603 : }
4604 : }
4605 0 : if (failed) {
4606 0 : return false;
4607 : }
4608 0 : if (!done) {
4609 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.uniform4uiv", "Uint32Array, UnsignedLongSequence");
4610 0 : return false;
4611 : }
4612 : }
4613 : uint32_t arg2;
4614 0 : if (args.hasDefined(2)) {
4615 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
4616 0 : return false;
4617 : }
4618 : } else {
4619 0 : arg2 = 0U;
4620 : }
4621 : uint32_t arg3;
4622 0 : if (args.hasDefined(3)) {
4623 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4624 0 : return false;
4625 : }
4626 : } else {
4627 0 : arg3 = 0U;
4628 : }
4629 0 : self->Uniform4uiv(Constify(arg0), Constify(arg1), arg2, arg3);
4630 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4631 0 : args.rval().setUndefined();
4632 0 : return true;
4633 : }
4634 :
4635 : static const JSJitInfo uniform4uiv_methodinfo = {
4636 : { (JSJitGetterOp)uniform4uiv },
4637 : { prototypes::id::WebGL2RenderingContext },
4638 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4639 : JSJitInfo::Method,
4640 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4641 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4642 : false, /* isInfallible. False in setters. */
4643 : false, /* isMovable. Not relevant for setters. */
4644 : false, /* isEliminatable. Not relevant for setters. */
4645 : false, /* isAlwaysInSlot. Only relevant for getters. */
4646 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4647 : false, /* isTypedMethod. Only relevant for methods. */
4648 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4649 : };
4650 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4651 : static_assert(0 < 1, "There is no slot for us");
4652 :
4653 : static bool
4654 0 : uniformMatrix2fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4655 : {
4656 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
4657 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix2fv");
4658 : }
4659 : mozilla::WebGLUniformLocation* arg0;
4660 0 : if (args[0].isObject()) {
4661 : {
4662 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4663 0 : if (NS_FAILED(rv)) {
4664 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix2fv", "WebGLUniformLocation");
4665 0 : return false;
4666 : }
4667 : }
4668 0 : } else if (args[0].isNullOrUndefined()) {
4669 0 : arg0 = nullptr;
4670 : } else {
4671 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix2fv");
4672 0 : return false;
4673 : }
4674 : bool arg1;
4675 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
4676 0 : return false;
4677 : }
4678 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
4679 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
4680 : {
4681 0 : bool done = false, failed = false, tryNext;
4682 0 : if (args[2].isObject()) {
4683 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
4684 :
4685 0 : if (!done) {
4686 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
4687 : }
4688 : }
4689 0 : if (failed) {
4690 0 : return false;
4691 : }
4692 0 : if (!done) {
4693 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix2fv", "Float32Array, UnrestrictedFloatSequence");
4694 0 : return false;
4695 : }
4696 : }
4697 : uint32_t arg3;
4698 0 : if (args.hasDefined(3)) {
4699 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4700 0 : return false;
4701 : }
4702 : } else {
4703 0 : arg3 = 0U;
4704 : }
4705 : uint32_t arg4;
4706 0 : if (args.hasDefined(4)) {
4707 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
4708 0 : return false;
4709 : }
4710 : } else {
4711 0 : arg4 = 0U;
4712 : }
4713 0 : self->UniformMatrix2fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
4714 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4715 0 : args.rval().setUndefined();
4716 0 : return true;
4717 : }
4718 :
4719 : static const JSJitInfo uniformMatrix2fv_methodinfo = {
4720 : { (JSJitGetterOp)uniformMatrix2fv },
4721 : { prototypes::id::WebGL2RenderingContext },
4722 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4723 : JSJitInfo::Method,
4724 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4725 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4726 : false, /* isInfallible. False in setters. */
4727 : false, /* isMovable. Not relevant for setters. */
4728 : false, /* isEliminatable. Not relevant for setters. */
4729 : false, /* isAlwaysInSlot. Only relevant for getters. */
4730 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4731 : false, /* isTypedMethod. Only relevant for methods. */
4732 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4733 : };
4734 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4735 : static_assert(0 < 1, "There is no slot for us");
4736 :
4737 : static bool
4738 0 : uniformMatrix3x2fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4739 : {
4740 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
4741 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix3x2fv");
4742 : }
4743 : mozilla::WebGLUniformLocation* arg0;
4744 0 : if (args[0].isObject()) {
4745 : {
4746 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4747 0 : if (NS_FAILED(rv)) {
4748 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix3x2fv", "WebGLUniformLocation");
4749 0 : return false;
4750 : }
4751 : }
4752 0 : } else if (args[0].isNullOrUndefined()) {
4753 0 : arg0 = nullptr;
4754 : } else {
4755 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix3x2fv");
4756 0 : return false;
4757 : }
4758 : bool arg1;
4759 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
4760 0 : return false;
4761 : }
4762 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
4763 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
4764 : {
4765 0 : bool done = false, failed = false, tryNext;
4766 0 : if (args[2].isObject()) {
4767 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
4768 :
4769 0 : if (!done) {
4770 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
4771 : }
4772 : }
4773 0 : if (failed) {
4774 0 : return false;
4775 : }
4776 0 : if (!done) {
4777 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix3x2fv", "Float32Array, UnrestrictedFloatSequence");
4778 0 : return false;
4779 : }
4780 : }
4781 : uint32_t arg3;
4782 0 : if (args.hasDefined(3)) {
4783 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4784 0 : return false;
4785 : }
4786 : } else {
4787 0 : arg3 = 0U;
4788 : }
4789 : uint32_t arg4;
4790 0 : if (args.hasDefined(4)) {
4791 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
4792 0 : return false;
4793 : }
4794 : } else {
4795 0 : arg4 = 0U;
4796 : }
4797 0 : self->UniformMatrix3x2fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
4798 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4799 0 : args.rval().setUndefined();
4800 0 : return true;
4801 : }
4802 :
4803 : static const JSJitInfo uniformMatrix3x2fv_methodinfo = {
4804 : { (JSJitGetterOp)uniformMatrix3x2fv },
4805 : { prototypes::id::WebGL2RenderingContext },
4806 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4807 : JSJitInfo::Method,
4808 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4809 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4810 : false, /* isInfallible. False in setters. */
4811 : false, /* isMovable. Not relevant for setters. */
4812 : false, /* isEliminatable. Not relevant for setters. */
4813 : false, /* isAlwaysInSlot. Only relevant for getters. */
4814 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4815 : false, /* isTypedMethod. Only relevant for methods. */
4816 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4817 : };
4818 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4819 : static_assert(0 < 1, "There is no slot for us");
4820 :
4821 : static bool
4822 0 : uniformMatrix4x2fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4823 : {
4824 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
4825 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix4x2fv");
4826 : }
4827 : mozilla::WebGLUniformLocation* arg0;
4828 0 : if (args[0].isObject()) {
4829 : {
4830 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4831 0 : if (NS_FAILED(rv)) {
4832 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix4x2fv", "WebGLUniformLocation");
4833 0 : return false;
4834 : }
4835 : }
4836 0 : } else if (args[0].isNullOrUndefined()) {
4837 0 : arg0 = nullptr;
4838 : } else {
4839 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix4x2fv");
4840 0 : return false;
4841 : }
4842 : bool arg1;
4843 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
4844 0 : return false;
4845 : }
4846 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
4847 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
4848 : {
4849 0 : bool done = false, failed = false, tryNext;
4850 0 : if (args[2].isObject()) {
4851 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
4852 :
4853 0 : if (!done) {
4854 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
4855 : }
4856 : }
4857 0 : if (failed) {
4858 0 : return false;
4859 : }
4860 0 : if (!done) {
4861 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix4x2fv", "Float32Array, UnrestrictedFloatSequence");
4862 0 : return false;
4863 : }
4864 : }
4865 : uint32_t arg3;
4866 0 : if (args.hasDefined(3)) {
4867 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4868 0 : return false;
4869 : }
4870 : } else {
4871 0 : arg3 = 0U;
4872 : }
4873 : uint32_t arg4;
4874 0 : if (args.hasDefined(4)) {
4875 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
4876 0 : return false;
4877 : }
4878 : } else {
4879 0 : arg4 = 0U;
4880 : }
4881 0 : self->UniformMatrix4x2fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
4882 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4883 0 : args.rval().setUndefined();
4884 0 : return true;
4885 : }
4886 :
4887 : static const JSJitInfo uniformMatrix4x2fv_methodinfo = {
4888 : { (JSJitGetterOp)uniformMatrix4x2fv },
4889 : { prototypes::id::WebGL2RenderingContext },
4890 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4891 : JSJitInfo::Method,
4892 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4893 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4894 : false, /* isInfallible. False in setters. */
4895 : false, /* isMovable. Not relevant for setters. */
4896 : false, /* isEliminatable. Not relevant for setters. */
4897 : false, /* isAlwaysInSlot. Only relevant for getters. */
4898 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4899 : false, /* isTypedMethod. Only relevant for methods. */
4900 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4901 : };
4902 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4903 : static_assert(0 < 1, "There is no slot for us");
4904 :
4905 : static bool
4906 0 : uniformMatrix2x3fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4907 : {
4908 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
4909 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix2x3fv");
4910 : }
4911 : mozilla::WebGLUniformLocation* arg0;
4912 0 : if (args[0].isObject()) {
4913 : {
4914 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4915 0 : if (NS_FAILED(rv)) {
4916 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix2x3fv", "WebGLUniformLocation");
4917 0 : return false;
4918 : }
4919 : }
4920 0 : } else if (args[0].isNullOrUndefined()) {
4921 0 : arg0 = nullptr;
4922 : } else {
4923 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix2x3fv");
4924 0 : return false;
4925 : }
4926 : bool arg1;
4927 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
4928 0 : return false;
4929 : }
4930 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
4931 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
4932 : {
4933 0 : bool done = false, failed = false, tryNext;
4934 0 : if (args[2].isObject()) {
4935 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
4936 :
4937 0 : if (!done) {
4938 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
4939 : }
4940 : }
4941 0 : if (failed) {
4942 0 : return false;
4943 : }
4944 0 : if (!done) {
4945 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix2x3fv", "Float32Array, UnrestrictedFloatSequence");
4946 0 : return false;
4947 : }
4948 : }
4949 : uint32_t arg3;
4950 0 : if (args.hasDefined(3)) {
4951 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
4952 0 : return false;
4953 : }
4954 : } else {
4955 0 : arg3 = 0U;
4956 : }
4957 : uint32_t arg4;
4958 0 : if (args.hasDefined(4)) {
4959 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
4960 0 : return false;
4961 : }
4962 : } else {
4963 0 : arg4 = 0U;
4964 : }
4965 0 : self->UniformMatrix2x3fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
4966 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4967 0 : args.rval().setUndefined();
4968 0 : return true;
4969 : }
4970 :
4971 : static const JSJitInfo uniformMatrix2x3fv_methodinfo = {
4972 : { (JSJitGetterOp)uniformMatrix2x3fv },
4973 : { prototypes::id::WebGL2RenderingContext },
4974 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
4975 : JSJitInfo::Method,
4976 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4977 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4978 : false, /* isInfallible. False in setters. */
4979 : false, /* isMovable. Not relevant for setters. */
4980 : false, /* isEliminatable. Not relevant for setters. */
4981 : false, /* isAlwaysInSlot. Only relevant for getters. */
4982 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4983 : false, /* isTypedMethod. Only relevant for methods. */
4984 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4985 : };
4986 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4987 : static_assert(0 < 1, "There is no slot for us");
4988 :
4989 : static bool
4990 0 : uniformMatrix3fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
4991 : {
4992 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
4993 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix3fv");
4994 : }
4995 : mozilla::WebGLUniformLocation* arg0;
4996 0 : if (args[0].isObject()) {
4997 : {
4998 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
4999 0 : if (NS_FAILED(rv)) {
5000 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix3fv", "WebGLUniformLocation");
5001 0 : return false;
5002 : }
5003 : }
5004 0 : } else if (args[0].isNullOrUndefined()) {
5005 0 : arg0 = nullptr;
5006 : } else {
5007 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix3fv");
5008 0 : return false;
5009 : }
5010 : bool arg1;
5011 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
5012 0 : return false;
5013 : }
5014 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
5015 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
5016 : {
5017 0 : bool done = false, failed = false, tryNext;
5018 0 : if (args[2].isObject()) {
5019 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
5020 :
5021 0 : if (!done) {
5022 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
5023 : }
5024 : }
5025 0 : if (failed) {
5026 0 : return false;
5027 : }
5028 0 : if (!done) {
5029 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix3fv", "Float32Array, UnrestrictedFloatSequence");
5030 0 : return false;
5031 : }
5032 : }
5033 : uint32_t arg3;
5034 0 : if (args.hasDefined(3)) {
5035 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
5036 0 : return false;
5037 : }
5038 : } else {
5039 0 : arg3 = 0U;
5040 : }
5041 : uint32_t arg4;
5042 0 : if (args.hasDefined(4)) {
5043 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5044 0 : return false;
5045 : }
5046 : } else {
5047 0 : arg4 = 0U;
5048 : }
5049 0 : self->UniformMatrix3fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
5050 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5051 0 : args.rval().setUndefined();
5052 0 : return true;
5053 : }
5054 :
5055 : static const JSJitInfo uniformMatrix3fv_methodinfo = {
5056 : { (JSJitGetterOp)uniformMatrix3fv },
5057 : { prototypes::id::WebGL2RenderingContext },
5058 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5059 : JSJitInfo::Method,
5060 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5061 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5062 : false, /* isInfallible. False in setters. */
5063 : false, /* isMovable. Not relevant for setters. */
5064 : false, /* isEliminatable. Not relevant for setters. */
5065 : false, /* isAlwaysInSlot. Only relevant for getters. */
5066 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5067 : false, /* isTypedMethod. Only relevant for methods. */
5068 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5069 : };
5070 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5071 : static_assert(0 < 1, "There is no slot for us");
5072 :
5073 : static bool
5074 0 : uniformMatrix4x3fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5075 : {
5076 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
5077 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix4x3fv");
5078 : }
5079 : mozilla::WebGLUniformLocation* arg0;
5080 0 : if (args[0].isObject()) {
5081 : {
5082 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
5083 0 : if (NS_FAILED(rv)) {
5084 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix4x3fv", "WebGLUniformLocation");
5085 0 : return false;
5086 : }
5087 : }
5088 0 : } else if (args[0].isNullOrUndefined()) {
5089 0 : arg0 = nullptr;
5090 : } else {
5091 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix4x3fv");
5092 0 : return false;
5093 : }
5094 : bool arg1;
5095 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
5096 0 : return false;
5097 : }
5098 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
5099 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
5100 : {
5101 0 : bool done = false, failed = false, tryNext;
5102 0 : if (args[2].isObject()) {
5103 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
5104 :
5105 0 : if (!done) {
5106 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
5107 : }
5108 : }
5109 0 : if (failed) {
5110 0 : return false;
5111 : }
5112 0 : if (!done) {
5113 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix4x3fv", "Float32Array, UnrestrictedFloatSequence");
5114 0 : return false;
5115 : }
5116 : }
5117 : uint32_t arg3;
5118 0 : if (args.hasDefined(3)) {
5119 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
5120 0 : return false;
5121 : }
5122 : } else {
5123 0 : arg3 = 0U;
5124 : }
5125 : uint32_t arg4;
5126 0 : if (args.hasDefined(4)) {
5127 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5128 0 : return false;
5129 : }
5130 : } else {
5131 0 : arg4 = 0U;
5132 : }
5133 0 : self->UniformMatrix4x3fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
5134 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5135 0 : args.rval().setUndefined();
5136 0 : return true;
5137 : }
5138 :
5139 : static const JSJitInfo uniformMatrix4x3fv_methodinfo = {
5140 : { (JSJitGetterOp)uniformMatrix4x3fv },
5141 : { prototypes::id::WebGL2RenderingContext },
5142 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5143 : JSJitInfo::Method,
5144 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5145 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5146 : false, /* isInfallible. False in setters. */
5147 : false, /* isMovable. Not relevant for setters. */
5148 : false, /* isEliminatable. Not relevant for setters. */
5149 : false, /* isAlwaysInSlot. Only relevant for getters. */
5150 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5151 : false, /* isTypedMethod. Only relevant for methods. */
5152 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5153 : };
5154 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5155 : static_assert(0 < 1, "There is no slot for us");
5156 :
5157 : static bool
5158 0 : uniformMatrix2x4fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5159 : {
5160 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
5161 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix2x4fv");
5162 : }
5163 : mozilla::WebGLUniformLocation* arg0;
5164 0 : if (args[0].isObject()) {
5165 : {
5166 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
5167 0 : if (NS_FAILED(rv)) {
5168 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix2x4fv", "WebGLUniformLocation");
5169 0 : return false;
5170 : }
5171 : }
5172 0 : } else if (args[0].isNullOrUndefined()) {
5173 0 : arg0 = nullptr;
5174 : } else {
5175 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix2x4fv");
5176 0 : return false;
5177 : }
5178 : bool arg1;
5179 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
5180 0 : return false;
5181 : }
5182 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
5183 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
5184 : {
5185 0 : bool done = false, failed = false, tryNext;
5186 0 : if (args[2].isObject()) {
5187 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
5188 :
5189 0 : if (!done) {
5190 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
5191 : }
5192 : }
5193 0 : if (failed) {
5194 0 : return false;
5195 : }
5196 0 : if (!done) {
5197 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix2x4fv", "Float32Array, UnrestrictedFloatSequence");
5198 0 : return false;
5199 : }
5200 : }
5201 : uint32_t arg3;
5202 0 : if (args.hasDefined(3)) {
5203 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
5204 0 : return false;
5205 : }
5206 : } else {
5207 0 : arg3 = 0U;
5208 : }
5209 : uint32_t arg4;
5210 0 : if (args.hasDefined(4)) {
5211 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5212 0 : return false;
5213 : }
5214 : } else {
5215 0 : arg4 = 0U;
5216 : }
5217 0 : self->UniformMatrix2x4fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
5218 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5219 0 : args.rval().setUndefined();
5220 0 : return true;
5221 : }
5222 :
5223 : static const JSJitInfo uniformMatrix2x4fv_methodinfo = {
5224 : { (JSJitGetterOp)uniformMatrix2x4fv },
5225 : { prototypes::id::WebGL2RenderingContext },
5226 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5227 : JSJitInfo::Method,
5228 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5229 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5230 : false, /* isInfallible. False in setters. */
5231 : false, /* isMovable. Not relevant for setters. */
5232 : false, /* isEliminatable. Not relevant for setters. */
5233 : false, /* isAlwaysInSlot. Only relevant for getters. */
5234 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5235 : false, /* isTypedMethod. Only relevant for methods. */
5236 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5237 : };
5238 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5239 : static_assert(0 < 1, "There is no slot for us");
5240 :
5241 : static bool
5242 0 : uniformMatrix3x4fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5243 : {
5244 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
5245 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix3x4fv");
5246 : }
5247 : mozilla::WebGLUniformLocation* arg0;
5248 0 : if (args[0].isObject()) {
5249 : {
5250 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
5251 0 : if (NS_FAILED(rv)) {
5252 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix3x4fv", "WebGLUniformLocation");
5253 0 : return false;
5254 : }
5255 : }
5256 0 : } else if (args[0].isNullOrUndefined()) {
5257 0 : arg0 = nullptr;
5258 : } else {
5259 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix3x4fv");
5260 0 : return false;
5261 : }
5262 : bool arg1;
5263 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
5264 0 : return false;
5265 : }
5266 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
5267 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
5268 : {
5269 0 : bool done = false, failed = false, tryNext;
5270 0 : if (args[2].isObject()) {
5271 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
5272 :
5273 0 : if (!done) {
5274 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
5275 : }
5276 : }
5277 0 : if (failed) {
5278 0 : return false;
5279 : }
5280 0 : if (!done) {
5281 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix3x4fv", "Float32Array, UnrestrictedFloatSequence");
5282 0 : return false;
5283 : }
5284 : }
5285 : uint32_t arg3;
5286 0 : if (args.hasDefined(3)) {
5287 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
5288 0 : return false;
5289 : }
5290 : } else {
5291 0 : arg3 = 0U;
5292 : }
5293 : uint32_t arg4;
5294 0 : if (args.hasDefined(4)) {
5295 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5296 0 : return false;
5297 : }
5298 : } else {
5299 0 : arg4 = 0U;
5300 : }
5301 0 : self->UniformMatrix3x4fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
5302 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5303 0 : args.rval().setUndefined();
5304 0 : return true;
5305 : }
5306 :
5307 : static const JSJitInfo uniformMatrix3x4fv_methodinfo = {
5308 : { (JSJitGetterOp)uniformMatrix3x4fv },
5309 : { prototypes::id::WebGL2RenderingContext },
5310 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5311 : JSJitInfo::Method,
5312 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5313 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5314 : false, /* isInfallible. False in setters. */
5315 : false, /* isMovable. Not relevant for setters. */
5316 : false, /* isEliminatable. Not relevant for setters. */
5317 : false, /* isAlwaysInSlot. Only relevant for getters. */
5318 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5319 : false, /* isTypedMethod. Only relevant for methods. */
5320 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5321 : };
5322 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5323 : static_assert(0 < 1, "There is no slot for us");
5324 :
5325 : static bool
5326 0 : uniformMatrix4fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5327 : {
5328 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
5329 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformMatrix4fv");
5330 : }
5331 : mozilla::WebGLUniformLocation* arg0;
5332 0 : if (args[0].isObject()) {
5333 : {
5334 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
5335 0 : if (NS_FAILED(rv)) {
5336 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformMatrix4fv", "WebGLUniformLocation");
5337 0 : return false;
5338 : }
5339 : }
5340 0 : } else if (args[0].isNullOrUndefined()) {
5341 0 : arg0 = nullptr;
5342 : } else {
5343 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformMatrix4fv");
5344 0 : return false;
5345 : }
5346 : bool arg1;
5347 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
5348 0 : return false;
5349 : }
5350 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
5351 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
5352 : {
5353 0 : bool done = false, failed = false, tryNext;
5354 0 : if (args[2].isObject()) {
5355 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
5356 :
5357 0 : if (!done) {
5358 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
5359 : }
5360 : }
5361 0 : if (failed) {
5362 0 : return false;
5363 : }
5364 0 : if (!done) {
5365 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.uniformMatrix4fv", "Float32Array, UnrestrictedFloatSequence");
5366 0 : return false;
5367 : }
5368 : }
5369 : uint32_t arg3;
5370 0 : if (args.hasDefined(3)) {
5371 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
5372 0 : return false;
5373 : }
5374 : } else {
5375 0 : arg3 = 0U;
5376 : }
5377 : uint32_t arg4;
5378 0 : if (args.hasDefined(4)) {
5379 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5380 0 : return false;
5381 : }
5382 : } else {
5383 0 : arg4 = 0U;
5384 : }
5385 0 : self->UniformMatrix4fv(Constify(arg0), arg1, Constify(arg2), arg3, arg4);
5386 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5387 0 : args.rval().setUndefined();
5388 0 : return true;
5389 : }
5390 :
5391 : static const JSJitInfo uniformMatrix4fv_methodinfo = {
5392 : { (JSJitGetterOp)uniformMatrix4fv },
5393 : { prototypes::id::WebGL2RenderingContext },
5394 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5395 : JSJitInfo::Method,
5396 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5397 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5398 : false, /* isInfallible. False in setters. */
5399 : false, /* isMovable. Not relevant for setters. */
5400 : false, /* isEliminatable. Not relevant for setters. */
5401 : false, /* isAlwaysInSlot. Only relevant for getters. */
5402 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5403 : false, /* isTypedMethod. Only relevant for methods. */
5404 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5405 : };
5406 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5407 : static_assert(0 < 1, "There is no slot for us");
5408 :
5409 : static bool
5410 0 : vertexAttribI4i(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5411 : {
5412 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
5413 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribI4i");
5414 : }
5415 : uint32_t arg0;
5416 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5417 0 : return false;
5418 : }
5419 : int32_t arg1;
5420 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
5421 0 : return false;
5422 : }
5423 : int32_t arg2;
5424 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
5425 0 : return false;
5426 : }
5427 : int32_t arg3;
5428 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
5429 0 : return false;
5430 : }
5431 : int32_t arg4;
5432 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
5433 0 : return false;
5434 : }
5435 0 : self->VertexAttribI4i(arg0, arg1, arg2, arg3, arg4);
5436 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5437 0 : args.rval().setUndefined();
5438 0 : return true;
5439 : }
5440 :
5441 : static const JSJitInfo vertexAttribI4i_methodinfo = {
5442 : { (JSJitGetterOp)vertexAttribI4i },
5443 : { prototypes::id::WebGL2RenderingContext },
5444 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5445 : JSJitInfo::Method,
5446 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5447 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5448 : false, /* isInfallible. False in setters. */
5449 : false, /* isMovable. Not relevant for setters. */
5450 : false, /* isEliminatable. Not relevant for setters. */
5451 : false, /* isAlwaysInSlot. Only relevant for getters. */
5452 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5453 : false, /* isTypedMethod. Only relevant for methods. */
5454 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5455 : };
5456 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5457 : static_assert(0 < 1, "There is no slot for us");
5458 :
5459 : static bool
5460 0 : vertexAttribI4iv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5461 : {
5462 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
5463 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribI4iv");
5464 : }
5465 : uint32_t arg0;
5466 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5467 0 : return false;
5468 : }
5469 0 : Int32ArrayOrLongSequence arg1;
5470 0 : Int32ArrayOrLongSequenceArgument arg1_holder(arg1);
5471 : {
5472 0 : bool done = false, failed = false, tryNext;
5473 0 : if (args[1].isObject()) {
5474 0 : done = (failed = !arg1_holder.TrySetToInt32Array(cx, args[1], tryNext, false)) || !tryNext;
5475 :
5476 0 : if (!done) {
5477 0 : done = (failed = !arg1_holder.TrySetToLongSequence(cx, args[1], tryNext, false)) || !tryNext;
5478 : }
5479 : }
5480 0 : if (failed) {
5481 0 : return false;
5482 : }
5483 0 : if (!done) {
5484 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.vertexAttribI4iv", "Int32Array, LongSequence");
5485 0 : return false;
5486 : }
5487 : }
5488 0 : self->VertexAttribI4iv(arg0, Constify(arg1));
5489 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5490 0 : args.rval().setUndefined();
5491 0 : return true;
5492 : }
5493 :
5494 : static const JSJitInfo vertexAttribI4iv_methodinfo = {
5495 : { (JSJitGetterOp)vertexAttribI4iv },
5496 : { prototypes::id::WebGL2RenderingContext },
5497 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5498 : JSJitInfo::Method,
5499 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5500 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5501 : false, /* isInfallible. False in setters. */
5502 : false, /* isMovable. Not relevant for setters. */
5503 : false, /* isEliminatable. Not relevant for setters. */
5504 : false, /* isAlwaysInSlot. Only relevant for getters. */
5505 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5506 : false, /* isTypedMethod. Only relevant for methods. */
5507 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5508 : };
5509 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5510 : static_assert(0 < 1, "There is no slot for us");
5511 :
5512 : static bool
5513 0 : vertexAttribI4ui(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5514 : {
5515 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
5516 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribI4ui");
5517 : }
5518 : uint32_t arg0;
5519 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5520 0 : return false;
5521 : }
5522 : uint32_t arg1;
5523 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
5524 0 : return false;
5525 : }
5526 : uint32_t arg2;
5527 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
5528 0 : return false;
5529 : }
5530 : uint32_t arg3;
5531 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
5532 0 : return false;
5533 : }
5534 : uint32_t arg4;
5535 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5536 0 : return false;
5537 : }
5538 0 : self->VertexAttribI4ui(arg0, arg1, arg2, arg3, arg4);
5539 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5540 0 : args.rval().setUndefined();
5541 0 : return true;
5542 : }
5543 :
5544 : static const JSJitInfo vertexAttribI4ui_methodinfo = {
5545 : { (JSJitGetterOp)vertexAttribI4ui },
5546 : { prototypes::id::WebGL2RenderingContext },
5547 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5548 : JSJitInfo::Method,
5549 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5550 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5551 : false, /* isInfallible. False in setters. */
5552 : false, /* isMovable. Not relevant for setters. */
5553 : false, /* isEliminatable. Not relevant for setters. */
5554 : false, /* isAlwaysInSlot. Only relevant for getters. */
5555 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5556 : false, /* isTypedMethod. Only relevant for methods. */
5557 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5558 : };
5559 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5560 : static_assert(0 < 1, "There is no slot for us");
5561 :
5562 : static bool
5563 0 : vertexAttribI4uiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5564 : {
5565 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
5566 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribI4uiv");
5567 : }
5568 : uint32_t arg0;
5569 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5570 0 : return false;
5571 : }
5572 0 : Uint32ArrayOrUnsignedLongSequence arg1;
5573 0 : Uint32ArrayOrUnsignedLongSequenceArgument arg1_holder(arg1);
5574 : {
5575 0 : bool done = false, failed = false, tryNext;
5576 0 : if (args[1].isObject()) {
5577 0 : done = (failed = !arg1_holder.TrySetToUint32Array(cx, args[1], tryNext, false)) || !tryNext;
5578 :
5579 0 : if (!done) {
5580 0 : done = (failed = !arg1_holder.TrySetToUnsignedLongSequence(cx, args[1], tryNext, false)) || !tryNext;
5581 : }
5582 : }
5583 0 : if (failed) {
5584 0 : return false;
5585 : }
5586 0 : if (!done) {
5587 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.vertexAttribI4uiv", "Uint32Array, UnsignedLongSequence");
5588 0 : return false;
5589 : }
5590 : }
5591 0 : self->VertexAttribI4uiv(arg0, Constify(arg1));
5592 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5593 0 : args.rval().setUndefined();
5594 0 : return true;
5595 : }
5596 :
5597 : static const JSJitInfo vertexAttribI4uiv_methodinfo = {
5598 : { (JSJitGetterOp)vertexAttribI4uiv },
5599 : { prototypes::id::WebGL2RenderingContext },
5600 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5601 : JSJitInfo::Method,
5602 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5603 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5604 : false, /* isInfallible. False in setters. */
5605 : false, /* isMovable. Not relevant for setters. */
5606 : false, /* isEliminatable. Not relevant for setters. */
5607 : false, /* isAlwaysInSlot. Only relevant for getters. */
5608 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5609 : false, /* isTypedMethod. Only relevant for methods. */
5610 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5611 : };
5612 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5613 : static_assert(0 < 1, "There is no slot for us");
5614 :
5615 : static bool
5616 0 : vertexAttribIPointer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5617 : {
5618 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
5619 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribIPointer");
5620 : }
5621 : uint32_t arg0;
5622 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5623 0 : return false;
5624 : }
5625 : int32_t arg1;
5626 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
5627 0 : return false;
5628 : }
5629 : uint32_t arg2;
5630 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
5631 0 : return false;
5632 : }
5633 : int32_t arg3;
5634 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
5635 0 : return false;
5636 : }
5637 : int64_t arg4;
5638 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[4], &arg4)) {
5639 0 : return false;
5640 : }
5641 0 : self->VertexAttribIPointer(arg0, arg1, arg2, arg3, arg4);
5642 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5643 0 : args.rval().setUndefined();
5644 0 : return true;
5645 : }
5646 :
5647 : static const JSJitInfo vertexAttribIPointer_methodinfo = {
5648 : { (JSJitGetterOp)vertexAttribIPointer },
5649 : { prototypes::id::WebGL2RenderingContext },
5650 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5651 : JSJitInfo::Method,
5652 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5653 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5654 : false, /* isInfallible. False in setters. */
5655 : false, /* isMovable. Not relevant for setters. */
5656 : false, /* isEliminatable. Not relevant for setters. */
5657 : false, /* isAlwaysInSlot. Only relevant for getters. */
5658 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5659 : false, /* isTypedMethod. Only relevant for methods. */
5660 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5661 : };
5662 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5663 : static_assert(0 < 1, "There is no slot for us");
5664 :
5665 : static bool
5666 0 : vertexAttribDivisor(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5667 : {
5668 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
5669 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribDivisor");
5670 : }
5671 : uint32_t arg0;
5672 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5673 0 : return false;
5674 : }
5675 : uint32_t arg1;
5676 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
5677 0 : return false;
5678 : }
5679 0 : self->VertexAttribDivisor(arg0, arg1);
5680 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5681 0 : args.rval().setUndefined();
5682 0 : return true;
5683 : }
5684 :
5685 : static const JSJitInfo vertexAttribDivisor_methodinfo = {
5686 : { (JSJitGetterOp)vertexAttribDivisor },
5687 : { prototypes::id::WebGL2RenderingContext },
5688 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5689 : JSJitInfo::Method,
5690 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5691 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5692 : false, /* isInfallible. False in setters. */
5693 : false, /* isMovable. Not relevant for setters. */
5694 : false, /* isEliminatable. Not relevant for setters. */
5695 : false, /* isAlwaysInSlot. Only relevant for getters. */
5696 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5697 : false, /* isTypedMethod. Only relevant for methods. */
5698 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5699 : };
5700 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5701 : static_assert(0 < 1, "There is no slot for us");
5702 :
5703 : static bool
5704 0 : drawArraysInstanced(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5705 : {
5706 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
5707 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.drawArraysInstanced");
5708 : }
5709 : uint32_t arg0;
5710 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5711 0 : return false;
5712 : }
5713 : int32_t arg1;
5714 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
5715 0 : return false;
5716 : }
5717 : int32_t arg2;
5718 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
5719 0 : return false;
5720 : }
5721 : int32_t arg3;
5722 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
5723 0 : return false;
5724 : }
5725 0 : self->DrawArraysInstanced(arg0, arg1, arg2, arg3);
5726 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5727 0 : args.rval().setUndefined();
5728 0 : return true;
5729 : }
5730 :
5731 : static const JSJitInfo drawArraysInstanced_methodinfo = {
5732 : { (JSJitGetterOp)drawArraysInstanced },
5733 : { prototypes::id::WebGL2RenderingContext },
5734 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5735 : JSJitInfo::Method,
5736 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5737 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5738 : false, /* isInfallible. False in setters. */
5739 : false, /* isMovable. Not relevant for setters. */
5740 : false, /* isEliminatable. Not relevant for setters. */
5741 : false, /* isAlwaysInSlot. Only relevant for getters. */
5742 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5743 : false, /* isTypedMethod. Only relevant for methods. */
5744 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5745 : };
5746 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5747 : static_assert(0 < 1, "There is no slot for us");
5748 :
5749 : static bool
5750 0 : drawElementsInstanced(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5751 : {
5752 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
5753 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.drawElementsInstanced");
5754 : }
5755 : uint32_t arg0;
5756 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5757 0 : return false;
5758 : }
5759 : int32_t arg1;
5760 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
5761 0 : return false;
5762 : }
5763 : uint32_t arg2;
5764 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
5765 0 : return false;
5766 : }
5767 : int64_t arg3;
5768 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[3], &arg3)) {
5769 0 : return false;
5770 : }
5771 : int32_t arg4;
5772 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
5773 0 : return false;
5774 : }
5775 0 : self->DrawElementsInstanced(arg0, arg1, arg2, arg3, arg4);
5776 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5777 0 : args.rval().setUndefined();
5778 0 : return true;
5779 : }
5780 :
5781 : static const JSJitInfo drawElementsInstanced_methodinfo = {
5782 : { (JSJitGetterOp)drawElementsInstanced },
5783 : { prototypes::id::WebGL2RenderingContext },
5784 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5785 : JSJitInfo::Method,
5786 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5787 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5788 : false, /* isInfallible. False in setters. */
5789 : false, /* isMovable. Not relevant for setters. */
5790 : false, /* isEliminatable. Not relevant for setters. */
5791 : false, /* isAlwaysInSlot. Only relevant for getters. */
5792 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5793 : false, /* isTypedMethod. Only relevant for methods. */
5794 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5795 : };
5796 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5797 : static_assert(0 < 1, "There is no slot for us");
5798 :
5799 : static bool
5800 0 : drawRangeElements(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5801 : {
5802 0 : if (MOZ_UNLIKELY(args.length() < 6)) {
5803 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.drawRangeElements");
5804 : }
5805 : uint32_t arg0;
5806 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
5807 0 : return false;
5808 : }
5809 : uint32_t arg1;
5810 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
5811 0 : return false;
5812 : }
5813 : uint32_t arg2;
5814 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
5815 0 : return false;
5816 : }
5817 : int32_t arg3;
5818 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
5819 0 : return false;
5820 : }
5821 : uint32_t arg4;
5822 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5823 0 : return false;
5824 : }
5825 : int64_t arg5;
5826 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[5], &arg5)) {
5827 0 : return false;
5828 : }
5829 0 : self->DrawRangeElements(arg0, arg1, arg2, arg3, arg4, arg5);
5830 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5831 0 : args.rval().setUndefined();
5832 0 : return true;
5833 : }
5834 :
5835 : static const JSJitInfo drawRangeElements_methodinfo = {
5836 : { (JSJitGetterOp)drawRangeElements },
5837 : { prototypes::id::WebGL2RenderingContext },
5838 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5839 : JSJitInfo::Method,
5840 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5841 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5842 : false, /* isInfallible. False in setters. */
5843 : false, /* isMovable. Not relevant for setters. */
5844 : false, /* isEliminatable. Not relevant for setters. */
5845 : false, /* isAlwaysInSlot. Only relevant for getters. */
5846 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5847 : false, /* isTypedMethod. Only relevant for methods. */
5848 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5849 : };
5850 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5851 : static_assert(0 < 1, "There is no slot for us");
5852 :
5853 : static bool
5854 0 : readPixels(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
5855 : {
5856 0 : unsigned argcount = std::min(args.length(), 8u);
5857 0 : switch (argcount) {
5858 : case 7: {
5859 : int32_t arg0;
5860 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
5861 0 : return false;
5862 : }
5863 : int32_t arg1;
5864 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
5865 0 : return false;
5866 : }
5867 : int32_t arg2;
5868 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
5869 0 : return false;
5870 : }
5871 : int32_t arg3;
5872 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
5873 0 : return false;
5874 : }
5875 : uint32_t arg4;
5876 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5877 0 : return false;
5878 : }
5879 : uint32_t arg5;
5880 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[5], &arg5)) {
5881 0 : return false;
5882 : }
5883 0 : if (args[6].isNullOrUndefined()) {
5884 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg6(cx);
5885 0 : arg6.SetNull();
5886 0 : binding_detail::FastErrorResult rv;
5887 0 : self->ReadPixels(arg0, arg1, arg2, arg3, arg4, arg5, Constify(arg6), nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
5888 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5889 0 : return false;
5890 : }
5891 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5892 0 : args.rval().setUndefined();
5893 0 : return true;
5894 : }
5895 0 : if (args[6].isObject()) {
5896 : do {
5897 0 : RootedTypedArray<Nullable<ArrayBufferView>> arg6(cx);
5898 0 : if (!arg6.SetValue().Init(&args[6].toObject())) {
5899 0 : break;
5900 : }
5901 0 : binding_detail::FastErrorResult rv;
5902 0 : self->ReadPixels(arg0, arg1, arg2, arg3, arg4, arg5, Constify(arg6), nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
5903 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5904 0 : return false;
5905 : }
5906 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5907 0 : args.rval().setUndefined();
5908 0 : return true;
5909 : } while (0);
5910 : }
5911 : int64_t arg6;
5912 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[6], &arg6)) {
5913 0 : return false;
5914 : }
5915 0 : binding_detail::FastErrorResult rv;
5916 0 : self->ReadPixels(arg0, arg1, arg2, arg3, arg4, arg5, arg6, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
5917 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5918 0 : return false;
5919 : }
5920 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5921 0 : args.rval().setUndefined();
5922 0 : return true;
5923 : break;
5924 : }
5925 : case 8: {
5926 : int32_t arg0;
5927 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
5928 0 : return false;
5929 : }
5930 : int32_t arg1;
5931 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
5932 0 : return false;
5933 : }
5934 : int32_t arg2;
5935 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
5936 0 : return false;
5937 : }
5938 : int32_t arg3;
5939 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
5940 0 : return false;
5941 : }
5942 : uint32_t arg4;
5943 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[4], &arg4)) {
5944 0 : return false;
5945 : }
5946 : uint32_t arg5;
5947 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[5], &arg5)) {
5948 0 : return false;
5949 : }
5950 0 : RootedTypedArray<ArrayBufferView> arg6(cx);
5951 0 : if (args[6].isObject()) {
5952 0 : if (!arg6.Init(&args[6].toObject())) {
5953 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 7 of WebGL2RenderingContext.readPixels", "ArrayBufferView");
5954 0 : return false;
5955 : }
5956 : } else {
5957 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 7 of WebGL2RenderingContext.readPixels");
5958 0 : return false;
5959 : }
5960 : uint32_t arg7;
5961 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[7], &arg7)) {
5962 0 : return false;
5963 : }
5964 0 : binding_detail::FastErrorResult rv;
5965 0 : self->ReadPixels(arg0, arg1, arg2, arg3, arg4, arg5, Constify(arg6), arg7, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
5966 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5967 0 : return false;
5968 : }
5969 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5970 0 : args.rval().setUndefined();
5971 0 : return true;
5972 : break;
5973 : }
5974 : default: {
5975 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.readPixels");
5976 : break;
5977 : }
5978 : }
5979 : MOZ_CRASH("We have an always-returning default case");
5980 : return false;
5981 : }
5982 :
5983 : static const JSJitInfo readPixels_methodinfo = {
5984 : { (JSJitGetterOp)readPixels },
5985 : { prototypes::id::WebGL2RenderingContext },
5986 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
5987 : JSJitInfo::Method,
5988 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5989 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5990 : false, /* isInfallible. False in setters. */
5991 : false, /* isMovable. Not relevant for setters. */
5992 : false, /* isEliminatable. Not relevant for setters. */
5993 : false, /* isAlwaysInSlot. Only relevant for getters. */
5994 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5995 : false, /* isTypedMethod. Only relevant for methods. */
5996 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5997 : };
5998 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5999 : static_assert(0 < 1, "There is no slot for us");
6000 :
6001 : static bool
6002 0 : drawBuffers(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6003 : {
6004 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6005 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.drawBuffers");
6006 : }
6007 0 : binding_detail::AutoSequence<uint32_t> arg0;
6008 0 : if (args[0].isObject()) {
6009 0 : JS::ForOfIterator iter(cx);
6010 0 : if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
6011 0 : return false;
6012 : }
6013 0 : if (!iter.valueIsIterable()) {
6014 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 1 of WebGL2RenderingContext.drawBuffers");
6015 0 : return false;
6016 : }
6017 0 : binding_detail::AutoSequence<uint32_t> &arr = arg0;
6018 0 : JS::Rooted<JS::Value> temp(cx);
6019 : while (true) {
6020 : bool done;
6021 0 : if (!iter.next(&temp, &done)) {
6022 0 : return false;
6023 : }
6024 0 : if (done) {
6025 0 : break;
6026 : }
6027 0 : uint32_t* slotPtr = arr.AppendElement(mozilla::fallible);
6028 0 : if (!slotPtr) {
6029 0 : JS_ReportOutOfMemory(cx);
6030 0 : return false;
6031 : }
6032 0 : uint32_t& slot = *slotPtr;
6033 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, temp, &slot)) {
6034 0 : return false;
6035 : }
6036 0 : }
6037 : } else {
6038 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 1 of WebGL2RenderingContext.drawBuffers");
6039 0 : return false;
6040 : }
6041 0 : self->DrawBuffers(Constify(arg0));
6042 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6043 0 : args.rval().setUndefined();
6044 0 : return true;
6045 : }
6046 :
6047 : static const JSJitInfo drawBuffers_methodinfo = {
6048 : { (JSJitGetterOp)drawBuffers },
6049 : { prototypes::id::WebGL2RenderingContext },
6050 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6051 : JSJitInfo::Method,
6052 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6053 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6054 : false, /* isInfallible. False in setters. */
6055 : false, /* isMovable. Not relevant for setters. */
6056 : false, /* isEliminatable. Not relevant for setters. */
6057 : false, /* isAlwaysInSlot. Only relevant for getters. */
6058 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6059 : false, /* isTypedMethod. Only relevant for methods. */
6060 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6061 : };
6062 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6063 : static_assert(0 < 1, "There is no slot for us");
6064 :
6065 : static bool
6066 0 : clearBufferfv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6067 : {
6068 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
6069 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearBufferfv");
6070 : }
6071 : uint32_t arg0;
6072 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6073 0 : return false;
6074 : }
6075 : int32_t arg1;
6076 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
6077 0 : return false;
6078 : }
6079 0 : Float32ArrayOrUnrestrictedFloatSequence arg2;
6080 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg2_holder(arg2);
6081 : {
6082 0 : bool done = false, failed = false, tryNext;
6083 0 : if (args[2].isObject()) {
6084 0 : done = (failed = !arg2_holder.TrySetToFloat32Array(cx, args[2], tryNext, false)) || !tryNext;
6085 :
6086 0 : if (!done) {
6087 0 : done = (failed = !arg2_holder.TrySetToUnrestrictedFloatSequence(cx, args[2], tryNext, false)) || !tryNext;
6088 : }
6089 : }
6090 0 : if (failed) {
6091 0 : return false;
6092 : }
6093 0 : if (!done) {
6094 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.clearBufferfv", "Float32Array, UnrestrictedFloatSequence");
6095 0 : return false;
6096 : }
6097 : }
6098 : uint32_t arg3;
6099 0 : if (args.hasDefined(3)) {
6100 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
6101 0 : return false;
6102 : }
6103 : } else {
6104 0 : arg3 = 0U;
6105 : }
6106 0 : self->ClearBufferfv(arg0, arg1, Constify(arg2), arg3);
6107 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6108 0 : args.rval().setUndefined();
6109 0 : return true;
6110 : }
6111 :
6112 : static const JSJitInfo clearBufferfv_methodinfo = {
6113 : { (JSJitGetterOp)clearBufferfv },
6114 : { prototypes::id::WebGL2RenderingContext },
6115 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6116 : JSJitInfo::Method,
6117 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6118 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6119 : false, /* isInfallible. False in setters. */
6120 : false, /* isMovable. Not relevant for setters. */
6121 : false, /* isEliminatable. Not relevant for setters. */
6122 : false, /* isAlwaysInSlot. Only relevant for getters. */
6123 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6124 : false, /* isTypedMethod. Only relevant for methods. */
6125 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6126 : };
6127 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6128 : static_assert(0 < 1, "There is no slot for us");
6129 :
6130 : static bool
6131 0 : clearBufferiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6132 : {
6133 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
6134 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearBufferiv");
6135 : }
6136 : uint32_t arg0;
6137 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6138 0 : return false;
6139 : }
6140 : int32_t arg1;
6141 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
6142 0 : return false;
6143 : }
6144 0 : Int32ArrayOrLongSequence arg2;
6145 0 : Int32ArrayOrLongSequenceArgument arg2_holder(arg2);
6146 : {
6147 0 : bool done = false, failed = false, tryNext;
6148 0 : if (args[2].isObject()) {
6149 0 : done = (failed = !arg2_holder.TrySetToInt32Array(cx, args[2], tryNext, false)) || !tryNext;
6150 :
6151 0 : if (!done) {
6152 0 : done = (failed = !arg2_holder.TrySetToLongSequence(cx, args[2], tryNext, false)) || !tryNext;
6153 : }
6154 : }
6155 0 : if (failed) {
6156 0 : return false;
6157 : }
6158 0 : if (!done) {
6159 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.clearBufferiv", "Int32Array, LongSequence");
6160 0 : return false;
6161 : }
6162 : }
6163 : uint32_t arg3;
6164 0 : if (args.hasDefined(3)) {
6165 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
6166 0 : return false;
6167 : }
6168 : } else {
6169 0 : arg3 = 0U;
6170 : }
6171 0 : self->ClearBufferiv(arg0, arg1, Constify(arg2), arg3);
6172 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6173 0 : args.rval().setUndefined();
6174 0 : return true;
6175 : }
6176 :
6177 : static const JSJitInfo clearBufferiv_methodinfo = {
6178 : { (JSJitGetterOp)clearBufferiv },
6179 : { prototypes::id::WebGL2RenderingContext },
6180 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6181 : JSJitInfo::Method,
6182 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6183 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6184 : false, /* isInfallible. False in setters. */
6185 : false, /* isMovable. Not relevant for setters. */
6186 : false, /* isEliminatable. Not relevant for setters. */
6187 : false, /* isAlwaysInSlot. Only relevant for getters. */
6188 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6189 : false, /* isTypedMethod. Only relevant for methods. */
6190 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6191 : };
6192 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6193 : static_assert(0 < 1, "There is no slot for us");
6194 :
6195 : static bool
6196 0 : clearBufferuiv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6197 : {
6198 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
6199 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearBufferuiv");
6200 : }
6201 : uint32_t arg0;
6202 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6203 0 : return false;
6204 : }
6205 : int32_t arg1;
6206 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
6207 0 : return false;
6208 : }
6209 0 : Uint32ArrayOrUnsignedLongSequence arg2;
6210 0 : Uint32ArrayOrUnsignedLongSequenceArgument arg2_holder(arg2);
6211 : {
6212 0 : bool done = false, failed = false, tryNext;
6213 0 : if (args[2].isObject()) {
6214 0 : done = (failed = !arg2_holder.TrySetToUint32Array(cx, args[2], tryNext, false)) || !tryNext;
6215 :
6216 0 : if (!done) {
6217 0 : done = (failed = !arg2_holder.TrySetToUnsignedLongSequence(cx, args[2], tryNext, false)) || !tryNext;
6218 : }
6219 : }
6220 0 : if (failed) {
6221 0 : return false;
6222 : }
6223 0 : if (!done) {
6224 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of WebGL2RenderingContext.clearBufferuiv", "Uint32Array, UnsignedLongSequence");
6225 0 : return false;
6226 : }
6227 : }
6228 : uint32_t arg3;
6229 0 : if (args.hasDefined(3)) {
6230 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
6231 0 : return false;
6232 : }
6233 : } else {
6234 0 : arg3 = 0U;
6235 : }
6236 0 : self->ClearBufferuiv(arg0, arg1, Constify(arg2), arg3);
6237 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6238 0 : args.rval().setUndefined();
6239 0 : return true;
6240 : }
6241 :
6242 : static const JSJitInfo clearBufferuiv_methodinfo = {
6243 : { (JSJitGetterOp)clearBufferuiv },
6244 : { prototypes::id::WebGL2RenderingContext },
6245 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6246 : JSJitInfo::Method,
6247 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6248 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6249 : false, /* isInfallible. False in setters. */
6250 : false, /* isMovable. Not relevant for setters. */
6251 : false, /* isEliminatable. Not relevant for setters. */
6252 : false, /* isAlwaysInSlot. Only relevant for getters. */
6253 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6254 : false, /* isTypedMethod. Only relevant for methods. */
6255 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6256 : };
6257 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6258 : static_assert(0 < 1, "There is no slot for us");
6259 :
6260 : static bool
6261 0 : clearBufferfi(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6262 : {
6263 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
6264 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearBufferfi");
6265 : }
6266 : uint32_t arg0;
6267 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6268 0 : return false;
6269 : }
6270 : int32_t arg1;
6271 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
6272 0 : return false;
6273 : }
6274 : float arg2;
6275 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
6276 0 : return false;
6277 : }
6278 : int32_t arg3;
6279 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
6280 0 : return false;
6281 : }
6282 0 : self->ClearBufferfi(arg0, arg1, arg2, arg3);
6283 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6284 0 : args.rval().setUndefined();
6285 0 : return true;
6286 : }
6287 :
6288 : static const JSJitInfo clearBufferfi_methodinfo = {
6289 : { (JSJitGetterOp)clearBufferfi },
6290 : { prototypes::id::WebGL2RenderingContext },
6291 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6292 : JSJitInfo::Method,
6293 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6294 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6295 : false, /* isInfallible. False in setters. */
6296 : false, /* isMovable. Not relevant for setters. */
6297 : false, /* isEliminatable. Not relevant for setters. */
6298 : false, /* isAlwaysInSlot. Only relevant for getters. */
6299 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6300 : false, /* isTypedMethod. Only relevant for methods. */
6301 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6302 : };
6303 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6304 : static_assert(0 < 1, "There is no slot for us");
6305 :
6306 : static bool
6307 0 : createQuery(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6308 : {
6309 0 : auto result(StrongOrRawPtr<mozilla::WebGLQuery>(self->CreateQuery()));
6310 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6311 0 : if (!result) {
6312 0 : args.rval().setNull();
6313 0 : return true;
6314 : }
6315 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
6316 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
6317 0 : return false;
6318 : }
6319 0 : return true;
6320 : }
6321 :
6322 : static const JSJitInfo createQuery_methodinfo = {
6323 : { (JSJitGetterOp)createQuery },
6324 : { prototypes::id::WebGL2RenderingContext },
6325 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6326 : JSJitInfo::Method,
6327 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6328 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6329 : false, /* isInfallible. False in setters. */
6330 : false, /* isMovable. Not relevant for setters. */
6331 : false, /* isEliminatable. Not relevant for setters. */
6332 : false, /* isAlwaysInSlot. Only relevant for getters. */
6333 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6334 : false, /* isTypedMethod. Only relevant for methods. */
6335 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6336 : };
6337 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6338 : static_assert(0 < 1, "There is no slot for us");
6339 :
6340 : static bool
6341 0 : deleteQuery(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6342 : {
6343 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6344 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteQuery");
6345 : }
6346 : mozilla::WebGLQuery* arg0;
6347 0 : if (args[0].isObject()) {
6348 : {
6349 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLQuery, mozilla::WebGLQuery>(args[0], arg0);
6350 0 : if (NS_FAILED(rv)) {
6351 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteQuery", "WebGLQuery");
6352 0 : return false;
6353 : }
6354 : }
6355 0 : } else if (args[0].isNullOrUndefined()) {
6356 0 : arg0 = nullptr;
6357 : } else {
6358 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteQuery");
6359 0 : return false;
6360 : }
6361 0 : self->DeleteQuery(Constify(arg0));
6362 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6363 0 : args.rval().setUndefined();
6364 0 : return true;
6365 : }
6366 :
6367 : static const JSJitInfo deleteQuery_methodinfo = {
6368 : { (JSJitGetterOp)deleteQuery },
6369 : { prototypes::id::WebGL2RenderingContext },
6370 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6371 : JSJitInfo::Method,
6372 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6373 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6374 : false, /* isInfallible. False in setters. */
6375 : false, /* isMovable. Not relevant for setters. */
6376 : false, /* isEliminatable. Not relevant for setters. */
6377 : false, /* isAlwaysInSlot. Only relevant for getters. */
6378 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6379 : false, /* isTypedMethod. Only relevant for methods. */
6380 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6381 : };
6382 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6383 : static_assert(0 < 1, "There is no slot for us");
6384 :
6385 : static bool
6386 0 : isQuery(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6387 : {
6388 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6389 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isQuery");
6390 : }
6391 : mozilla::WebGLQuery* arg0;
6392 0 : if (args[0].isObject()) {
6393 : {
6394 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLQuery, mozilla::WebGLQuery>(args[0], arg0);
6395 0 : if (NS_FAILED(rv)) {
6396 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isQuery", "WebGLQuery");
6397 0 : return false;
6398 : }
6399 : }
6400 0 : } else if (args[0].isNullOrUndefined()) {
6401 0 : arg0 = nullptr;
6402 : } else {
6403 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isQuery");
6404 0 : return false;
6405 : }
6406 0 : bool result(self->IsQuery(Constify(arg0)));
6407 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6408 0 : args.rval().setBoolean(result);
6409 0 : return true;
6410 : }
6411 :
6412 : static const JSJitInfo isQuery_methodinfo = {
6413 : { (JSJitGetterOp)isQuery },
6414 : { prototypes::id::WebGL2RenderingContext },
6415 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6416 : JSJitInfo::Method,
6417 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6418 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
6419 : false, /* isInfallible. False in setters. */
6420 : false, /* isMovable. Not relevant for setters. */
6421 : false, /* isEliminatable. Not relevant for setters. */
6422 : false, /* isAlwaysInSlot. Only relevant for getters. */
6423 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6424 : false, /* isTypedMethod. Only relevant for methods. */
6425 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6426 : };
6427 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6428 : static_assert(0 < 1, "There is no slot for us");
6429 :
6430 : static bool
6431 0 : beginQuery(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6432 : {
6433 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
6434 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.beginQuery");
6435 : }
6436 : uint32_t arg0;
6437 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6438 0 : return false;
6439 : }
6440 0 : NonNull<mozilla::WebGLQuery> arg1;
6441 0 : if (args[1].isObject()) {
6442 : {
6443 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLQuery, mozilla::WebGLQuery>(args[1], arg1);
6444 0 : if (NS_FAILED(rv)) {
6445 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.beginQuery", "WebGLQuery");
6446 0 : return false;
6447 : }
6448 : }
6449 : } else {
6450 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.beginQuery");
6451 0 : return false;
6452 : }
6453 0 : self->BeginQuery(arg0, NonNullHelper(arg1));
6454 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6455 0 : args.rval().setUndefined();
6456 0 : return true;
6457 : }
6458 :
6459 : static const JSJitInfo beginQuery_methodinfo = {
6460 : { (JSJitGetterOp)beginQuery },
6461 : { prototypes::id::WebGL2RenderingContext },
6462 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6463 : JSJitInfo::Method,
6464 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6465 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6466 : false, /* isInfallible. False in setters. */
6467 : false, /* isMovable. Not relevant for setters. */
6468 : false, /* isEliminatable. Not relevant for setters. */
6469 : false, /* isAlwaysInSlot. Only relevant for getters. */
6470 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6471 : false, /* isTypedMethod. Only relevant for methods. */
6472 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6473 : };
6474 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6475 : static_assert(0 < 1, "There is no slot for us");
6476 :
6477 : static bool
6478 0 : endQuery(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6479 : {
6480 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6481 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.endQuery");
6482 : }
6483 : uint32_t arg0;
6484 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6485 0 : return false;
6486 : }
6487 0 : self->EndQuery(arg0);
6488 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6489 0 : args.rval().setUndefined();
6490 0 : return true;
6491 : }
6492 :
6493 : static const JSJitInfo endQuery_methodinfo = {
6494 : { (JSJitGetterOp)endQuery },
6495 : { prototypes::id::WebGL2RenderingContext },
6496 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6497 : JSJitInfo::Method,
6498 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6499 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6500 : false, /* isInfallible. False in setters. */
6501 : false, /* isMovable. Not relevant for setters. */
6502 : false, /* isEliminatable. Not relevant for setters. */
6503 : false, /* isAlwaysInSlot. Only relevant for getters. */
6504 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6505 : false, /* isTypedMethod. Only relevant for methods. */
6506 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6507 : };
6508 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6509 : static_assert(0 < 1, "There is no slot for us");
6510 :
6511 : static bool
6512 0 : getQuery(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6513 : {
6514 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
6515 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getQuery");
6516 : }
6517 : uint32_t arg0;
6518 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6519 0 : return false;
6520 : }
6521 : uint32_t arg1;
6522 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
6523 0 : return false;
6524 : }
6525 0 : JS::Rooted<JS::Value> result(cx);
6526 0 : self->GetQuery(cx, arg0, arg1, &result);
6527 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6528 0 : JS::ExposeValueToActiveJS(result);
6529 0 : args.rval().set(result);
6530 0 : if (!MaybeWrapValue(cx, args.rval())) {
6531 0 : return false;
6532 : }
6533 0 : return true;
6534 : }
6535 :
6536 : static const JSJitInfo getQuery_methodinfo = {
6537 : { (JSJitGetterOp)getQuery },
6538 : { prototypes::id::WebGL2RenderingContext },
6539 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6540 : JSJitInfo::Method,
6541 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6542 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6543 : false, /* isInfallible. False in setters. */
6544 : false, /* isMovable. Not relevant for setters. */
6545 : false, /* isEliminatable. Not relevant for setters. */
6546 : false, /* isAlwaysInSlot. Only relevant for getters. */
6547 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6548 : false, /* isTypedMethod. Only relevant for methods. */
6549 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6550 : };
6551 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6552 : static_assert(0 < 1, "There is no slot for us");
6553 :
6554 : static bool
6555 0 : getQueryParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6556 : {
6557 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
6558 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getQueryParameter");
6559 : }
6560 0 : NonNull<mozilla::WebGLQuery> arg0;
6561 0 : if (args[0].isObject()) {
6562 : {
6563 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLQuery, mozilla::WebGLQuery>(args[0], arg0);
6564 0 : if (NS_FAILED(rv)) {
6565 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getQueryParameter", "WebGLQuery");
6566 0 : return false;
6567 : }
6568 : }
6569 : } else {
6570 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getQueryParameter");
6571 0 : return false;
6572 : }
6573 : uint32_t arg1;
6574 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
6575 0 : return false;
6576 : }
6577 0 : JS::Rooted<JS::Value> result(cx);
6578 0 : self->GetQueryParameter(cx, NonNullHelper(arg0), arg1, &result);
6579 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6580 0 : JS::ExposeValueToActiveJS(result);
6581 0 : args.rval().set(result);
6582 0 : if (!MaybeWrapValue(cx, args.rval())) {
6583 0 : return false;
6584 : }
6585 0 : return true;
6586 : }
6587 :
6588 : static const JSJitInfo getQueryParameter_methodinfo = {
6589 : { (JSJitGetterOp)getQueryParameter },
6590 : { prototypes::id::WebGL2RenderingContext },
6591 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6592 : JSJitInfo::Method,
6593 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6594 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6595 : false, /* isInfallible. False in setters. */
6596 : false, /* isMovable. Not relevant for setters. */
6597 : false, /* isEliminatable. Not relevant for setters. */
6598 : false, /* isAlwaysInSlot. Only relevant for getters. */
6599 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6600 : false, /* isTypedMethod. Only relevant for methods. */
6601 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6602 : };
6603 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6604 : static_assert(0 < 1, "There is no slot for us");
6605 :
6606 : static bool
6607 0 : createSampler(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6608 : {
6609 0 : auto result(StrongOrRawPtr<mozilla::WebGLSampler>(self->CreateSampler()));
6610 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6611 0 : if (!result) {
6612 0 : args.rval().setNull();
6613 0 : return true;
6614 : }
6615 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
6616 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
6617 0 : return false;
6618 : }
6619 0 : return true;
6620 : }
6621 :
6622 : static const JSJitInfo createSampler_methodinfo = {
6623 : { (JSJitGetterOp)createSampler },
6624 : { prototypes::id::WebGL2RenderingContext },
6625 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6626 : JSJitInfo::Method,
6627 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6628 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6629 : false, /* isInfallible. False in setters. */
6630 : false, /* isMovable. Not relevant for setters. */
6631 : false, /* isEliminatable. Not relevant for setters. */
6632 : false, /* isAlwaysInSlot. Only relevant for getters. */
6633 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6634 : false, /* isTypedMethod. Only relevant for methods. */
6635 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6636 : };
6637 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6638 : static_assert(0 < 1, "There is no slot for us");
6639 :
6640 : static bool
6641 0 : deleteSampler(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6642 : {
6643 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6644 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteSampler");
6645 : }
6646 : mozilla::WebGLSampler* arg0;
6647 0 : if (args[0].isObject()) {
6648 : {
6649 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSampler, mozilla::WebGLSampler>(args[0], arg0);
6650 0 : if (NS_FAILED(rv)) {
6651 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteSampler", "WebGLSampler");
6652 0 : return false;
6653 : }
6654 : }
6655 0 : } else if (args[0].isNullOrUndefined()) {
6656 0 : arg0 = nullptr;
6657 : } else {
6658 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteSampler");
6659 0 : return false;
6660 : }
6661 0 : self->DeleteSampler(Constify(arg0));
6662 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6663 0 : args.rval().setUndefined();
6664 0 : return true;
6665 : }
6666 :
6667 : static const JSJitInfo deleteSampler_methodinfo = {
6668 : { (JSJitGetterOp)deleteSampler },
6669 : { prototypes::id::WebGL2RenderingContext },
6670 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6671 : JSJitInfo::Method,
6672 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6673 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6674 : false, /* isInfallible. False in setters. */
6675 : false, /* isMovable. Not relevant for setters. */
6676 : false, /* isEliminatable. Not relevant for setters. */
6677 : false, /* isAlwaysInSlot. Only relevant for getters. */
6678 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6679 : false, /* isTypedMethod. Only relevant for methods. */
6680 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6681 : };
6682 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6683 : static_assert(0 < 1, "There is no slot for us");
6684 :
6685 : static bool
6686 0 : isSampler(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6687 : {
6688 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6689 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isSampler");
6690 : }
6691 : mozilla::WebGLSampler* arg0;
6692 0 : if (args[0].isObject()) {
6693 : {
6694 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSampler, mozilla::WebGLSampler>(args[0], arg0);
6695 0 : if (NS_FAILED(rv)) {
6696 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isSampler", "WebGLSampler");
6697 0 : return false;
6698 : }
6699 : }
6700 0 : } else if (args[0].isNullOrUndefined()) {
6701 0 : arg0 = nullptr;
6702 : } else {
6703 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isSampler");
6704 0 : return false;
6705 : }
6706 0 : bool result(self->IsSampler(Constify(arg0)));
6707 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6708 0 : args.rval().setBoolean(result);
6709 0 : return true;
6710 : }
6711 :
6712 : static const JSJitInfo isSampler_methodinfo = {
6713 : { (JSJitGetterOp)isSampler },
6714 : { prototypes::id::WebGL2RenderingContext },
6715 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6716 : JSJitInfo::Method,
6717 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6718 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
6719 : false, /* isInfallible. False in setters. */
6720 : false, /* isMovable. Not relevant for setters. */
6721 : false, /* isEliminatable. Not relevant for setters. */
6722 : false, /* isAlwaysInSlot. Only relevant for getters. */
6723 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6724 : false, /* isTypedMethod. Only relevant for methods. */
6725 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6726 : };
6727 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6728 : static_assert(0 < 1, "There is no slot for us");
6729 :
6730 : static bool
6731 0 : bindSampler(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6732 : {
6733 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
6734 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindSampler");
6735 : }
6736 : uint32_t arg0;
6737 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6738 0 : return false;
6739 : }
6740 : mozilla::WebGLSampler* arg1;
6741 0 : if (args[1].isObject()) {
6742 : {
6743 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSampler, mozilla::WebGLSampler>(args[1], arg1);
6744 0 : if (NS_FAILED(rv)) {
6745 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bindSampler", "WebGLSampler");
6746 0 : return false;
6747 : }
6748 : }
6749 0 : } else if (args[1].isNullOrUndefined()) {
6750 0 : arg1 = nullptr;
6751 : } else {
6752 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bindSampler");
6753 0 : return false;
6754 : }
6755 0 : self->BindSampler(arg0, Constify(arg1));
6756 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6757 0 : args.rval().setUndefined();
6758 0 : return true;
6759 : }
6760 :
6761 : static const JSJitInfo bindSampler_methodinfo = {
6762 : { (JSJitGetterOp)bindSampler },
6763 : { prototypes::id::WebGL2RenderingContext },
6764 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6765 : JSJitInfo::Method,
6766 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6767 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6768 : false, /* isInfallible. False in setters. */
6769 : false, /* isMovable. Not relevant for setters. */
6770 : false, /* isEliminatable. Not relevant for setters. */
6771 : false, /* isAlwaysInSlot. Only relevant for getters. */
6772 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6773 : false, /* isTypedMethod. Only relevant for methods. */
6774 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6775 : };
6776 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6777 : static_assert(0 < 1, "There is no slot for us");
6778 :
6779 : static bool
6780 0 : samplerParameteri(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6781 : {
6782 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
6783 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.samplerParameteri");
6784 : }
6785 0 : NonNull<mozilla::WebGLSampler> arg0;
6786 0 : if (args[0].isObject()) {
6787 : {
6788 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSampler, mozilla::WebGLSampler>(args[0], arg0);
6789 0 : if (NS_FAILED(rv)) {
6790 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.samplerParameteri", "WebGLSampler");
6791 0 : return false;
6792 : }
6793 : }
6794 : } else {
6795 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.samplerParameteri");
6796 0 : return false;
6797 : }
6798 : uint32_t arg1;
6799 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
6800 0 : return false;
6801 : }
6802 : int32_t arg2;
6803 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
6804 0 : return false;
6805 : }
6806 0 : self->SamplerParameteri(NonNullHelper(arg0), arg1, arg2);
6807 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6808 0 : args.rval().setUndefined();
6809 0 : return true;
6810 : }
6811 :
6812 : static const JSJitInfo samplerParameteri_methodinfo = {
6813 : { (JSJitGetterOp)samplerParameteri },
6814 : { prototypes::id::WebGL2RenderingContext },
6815 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6816 : JSJitInfo::Method,
6817 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6818 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6819 : false, /* isInfallible. False in setters. */
6820 : false, /* isMovable. Not relevant for setters. */
6821 : false, /* isEliminatable. Not relevant for setters. */
6822 : false, /* isAlwaysInSlot. Only relevant for getters. */
6823 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6824 : false, /* isTypedMethod. Only relevant for methods. */
6825 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6826 : };
6827 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6828 : static_assert(0 < 1, "There is no slot for us");
6829 :
6830 : static bool
6831 0 : samplerParameterf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6832 : {
6833 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
6834 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.samplerParameterf");
6835 : }
6836 0 : NonNull<mozilla::WebGLSampler> arg0;
6837 0 : if (args[0].isObject()) {
6838 : {
6839 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSampler, mozilla::WebGLSampler>(args[0], arg0);
6840 0 : if (NS_FAILED(rv)) {
6841 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.samplerParameterf", "WebGLSampler");
6842 0 : return false;
6843 : }
6844 : }
6845 : } else {
6846 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.samplerParameterf");
6847 0 : return false;
6848 : }
6849 : uint32_t arg1;
6850 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
6851 0 : return false;
6852 : }
6853 : float arg2;
6854 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
6855 0 : return false;
6856 : }
6857 0 : self->SamplerParameterf(NonNullHelper(arg0), arg1, arg2);
6858 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6859 0 : args.rval().setUndefined();
6860 0 : return true;
6861 : }
6862 :
6863 : static const JSJitInfo samplerParameterf_methodinfo = {
6864 : { (JSJitGetterOp)samplerParameterf },
6865 : { prototypes::id::WebGL2RenderingContext },
6866 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6867 : JSJitInfo::Method,
6868 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6869 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6870 : false, /* isInfallible. False in setters. */
6871 : false, /* isMovable. Not relevant for setters. */
6872 : false, /* isEliminatable. Not relevant for setters. */
6873 : false, /* isAlwaysInSlot. Only relevant for getters. */
6874 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6875 : false, /* isTypedMethod. Only relevant for methods. */
6876 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6877 : };
6878 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6879 : static_assert(0 < 1, "There is no slot for us");
6880 :
6881 : static bool
6882 0 : getSamplerParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6883 : {
6884 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
6885 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getSamplerParameter");
6886 : }
6887 0 : NonNull<mozilla::WebGLSampler> arg0;
6888 0 : if (args[0].isObject()) {
6889 : {
6890 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSampler, mozilla::WebGLSampler>(args[0], arg0);
6891 0 : if (NS_FAILED(rv)) {
6892 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getSamplerParameter", "WebGLSampler");
6893 0 : return false;
6894 : }
6895 : }
6896 : } else {
6897 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getSamplerParameter");
6898 0 : return false;
6899 : }
6900 : uint32_t arg1;
6901 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
6902 0 : return false;
6903 : }
6904 0 : JS::Rooted<JS::Value> result(cx);
6905 0 : self->GetSamplerParameter(cx, NonNullHelper(arg0), arg1, &result);
6906 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6907 0 : JS::ExposeValueToActiveJS(result);
6908 0 : args.rval().set(result);
6909 0 : if (!MaybeWrapValue(cx, args.rval())) {
6910 0 : return false;
6911 : }
6912 0 : return true;
6913 : }
6914 :
6915 : static const JSJitInfo getSamplerParameter_methodinfo = {
6916 : { (JSJitGetterOp)getSamplerParameter },
6917 : { prototypes::id::WebGL2RenderingContext },
6918 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6919 : JSJitInfo::Method,
6920 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6921 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6922 : false, /* isInfallible. False in setters. */
6923 : false, /* isMovable. Not relevant for setters. */
6924 : false, /* isEliminatable. Not relevant for setters. */
6925 : false, /* isAlwaysInSlot. Only relevant for getters. */
6926 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6927 : false, /* isTypedMethod. Only relevant for methods. */
6928 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6929 : };
6930 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6931 : static_assert(0 < 1, "There is no slot for us");
6932 :
6933 : static bool
6934 0 : fenceSync(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6935 : {
6936 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
6937 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.fenceSync");
6938 : }
6939 : uint32_t arg0;
6940 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
6941 0 : return false;
6942 : }
6943 : uint32_t arg1;
6944 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
6945 0 : return false;
6946 : }
6947 0 : auto result(StrongOrRawPtr<mozilla::WebGLSync>(self->FenceSync(arg0, arg1)));
6948 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6949 0 : if (!result) {
6950 0 : args.rval().setNull();
6951 0 : return true;
6952 : }
6953 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
6954 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
6955 0 : return false;
6956 : }
6957 0 : return true;
6958 : }
6959 :
6960 : static const JSJitInfo fenceSync_methodinfo = {
6961 : { (JSJitGetterOp)fenceSync },
6962 : { prototypes::id::WebGL2RenderingContext },
6963 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
6964 : JSJitInfo::Method,
6965 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6966 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6967 : false, /* isInfallible. False in setters. */
6968 : false, /* isMovable. Not relevant for setters. */
6969 : false, /* isEliminatable. Not relevant for setters. */
6970 : false, /* isAlwaysInSlot. Only relevant for getters. */
6971 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6972 : false, /* isTypedMethod. Only relevant for methods. */
6973 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6974 : };
6975 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6976 : static_assert(0 < 1, "There is no slot for us");
6977 :
6978 : static bool
6979 0 : isSync(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
6980 : {
6981 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
6982 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isSync");
6983 : }
6984 : mozilla::WebGLSync* arg0;
6985 0 : if (args[0].isObject()) {
6986 : {
6987 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSync, mozilla::WebGLSync>(args[0], arg0);
6988 0 : if (NS_FAILED(rv)) {
6989 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isSync", "WebGLSync");
6990 0 : return false;
6991 : }
6992 : }
6993 0 : } else if (args[0].isNullOrUndefined()) {
6994 0 : arg0 = nullptr;
6995 : } else {
6996 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isSync");
6997 0 : return false;
6998 : }
6999 0 : bool result(self->IsSync(Constify(arg0)));
7000 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7001 0 : args.rval().setBoolean(result);
7002 0 : return true;
7003 : }
7004 :
7005 : static const JSJitInfo isSync_methodinfo = {
7006 : { (JSJitGetterOp)isSync },
7007 : { prototypes::id::WebGL2RenderingContext },
7008 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7009 : JSJitInfo::Method,
7010 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7011 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
7012 : false, /* isInfallible. False in setters. */
7013 : false, /* isMovable. Not relevant for setters. */
7014 : false, /* isEliminatable. Not relevant for setters. */
7015 : false, /* isAlwaysInSlot. Only relevant for getters. */
7016 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7017 : false, /* isTypedMethod. Only relevant for methods. */
7018 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7019 : };
7020 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7021 : static_assert(0 < 1, "There is no slot for us");
7022 :
7023 : static bool
7024 0 : deleteSync(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7025 : {
7026 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
7027 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteSync");
7028 : }
7029 : mozilla::WebGLSync* arg0;
7030 0 : if (args[0].isObject()) {
7031 : {
7032 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSync, mozilla::WebGLSync>(args[0], arg0);
7033 0 : if (NS_FAILED(rv)) {
7034 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteSync", "WebGLSync");
7035 0 : return false;
7036 : }
7037 : }
7038 0 : } else if (args[0].isNullOrUndefined()) {
7039 0 : arg0 = nullptr;
7040 : } else {
7041 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteSync");
7042 0 : return false;
7043 : }
7044 0 : self->DeleteSync(Constify(arg0));
7045 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7046 0 : args.rval().setUndefined();
7047 0 : return true;
7048 : }
7049 :
7050 : static const JSJitInfo deleteSync_methodinfo = {
7051 : { (JSJitGetterOp)deleteSync },
7052 : { prototypes::id::WebGL2RenderingContext },
7053 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7054 : JSJitInfo::Method,
7055 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7056 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7057 : false, /* isInfallible. False in setters. */
7058 : false, /* isMovable. Not relevant for setters. */
7059 : false, /* isEliminatable. Not relevant for setters. */
7060 : false, /* isAlwaysInSlot. Only relevant for getters. */
7061 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7062 : false, /* isTypedMethod. Only relevant for methods. */
7063 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7064 : };
7065 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7066 : static_assert(0 < 1, "There is no slot for us");
7067 :
7068 : static bool
7069 0 : clientWaitSync(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7070 : {
7071 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
7072 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clientWaitSync");
7073 : }
7074 0 : NonNull<mozilla::WebGLSync> arg0;
7075 0 : if (args[0].isObject()) {
7076 : {
7077 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSync, mozilla::WebGLSync>(args[0], arg0);
7078 0 : if (NS_FAILED(rv)) {
7079 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.clientWaitSync", "WebGLSync");
7080 0 : return false;
7081 : }
7082 : }
7083 : } else {
7084 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.clientWaitSync");
7085 0 : return false;
7086 : }
7087 : uint32_t arg1;
7088 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7089 0 : return false;
7090 : }
7091 : uint64_t arg2;
7092 0 : if (!ValueToPrimitive<uint64_t, eDefault>(cx, args[2], &arg2)) {
7093 0 : return false;
7094 : }
7095 0 : uint32_t result(self->ClientWaitSync(NonNullHelper(arg0), arg1, arg2));
7096 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7097 0 : args.rval().setNumber(result);
7098 0 : return true;
7099 : }
7100 :
7101 : static const JSJitInfo clientWaitSync_methodinfo = {
7102 : { (JSJitGetterOp)clientWaitSync },
7103 : { prototypes::id::WebGL2RenderingContext },
7104 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7105 : JSJitInfo::Method,
7106 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7107 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
7108 : false, /* isInfallible. False in setters. */
7109 : false, /* isMovable. Not relevant for setters. */
7110 : false, /* isEliminatable. Not relevant for setters. */
7111 : false, /* isAlwaysInSlot. Only relevant for getters. */
7112 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7113 : false, /* isTypedMethod. Only relevant for methods. */
7114 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7115 : };
7116 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7117 : static_assert(0 < 1, "There is no slot for us");
7118 :
7119 : static bool
7120 0 : waitSync(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7121 : {
7122 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
7123 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.waitSync");
7124 : }
7125 0 : NonNull<mozilla::WebGLSync> arg0;
7126 0 : if (args[0].isObject()) {
7127 : {
7128 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSync, mozilla::WebGLSync>(args[0], arg0);
7129 0 : if (NS_FAILED(rv)) {
7130 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.waitSync", "WebGLSync");
7131 0 : return false;
7132 : }
7133 : }
7134 : } else {
7135 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.waitSync");
7136 0 : return false;
7137 : }
7138 : uint32_t arg1;
7139 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7140 0 : return false;
7141 : }
7142 : int64_t arg2;
7143 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[2], &arg2)) {
7144 0 : return false;
7145 : }
7146 0 : self->WaitSync(NonNullHelper(arg0), arg1, arg2);
7147 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7148 0 : args.rval().setUndefined();
7149 0 : return true;
7150 : }
7151 :
7152 : static const JSJitInfo waitSync_methodinfo = {
7153 : { (JSJitGetterOp)waitSync },
7154 : { prototypes::id::WebGL2RenderingContext },
7155 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7156 : JSJitInfo::Method,
7157 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7158 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7159 : false, /* isInfallible. False in setters. */
7160 : false, /* isMovable. Not relevant for setters. */
7161 : false, /* isEliminatable. Not relevant for setters. */
7162 : false, /* isAlwaysInSlot. Only relevant for getters. */
7163 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7164 : false, /* isTypedMethod. Only relevant for methods. */
7165 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7166 : };
7167 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7168 : static_assert(0 < 1, "There is no slot for us");
7169 :
7170 : static bool
7171 0 : getSyncParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7172 : {
7173 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
7174 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getSyncParameter");
7175 : }
7176 0 : NonNull<mozilla::WebGLSync> arg0;
7177 0 : if (args[0].isObject()) {
7178 : {
7179 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLSync, mozilla::WebGLSync>(args[0], arg0);
7180 0 : if (NS_FAILED(rv)) {
7181 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getSyncParameter", "WebGLSync");
7182 0 : return false;
7183 : }
7184 : }
7185 : } else {
7186 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getSyncParameter");
7187 0 : return false;
7188 : }
7189 : uint32_t arg1;
7190 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7191 0 : return false;
7192 : }
7193 0 : JS::Rooted<JS::Value> result(cx);
7194 0 : self->GetSyncParameter(cx, NonNullHelper(arg0), arg1, &result);
7195 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7196 0 : JS::ExposeValueToActiveJS(result);
7197 0 : args.rval().set(result);
7198 0 : if (!MaybeWrapValue(cx, args.rval())) {
7199 0 : return false;
7200 : }
7201 0 : return true;
7202 : }
7203 :
7204 : static const JSJitInfo getSyncParameter_methodinfo = {
7205 : { (JSJitGetterOp)getSyncParameter },
7206 : { prototypes::id::WebGL2RenderingContext },
7207 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7208 : JSJitInfo::Method,
7209 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7210 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7211 : false, /* isInfallible. False in setters. */
7212 : false, /* isMovable. Not relevant for setters. */
7213 : false, /* isEliminatable. Not relevant for setters. */
7214 : false, /* isAlwaysInSlot. Only relevant for getters. */
7215 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7216 : false, /* isTypedMethod. Only relevant for methods. */
7217 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7218 : };
7219 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7220 : static_assert(0 < 1, "There is no slot for us");
7221 :
7222 : static bool
7223 0 : createTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7224 : {
7225 0 : auto result(StrongOrRawPtr<mozilla::WebGLTransformFeedback>(self->CreateTransformFeedback()));
7226 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7227 0 : if (!result) {
7228 0 : args.rval().setNull();
7229 0 : return true;
7230 : }
7231 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
7232 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
7233 0 : return false;
7234 : }
7235 0 : return true;
7236 : }
7237 :
7238 : static const JSJitInfo createTransformFeedback_methodinfo = {
7239 : { (JSJitGetterOp)createTransformFeedback },
7240 : { prototypes::id::WebGL2RenderingContext },
7241 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7242 : JSJitInfo::Method,
7243 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7244 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7245 : false, /* isInfallible. False in setters. */
7246 : false, /* isMovable. Not relevant for setters. */
7247 : false, /* isEliminatable. Not relevant for setters. */
7248 : false, /* isAlwaysInSlot. Only relevant for getters. */
7249 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7250 : false, /* isTypedMethod. Only relevant for methods. */
7251 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7252 : };
7253 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7254 : static_assert(0 < 1, "There is no slot for us");
7255 :
7256 : static bool
7257 0 : deleteTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7258 : {
7259 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
7260 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteTransformFeedback");
7261 : }
7262 : mozilla::WebGLTransformFeedback* arg0;
7263 0 : if (args[0].isObject()) {
7264 : {
7265 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTransformFeedback, mozilla::WebGLTransformFeedback>(args[0], arg0);
7266 0 : if (NS_FAILED(rv)) {
7267 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteTransformFeedback", "WebGLTransformFeedback");
7268 0 : return false;
7269 : }
7270 : }
7271 0 : } else if (args[0].isNullOrUndefined()) {
7272 0 : arg0 = nullptr;
7273 : } else {
7274 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteTransformFeedback");
7275 0 : return false;
7276 : }
7277 0 : self->DeleteTransformFeedback(Constify(arg0));
7278 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7279 0 : args.rval().setUndefined();
7280 0 : return true;
7281 : }
7282 :
7283 : static const JSJitInfo deleteTransformFeedback_methodinfo = {
7284 : { (JSJitGetterOp)deleteTransformFeedback },
7285 : { prototypes::id::WebGL2RenderingContext },
7286 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7287 : JSJitInfo::Method,
7288 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7289 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7290 : false, /* isInfallible. False in setters. */
7291 : false, /* isMovable. Not relevant for setters. */
7292 : false, /* isEliminatable. Not relevant for setters. */
7293 : false, /* isAlwaysInSlot. Only relevant for getters. */
7294 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7295 : false, /* isTypedMethod. Only relevant for methods. */
7296 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7297 : };
7298 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7299 : static_assert(0 < 1, "There is no slot for us");
7300 :
7301 : static bool
7302 0 : isTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7303 : {
7304 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
7305 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isTransformFeedback");
7306 : }
7307 : mozilla::WebGLTransformFeedback* arg0;
7308 0 : if (args[0].isObject()) {
7309 : {
7310 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTransformFeedback, mozilla::WebGLTransformFeedback>(args[0], arg0);
7311 0 : if (NS_FAILED(rv)) {
7312 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isTransformFeedback", "WebGLTransformFeedback");
7313 0 : return false;
7314 : }
7315 : }
7316 0 : } else if (args[0].isNullOrUndefined()) {
7317 0 : arg0 = nullptr;
7318 : } else {
7319 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isTransformFeedback");
7320 0 : return false;
7321 : }
7322 0 : bool result(self->IsTransformFeedback(Constify(arg0)));
7323 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7324 0 : args.rval().setBoolean(result);
7325 0 : return true;
7326 : }
7327 :
7328 : static const JSJitInfo isTransformFeedback_methodinfo = {
7329 : { (JSJitGetterOp)isTransformFeedback },
7330 : { prototypes::id::WebGL2RenderingContext },
7331 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7332 : JSJitInfo::Method,
7333 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7334 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
7335 : false, /* isInfallible. False in setters. */
7336 : false, /* isMovable. Not relevant for setters. */
7337 : false, /* isEliminatable. Not relevant for setters. */
7338 : false, /* isAlwaysInSlot. Only relevant for getters. */
7339 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7340 : false, /* isTypedMethod. Only relevant for methods. */
7341 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7342 : };
7343 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7344 : static_assert(0 < 1, "There is no slot for us");
7345 :
7346 : static bool
7347 0 : bindTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7348 : {
7349 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
7350 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindTransformFeedback");
7351 : }
7352 : uint32_t arg0;
7353 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
7354 0 : return false;
7355 : }
7356 : mozilla::WebGLTransformFeedback* arg1;
7357 0 : if (args[1].isObject()) {
7358 : {
7359 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTransformFeedback, mozilla::WebGLTransformFeedback>(args[1], arg1);
7360 0 : if (NS_FAILED(rv)) {
7361 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bindTransformFeedback", "WebGLTransformFeedback");
7362 0 : return false;
7363 : }
7364 : }
7365 0 : } else if (args[1].isNullOrUndefined()) {
7366 0 : arg1 = nullptr;
7367 : } else {
7368 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bindTransformFeedback");
7369 0 : return false;
7370 : }
7371 0 : self->BindTransformFeedback(arg0, Constify(arg1));
7372 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7373 0 : args.rval().setUndefined();
7374 0 : return true;
7375 : }
7376 :
7377 : static const JSJitInfo bindTransformFeedback_methodinfo = {
7378 : { (JSJitGetterOp)bindTransformFeedback },
7379 : { prototypes::id::WebGL2RenderingContext },
7380 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7381 : JSJitInfo::Method,
7382 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7383 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7384 : false, /* isInfallible. False in setters. */
7385 : false, /* isMovable. Not relevant for setters. */
7386 : false, /* isEliminatable. Not relevant for setters. */
7387 : false, /* isAlwaysInSlot. Only relevant for getters. */
7388 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7389 : false, /* isTypedMethod. Only relevant for methods. */
7390 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7391 : };
7392 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7393 : static_assert(0 < 1, "There is no slot for us");
7394 :
7395 : static bool
7396 0 : beginTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7397 : {
7398 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
7399 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.beginTransformFeedback");
7400 : }
7401 : uint32_t arg0;
7402 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
7403 0 : return false;
7404 : }
7405 0 : self->BeginTransformFeedback(arg0);
7406 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7407 0 : args.rval().setUndefined();
7408 0 : return true;
7409 : }
7410 :
7411 : static const JSJitInfo beginTransformFeedback_methodinfo = {
7412 : { (JSJitGetterOp)beginTransformFeedback },
7413 : { prototypes::id::WebGL2RenderingContext },
7414 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7415 : JSJitInfo::Method,
7416 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7417 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7418 : false, /* isInfallible. False in setters. */
7419 : false, /* isMovable. Not relevant for setters. */
7420 : false, /* isEliminatable. Not relevant for setters. */
7421 : false, /* isAlwaysInSlot. Only relevant for getters. */
7422 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7423 : false, /* isTypedMethod. Only relevant for methods. */
7424 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7425 : };
7426 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7427 : static_assert(0 < 1, "There is no slot for us");
7428 :
7429 : static bool
7430 0 : endTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7431 : {
7432 0 : self->EndTransformFeedback();
7433 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7434 0 : args.rval().setUndefined();
7435 0 : return true;
7436 : }
7437 :
7438 : static const JSJitInfo endTransformFeedback_methodinfo = {
7439 : { (JSJitGetterOp)endTransformFeedback },
7440 : { prototypes::id::WebGL2RenderingContext },
7441 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7442 : JSJitInfo::Method,
7443 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7444 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7445 : true, /* isInfallible. False in setters. */
7446 : false, /* isMovable. Not relevant for setters. */
7447 : false, /* isEliminatable. Not relevant for setters. */
7448 : false, /* isAlwaysInSlot. Only relevant for getters. */
7449 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7450 : false, /* isTypedMethod. Only relevant for methods. */
7451 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7452 : };
7453 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7454 : static_assert(0 < 1, "There is no slot for us");
7455 :
7456 : static bool
7457 0 : transformFeedbackVaryings(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7458 : {
7459 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
7460 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.transformFeedbackVaryings");
7461 : }
7462 0 : NonNull<mozilla::WebGLProgram> arg0;
7463 0 : if (args[0].isObject()) {
7464 : {
7465 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
7466 0 : if (NS_FAILED(rv)) {
7467 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.transformFeedbackVaryings", "WebGLProgram");
7468 0 : return false;
7469 : }
7470 : }
7471 : } else {
7472 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.transformFeedbackVaryings");
7473 0 : return false;
7474 : }
7475 0 : binding_detail::AutoSequence<nsString> arg1;
7476 0 : if (args[1].isObject()) {
7477 0 : JS::ForOfIterator iter(cx);
7478 0 : if (!iter.init(args[1], JS::ForOfIterator::AllowNonIterable)) {
7479 0 : return false;
7480 : }
7481 0 : if (!iter.valueIsIterable()) {
7482 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.transformFeedbackVaryings");
7483 0 : return false;
7484 : }
7485 0 : binding_detail::AutoSequence<nsString> &arr = arg1;
7486 0 : JS::Rooted<JS::Value> temp(cx);
7487 : while (true) {
7488 : bool done;
7489 0 : if (!iter.next(&temp, &done)) {
7490 0 : return false;
7491 : }
7492 0 : if (done) {
7493 0 : break;
7494 : }
7495 0 : nsString* slotPtr = arr.AppendElement(mozilla::fallible);
7496 0 : if (!slotPtr) {
7497 0 : JS_ReportOutOfMemory(cx);
7498 0 : return false;
7499 : }
7500 0 : nsString& slot = *slotPtr;
7501 0 : if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
7502 0 : return false;
7503 : }
7504 0 : }
7505 : } else {
7506 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.transformFeedbackVaryings");
7507 0 : return false;
7508 : }
7509 : uint32_t arg2;
7510 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
7511 0 : return false;
7512 : }
7513 0 : self->TransformFeedbackVaryings(NonNullHelper(arg0), Constify(arg1), arg2);
7514 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7515 0 : args.rval().setUndefined();
7516 0 : return true;
7517 : }
7518 :
7519 : static const JSJitInfo transformFeedbackVaryings_methodinfo = {
7520 : { (JSJitGetterOp)transformFeedbackVaryings },
7521 : { prototypes::id::WebGL2RenderingContext },
7522 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7523 : JSJitInfo::Method,
7524 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7525 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7526 : false, /* isInfallible. False in setters. */
7527 : false, /* isMovable. Not relevant for setters. */
7528 : false, /* isEliminatable. Not relevant for setters. */
7529 : false, /* isAlwaysInSlot. Only relevant for getters. */
7530 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7531 : false, /* isTypedMethod. Only relevant for methods. */
7532 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7533 : };
7534 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7535 : static_assert(0 < 1, "There is no slot for us");
7536 :
7537 : static bool
7538 0 : getTransformFeedbackVarying(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7539 : {
7540 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
7541 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getTransformFeedbackVarying");
7542 : }
7543 0 : NonNull<mozilla::WebGLProgram> arg0;
7544 0 : if (args[0].isObject()) {
7545 : {
7546 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
7547 0 : if (NS_FAILED(rv)) {
7548 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getTransformFeedbackVarying", "WebGLProgram");
7549 0 : return false;
7550 : }
7551 : }
7552 : } else {
7553 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getTransformFeedbackVarying");
7554 0 : return false;
7555 : }
7556 : uint32_t arg1;
7557 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7558 0 : return false;
7559 : }
7560 0 : auto result(StrongOrRawPtr<mozilla::WebGLActiveInfo>(self->GetTransformFeedbackVarying(NonNullHelper(arg0), arg1)));
7561 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7562 : static_assert(!IsPointer<decltype(result)>::value,
7563 : "NewObject implies that we need to keep the object alive with a strong reference.");
7564 0 : if (!result) {
7565 0 : args.rval().setNull();
7566 0 : return true;
7567 : }
7568 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
7569 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
7570 0 : return false;
7571 : }
7572 0 : return true;
7573 : }
7574 :
7575 : static const JSJitInfo getTransformFeedbackVarying_methodinfo = {
7576 : { (JSJitGetterOp)getTransformFeedbackVarying },
7577 : { prototypes::id::WebGL2RenderingContext },
7578 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7579 : JSJitInfo::Method,
7580 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7581 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7582 : false, /* isInfallible. False in setters. */
7583 : false, /* isMovable. Not relevant for setters. */
7584 : false, /* isEliminatable. Not relevant for setters. */
7585 : false, /* isAlwaysInSlot. Only relevant for getters. */
7586 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7587 : false, /* isTypedMethod. Only relevant for methods. */
7588 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7589 : };
7590 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7591 : static_assert(0 < 1, "There is no slot for us");
7592 :
7593 : static bool
7594 0 : pauseTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7595 : {
7596 0 : self->PauseTransformFeedback();
7597 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7598 0 : args.rval().setUndefined();
7599 0 : return true;
7600 : }
7601 :
7602 : static const JSJitInfo pauseTransformFeedback_methodinfo = {
7603 : { (JSJitGetterOp)pauseTransformFeedback },
7604 : { prototypes::id::WebGL2RenderingContext },
7605 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7606 : JSJitInfo::Method,
7607 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7608 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7609 : true, /* isInfallible. False in setters. */
7610 : false, /* isMovable. Not relevant for setters. */
7611 : false, /* isEliminatable. Not relevant for setters. */
7612 : false, /* isAlwaysInSlot. Only relevant for getters. */
7613 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7614 : false, /* isTypedMethod. Only relevant for methods. */
7615 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7616 : };
7617 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7618 : static_assert(0 < 1, "There is no slot for us");
7619 :
7620 : static bool
7621 0 : resumeTransformFeedback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7622 : {
7623 0 : self->ResumeTransformFeedback();
7624 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7625 0 : args.rval().setUndefined();
7626 0 : return true;
7627 : }
7628 :
7629 : static const JSJitInfo resumeTransformFeedback_methodinfo = {
7630 : { (JSJitGetterOp)resumeTransformFeedback },
7631 : { prototypes::id::WebGL2RenderingContext },
7632 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7633 : JSJitInfo::Method,
7634 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7635 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7636 : true, /* isInfallible. False in setters. */
7637 : false, /* isMovable. Not relevant for setters. */
7638 : false, /* isEliminatable. Not relevant for setters. */
7639 : false, /* isAlwaysInSlot. Only relevant for getters. */
7640 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7641 : false, /* isTypedMethod. Only relevant for methods. */
7642 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7643 : };
7644 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7645 : static_assert(0 < 1, "There is no slot for us");
7646 :
7647 : static bool
7648 0 : bindBufferBase(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7649 : {
7650 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
7651 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindBufferBase");
7652 : }
7653 : uint32_t arg0;
7654 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
7655 0 : return false;
7656 : }
7657 : uint32_t arg1;
7658 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7659 0 : return false;
7660 : }
7661 : mozilla::WebGLBuffer* arg2;
7662 0 : if (args[2].isObject()) {
7663 : {
7664 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLBuffer, mozilla::WebGLBuffer>(args[2], arg2);
7665 0 : if (NS_FAILED(rv)) {
7666 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 3 of WebGL2RenderingContext.bindBufferBase", "WebGLBuffer");
7667 0 : return false;
7668 : }
7669 : }
7670 0 : } else if (args[2].isNullOrUndefined()) {
7671 0 : arg2 = nullptr;
7672 : } else {
7673 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of WebGL2RenderingContext.bindBufferBase");
7674 0 : return false;
7675 : }
7676 0 : self->BindBufferBase(arg0, arg1, Constify(arg2));
7677 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7678 0 : args.rval().setUndefined();
7679 0 : return true;
7680 : }
7681 :
7682 : static const JSJitInfo bindBufferBase_methodinfo = {
7683 : { (JSJitGetterOp)bindBufferBase },
7684 : { prototypes::id::WebGL2RenderingContext },
7685 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7686 : JSJitInfo::Method,
7687 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7688 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7689 : false, /* isInfallible. False in setters. */
7690 : false, /* isMovable. Not relevant for setters. */
7691 : false, /* isEliminatable. Not relevant for setters. */
7692 : false, /* isAlwaysInSlot. Only relevant for getters. */
7693 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7694 : false, /* isTypedMethod. Only relevant for methods. */
7695 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7696 : };
7697 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7698 : static_assert(0 < 1, "There is no slot for us");
7699 :
7700 : static bool
7701 0 : bindBufferRange(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7702 : {
7703 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
7704 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindBufferRange");
7705 : }
7706 : uint32_t arg0;
7707 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
7708 0 : return false;
7709 : }
7710 : uint32_t arg1;
7711 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7712 0 : return false;
7713 : }
7714 : mozilla::WebGLBuffer* arg2;
7715 0 : if (args[2].isObject()) {
7716 : {
7717 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLBuffer, mozilla::WebGLBuffer>(args[2], arg2);
7718 0 : if (NS_FAILED(rv)) {
7719 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 3 of WebGL2RenderingContext.bindBufferRange", "WebGLBuffer");
7720 0 : return false;
7721 : }
7722 : }
7723 0 : } else if (args[2].isNullOrUndefined()) {
7724 0 : arg2 = nullptr;
7725 : } else {
7726 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of WebGL2RenderingContext.bindBufferRange");
7727 0 : return false;
7728 : }
7729 : int64_t arg3;
7730 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[3], &arg3)) {
7731 0 : return false;
7732 : }
7733 : int64_t arg4;
7734 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[4], &arg4)) {
7735 0 : return false;
7736 : }
7737 0 : self->BindBufferRange(arg0, arg1, Constify(arg2), arg3, arg4);
7738 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7739 0 : args.rval().setUndefined();
7740 0 : return true;
7741 : }
7742 :
7743 : static const JSJitInfo bindBufferRange_methodinfo = {
7744 : { (JSJitGetterOp)bindBufferRange },
7745 : { prototypes::id::WebGL2RenderingContext },
7746 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7747 : JSJitInfo::Method,
7748 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7749 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7750 : false, /* isInfallible. False in setters. */
7751 : false, /* isMovable. Not relevant for setters. */
7752 : false, /* isEliminatable. Not relevant for setters. */
7753 : false, /* isAlwaysInSlot. Only relevant for getters. */
7754 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7755 : false, /* isTypedMethod. Only relevant for methods. */
7756 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7757 : };
7758 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7759 : static_assert(0 < 1, "There is no slot for us");
7760 :
7761 : static bool
7762 0 : getIndexedParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7763 : {
7764 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
7765 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getIndexedParameter");
7766 : }
7767 : uint32_t arg0;
7768 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
7769 0 : return false;
7770 : }
7771 : uint32_t arg1;
7772 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
7773 0 : return false;
7774 : }
7775 0 : binding_detail::FastErrorResult rv;
7776 0 : JS::Rooted<JS::Value> result(cx);
7777 0 : self->GetIndexedParameter(cx, arg0, arg1, &result, rv);
7778 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
7779 0 : return false;
7780 : }
7781 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7782 0 : JS::ExposeValueToActiveJS(result);
7783 0 : args.rval().set(result);
7784 0 : if (!MaybeWrapValue(cx, args.rval())) {
7785 0 : return false;
7786 : }
7787 0 : return true;
7788 : }
7789 :
7790 : static const JSJitInfo getIndexedParameter_methodinfo = {
7791 : { (JSJitGetterOp)getIndexedParameter },
7792 : { prototypes::id::WebGL2RenderingContext },
7793 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7794 : JSJitInfo::Method,
7795 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7796 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7797 : false, /* isInfallible. False in setters. */
7798 : false, /* isMovable. Not relevant for setters. */
7799 : false, /* isEliminatable. Not relevant for setters. */
7800 : false, /* isAlwaysInSlot. Only relevant for getters. */
7801 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7802 : false, /* isTypedMethod. Only relevant for methods. */
7803 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7804 : };
7805 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7806 : static_assert(0 < 1, "There is no slot for us");
7807 :
7808 : static bool
7809 0 : getUniformIndices(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7810 : {
7811 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
7812 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getUniformIndices");
7813 : }
7814 0 : NonNull<mozilla::WebGLProgram> arg0;
7815 0 : if (args[0].isObject()) {
7816 : {
7817 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
7818 0 : if (NS_FAILED(rv)) {
7819 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getUniformIndices", "WebGLProgram");
7820 0 : return false;
7821 : }
7822 : }
7823 : } else {
7824 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getUniformIndices");
7825 0 : return false;
7826 : }
7827 0 : binding_detail::AutoSequence<nsString> arg1;
7828 0 : if (args[1].isObject()) {
7829 0 : JS::ForOfIterator iter(cx);
7830 0 : if (!iter.init(args[1], JS::ForOfIterator::AllowNonIterable)) {
7831 0 : return false;
7832 : }
7833 0 : if (!iter.valueIsIterable()) {
7834 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.getUniformIndices");
7835 0 : return false;
7836 : }
7837 0 : binding_detail::AutoSequence<nsString> &arr = arg1;
7838 0 : JS::Rooted<JS::Value> temp(cx);
7839 : while (true) {
7840 : bool done;
7841 0 : if (!iter.next(&temp, &done)) {
7842 0 : return false;
7843 : }
7844 0 : if (done) {
7845 0 : break;
7846 : }
7847 0 : nsString* slotPtr = arr.AppendElement(mozilla::fallible);
7848 0 : if (!slotPtr) {
7849 0 : JS_ReportOutOfMemory(cx);
7850 0 : return false;
7851 : }
7852 0 : nsString& slot = *slotPtr;
7853 0 : if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
7854 0 : return false;
7855 : }
7856 0 : }
7857 : } else {
7858 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.getUniformIndices");
7859 0 : return false;
7860 : }
7861 0 : Nullable<nsTArray<uint32_t>> result;
7862 0 : self->GetUniformIndices(NonNullHelper(arg0), Constify(arg1), result);
7863 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7864 :
7865 0 : if (result.IsNull()) {
7866 0 : args.rval().setNull();
7867 0 : return true;
7868 : }
7869 :
7870 0 : uint32_t length = result.Value().Length();
7871 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
7872 0 : if (!returnArray) {
7873 0 : return false;
7874 : }
7875 : // Scope for 'tmp'
7876 : {
7877 0 : JS::Rooted<JS::Value> tmp(cx);
7878 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
7879 : // Control block to let us common up the JS_DefineElement calls when there
7880 : // are different ways to succeed at wrapping the object.
7881 : do {
7882 0 : tmp.setNumber(result.Value()[sequenceIdx0]);
7883 0 : break;
7884 : } while (0);
7885 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
7886 : JSPROP_ENUMERATE)) {
7887 0 : return false;
7888 : }
7889 : }
7890 : }
7891 0 : args.rval().setObject(*returnArray);
7892 0 : return true;
7893 : }
7894 :
7895 : static const JSJitInfo getUniformIndices_methodinfo = {
7896 : { (JSJitGetterOp)getUniformIndices },
7897 : { prototypes::id::WebGL2RenderingContext },
7898 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7899 : JSJitInfo::Method,
7900 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7901 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7902 : false, /* isInfallible. False in setters. */
7903 : false, /* isMovable. Not relevant for setters. */
7904 : false, /* isEliminatable. Not relevant for setters. */
7905 : false, /* isAlwaysInSlot. Only relevant for getters. */
7906 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7907 : false, /* isTypedMethod. Only relevant for methods. */
7908 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7909 : };
7910 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7911 : static_assert(0 < 1, "There is no slot for us");
7912 :
7913 : static bool
7914 0 : getActiveUniforms(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
7915 : {
7916 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
7917 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getActiveUniforms");
7918 : }
7919 0 : NonNull<mozilla::WebGLProgram> arg0;
7920 0 : if (args[0].isObject()) {
7921 : {
7922 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
7923 0 : if (NS_FAILED(rv)) {
7924 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getActiveUniforms", "WebGLProgram");
7925 0 : return false;
7926 : }
7927 : }
7928 : } else {
7929 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getActiveUniforms");
7930 0 : return false;
7931 : }
7932 0 : binding_detail::AutoSequence<uint32_t> arg1;
7933 0 : if (args[1].isObject()) {
7934 0 : JS::ForOfIterator iter(cx);
7935 0 : if (!iter.init(args[1], JS::ForOfIterator::AllowNonIterable)) {
7936 0 : return false;
7937 : }
7938 0 : if (!iter.valueIsIterable()) {
7939 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.getActiveUniforms");
7940 0 : return false;
7941 : }
7942 0 : binding_detail::AutoSequence<uint32_t> &arr = arg1;
7943 0 : JS::Rooted<JS::Value> temp(cx);
7944 : while (true) {
7945 : bool done;
7946 0 : if (!iter.next(&temp, &done)) {
7947 0 : return false;
7948 : }
7949 0 : if (done) {
7950 0 : break;
7951 : }
7952 0 : uint32_t* slotPtr = arr.AppendElement(mozilla::fallible);
7953 0 : if (!slotPtr) {
7954 0 : JS_ReportOutOfMemory(cx);
7955 0 : return false;
7956 : }
7957 0 : uint32_t& slot = *slotPtr;
7958 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, temp, &slot)) {
7959 0 : return false;
7960 : }
7961 0 : }
7962 : } else {
7963 0 : ThrowErrorMessage(cx, MSG_NOT_SEQUENCE, "Argument 2 of WebGL2RenderingContext.getActiveUniforms");
7964 0 : return false;
7965 : }
7966 : uint32_t arg2;
7967 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
7968 0 : return false;
7969 : }
7970 0 : JS::Rooted<JS::Value> result(cx);
7971 0 : self->GetActiveUniforms(cx, NonNullHelper(arg0), Constify(arg1), arg2, &result);
7972 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7973 0 : JS::ExposeValueToActiveJS(result);
7974 0 : args.rval().set(result);
7975 0 : if (!MaybeWrapValue(cx, args.rval())) {
7976 0 : return false;
7977 : }
7978 0 : return true;
7979 : }
7980 :
7981 : static const JSJitInfo getActiveUniforms_methodinfo = {
7982 : { (JSJitGetterOp)getActiveUniforms },
7983 : { prototypes::id::WebGL2RenderingContext },
7984 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
7985 : JSJitInfo::Method,
7986 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7987 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7988 : false, /* isInfallible. False in setters. */
7989 : false, /* isMovable. Not relevant for setters. */
7990 : false, /* isEliminatable. Not relevant for setters. */
7991 : false, /* isAlwaysInSlot. Only relevant for getters. */
7992 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7993 : false, /* isTypedMethod. Only relevant for methods. */
7994 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7995 : };
7996 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7997 : static_assert(0 < 1, "There is no slot for us");
7998 :
7999 : static bool
8000 0 : getUniformBlockIndex(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8001 : {
8002 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8003 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getUniformBlockIndex");
8004 : }
8005 0 : NonNull<mozilla::WebGLProgram> arg0;
8006 0 : if (args[0].isObject()) {
8007 : {
8008 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
8009 0 : if (NS_FAILED(rv)) {
8010 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getUniformBlockIndex", "WebGLProgram");
8011 0 : return false;
8012 : }
8013 : }
8014 : } else {
8015 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getUniformBlockIndex");
8016 0 : return false;
8017 : }
8018 0 : binding_detail::FakeString arg1;
8019 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
8020 0 : return false;
8021 : }
8022 0 : uint32_t result(self->GetUniformBlockIndex(NonNullHelper(arg0), NonNullHelper(Constify(arg1))));
8023 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8024 0 : args.rval().setNumber(result);
8025 0 : return true;
8026 : }
8027 :
8028 : static const JSJitInfo getUniformBlockIndex_methodinfo = {
8029 : { (JSJitGetterOp)getUniformBlockIndex },
8030 : { prototypes::id::WebGL2RenderingContext },
8031 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8032 : JSJitInfo::Method,
8033 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8034 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
8035 : false, /* isInfallible. False in setters. */
8036 : false, /* isMovable. Not relevant for setters. */
8037 : false, /* isEliminatable. Not relevant for setters. */
8038 : false, /* isAlwaysInSlot. Only relevant for getters. */
8039 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8040 : false, /* isTypedMethod. Only relevant for methods. */
8041 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8042 : };
8043 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8044 : static_assert(0 < 1, "There is no slot for us");
8045 :
8046 : static bool
8047 0 : getActiveUniformBlockParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8048 : {
8049 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
8050 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getActiveUniformBlockParameter");
8051 : }
8052 0 : NonNull<mozilla::WebGLProgram> arg0;
8053 0 : if (args[0].isObject()) {
8054 : {
8055 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
8056 0 : if (NS_FAILED(rv)) {
8057 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getActiveUniformBlockParameter", "WebGLProgram");
8058 0 : return false;
8059 : }
8060 : }
8061 : } else {
8062 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getActiveUniformBlockParameter");
8063 0 : return false;
8064 : }
8065 : uint32_t arg1;
8066 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
8067 0 : return false;
8068 : }
8069 : uint32_t arg2;
8070 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
8071 0 : return false;
8072 : }
8073 0 : binding_detail::FastErrorResult rv;
8074 0 : JS::Rooted<JS::Value> result(cx);
8075 0 : self->GetActiveUniformBlockParameter(cx, NonNullHelper(arg0), arg1, arg2, &result, rv);
8076 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
8077 0 : return false;
8078 : }
8079 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8080 0 : JS::ExposeValueToActiveJS(result);
8081 0 : args.rval().set(result);
8082 0 : if (!MaybeWrapValue(cx, args.rval())) {
8083 0 : return false;
8084 : }
8085 0 : return true;
8086 : }
8087 :
8088 : static const JSJitInfo getActiveUniformBlockParameter_methodinfo = {
8089 : { (JSJitGetterOp)getActiveUniformBlockParameter },
8090 : { prototypes::id::WebGL2RenderingContext },
8091 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8092 : JSJitInfo::Method,
8093 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8094 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8095 : false, /* isInfallible. False in setters. */
8096 : false, /* isMovable. Not relevant for setters. */
8097 : false, /* isEliminatable. Not relevant for setters. */
8098 : false, /* isAlwaysInSlot. Only relevant for getters. */
8099 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8100 : false, /* isTypedMethod. Only relevant for methods. */
8101 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8102 : };
8103 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8104 : static_assert(0 < 1, "There is no slot for us");
8105 :
8106 : static bool
8107 0 : getActiveUniformBlockName(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8108 : {
8109 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8110 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getActiveUniformBlockName");
8111 : }
8112 0 : NonNull<mozilla::WebGLProgram> arg0;
8113 0 : if (args[0].isObject()) {
8114 : {
8115 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
8116 0 : if (NS_FAILED(rv)) {
8117 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getActiveUniformBlockName", "WebGLProgram");
8118 0 : return false;
8119 : }
8120 : }
8121 : } else {
8122 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getActiveUniformBlockName");
8123 0 : return false;
8124 : }
8125 : uint32_t arg1;
8126 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
8127 0 : return false;
8128 : }
8129 0 : DOMString result;
8130 0 : self->GetActiveUniformBlockName(NonNullHelper(arg0), arg1, result);
8131 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8132 0 : if (!xpc::StringToJsval(cx, result, args.rval())) {
8133 0 : return false;
8134 : }
8135 0 : return true;
8136 : }
8137 :
8138 : static const JSJitInfo getActiveUniformBlockName_methodinfo = {
8139 : { (JSJitGetterOp)getActiveUniformBlockName },
8140 : { prototypes::id::WebGL2RenderingContext },
8141 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8142 : JSJitInfo::Method,
8143 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8144 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8145 : false, /* isInfallible. False in setters. */
8146 : false, /* isMovable. Not relevant for setters. */
8147 : false, /* isEliminatable. Not relevant for setters. */
8148 : false, /* isAlwaysInSlot. Only relevant for getters. */
8149 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8150 : false, /* isTypedMethod. Only relevant for methods. */
8151 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8152 : };
8153 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8154 : static_assert(0 < 1, "There is no slot for us");
8155 :
8156 : static bool
8157 0 : uniformBlockBinding(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8158 : {
8159 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
8160 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniformBlockBinding");
8161 : }
8162 0 : NonNull<mozilla::WebGLProgram> arg0;
8163 0 : if (args[0].isObject()) {
8164 : {
8165 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
8166 0 : if (NS_FAILED(rv)) {
8167 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniformBlockBinding", "WebGLProgram");
8168 0 : return false;
8169 : }
8170 : }
8171 : } else {
8172 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniformBlockBinding");
8173 0 : return false;
8174 : }
8175 : uint32_t arg1;
8176 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
8177 0 : return false;
8178 : }
8179 : uint32_t arg2;
8180 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
8181 0 : return false;
8182 : }
8183 0 : self->UniformBlockBinding(NonNullHelper(arg0), arg1, arg2);
8184 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8185 0 : args.rval().setUndefined();
8186 0 : return true;
8187 : }
8188 :
8189 : static const JSJitInfo uniformBlockBinding_methodinfo = {
8190 : { (JSJitGetterOp)uniformBlockBinding },
8191 : { prototypes::id::WebGL2RenderingContext },
8192 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8193 : JSJitInfo::Method,
8194 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8195 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8196 : false, /* isInfallible. False in setters. */
8197 : false, /* isMovable. Not relevant for setters. */
8198 : false, /* isEliminatable. Not relevant for setters. */
8199 : false, /* isAlwaysInSlot. Only relevant for getters. */
8200 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8201 : false, /* isTypedMethod. Only relevant for methods. */
8202 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8203 : };
8204 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8205 : static_assert(0 < 1, "There is no slot for us");
8206 :
8207 : static bool
8208 0 : createVertexArray(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8209 : {
8210 0 : auto result(StrongOrRawPtr<mozilla::WebGLVertexArray>(self->CreateVertexArray()));
8211 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8212 0 : if (!result) {
8213 0 : args.rval().setNull();
8214 0 : return true;
8215 : }
8216 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
8217 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
8218 0 : return false;
8219 : }
8220 0 : return true;
8221 : }
8222 :
8223 : static const JSJitInfo createVertexArray_methodinfo = {
8224 : { (JSJitGetterOp)createVertexArray },
8225 : { prototypes::id::WebGL2RenderingContext },
8226 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8227 : JSJitInfo::Method,
8228 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8229 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8230 : false, /* isInfallible. False in setters. */
8231 : false, /* isMovable. Not relevant for setters. */
8232 : false, /* isEliminatable. Not relevant for setters. */
8233 : false, /* isAlwaysInSlot. Only relevant for getters. */
8234 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8235 : false, /* isTypedMethod. Only relevant for methods. */
8236 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8237 : };
8238 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8239 : static_assert(0 < 1, "There is no slot for us");
8240 :
8241 : static bool
8242 0 : deleteVertexArray(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8243 : {
8244 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
8245 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteVertexArray");
8246 : }
8247 : mozilla::WebGLVertexArray* arg0;
8248 0 : if (args[0].isObject()) {
8249 : {
8250 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLVertexArrayObject, mozilla::WebGLVertexArray>(args[0], arg0);
8251 0 : if (NS_FAILED(rv)) {
8252 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteVertexArray", "WebGLVertexArrayObject");
8253 0 : return false;
8254 : }
8255 : }
8256 0 : } else if (args[0].isNullOrUndefined()) {
8257 0 : arg0 = nullptr;
8258 : } else {
8259 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteVertexArray");
8260 0 : return false;
8261 : }
8262 0 : self->DeleteVertexArray(Constify(arg0));
8263 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8264 0 : args.rval().setUndefined();
8265 0 : return true;
8266 : }
8267 :
8268 : static const JSJitInfo deleteVertexArray_methodinfo = {
8269 : { (JSJitGetterOp)deleteVertexArray },
8270 : { prototypes::id::WebGL2RenderingContext },
8271 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8272 : JSJitInfo::Method,
8273 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8274 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8275 : false, /* isInfallible. False in setters. */
8276 : false, /* isMovable. Not relevant for setters. */
8277 : false, /* isEliminatable. Not relevant for setters. */
8278 : false, /* isAlwaysInSlot. Only relevant for getters. */
8279 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8280 : false, /* isTypedMethod. Only relevant for methods. */
8281 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8282 : };
8283 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8284 : static_assert(0 < 1, "There is no slot for us");
8285 :
8286 : static bool
8287 0 : isVertexArray(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8288 : {
8289 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
8290 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isVertexArray");
8291 : }
8292 : mozilla::WebGLVertexArray* arg0;
8293 0 : if (args[0].isObject()) {
8294 : {
8295 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLVertexArrayObject, mozilla::WebGLVertexArray>(args[0], arg0);
8296 0 : if (NS_FAILED(rv)) {
8297 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isVertexArray", "WebGLVertexArrayObject");
8298 0 : return false;
8299 : }
8300 : }
8301 0 : } else if (args[0].isNullOrUndefined()) {
8302 0 : arg0 = nullptr;
8303 : } else {
8304 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isVertexArray");
8305 0 : return false;
8306 : }
8307 0 : bool result(self->IsVertexArray(Constify(arg0)));
8308 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8309 0 : args.rval().setBoolean(result);
8310 0 : return true;
8311 : }
8312 :
8313 : static const JSJitInfo isVertexArray_methodinfo = {
8314 : { (JSJitGetterOp)isVertexArray },
8315 : { prototypes::id::WebGL2RenderingContext },
8316 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8317 : JSJitInfo::Method,
8318 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8319 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
8320 : false, /* isInfallible. False in setters. */
8321 : false, /* isMovable. Not relevant for setters. */
8322 : false, /* isEliminatable. Not relevant for setters. */
8323 : false, /* isAlwaysInSlot. Only relevant for getters. */
8324 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8325 : false, /* isTypedMethod. Only relevant for methods. */
8326 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8327 : };
8328 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8329 : static_assert(0 < 1, "There is no slot for us");
8330 :
8331 : static bool
8332 0 : bindVertexArray(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8333 : {
8334 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
8335 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindVertexArray");
8336 : }
8337 : mozilla::WebGLVertexArray* arg0;
8338 0 : if (args[0].isObject()) {
8339 : {
8340 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLVertexArrayObject, mozilla::WebGLVertexArray>(args[0], arg0);
8341 0 : if (NS_FAILED(rv)) {
8342 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.bindVertexArray", "WebGLVertexArrayObject");
8343 0 : return false;
8344 : }
8345 : }
8346 0 : } else if (args[0].isNullOrUndefined()) {
8347 0 : arg0 = nullptr;
8348 : } else {
8349 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.bindVertexArray");
8350 0 : return false;
8351 : }
8352 0 : self->BindVertexArray(Constify(arg0));
8353 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8354 0 : args.rval().setUndefined();
8355 0 : return true;
8356 : }
8357 :
8358 : static const JSJitInfo bindVertexArray_methodinfo = {
8359 : { (JSJitGetterOp)bindVertexArray },
8360 : { prototypes::id::WebGL2RenderingContext },
8361 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8362 : JSJitInfo::Method,
8363 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8364 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8365 : false, /* isInfallible. False in setters. */
8366 : false, /* isMovable. Not relevant for setters. */
8367 : false, /* isEliminatable. Not relevant for setters. */
8368 : false, /* isAlwaysInSlot. Only relevant for getters. */
8369 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8370 : false, /* isTypedMethod. Only relevant for methods. */
8371 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8372 : };
8373 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8374 : static_assert(0 < 1, "There is no slot for us");
8375 :
8376 : static bool
8377 0 : get_canvas(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, JSJitGetterCallArgs args)
8378 : {
8379 0 : Nullable<OwningHTMLCanvasElementOrOffscreenCanvas> result;
8380 0 : self->GetCanvas(result);
8381 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8382 0 : if (result.IsNull()) {
8383 0 : args.rval().setNull();
8384 0 : return true;
8385 : }
8386 0 : if (!result.Value().ToJSVal(cx, obj, args.rval())) {
8387 0 : return false;
8388 : }
8389 0 : return true;
8390 : }
8391 :
8392 : static const JSJitInfo canvas_getterinfo = {
8393 : { (JSJitGetterOp)get_canvas },
8394 : { prototypes::id::WebGL2RenderingContext },
8395 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8396 : JSJitInfo::Getter,
8397 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8398 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8399 : false, /* isInfallible. False in setters. */
8400 : false, /* isMovable. Not relevant for setters. */
8401 : false, /* isEliminatable. Not relevant for setters. */
8402 : false, /* isAlwaysInSlot. Only relevant for getters. */
8403 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8404 : false, /* isTypedMethod. Only relevant for methods. */
8405 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8406 : };
8407 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8408 : static_assert(0 < 1, "There is no slot for us");
8409 :
8410 : static bool
8411 0 : get_drawingBufferWidth(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, JSJitGetterCallArgs args)
8412 : {
8413 0 : int32_t result(self->DrawingBufferWidth());
8414 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8415 0 : args.rval().setInt32(int32_t(result));
8416 0 : return true;
8417 : }
8418 :
8419 : static const JSJitInfo drawingBufferWidth_getterinfo = {
8420 : { (JSJitGetterOp)get_drawingBufferWidth },
8421 : { prototypes::id::WebGL2RenderingContext },
8422 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8423 : JSJitInfo::Getter,
8424 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8425 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
8426 : true, /* isInfallible. False in setters. */
8427 : false, /* isMovable. Not relevant for setters. */
8428 : false, /* isEliminatable. Not relevant for setters. */
8429 : false, /* isAlwaysInSlot. Only relevant for getters. */
8430 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8431 : false, /* isTypedMethod. Only relevant for methods. */
8432 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8433 : };
8434 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8435 : static_assert(0 < 1, "There is no slot for us");
8436 :
8437 : static bool
8438 0 : get_drawingBufferHeight(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, JSJitGetterCallArgs args)
8439 : {
8440 0 : int32_t result(self->DrawingBufferHeight());
8441 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8442 0 : args.rval().setInt32(int32_t(result));
8443 0 : return true;
8444 : }
8445 :
8446 : static const JSJitInfo drawingBufferHeight_getterinfo = {
8447 : { (JSJitGetterOp)get_drawingBufferHeight },
8448 : { prototypes::id::WebGL2RenderingContext },
8449 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8450 : JSJitInfo::Getter,
8451 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8452 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
8453 : true, /* isInfallible. False in setters. */
8454 : false, /* isMovable. Not relevant for setters. */
8455 : false, /* isEliminatable. Not relevant for setters. */
8456 : false, /* isAlwaysInSlot. Only relevant for getters. */
8457 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8458 : false, /* isTypedMethod. Only relevant for methods. */
8459 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8460 : };
8461 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8462 : static_assert(0 < 1, "There is no slot for us");
8463 :
8464 : static bool
8465 0 : getContextAttributes(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8466 : {
8467 0 : Nullable<WebGLContextAttributes> result;
8468 0 : self->GetContextAttributes(result);
8469 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8470 0 : if (result.IsNull()) {
8471 0 : args.rval().setNull();
8472 0 : return true;
8473 : }
8474 0 : if (!result.Value().ToObjectInternal(cx, args.rval())) {
8475 0 : return false;
8476 : }
8477 0 : return true;
8478 : }
8479 :
8480 : static const JSJitInfo getContextAttributes_methodinfo = {
8481 : { (JSJitGetterOp)getContextAttributes },
8482 : { prototypes::id::WebGL2RenderingContext },
8483 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8484 : JSJitInfo::Method,
8485 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8486 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8487 : false, /* isInfallible. False in setters. */
8488 : false, /* isMovable. Not relevant for setters. */
8489 : false, /* isEliminatable. Not relevant for setters. */
8490 : false, /* isAlwaysInSlot. Only relevant for getters. */
8491 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8492 : false, /* isTypedMethod. Only relevant for methods. */
8493 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8494 : };
8495 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8496 : static_assert(0 < 1, "There is no slot for us");
8497 :
8498 : static bool
8499 0 : isContextLost(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8500 : {
8501 0 : bool result(self->IsContextLost());
8502 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8503 0 : args.rval().setBoolean(result);
8504 0 : return true;
8505 : }
8506 :
8507 : static const JSJitInfo isContextLost_methodinfo = {
8508 : { (JSJitGetterOp)isContextLost },
8509 : { prototypes::id::WebGL2RenderingContext },
8510 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8511 : JSJitInfo::Method,
8512 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8513 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
8514 : true, /* isInfallible. False in setters. */
8515 : false, /* isMovable. Not relevant for setters. */
8516 : false, /* isEliminatable. Not relevant for setters. */
8517 : false, /* isAlwaysInSlot. Only relevant for getters. */
8518 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8519 : false, /* isTypedMethod. Only relevant for methods. */
8520 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8521 : };
8522 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8523 : static_assert(0 < 1, "There is no slot for us");
8524 :
8525 : static bool
8526 0 : getSupportedExtensions(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8527 : {
8528 0 : Nullable<nsTArray<nsString>> result;
8529 0 : self->GetSupportedExtensions(result, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
8530 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8531 :
8532 0 : if (result.IsNull()) {
8533 0 : args.rval().setNull();
8534 0 : return true;
8535 : }
8536 :
8537 0 : uint32_t length = result.Value().Length();
8538 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
8539 0 : if (!returnArray) {
8540 0 : return false;
8541 : }
8542 : // Scope for 'tmp'
8543 : {
8544 0 : JS::Rooted<JS::Value> tmp(cx);
8545 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8546 : // Control block to let us common up the JS_DefineElement calls when there
8547 : // are different ways to succeed at wrapping the object.
8548 : do {
8549 0 : if (!xpc::NonVoidStringToJsval(cx, result.Value()[sequenceIdx0], &tmp)) {
8550 0 : return false;
8551 : }
8552 0 : break;
8553 : } while (0);
8554 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8555 : JSPROP_ENUMERATE)) {
8556 0 : return false;
8557 : }
8558 : }
8559 : }
8560 0 : args.rval().setObject(*returnArray);
8561 0 : return true;
8562 : }
8563 :
8564 : static const JSJitInfo getSupportedExtensions_methodinfo = {
8565 : { (JSJitGetterOp)getSupportedExtensions },
8566 : { prototypes::id::WebGL2RenderingContext },
8567 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8568 : JSJitInfo::Method,
8569 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8570 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8571 : false, /* isInfallible. False in setters. */
8572 : false, /* isMovable. Not relevant for setters. */
8573 : false, /* isEliminatable. Not relevant for setters. */
8574 : false, /* isAlwaysInSlot. Only relevant for getters. */
8575 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8576 : false, /* isTypedMethod. Only relevant for methods. */
8577 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8578 : };
8579 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8580 : static_assert(0 < 1, "There is no slot for us");
8581 :
8582 : static bool
8583 0 : getExtension(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8584 : {
8585 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
8586 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getExtension");
8587 : }
8588 0 : binding_detail::FakeString arg0;
8589 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
8590 0 : return false;
8591 : }
8592 0 : binding_detail::FastErrorResult rv;
8593 0 : JS::Rooted<JSObject*> result(cx);
8594 0 : self->GetExtension(cx, NonNullHelper(Constify(arg0)), &result, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
8595 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
8596 0 : return false;
8597 : }
8598 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8599 0 : if (result) {
8600 0 : JS::ExposeObjectToActiveJS(result);
8601 : }
8602 0 : args.rval().setObjectOrNull(result);
8603 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8604 0 : return false;
8605 : }
8606 0 : return true;
8607 : }
8608 :
8609 : static const JSJitInfo getExtension_methodinfo = {
8610 : { (JSJitGetterOp)getExtension },
8611 : { prototypes::id::WebGL2RenderingContext },
8612 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8613 : JSJitInfo::Method,
8614 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8615 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8616 : false, /* isInfallible. False in setters. */
8617 : false, /* isMovable. Not relevant for setters. */
8618 : false, /* isEliminatable. Not relevant for setters. */
8619 : false, /* isAlwaysInSlot. Only relevant for getters. */
8620 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8621 : false, /* isTypedMethod. Only relevant for methods. */
8622 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8623 : };
8624 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8625 : static_assert(0 < 1, "There is no slot for us");
8626 :
8627 : static bool
8628 0 : activeTexture(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8629 : {
8630 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
8631 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.activeTexture");
8632 : }
8633 : uint32_t arg0;
8634 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
8635 0 : return false;
8636 : }
8637 0 : self->ActiveTexture(arg0);
8638 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8639 0 : args.rval().setUndefined();
8640 0 : return true;
8641 : }
8642 :
8643 : static const JSJitInfo activeTexture_methodinfo = {
8644 : { (JSJitGetterOp)activeTexture },
8645 : { prototypes::id::WebGL2RenderingContext },
8646 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8647 : JSJitInfo::Method,
8648 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8649 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8650 : false, /* isInfallible. False in setters. */
8651 : false, /* isMovable. Not relevant for setters. */
8652 : false, /* isEliminatable. Not relevant for setters. */
8653 : false, /* isAlwaysInSlot. Only relevant for getters. */
8654 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8655 : false, /* isTypedMethod. Only relevant for methods. */
8656 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8657 : };
8658 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8659 : static_assert(0 < 1, "There is no slot for us");
8660 :
8661 : static bool
8662 0 : attachShader(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8663 : {
8664 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8665 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.attachShader");
8666 : }
8667 0 : NonNull<mozilla::WebGLProgram> arg0;
8668 0 : if (args[0].isObject()) {
8669 : {
8670 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
8671 0 : if (NS_FAILED(rv)) {
8672 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.attachShader", "WebGLProgram");
8673 0 : return false;
8674 : }
8675 : }
8676 : } else {
8677 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.attachShader");
8678 0 : return false;
8679 : }
8680 0 : NonNull<mozilla::WebGLShader> arg1;
8681 0 : if (args[1].isObject()) {
8682 : {
8683 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[1], arg1);
8684 0 : if (NS_FAILED(rv)) {
8685 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.attachShader", "WebGLShader");
8686 0 : return false;
8687 : }
8688 : }
8689 : } else {
8690 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.attachShader");
8691 0 : return false;
8692 : }
8693 0 : self->AttachShader(NonNullHelper(arg0), NonNullHelper(arg1));
8694 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8695 0 : args.rval().setUndefined();
8696 0 : return true;
8697 : }
8698 :
8699 : static const JSJitInfo attachShader_methodinfo = {
8700 : { (JSJitGetterOp)attachShader },
8701 : { prototypes::id::WebGL2RenderingContext },
8702 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8703 : JSJitInfo::Method,
8704 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8705 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8706 : false, /* isInfallible. False in setters. */
8707 : false, /* isMovable. Not relevant for setters. */
8708 : false, /* isEliminatable. Not relevant for setters. */
8709 : false, /* isAlwaysInSlot. Only relevant for getters. */
8710 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8711 : false, /* isTypedMethod. Only relevant for methods. */
8712 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8713 : };
8714 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8715 : static_assert(0 < 1, "There is no slot for us");
8716 :
8717 : static bool
8718 0 : bindAttribLocation(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8719 : {
8720 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
8721 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindAttribLocation");
8722 : }
8723 0 : NonNull<mozilla::WebGLProgram> arg0;
8724 0 : if (args[0].isObject()) {
8725 : {
8726 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
8727 0 : if (NS_FAILED(rv)) {
8728 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.bindAttribLocation", "WebGLProgram");
8729 0 : return false;
8730 : }
8731 : }
8732 : } else {
8733 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.bindAttribLocation");
8734 0 : return false;
8735 : }
8736 : uint32_t arg1;
8737 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
8738 0 : return false;
8739 : }
8740 0 : binding_detail::FakeString arg2;
8741 0 : if (!ConvertJSValueToString(cx, args[2], eStringify, eStringify, arg2)) {
8742 0 : return false;
8743 : }
8744 0 : self->BindAttribLocation(NonNullHelper(arg0), arg1, NonNullHelper(Constify(arg2)));
8745 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8746 0 : args.rval().setUndefined();
8747 0 : return true;
8748 : }
8749 :
8750 : static const JSJitInfo bindAttribLocation_methodinfo = {
8751 : { (JSJitGetterOp)bindAttribLocation },
8752 : { prototypes::id::WebGL2RenderingContext },
8753 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8754 : JSJitInfo::Method,
8755 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8756 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8757 : false, /* isInfallible. False in setters. */
8758 : false, /* isMovable. Not relevant for setters. */
8759 : false, /* isEliminatable. Not relevant for setters. */
8760 : false, /* isAlwaysInSlot. Only relevant for getters. */
8761 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8762 : false, /* isTypedMethod. Only relevant for methods. */
8763 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8764 : };
8765 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8766 : static_assert(0 < 1, "There is no slot for us");
8767 :
8768 : static bool
8769 0 : bindBuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8770 : {
8771 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8772 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindBuffer");
8773 : }
8774 : uint32_t arg0;
8775 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
8776 0 : return false;
8777 : }
8778 : mozilla::WebGLBuffer* arg1;
8779 0 : if (args[1].isObject()) {
8780 : {
8781 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLBuffer, mozilla::WebGLBuffer>(args[1], arg1);
8782 0 : if (NS_FAILED(rv)) {
8783 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bindBuffer", "WebGLBuffer");
8784 0 : return false;
8785 : }
8786 : }
8787 0 : } else if (args[1].isNullOrUndefined()) {
8788 0 : arg1 = nullptr;
8789 : } else {
8790 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bindBuffer");
8791 0 : return false;
8792 : }
8793 0 : self->BindBuffer(arg0, Constify(arg1));
8794 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8795 0 : args.rval().setUndefined();
8796 0 : return true;
8797 : }
8798 :
8799 : static const JSJitInfo bindBuffer_methodinfo = {
8800 : { (JSJitGetterOp)bindBuffer },
8801 : { prototypes::id::WebGL2RenderingContext },
8802 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8803 : JSJitInfo::Method,
8804 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8805 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8806 : false, /* isInfallible. False in setters. */
8807 : false, /* isMovable. Not relevant for setters. */
8808 : false, /* isEliminatable. Not relevant for setters. */
8809 : false, /* isAlwaysInSlot. Only relevant for getters. */
8810 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8811 : false, /* isTypedMethod. Only relevant for methods. */
8812 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8813 : };
8814 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8815 : static_assert(0 < 1, "There is no slot for us");
8816 :
8817 : static bool
8818 0 : bindFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8819 : {
8820 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8821 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindFramebuffer");
8822 : }
8823 : uint32_t arg0;
8824 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
8825 0 : return false;
8826 : }
8827 : mozilla::WebGLFramebuffer* arg1;
8828 0 : if (args[1].isObject()) {
8829 : {
8830 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLFramebuffer, mozilla::WebGLFramebuffer>(args[1], arg1);
8831 0 : if (NS_FAILED(rv)) {
8832 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bindFramebuffer", "WebGLFramebuffer");
8833 0 : return false;
8834 : }
8835 : }
8836 0 : } else if (args[1].isNullOrUndefined()) {
8837 0 : arg1 = nullptr;
8838 : } else {
8839 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bindFramebuffer");
8840 0 : return false;
8841 : }
8842 0 : self->BindFramebuffer(arg0, Constify(arg1));
8843 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8844 0 : args.rval().setUndefined();
8845 0 : return true;
8846 : }
8847 :
8848 : static const JSJitInfo bindFramebuffer_methodinfo = {
8849 : { (JSJitGetterOp)bindFramebuffer },
8850 : { prototypes::id::WebGL2RenderingContext },
8851 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8852 : JSJitInfo::Method,
8853 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8854 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8855 : false, /* isInfallible. False in setters. */
8856 : false, /* isMovable. Not relevant for setters. */
8857 : false, /* isEliminatable. Not relevant for setters. */
8858 : false, /* isAlwaysInSlot. Only relevant for getters. */
8859 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8860 : false, /* isTypedMethod. Only relevant for methods. */
8861 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8862 : };
8863 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8864 : static_assert(0 < 1, "There is no slot for us");
8865 :
8866 : static bool
8867 0 : bindRenderbuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8868 : {
8869 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8870 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindRenderbuffer");
8871 : }
8872 : uint32_t arg0;
8873 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
8874 0 : return false;
8875 : }
8876 : mozilla::WebGLRenderbuffer* arg1;
8877 0 : if (args[1].isObject()) {
8878 : {
8879 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLRenderbuffer, mozilla::WebGLRenderbuffer>(args[1], arg1);
8880 0 : if (NS_FAILED(rv)) {
8881 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bindRenderbuffer", "WebGLRenderbuffer");
8882 0 : return false;
8883 : }
8884 : }
8885 0 : } else if (args[1].isNullOrUndefined()) {
8886 0 : arg1 = nullptr;
8887 : } else {
8888 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bindRenderbuffer");
8889 0 : return false;
8890 : }
8891 0 : self->BindRenderbuffer(arg0, Constify(arg1));
8892 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8893 0 : args.rval().setUndefined();
8894 0 : return true;
8895 : }
8896 :
8897 : static const JSJitInfo bindRenderbuffer_methodinfo = {
8898 : { (JSJitGetterOp)bindRenderbuffer },
8899 : { prototypes::id::WebGL2RenderingContext },
8900 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8901 : JSJitInfo::Method,
8902 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8903 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8904 : false, /* isInfallible. False in setters. */
8905 : false, /* isMovable. Not relevant for setters. */
8906 : false, /* isEliminatable. Not relevant for setters. */
8907 : false, /* isAlwaysInSlot. Only relevant for getters. */
8908 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8909 : false, /* isTypedMethod. Only relevant for methods. */
8910 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8911 : };
8912 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8913 : static_assert(0 < 1, "There is no slot for us");
8914 :
8915 : static bool
8916 0 : bindTexture(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8917 : {
8918 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
8919 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.bindTexture");
8920 : }
8921 : uint32_t arg0;
8922 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
8923 0 : return false;
8924 : }
8925 : mozilla::WebGLTexture* arg1;
8926 0 : if (args[1].isObject()) {
8927 : {
8928 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTexture, mozilla::WebGLTexture>(args[1], arg1);
8929 0 : if (NS_FAILED(rv)) {
8930 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.bindTexture", "WebGLTexture");
8931 0 : return false;
8932 : }
8933 : }
8934 0 : } else if (args[1].isNullOrUndefined()) {
8935 0 : arg1 = nullptr;
8936 : } else {
8937 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.bindTexture");
8938 0 : return false;
8939 : }
8940 0 : self->BindTexture(arg0, Constify(arg1));
8941 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8942 0 : args.rval().setUndefined();
8943 0 : return true;
8944 : }
8945 :
8946 : static const JSJitInfo bindTexture_methodinfo = {
8947 : { (JSJitGetterOp)bindTexture },
8948 : { prototypes::id::WebGL2RenderingContext },
8949 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8950 : JSJitInfo::Method,
8951 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8952 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8953 : false, /* isInfallible. False in setters. */
8954 : false, /* isMovable. Not relevant for setters. */
8955 : false, /* isEliminatable. Not relevant for setters. */
8956 : false, /* isAlwaysInSlot. Only relevant for getters. */
8957 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8958 : false, /* isTypedMethod. Only relevant for methods. */
8959 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8960 : };
8961 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8962 : static_assert(0 < 1, "There is no slot for us");
8963 :
8964 : static bool
8965 0 : blendColor(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
8966 : {
8967 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
8968 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.blendColor");
8969 : }
8970 : float arg0;
8971 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
8972 0 : return false;
8973 : }
8974 : float arg1;
8975 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
8976 0 : return false;
8977 : }
8978 : float arg2;
8979 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
8980 0 : return false;
8981 : }
8982 : float arg3;
8983 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[3], &arg3)) {
8984 0 : return false;
8985 : }
8986 0 : self->BlendColor(arg0, arg1, arg2, arg3);
8987 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8988 0 : args.rval().setUndefined();
8989 0 : return true;
8990 : }
8991 :
8992 : static const JSJitInfo blendColor_methodinfo = {
8993 : { (JSJitGetterOp)blendColor },
8994 : { prototypes::id::WebGL2RenderingContext },
8995 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
8996 : JSJitInfo::Method,
8997 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8998 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8999 : false, /* isInfallible. False in setters. */
9000 : false, /* isMovable. Not relevant for setters. */
9001 : false, /* isEliminatable. Not relevant for setters. */
9002 : false, /* isAlwaysInSlot. Only relevant for getters. */
9003 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9004 : false, /* isTypedMethod. Only relevant for methods. */
9005 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9006 : };
9007 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9008 : static_assert(0 < 1, "There is no slot for us");
9009 :
9010 : static bool
9011 0 : blendEquation(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9012 : {
9013 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9014 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.blendEquation");
9015 : }
9016 : uint32_t arg0;
9017 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9018 0 : return false;
9019 : }
9020 0 : self->BlendEquation(arg0);
9021 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9022 0 : args.rval().setUndefined();
9023 0 : return true;
9024 : }
9025 :
9026 : static const JSJitInfo blendEquation_methodinfo = {
9027 : { (JSJitGetterOp)blendEquation },
9028 : { prototypes::id::WebGL2RenderingContext },
9029 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9030 : JSJitInfo::Method,
9031 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9032 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9033 : false, /* isInfallible. False in setters. */
9034 : false, /* isMovable. Not relevant for setters. */
9035 : false, /* isEliminatable. Not relevant for setters. */
9036 : false, /* isAlwaysInSlot. Only relevant for getters. */
9037 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9038 : false, /* isTypedMethod. Only relevant for methods. */
9039 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9040 : };
9041 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9042 : static_assert(0 < 1, "There is no slot for us");
9043 :
9044 : static bool
9045 0 : blendEquationSeparate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9046 : {
9047 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
9048 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.blendEquationSeparate");
9049 : }
9050 : uint32_t arg0;
9051 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9052 0 : return false;
9053 : }
9054 : uint32_t arg1;
9055 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
9056 0 : return false;
9057 : }
9058 0 : self->BlendEquationSeparate(arg0, arg1);
9059 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9060 0 : args.rval().setUndefined();
9061 0 : return true;
9062 : }
9063 :
9064 : static const JSJitInfo blendEquationSeparate_methodinfo = {
9065 : { (JSJitGetterOp)blendEquationSeparate },
9066 : { prototypes::id::WebGL2RenderingContext },
9067 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9068 : JSJitInfo::Method,
9069 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9070 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9071 : false, /* isInfallible. False in setters. */
9072 : false, /* isMovable. Not relevant for setters. */
9073 : false, /* isEliminatable. Not relevant for setters. */
9074 : false, /* isAlwaysInSlot. Only relevant for getters. */
9075 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9076 : false, /* isTypedMethod. Only relevant for methods. */
9077 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9078 : };
9079 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9080 : static_assert(0 < 1, "There is no slot for us");
9081 :
9082 : static bool
9083 0 : blendFunc(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9084 : {
9085 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
9086 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.blendFunc");
9087 : }
9088 : uint32_t arg0;
9089 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9090 0 : return false;
9091 : }
9092 : uint32_t arg1;
9093 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
9094 0 : return false;
9095 : }
9096 0 : self->BlendFunc(arg0, arg1);
9097 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9098 0 : args.rval().setUndefined();
9099 0 : return true;
9100 : }
9101 :
9102 : static const JSJitInfo blendFunc_methodinfo = {
9103 : { (JSJitGetterOp)blendFunc },
9104 : { prototypes::id::WebGL2RenderingContext },
9105 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9106 : JSJitInfo::Method,
9107 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9108 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9109 : false, /* isInfallible. False in setters. */
9110 : false, /* isMovable. Not relevant for setters. */
9111 : false, /* isEliminatable. Not relevant for setters. */
9112 : false, /* isAlwaysInSlot. Only relevant for getters. */
9113 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9114 : false, /* isTypedMethod. Only relevant for methods. */
9115 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9116 : };
9117 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9118 : static_assert(0 < 1, "There is no slot for us");
9119 :
9120 : static bool
9121 0 : blendFuncSeparate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9122 : {
9123 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
9124 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.blendFuncSeparate");
9125 : }
9126 : uint32_t arg0;
9127 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9128 0 : return false;
9129 : }
9130 : uint32_t arg1;
9131 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
9132 0 : return false;
9133 : }
9134 : uint32_t arg2;
9135 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
9136 0 : return false;
9137 : }
9138 : uint32_t arg3;
9139 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
9140 0 : return false;
9141 : }
9142 0 : self->BlendFuncSeparate(arg0, arg1, arg2, arg3);
9143 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9144 0 : args.rval().setUndefined();
9145 0 : return true;
9146 : }
9147 :
9148 : static const JSJitInfo blendFuncSeparate_methodinfo = {
9149 : { (JSJitGetterOp)blendFuncSeparate },
9150 : { prototypes::id::WebGL2RenderingContext },
9151 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9152 : JSJitInfo::Method,
9153 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9154 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9155 : false, /* isInfallible. False in setters. */
9156 : false, /* isMovable. Not relevant for setters. */
9157 : false, /* isEliminatable. Not relevant for setters. */
9158 : false, /* isAlwaysInSlot. Only relevant for getters. */
9159 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9160 : false, /* isTypedMethod. Only relevant for methods. */
9161 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9162 : };
9163 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9164 : static_assert(0 < 1, "There is no slot for us");
9165 :
9166 : static bool
9167 0 : checkFramebufferStatus(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9168 : {
9169 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9170 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.checkFramebufferStatus");
9171 : }
9172 : uint32_t arg0;
9173 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9174 0 : return false;
9175 : }
9176 0 : uint32_t result(self->CheckFramebufferStatus(arg0));
9177 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9178 0 : args.rval().setNumber(result);
9179 0 : return true;
9180 : }
9181 :
9182 : static const JSJitInfo checkFramebufferStatus_methodinfo = {
9183 : { (JSJitGetterOp)checkFramebufferStatus },
9184 : { prototypes::id::WebGL2RenderingContext },
9185 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9186 : JSJitInfo::Method,
9187 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9188 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
9189 : false, /* isInfallible. False in setters. */
9190 : false, /* isMovable. Not relevant for setters. */
9191 : false, /* isEliminatable. Not relevant for setters. */
9192 : false, /* isAlwaysInSlot. Only relevant for getters. */
9193 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9194 : false, /* isTypedMethod. Only relevant for methods. */
9195 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9196 : };
9197 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9198 : static_assert(0 < 1, "There is no slot for us");
9199 :
9200 : static bool
9201 0 : clear(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9202 : {
9203 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9204 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clear");
9205 : }
9206 : uint32_t arg0;
9207 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9208 0 : return false;
9209 : }
9210 0 : self->Clear(arg0);
9211 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9212 0 : args.rval().setUndefined();
9213 0 : return true;
9214 : }
9215 :
9216 : static const JSJitInfo clear_methodinfo = {
9217 : { (JSJitGetterOp)clear },
9218 : { prototypes::id::WebGL2RenderingContext },
9219 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9220 : JSJitInfo::Method,
9221 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9222 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9223 : false, /* isInfallible. False in setters. */
9224 : false, /* isMovable. Not relevant for setters. */
9225 : false, /* isEliminatable. Not relevant for setters. */
9226 : false, /* isAlwaysInSlot. Only relevant for getters. */
9227 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9228 : false, /* isTypedMethod. Only relevant for methods. */
9229 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9230 : };
9231 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9232 : static_assert(0 < 1, "There is no slot for us");
9233 :
9234 : static bool
9235 0 : clearColor(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9236 : {
9237 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
9238 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearColor");
9239 : }
9240 : float arg0;
9241 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
9242 0 : return false;
9243 : }
9244 : float arg1;
9245 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
9246 0 : return false;
9247 : }
9248 : float arg2;
9249 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
9250 0 : return false;
9251 : }
9252 : float arg3;
9253 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[3], &arg3)) {
9254 0 : return false;
9255 : }
9256 0 : self->ClearColor(arg0, arg1, arg2, arg3);
9257 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9258 0 : args.rval().setUndefined();
9259 0 : return true;
9260 : }
9261 :
9262 : static const JSJitInfo clearColor_methodinfo = {
9263 : { (JSJitGetterOp)clearColor },
9264 : { prototypes::id::WebGL2RenderingContext },
9265 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9266 : JSJitInfo::Method,
9267 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9268 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9269 : false, /* isInfallible. False in setters. */
9270 : false, /* isMovable. Not relevant for setters. */
9271 : false, /* isEliminatable. Not relevant for setters. */
9272 : false, /* isAlwaysInSlot. Only relevant for getters. */
9273 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9274 : false, /* isTypedMethod. Only relevant for methods. */
9275 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9276 : };
9277 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9278 : static_assert(0 < 1, "There is no slot for us");
9279 :
9280 : static bool
9281 0 : clearDepth(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9282 : {
9283 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9284 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearDepth");
9285 : }
9286 : float arg0;
9287 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
9288 0 : return false;
9289 : }
9290 0 : self->ClearDepth(arg0);
9291 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9292 0 : args.rval().setUndefined();
9293 0 : return true;
9294 : }
9295 :
9296 : static const JSJitInfo clearDepth_methodinfo = {
9297 : { (JSJitGetterOp)clearDepth },
9298 : { prototypes::id::WebGL2RenderingContext },
9299 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9300 : JSJitInfo::Method,
9301 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9302 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9303 : false, /* isInfallible. False in setters. */
9304 : false, /* isMovable. Not relevant for setters. */
9305 : false, /* isEliminatable. Not relevant for setters. */
9306 : false, /* isAlwaysInSlot. Only relevant for getters. */
9307 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9308 : false, /* isTypedMethod. Only relevant for methods. */
9309 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9310 : };
9311 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9312 : static_assert(0 < 1, "There is no slot for us");
9313 :
9314 : static bool
9315 0 : clearStencil(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9316 : {
9317 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9318 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.clearStencil");
9319 : }
9320 : int32_t arg0;
9321 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
9322 0 : return false;
9323 : }
9324 0 : self->ClearStencil(arg0);
9325 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9326 0 : args.rval().setUndefined();
9327 0 : return true;
9328 : }
9329 :
9330 : static const JSJitInfo clearStencil_methodinfo = {
9331 : { (JSJitGetterOp)clearStencil },
9332 : { prototypes::id::WebGL2RenderingContext },
9333 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9334 : JSJitInfo::Method,
9335 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9336 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9337 : false, /* isInfallible. False in setters. */
9338 : false, /* isMovable. Not relevant for setters. */
9339 : false, /* isEliminatable. Not relevant for setters. */
9340 : false, /* isAlwaysInSlot. Only relevant for getters. */
9341 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9342 : false, /* isTypedMethod. Only relevant for methods. */
9343 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9344 : };
9345 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9346 : static_assert(0 < 1, "There is no slot for us");
9347 :
9348 : static bool
9349 0 : colorMask(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9350 : {
9351 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
9352 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.colorMask");
9353 : }
9354 : bool arg0;
9355 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
9356 0 : return false;
9357 : }
9358 : bool arg1;
9359 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
9360 0 : return false;
9361 : }
9362 : bool arg2;
9363 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[2], &arg2)) {
9364 0 : return false;
9365 : }
9366 : bool arg3;
9367 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[3], &arg3)) {
9368 0 : return false;
9369 : }
9370 0 : self->ColorMask(arg0, arg1, arg2, arg3);
9371 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9372 0 : args.rval().setUndefined();
9373 0 : return true;
9374 : }
9375 :
9376 : static const JSJitInfo colorMask_methodinfo = {
9377 : { (JSJitGetterOp)colorMask },
9378 : { prototypes::id::WebGL2RenderingContext },
9379 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9380 : JSJitInfo::Method,
9381 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9382 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9383 : false, /* isInfallible. False in setters. */
9384 : false, /* isMovable. Not relevant for setters. */
9385 : false, /* isEliminatable. Not relevant for setters. */
9386 : false, /* isAlwaysInSlot. Only relevant for getters. */
9387 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9388 : false, /* isTypedMethod. Only relevant for methods. */
9389 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9390 : };
9391 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9392 : static_assert(0 < 1, "There is no slot for us");
9393 :
9394 : static bool
9395 0 : compileShader(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9396 : {
9397 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9398 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.compileShader");
9399 : }
9400 0 : NonNull<mozilla::WebGLShader> arg0;
9401 0 : if (args[0].isObject()) {
9402 : {
9403 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
9404 0 : if (NS_FAILED(rv)) {
9405 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.compileShader", "WebGLShader");
9406 0 : return false;
9407 : }
9408 : }
9409 : } else {
9410 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.compileShader");
9411 0 : return false;
9412 : }
9413 0 : self->CompileShader(NonNullHelper(arg0));
9414 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9415 0 : args.rval().setUndefined();
9416 0 : return true;
9417 : }
9418 :
9419 : static const JSJitInfo compileShader_methodinfo = {
9420 : { (JSJitGetterOp)compileShader },
9421 : { prototypes::id::WebGL2RenderingContext },
9422 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9423 : JSJitInfo::Method,
9424 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9425 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9426 : false, /* isInfallible. False in setters. */
9427 : false, /* isMovable. Not relevant for setters. */
9428 : false, /* isEliminatable. Not relevant for setters. */
9429 : false, /* isAlwaysInSlot. Only relevant for getters. */
9430 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9431 : false, /* isTypedMethod. Only relevant for methods. */
9432 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9433 : };
9434 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9435 : static_assert(0 < 1, "There is no slot for us");
9436 :
9437 : static bool
9438 0 : copyTexImage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9439 : {
9440 0 : if (MOZ_UNLIKELY(args.length() < 8)) {
9441 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.copyTexImage2D");
9442 : }
9443 : uint32_t arg0;
9444 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9445 0 : return false;
9446 : }
9447 : int32_t arg1;
9448 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
9449 0 : return false;
9450 : }
9451 : uint32_t arg2;
9452 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
9453 0 : return false;
9454 : }
9455 : int32_t arg3;
9456 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
9457 0 : return false;
9458 : }
9459 : int32_t arg4;
9460 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
9461 0 : return false;
9462 : }
9463 : int32_t arg5;
9464 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
9465 0 : return false;
9466 : }
9467 : int32_t arg6;
9468 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
9469 0 : return false;
9470 : }
9471 : int32_t arg7;
9472 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
9473 0 : return false;
9474 : }
9475 0 : self->CopyTexImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
9476 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9477 0 : args.rval().setUndefined();
9478 0 : return true;
9479 : }
9480 :
9481 : static const JSJitInfo copyTexImage2D_methodinfo = {
9482 : { (JSJitGetterOp)copyTexImage2D },
9483 : { prototypes::id::WebGL2RenderingContext },
9484 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9485 : JSJitInfo::Method,
9486 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9487 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9488 : false, /* isInfallible. False in setters. */
9489 : false, /* isMovable. Not relevant for setters. */
9490 : false, /* isEliminatable. Not relevant for setters. */
9491 : false, /* isAlwaysInSlot. Only relevant for getters. */
9492 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9493 : false, /* isTypedMethod. Only relevant for methods. */
9494 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9495 : };
9496 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9497 : static_assert(0 < 1, "There is no slot for us");
9498 :
9499 : static bool
9500 0 : copyTexSubImage2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9501 : {
9502 0 : if (MOZ_UNLIKELY(args.length() < 8)) {
9503 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.copyTexSubImage2D");
9504 : }
9505 : uint32_t arg0;
9506 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9507 0 : return false;
9508 : }
9509 : int32_t arg1;
9510 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
9511 0 : return false;
9512 : }
9513 : int32_t arg2;
9514 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
9515 0 : return false;
9516 : }
9517 : int32_t arg3;
9518 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
9519 0 : return false;
9520 : }
9521 : int32_t arg4;
9522 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
9523 0 : return false;
9524 : }
9525 : int32_t arg5;
9526 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
9527 0 : return false;
9528 : }
9529 : int32_t arg6;
9530 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
9531 0 : return false;
9532 : }
9533 : int32_t arg7;
9534 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
9535 0 : return false;
9536 : }
9537 0 : self->CopyTexSubImage2D(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
9538 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9539 0 : args.rval().setUndefined();
9540 0 : return true;
9541 : }
9542 :
9543 : static const JSJitInfo copyTexSubImage2D_methodinfo = {
9544 : { (JSJitGetterOp)copyTexSubImage2D },
9545 : { prototypes::id::WebGL2RenderingContext },
9546 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9547 : JSJitInfo::Method,
9548 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9549 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9550 : false, /* isInfallible. False in setters. */
9551 : false, /* isMovable. Not relevant for setters. */
9552 : false, /* isEliminatable. Not relevant for setters. */
9553 : false, /* isAlwaysInSlot. Only relevant for getters. */
9554 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9555 : false, /* isTypedMethod. Only relevant for methods. */
9556 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9557 : };
9558 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9559 : static_assert(0 < 1, "There is no slot for us");
9560 :
9561 : static bool
9562 0 : createBuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9563 : {
9564 0 : auto result(StrongOrRawPtr<mozilla::WebGLBuffer>(self->CreateBuffer()));
9565 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9566 0 : if (!result) {
9567 0 : args.rval().setNull();
9568 0 : return true;
9569 : }
9570 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
9571 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
9572 0 : return false;
9573 : }
9574 0 : return true;
9575 : }
9576 :
9577 : static const JSJitInfo createBuffer_methodinfo = {
9578 : { (JSJitGetterOp)createBuffer },
9579 : { prototypes::id::WebGL2RenderingContext },
9580 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9581 : JSJitInfo::Method,
9582 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9583 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9584 : false, /* isInfallible. False in setters. */
9585 : false, /* isMovable. Not relevant for setters. */
9586 : false, /* isEliminatable. Not relevant for setters. */
9587 : false, /* isAlwaysInSlot. Only relevant for getters. */
9588 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9589 : false, /* isTypedMethod. Only relevant for methods. */
9590 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9591 : };
9592 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9593 : static_assert(0 < 1, "There is no slot for us");
9594 :
9595 : static bool
9596 0 : createFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9597 : {
9598 0 : auto result(StrongOrRawPtr<mozilla::WebGLFramebuffer>(self->CreateFramebuffer()));
9599 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9600 0 : if (!result) {
9601 0 : args.rval().setNull();
9602 0 : return true;
9603 : }
9604 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
9605 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
9606 0 : return false;
9607 : }
9608 0 : return true;
9609 : }
9610 :
9611 : static const JSJitInfo createFramebuffer_methodinfo = {
9612 : { (JSJitGetterOp)createFramebuffer },
9613 : { prototypes::id::WebGL2RenderingContext },
9614 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9615 : JSJitInfo::Method,
9616 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9617 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9618 : false, /* isInfallible. False in setters. */
9619 : false, /* isMovable. Not relevant for setters. */
9620 : false, /* isEliminatable. Not relevant for setters. */
9621 : false, /* isAlwaysInSlot. Only relevant for getters. */
9622 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9623 : false, /* isTypedMethod. Only relevant for methods. */
9624 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9625 : };
9626 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9627 : static_assert(0 < 1, "There is no slot for us");
9628 :
9629 : static bool
9630 0 : createProgram(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9631 : {
9632 0 : auto result(StrongOrRawPtr<mozilla::WebGLProgram>(self->CreateProgram()));
9633 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9634 0 : if (!result) {
9635 0 : args.rval().setNull();
9636 0 : return true;
9637 : }
9638 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
9639 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
9640 0 : return false;
9641 : }
9642 0 : return true;
9643 : }
9644 :
9645 : static const JSJitInfo createProgram_methodinfo = {
9646 : { (JSJitGetterOp)createProgram },
9647 : { prototypes::id::WebGL2RenderingContext },
9648 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9649 : JSJitInfo::Method,
9650 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9651 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9652 : false, /* isInfallible. False in setters. */
9653 : false, /* isMovable. Not relevant for setters. */
9654 : false, /* isEliminatable. Not relevant for setters. */
9655 : false, /* isAlwaysInSlot. Only relevant for getters. */
9656 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9657 : false, /* isTypedMethod. Only relevant for methods. */
9658 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9659 : };
9660 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9661 : static_assert(0 < 1, "There is no slot for us");
9662 :
9663 : static bool
9664 0 : createRenderbuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9665 : {
9666 0 : auto result(StrongOrRawPtr<mozilla::WebGLRenderbuffer>(self->CreateRenderbuffer()));
9667 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9668 0 : if (!result) {
9669 0 : args.rval().setNull();
9670 0 : return true;
9671 : }
9672 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
9673 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
9674 0 : return false;
9675 : }
9676 0 : return true;
9677 : }
9678 :
9679 : static const JSJitInfo createRenderbuffer_methodinfo = {
9680 : { (JSJitGetterOp)createRenderbuffer },
9681 : { prototypes::id::WebGL2RenderingContext },
9682 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9683 : JSJitInfo::Method,
9684 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9685 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9686 : false, /* isInfallible. False in setters. */
9687 : false, /* isMovable. Not relevant for setters. */
9688 : false, /* isEliminatable. Not relevant for setters. */
9689 : false, /* isAlwaysInSlot. Only relevant for getters. */
9690 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9691 : false, /* isTypedMethod. Only relevant for methods. */
9692 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9693 : };
9694 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9695 : static_assert(0 < 1, "There is no slot for us");
9696 :
9697 : static bool
9698 0 : createShader(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9699 : {
9700 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9701 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.createShader");
9702 : }
9703 : uint32_t arg0;
9704 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9705 0 : return false;
9706 : }
9707 0 : auto result(StrongOrRawPtr<mozilla::WebGLShader>(self->CreateShader(arg0)));
9708 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9709 0 : if (!result) {
9710 0 : args.rval().setNull();
9711 0 : return true;
9712 : }
9713 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
9714 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
9715 0 : return false;
9716 : }
9717 0 : return true;
9718 : }
9719 :
9720 : static const JSJitInfo createShader_methodinfo = {
9721 : { (JSJitGetterOp)createShader },
9722 : { prototypes::id::WebGL2RenderingContext },
9723 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9724 : JSJitInfo::Method,
9725 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9726 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9727 : false, /* isInfallible. False in setters. */
9728 : false, /* isMovable. Not relevant for setters. */
9729 : false, /* isEliminatable. Not relevant for setters. */
9730 : false, /* isAlwaysInSlot. Only relevant for getters. */
9731 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9732 : false, /* isTypedMethod. Only relevant for methods. */
9733 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9734 : };
9735 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9736 : static_assert(0 < 1, "There is no slot for us");
9737 :
9738 : static bool
9739 0 : createTexture(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9740 : {
9741 0 : auto result(StrongOrRawPtr<mozilla::WebGLTexture>(self->CreateTexture()));
9742 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9743 0 : if (!result) {
9744 0 : args.rval().setNull();
9745 0 : return true;
9746 : }
9747 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
9748 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
9749 0 : return false;
9750 : }
9751 0 : return true;
9752 : }
9753 :
9754 : static const JSJitInfo createTexture_methodinfo = {
9755 : { (JSJitGetterOp)createTexture },
9756 : { prototypes::id::WebGL2RenderingContext },
9757 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9758 : JSJitInfo::Method,
9759 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9760 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9761 : false, /* isInfallible. False in setters. */
9762 : false, /* isMovable. Not relevant for setters. */
9763 : false, /* isEliminatable. Not relevant for setters. */
9764 : false, /* isAlwaysInSlot. Only relevant for getters. */
9765 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9766 : false, /* isTypedMethod. Only relevant for methods. */
9767 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9768 : };
9769 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9770 : static_assert(0 < 1, "There is no slot for us");
9771 :
9772 : static bool
9773 0 : cullFace(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9774 : {
9775 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9776 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.cullFace");
9777 : }
9778 : uint32_t arg0;
9779 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
9780 0 : return false;
9781 : }
9782 0 : self->CullFace(arg0);
9783 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9784 0 : args.rval().setUndefined();
9785 0 : return true;
9786 : }
9787 :
9788 : static const JSJitInfo cullFace_methodinfo = {
9789 : { (JSJitGetterOp)cullFace },
9790 : { prototypes::id::WebGL2RenderingContext },
9791 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9792 : JSJitInfo::Method,
9793 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9794 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9795 : false, /* isInfallible. False in setters. */
9796 : false, /* isMovable. Not relevant for setters. */
9797 : false, /* isEliminatable. Not relevant for setters. */
9798 : false, /* isAlwaysInSlot. Only relevant for getters. */
9799 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9800 : false, /* isTypedMethod. Only relevant for methods. */
9801 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9802 : };
9803 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9804 : static_assert(0 < 1, "There is no slot for us");
9805 :
9806 : static bool
9807 0 : deleteBuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9808 : {
9809 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9810 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteBuffer");
9811 : }
9812 : mozilla::WebGLBuffer* arg0;
9813 0 : if (args[0].isObject()) {
9814 : {
9815 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLBuffer, mozilla::WebGLBuffer>(args[0], arg0);
9816 0 : if (NS_FAILED(rv)) {
9817 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteBuffer", "WebGLBuffer");
9818 0 : return false;
9819 : }
9820 : }
9821 0 : } else if (args[0].isNullOrUndefined()) {
9822 0 : arg0 = nullptr;
9823 : } else {
9824 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteBuffer");
9825 0 : return false;
9826 : }
9827 0 : self->DeleteBuffer(Constify(arg0));
9828 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9829 0 : args.rval().setUndefined();
9830 0 : return true;
9831 : }
9832 :
9833 : static const JSJitInfo deleteBuffer_methodinfo = {
9834 : { (JSJitGetterOp)deleteBuffer },
9835 : { prototypes::id::WebGL2RenderingContext },
9836 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9837 : JSJitInfo::Method,
9838 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9839 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9840 : false, /* isInfallible. False in setters. */
9841 : false, /* isMovable. Not relevant for setters. */
9842 : false, /* isEliminatable. Not relevant for setters. */
9843 : false, /* isAlwaysInSlot. Only relevant for getters. */
9844 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9845 : false, /* isTypedMethod. Only relevant for methods. */
9846 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9847 : };
9848 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9849 : static_assert(0 < 1, "There is no slot for us");
9850 :
9851 : static bool
9852 0 : deleteFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9853 : {
9854 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9855 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteFramebuffer");
9856 : }
9857 : mozilla::WebGLFramebuffer* arg0;
9858 0 : if (args[0].isObject()) {
9859 : {
9860 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLFramebuffer, mozilla::WebGLFramebuffer>(args[0], arg0);
9861 0 : if (NS_FAILED(rv)) {
9862 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteFramebuffer", "WebGLFramebuffer");
9863 0 : return false;
9864 : }
9865 : }
9866 0 : } else if (args[0].isNullOrUndefined()) {
9867 0 : arg0 = nullptr;
9868 : } else {
9869 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteFramebuffer");
9870 0 : return false;
9871 : }
9872 0 : self->DeleteFramebuffer(Constify(arg0));
9873 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9874 0 : args.rval().setUndefined();
9875 0 : return true;
9876 : }
9877 :
9878 : static const JSJitInfo deleteFramebuffer_methodinfo = {
9879 : { (JSJitGetterOp)deleteFramebuffer },
9880 : { prototypes::id::WebGL2RenderingContext },
9881 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9882 : JSJitInfo::Method,
9883 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9884 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9885 : false, /* isInfallible. False in setters. */
9886 : false, /* isMovable. Not relevant for setters. */
9887 : false, /* isEliminatable. Not relevant for setters. */
9888 : false, /* isAlwaysInSlot. Only relevant for getters. */
9889 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9890 : false, /* isTypedMethod. Only relevant for methods. */
9891 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9892 : };
9893 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9894 : static_assert(0 < 1, "There is no slot for us");
9895 :
9896 : static bool
9897 0 : deleteProgram(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9898 : {
9899 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9900 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteProgram");
9901 : }
9902 : mozilla::WebGLProgram* arg0;
9903 0 : if (args[0].isObject()) {
9904 : {
9905 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
9906 0 : if (NS_FAILED(rv)) {
9907 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteProgram", "WebGLProgram");
9908 0 : return false;
9909 : }
9910 : }
9911 0 : } else if (args[0].isNullOrUndefined()) {
9912 0 : arg0 = nullptr;
9913 : } else {
9914 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteProgram");
9915 0 : return false;
9916 : }
9917 0 : self->DeleteProgram(Constify(arg0));
9918 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9919 0 : args.rval().setUndefined();
9920 0 : return true;
9921 : }
9922 :
9923 : static const JSJitInfo deleteProgram_methodinfo = {
9924 : { (JSJitGetterOp)deleteProgram },
9925 : { prototypes::id::WebGL2RenderingContext },
9926 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9927 : JSJitInfo::Method,
9928 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9929 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9930 : false, /* isInfallible. False in setters. */
9931 : false, /* isMovable. Not relevant for setters. */
9932 : false, /* isEliminatable. Not relevant for setters. */
9933 : false, /* isAlwaysInSlot. Only relevant for getters. */
9934 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9935 : false, /* isTypedMethod. Only relevant for methods. */
9936 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9937 : };
9938 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9939 : static_assert(0 < 1, "There is no slot for us");
9940 :
9941 : static bool
9942 0 : deleteRenderbuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9943 : {
9944 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9945 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteRenderbuffer");
9946 : }
9947 : mozilla::WebGLRenderbuffer* arg0;
9948 0 : if (args[0].isObject()) {
9949 : {
9950 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLRenderbuffer, mozilla::WebGLRenderbuffer>(args[0], arg0);
9951 0 : if (NS_FAILED(rv)) {
9952 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteRenderbuffer", "WebGLRenderbuffer");
9953 0 : return false;
9954 : }
9955 : }
9956 0 : } else if (args[0].isNullOrUndefined()) {
9957 0 : arg0 = nullptr;
9958 : } else {
9959 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteRenderbuffer");
9960 0 : return false;
9961 : }
9962 0 : self->DeleteRenderbuffer(Constify(arg0));
9963 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9964 0 : args.rval().setUndefined();
9965 0 : return true;
9966 : }
9967 :
9968 : static const JSJitInfo deleteRenderbuffer_methodinfo = {
9969 : { (JSJitGetterOp)deleteRenderbuffer },
9970 : { prototypes::id::WebGL2RenderingContext },
9971 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
9972 : JSJitInfo::Method,
9973 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9974 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9975 : false, /* isInfallible. False in setters. */
9976 : false, /* isMovable. Not relevant for setters. */
9977 : false, /* isEliminatable. Not relevant for setters. */
9978 : false, /* isAlwaysInSlot. Only relevant for getters. */
9979 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9980 : false, /* isTypedMethod. Only relevant for methods. */
9981 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9982 : };
9983 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9984 : static_assert(0 < 1, "There is no slot for us");
9985 :
9986 : static bool
9987 0 : deleteShader(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
9988 : {
9989 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
9990 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteShader");
9991 : }
9992 : mozilla::WebGLShader* arg0;
9993 0 : if (args[0].isObject()) {
9994 : {
9995 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
9996 0 : if (NS_FAILED(rv)) {
9997 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteShader", "WebGLShader");
9998 0 : return false;
9999 : }
10000 : }
10001 0 : } else if (args[0].isNullOrUndefined()) {
10002 0 : arg0 = nullptr;
10003 : } else {
10004 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteShader");
10005 0 : return false;
10006 : }
10007 0 : self->DeleteShader(Constify(arg0));
10008 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10009 0 : args.rval().setUndefined();
10010 0 : return true;
10011 : }
10012 :
10013 : static const JSJitInfo deleteShader_methodinfo = {
10014 : { (JSJitGetterOp)deleteShader },
10015 : { prototypes::id::WebGL2RenderingContext },
10016 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10017 : JSJitInfo::Method,
10018 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10019 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10020 : false, /* isInfallible. False in setters. */
10021 : false, /* isMovable. Not relevant for setters. */
10022 : false, /* isEliminatable. Not relevant for setters. */
10023 : false, /* isAlwaysInSlot. Only relevant for getters. */
10024 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10025 : false, /* isTypedMethod. Only relevant for methods. */
10026 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10027 : };
10028 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10029 : static_assert(0 < 1, "There is no slot for us");
10030 :
10031 : static bool
10032 0 : deleteTexture(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10033 : {
10034 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10035 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.deleteTexture");
10036 : }
10037 : mozilla::WebGLTexture* arg0;
10038 0 : if (args[0].isObject()) {
10039 : {
10040 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTexture, mozilla::WebGLTexture>(args[0], arg0);
10041 0 : if (NS_FAILED(rv)) {
10042 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.deleteTexture", "WebGLTexture");
10043 0 : return false;
10044 : }
10045 : }
10046 0 : } else if (args[0].isNullOrUndefined()) {
10047 0 : arg0 = nullptr;
10048 : } else {
10049 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.deleteTexture");
10050 0 : return false;
10051 : }
10052 0 : self->DeleteTexture(Constify(arg0));
10053 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10054 0 : args.rval().setUndefined();
10055 0 : return true;
10056 : }
10057 :
10058 : static const JSJitInfo deleteTexture_methodinfo = {
10059 : { (JSJitGetterOp)deleteTexture },
10060 : { prototypes::id::WebGL2RenderingContext },
10061 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10062 : JSJitInfo::Method,
10063 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10064 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10065 : false, /* isInfallible. False in setters. */
10066 : false, /* isMovable. Not relevant for setters. */
10067 : false, /* isEliminatable. Not relevant for setters. */
10068 : false, /* isAlwaysInSlot. Only relevant for getters. */
10069 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10070 : false, /* isTypedMethod. Only relevant for methods. */
10071 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10072 : };
10073 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10074 : static_assert(0 < 1, "There is no slot for us");
10075 :
10076 : static bool
10077 0 : depthFunc(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10078 : {
10079 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10080 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.depthFunc");
10081 : }
10082 : uint32_t arg0;
10083 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10084 0 : return false;
10085 : }
10086 0 : self->DepthFunc(arg0);
10087 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10088 0 : args.rval().setUndefined();
10089 0 : return true;
10090 : }
10091 :
10092 : static const JSJitInfo depthFunc_methodinfo = {
10093 : { (JSJitGetterOp)depthFunc },
10094 : { prototypes::id::WebGL2RenderingContext },
10095 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10096 : JSJitInfo::Method,
10097 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10098 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10099 : false, /* isInfallible. False in setters. */
10100 : false, /* isMovable. Not relevant for setters. */
10101 : false, /* isEliminatable. Not relevant for setters. */
10102 : false, /* isAlwaysInSlot. Only relevant for getters. */
10103 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10104 : false, /* isTypedMethod. Only relevant for methods. */
10105 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10106 : };
10107 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10108 : static_assert(0 < 1, "There is no slot for us");
10109 :
10110 : static bool
10111 0 : depthMask(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10112 : {
10113 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10114 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.depthMask");
10115 : }
10116 : bool arg0;
10117 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
10118 0 : return false;
10119 : }
10120 0 : self->DepthMask(arg0);
10121 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10122 0 : args.rval().setUndefined();
10123 0 : return true;
10124 : }
10125 :
10126 : static const JSJitInfo depthMask_methodinfo = {
10127 : { (JSJitGetterOp)depthMask },
10128 : { prototypes::id::WebGL2RenderingContext },
10129 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10130 : JSJitInfo::Method,
10131 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10132 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10133 : false, /* isInfallible. False in setters. */
10134 : false, /* isMovable. Not relevant for setters. */
10135 : false, /* isEliminatable. Not relevant for setters. */
10136 : false, /* isAlwaysInSlot. Only relevant for getters. */
10137 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10138 : false, /* isTypedMethod. Only relevant for methods. */
10139 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10140 : };
10141 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10142 : static_assert(0 < 1, "There is no slot for us");
10143 :
10144 : static bool
10145 0 : depthRange(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10146 : {
10147 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
10148 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.depthRange");
10149 : }
10150 : float arg0;
10151 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
10152 0 : return false;
10153 : }
10154 : float arg1;
10155 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
10156 0 : return false;
10157 : }
10158 0 : self->DepthRange(arg0, arg1);
10159 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10160 0 : args.rval().setUndefined();
10161 0 : return true;
10162 : }
10163 :
10164 : static const JSJitInfo depthRange_methodinfo = {
10165 : { (JSJitGetterOp)depthRange },
10166 : { prototypes::id::WebGL2RenderingContext },
10167 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10168 : JSJitInfo::Method,
10169 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10170 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10171 : false, /* isInfallible. False in setters. */
10172 : false, /* isMovable. Not relevant for setters. */
10173 : false, /* isEliminatable. Not relevant for setters. */
10174 : false, /* isAlwaysInSlot. Only relevant for getters. */
10175 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10176 : false, /* isTypedMethod. Only relevant for methods. */
10177 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10178 : };
10179 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10180 : static_assert(0 < 1, "There is no slot for us");
10181 :
10182 : static bool
10183 0 : detachShader(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10184 : {
10185 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
10186 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.detachShader");
10187 : }
10188 0 : NonNull<mozilla::WebGLProgram> arg0;
10189 0 : if (args[0].isObject()) {
10190 : {
10191 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
10192 0 : if (NS_FAILED(rv)) {
10193 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.detachShader", "WebGLProgram");
10194 0 : return false;
10195 : }
10196 : }
10197 : } else {
10198 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.detachShader");
10199 0 : return false;
10200 : }
10201 0 : NonNull<mozilla::WebGLShader> arg1;
10202 0 : if (args[1].isObject()) {
10203 : {
10204 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[1], arg1);
10205 0 : if (NS_FAILED(rv)) {
10206 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.detachShader", "WebGLShader");
10207 0 : return false;
10208 : }
10209 : }
10210 : } else {
10211 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.detachShader");
10212 0 : return false;
10213 : }
10214 0 : self->DetachShader(NonNullHelper(arg0), NonNullHelper(arg1));
10215 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10216 0 : args.rval().setUndefined();
10217 0 : return true;
10218 : }
10219 :
10220 : static const JSJitInfo detachShader_methodinfo = {
10221 : { (JSJitGetterOp)detachShader },
10222 : { prototypes::id::WebGL2RenderingContext },
10223 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10224 : JSJitInfo::Method,
10225 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10226 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10227 : false, /* isInfallible. False in setters. */
10228 : false, /* isMovable. Not relevant for setters. */
10229 : false, /* isEliminatable. Not relevant for setters. */
10230 : false, /* isAlwaysInSlot. Only relevant for getters. */
10231 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10232 : false, /* isTypedMethod. Only relevant for methods. */
10233 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10234 : };
10235 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10236 : static_assert(0 < 1, "There is no slot for us");
10237 :
10238 : static bool
10239 0 : disable(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10240 : {
10241 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10242 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.disable");
10243 : }
10244 : uint32_t arg0;
10245 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10246 0 : return false;
10247 : }
10248 0 : self->Disable(arg0);
10249 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10250 0 : args.rval().setUndefined();
10251 0 : return true;
10252 : }
10253 :
10254 : static const JSJitInfo disable_methodinfo = {
10255 : { (JSJitGetterOp)disable },
10256 : { prototypes::id::WebGL2RenderingContext },
10257 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10258 : JSJitInfo::Method,
10259 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10260 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10261 : false, /* isInfallible. False in setters. */
10262 : false, /* isMovable. Not relevant for setters. */
10263 : false, /* isEliminatable. Not relevant for setters. */
10264 : false, /* isAlwaysInSlot. Only relevant for getters. */
10265 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10266 : false, /* isTypedMethod. Only relevant for methods. */
10267 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10268 : };
10269 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10270 : static_assert(0 < 1, "There is no slot for us");
10271 :
10272 : static bool
10273 0 : disableVertexAttribArray(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10274 : {
10275 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10276 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.disableVertexAttribArray");
10277 : }
10278 : uint32_t arg0;
10279 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10280 0 : return false;
10281 : }
10282 0 : self->DisableVertexAttribArray(arg0);
10283 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10284 0 : args.rval().setUndefined();
10285 0 : return true;
10286 : }
10287 :
10288 : static const JSJitInfo disableVertexAttribArray_methodinfo = {
10289 : { (JSJitGetterOp)disableVertexAttribArray },
10290 : { prototypes::id::WebGL2RenderingContext },
10291 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10292 : JSJitInfo::Method,
10293 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10294 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10295 : false, /* isInfallible. False in setters. */
10296 : false, /* isMovable. Not relevant for setters. */
10297 : false, /* isEliminatable. Not relevant for setters. */
10298 : false, /* isAlwaysInSlot. Only relevant for getters. */
10299 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10300 : false, /* isTypedMethod. Only relevant for methods. */
10301 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10302 : };
10303 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10304 : static_assert(0 < 1, "There is no slot for us");
10305 :
10306 : static bool
10307 0 : drawArrays(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10308 : {
10309 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
10310 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.drawArrays");
10311 : }
10312 : uint32_t arg0;
10313 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10314 0 : return false;
10315 : }
10316 : int32_t arg1;
10317 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
10318 0 : return false;
10319 : }
10320 : int32_t arg2;
10321 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
10322 0 : return false;
10323 : }
10324 0 : self->DrawArrays(arg0, arg1, arg2);
10325 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10326 0 : args.rval().setUndefined();
10327 0 : return true;
10328 : }
10329 :
10330 : static const JSJitInfo drawArrays_methodinfo = {
10331 : { (JSJitGetterOp)drawArrays },
10332 : { prototypes::id::WebGL2RenderingContext },
10333 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10334 : JSJitInfo::Method,
10335 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10336 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10337 : false, /* isInfallible. False in setters. */
10338 : false, /* isMovable. Not relevant for setters. */
10339 : false, /* isEliminatable. Not relevant for setters. */
10340 : false, /* isAlwaysInSlot. Only relevant for getters. */
10341 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10342 : false, /* isTypedMethod. Only relevant for methods. */
10343 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10344 : };
10345 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10346 : static_assert(0 < 1, "There is no slot for us");
10347 :
10348 : static bool
10349 0 : drawElements(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10350 : {
10351 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
10352 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.drawElements");
10353 : }
10354 : uint32_t arg0;
10355 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10356 0 : return false;
10357 : }
10358 : int32_t arg1;
10359 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
10360 0 : return false;
10361 : }
10362 : uint32_t arg2;
10363 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
10364 0 : return false;
10365 : }
10366 : int64_t arg3;
10367 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[3], &arg3)) {
10368 0 : return false;
10369 : }
10370 0 : self->DrawElements(arg0, arg1, arg2, arg3);
10371 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10372 0 : args.rval().setUndefined();
10373 0 : return true;
10374 : }
10375 :
10376 : static const JSJitInfo drawElements_methodinfo = {
10377 : { (JSJitGetterOp)drawElements },
10378 : { prototypes::id::WebGL2RenderingContext },
10379 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10380 : JSJitInfo::Method,
10381 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10382 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10383 : false, /* isInfallible. False in setters. */
10384 : false, /* isMovable. Not relevant for setters. */
10385 : false, /* isEliminatable. Not relevant for setters. */
10386 : false, /* isAlwaysInSlot. Only relevant for getters. */
10387 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10388 : false, /* isTypedMethod. Only relevant for methods. */
10389 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10390 : };
10391 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10392 : static_assert(0 < 1, "There is no slot for us");
10393 :
10394 : static bool
10395 0 : enable(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10396 : {
10397 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10398 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.enable");
10399 : }
10400 : uint32_t arg0;
10401 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10402 0 : return false;
10403 : }
10404 0 : self->Enable(arg0);
10405 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10406 0 : args.rval().setUndefined();
10407 0 : return true;
10408 : }
10409 :
10410 : static const JSJitInfo enable_methodinfo = {
10411 : { (JSJitGetterOp)enable },
10412 : { prototypes::id::WebGL2RenderingContext },
10413 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10414 : JSJitInfo::Method,
10415 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10416 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10417 : false, /* isInfallible. False in setters. */
10418 : false, /* isMovable. Not relevant for setters. */
10419 : false, /* isEliminatable. Not relevant for setters. */
10420 : false, /* isAlwaysInSlot. Only relevant for getters. */
10421 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10422 : false, /* isTypedMethod. Only relevant for methods. */
10423 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10424 : };
10425 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10426 : static_assert(0 < 1, "There is no slot for us");
10427 :
10428 : static bool
10429 0 : enableVertexAttribArray(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10430 : {
10431 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10432 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.enableVertexAttribArray");
10433 : }
10434 : uint32_t arg0;
10435 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10436 0 : return false;
10437 : }
10438 0 : self->EnableVertexAttribArray(arg0);
10439 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10440 0 : args.rval().setUndefined();
10441 0 : return true;
10442 : }
10443 :
10444 : static const JSJitInfo enableVertexAttribArray_methodinfo = {
10445 : { (JSJitGetterOp)enableVertexAttribArray },
10446 : { prototypes::id::WebGL2RenderingContext },
10447 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10448 : JSJitInfo::Method,
10449 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10450 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10451 : false, /* isInfallible. False in setters. */
10452 : false, /* isMovable. Not relevant for setters. */
10453 : false, /* isEliminatable. Not relevant for setters. */
10454 : false, /* isAlwaysInSlot. Only relevant for getters. */
10455 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10456 : false, /* isTypedMethod. Only relevant for methods. */
10457 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10458 : };
10459 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10460 : static_assert(0 < 1, "There is no slot for us");
10461 :
10462 : static bool
10463 0 : finish(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10464 : {
10465 0 : self->Finish();
10466 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10467 0 : args.rval().setUndefined();
10468 0 : return true;
10469 : }
10470 :
10471 : static const JSJitInfo finish_methodinfo = {
10472 : { (JSJitGetterOp)finish },
10473 : { prototypes::id::WebGL2RenderingContext },
10474 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10475 : JSJitInfo::Method,
10476 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10477 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10478 : true, /* isInfallible. False in setters. */
10479 : false, /* isMovable. Not relevant for setters. */
10480 : false, /* isEliminatable. Not relevant for setters. */
10481 : false, /* isAlwaysInSlot. Only relevant for getters. */
10482 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10483 : false, /* isTypedMethod. Only relevant for methods. */
10484 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10485 : };
10486 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10487 : static_assert(0 < 1, "There is no slot for us");
10488 :
10489 : static bool
10490 0 : flush(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10491 : {
10492 0 : self->Flush();
10493 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10494 0 : args.rval().setUndefined();
10495 0 : return true;
10496 : }
10497 :
10498 : static const JSJitInfo flush_methodinfo = {
10499 : { (JSJitGetterOp)flush },
10500 : { prototypes::id::WebGL2RenderingContext },
10501 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10502 : JSJitInfo::Method,
10503 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10504 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10505 : true, /* isInfallible. False in setters. */
10506 : false, /* isMovable. Not relevant for setters. */
10507 : false, /* isEliminatable. Not relevant for setters. */
10508 : false, /* isAlwaysInSlot. Only relevant for getters. */
10509 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10510 : false, /* isTypedMethod. Only relevant for methods. */
10511 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10512 : };
10513 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10514 : static_assert(0 < 1, "There is no slot for us");
10515 :
10516 : static bool
10517 0 : framebufferRenderbuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10518 : {
10519 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
10520 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.framebufferRenderbuffer");
10521 : }
10522 : uint32_t arg0;
10523 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10524 0 : return false;
10525 : }
10526 : uint32_t arg1;
10527 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
10528 0 : return false;
10529 : }
10530 : uint32_t arg2;
10531 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
10532 0 : return false;
10533 : }
10534 : mozilla::WebGLRenderbuffer* arg3;
10535 0 : if (args[3].isObject()) {
10536 : {
10537 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLRenderbuffer, mozilla::WebGLRenderbuffer>(args[3], arg3);
10538 0 : if (NS_FAILED(rv)) {
10539 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 4 of WebGL2RenderingContext.framebufferRenderbuffer", "WebGLRenderbuffer");
10540 0 : return false;
10541 : }
10542 : }
10543 0 : } else if (args[3].isNullOrUndefined()) {
10544 0 : arg3 = nullptr;
10545 : } else {
10546 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 4 of WebGL2RenderingContext.framebufferRenderbuffer");
10547 0 : return false;
10548 : }
10549 0 : self->FramebufferRenderbuffer(arg0, arg1, arg2, Constify(arg3));
10550 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10551 0 : args.rval().setUndefined();
10552 0 : return true;
10553 : }
10554 :
10555 : static const JSJitInfo framebufferRenderbuffer_methodinfo = {
10556 : { (JSJitGetterOp)framebufferRenderbuffer },
10557 : { prototypes::id::WebGL2RenderingContext },
10558 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10559 : JSJitInfo::Method,
10560 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10561 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10562 : false, /* isInfallible. False in setters. */
10563 : false, /* isMovable. Not relevant for setters. */
10564 : false, /* isEliminatable. Not relevant for setters. */
10565 : false, /* isAlwaysInSlot. Only relevant for getters. */
10566 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10567 : false, /* isTypedMethod. Only relevant for methods. */
10568 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10569 : };
10570 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10571 : static_assert(0 < 1, "There is no slot for us");
10572 :
10573 : static bool
10574 0 : framebufferTexture2D(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10575 : {
10576 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
10577 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.framebufferTexture2D");
10578 : }
10579 : uint32_t arg0;
10580 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10581 0 : return false;
10582 : }
10583 : uint32_t arg1;
10584 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
10585 0 : return false;
10586 : }
10587 : uint32_t arg2;
10588 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
10589 0 : return false;
10590 : }
10591 : mozilla::WebGLTexture* arg3;
10592 0 : if (args[3].isObject()) {
10593 : {
10594 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTexture, mozilla::WebGLTexture>(args[3], arg3);
10595 0 : if (NS_FAILED(rv)) {
10596 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 4 of WebGL2RenderingContext.framebufferTexture2D", "WebGLTexture");
10597 0 : return false;
10598 : }
10599 : }
10600 0 : } else if (args[3].isNullOrUndefined()) {
10601 0 : arg3 = nullptr;
10602 : } else {
10603 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 4 of WebGL2RenderingContext.framebufferTexture2D");
10604 0 : return false;
10605 : }
10606 : int32_t arg4;
10607 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
10608 0 : return false;
10609 : }
10610 0 : self->FramebufferTexture2D(arg0, arg1, arg2, Constify(arg3), arg4);
10611 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10612 0 : args.rval().setUndefined();
10613 0 : return true;
10614 : }
10615 :
10616 : static const JSJitInfo framebufferTexture2D_methodinfo = {
10617 : { (JSJitGetterOp)framebufferTexture2D },
10618 : { prototypes::id::WebGL2RenderingContext },
10619 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10620 : JSJitInfo::Method,
10621 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10622 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10623 : false, /* isInfallible. False in setters. */
10624 : false, /* isMovable. Not relevant for setters. */
10625 : false, /* isEliminatable. Not relevant for setters. */
10626 : false, /* isAlwaysInSlot. Only relevant for getters. */
10627 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10628 : false, /* isTypedMethod. Only relevant for methods. */
10629 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10630 : };
10631 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10632 : static_assert(0 < 1, "There is no slot for us");
10633 :
10634 : static bool
10635 0 : frontFace(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10636 : {
10637 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10638 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.frontFace");
10639 : }
10640 : uint32_t arg0;
10641 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10642 0 : return false;
10643 : }
10644 0 : self->FrontFace(arg0);
10645 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10646 0 : args.rval().setUndefined();
10647 0 : return true;
10648 : }
10649 :
10650 : static const JSJitInfo frontFace_methodinfo = {
10651 : { (JSJitGetterOp)frontFace },
10652 : { prototypes::id::WebGL2RenderingContext },
10653 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10654 : JSJitInfo::Method,
10655 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10656 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10657 : false, /* isInfallible. False in setters. */
10658 : false, /* isMovable. Not relevant for setters. */
10659 : false, /* isEliminatable. Not relevant for setters. */
10660 : false, /* isAlwaysInSlot. Only relevant for getters. */
10661 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10662 : false, /* isTypedMethod. Only relevant for methods. */
10663 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10664 : };
10665 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10666 : static_assert(0 < 1, "There is no slot for us");
10667 :
10668 : static bool
10669 0 : generateMipmap(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10670 : {
10671 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10672 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.generateMipmap");
10673 : }
10674 : uint32_t arg0;
10675 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10676 0 : return false;
10677 : }
10678 0 : self->GenerateMipmap(arg0);
10679 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10680 0 : args.rval().setUndefined();
10681 0 : return true;
10682 : }
10683 :
10684 : static const JSJitInfo generateMipmap_methodinfo = {
10685 : { (JSJitGetterOp)generateMipmap },
10686 : { prototypes::id::WebGL2RenderingContext },
10687 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10688 : JSJitInfo::Method,
10689 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10690 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10691 : false, /* isInfallible. False in setters. */
10692 : false, /* isMovable. Not relevant for setters. */
10693 : false, /* isEliminatable. Not relevant for setters. */
10694 : false, /* isAlwaysInSlot. Only relevant for getters. */
10695 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10696 : false, /* isTypedMethod. Only relevant for methods. */
10697 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10698 : };
10699 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10700 : static_assert(0 < 1, "There is no slot for us");
10701 :
10702 : static bool
10703 0 : getActiveAttrib(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10704 : {
10705 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
10706 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getActiveAttrib");
10707 : }
10708 0 : NonNull<mozilla::WebGLProgram> arg0;
10709 0 : if (args[0].isObject()) {
10710 : {
10711 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
10712 0 : if (NS_FAILED(rv)) {
10713 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getActiveAttrib", "WebGLProgram");
10714 0 : return false;
10715 : }
10716 : }
10717 : } else {
10718 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getActiveAttrib");
10719 0 : return false;
10720 : }
10721 : uint32_t arg1;
10722 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
10723 0 : return false;
10724 : }
10725 0 : auto result(StrongOrRawPtr<mozilla::WebGLActiveInfo>(self->GetActiveAttrib(NonNullHelper(arg0), arg1)));
10726 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10727 : static_assert(!IsPointer<decltype(result)>::value,
10728 : "NewObject implies that we need to keep the object alive with a strong reference.");
10729 0 : if (!result) {
10730 0 : args.rval().setNull();
10731 0 : return true;
10732 : }
10733 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
10734 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
10735 0 : return false;
10736 : }
10737 0 : return true;
10738 : }
10739 :
10740 : static const JSJitInfo getActiveAttrib_methodinfo = {
10741 : { (JSJitGetterOp)getActiveAttrib },
10742 : { prototypes::id::WebGL2RenderingContext },
10743 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10744 : JSJitInfo::Method,
10745 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10746 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10747 : false, /* isInfallible. False in setters. */
10748 : false, /* isMovable. Not relevant for setters. */
10749 : false, /* isEliminatable. Not relevant for setters. */
10750 : false, /* isAlwaysInSlot. Only relevant for getters. */
10751 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10752 : false, /* isTypedMethod. Only relevant for methods. */
10753 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10754 : };
10755 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10756 : static_assert(0 < 1, "There is no slot for us");
10757 :
10758 : static bool
10759 0 : getActiveUniform(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10760 : {
10761 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
10762 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getActiveUniform");
10763 : }
10764 0 : NonNull<mozilla::WebGLProgram> arg0;
10765 0 : if (args[0].isObject()) {
10766 : {
10767 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
10768 0 : if (NS_FAILED(rv)) {
10769 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getActiveUniform", "WebGLProgram");
10770 0 : return false;
10771 : }
10772 : }
10773 : } else {
10774 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getActiveUniform");
10775 0 : return false;
10776 : }
10777 : uint32_t arg1;
10778 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
10779 0 : return false;
10780 : }
10781 0 : auto result(StrongOrRawPtr<mozilla::WebGLActiveInfo>(self->GetActiveUniform(NonNullHelper(arg0), arg1)));
10782 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10783 : static_assert(!IsPointer<decltype(result)>::value,
10784 : "NewObject implies that we need to keep the object alive with a strong reference.");
10785 0 : if (!result) {
10786 0 : args.rval().setNull();
10787 0 : return true;
10788 : }
10789 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
10790 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
10791 0 : return false;
10792 : }
10793 0 : return true;
10794 : }
10795 :
10796 : static const JSJitInfo getActiveUniform_methodinfo = {
10797 : { (JSJitGetterOp)getActiveUniform },
10798 : { prototypes::id::WebGL2RenderingContext },
10799 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10800 : JSJitInfo::Method,
10801 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10802 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10803 : false, /* isInfallible. False in setters. */
10804 : false, /* isMovable. Not relevant for setters. */
10805 : false, /* isEliminatable. Not relevant for setters. */
10806 : false, /* isAlwaysInSlot. Only relevant for getters. */
10807 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10808 : false, /* isTypedMethod. Only relevant for methods. */
10809 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10810 : };
10811 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10812 : static_assert(0 < 1, "There is no slot for us");
10813 :
10814 : static bool
10815 0 : getAttachedShaders(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10816 : {
10817 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10818 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getAttachedShaders");
10819 : }
10820 0 : NonNull<mozilla::WebGLProgram> arg0;
10821 0 : if (args[0].isObject()) {
10822 : {
10823 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
10824 0 : if (NS_FAILED(rv)) {
10825 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getAttachedShaders", "WebGLProgram");
10826 0 : return false;
10827 : }
10828 : }
10829 : } else {
10830 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getAttachedShaders");
10831 0 : return false;
10832 : }
10833 0 : Nullable<nsTArray<StrongPtrForMember<mozilla::WebGLShader>::Type>> result;
10834 0 : self->GetAttachedShaders(NonNullHelper(arg0), result);
10835 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10836 :
10837 0 : if (result.IsNull()) {
10838 0 : args.rval().setNull();
10839 0 : return true;
10840 : }
10841 :
10842 0 : uint32_t length = result.Value().Length();
10843 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
10844 0 : if (!returnArray) {
10845 0 : return false;
10846 : }
10847 : // Scope for 'tmp'
10848 : {
10849 0 : JS::Rooted<JS::Value> tmp(cx);
10850 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
10851 : // Control block to let us common up the JS_DefineElement calls when there
10852 : // are different ways to succeed at wrapping the object.
10853 : do {
10854 0 : if (!GetOrCreateDOMReflector(cx, result.Value()[sequenceIdx0], &tmp)) {
10855 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
10856 0 : return false;
10857 : }
10858 0 : break;
10859 : } while (0);
10860 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
10861 : JSPROP_ENUMERATE)) {
10862 0 : return false;
10863 : }
10864 : }
10865 : }
10866 0 : args.rval().setObject(*returnArray);
10867 0 : return true;
10868 : }
10869 :
10870 : static const JSJitInfo getAttachedShaders_methodinfo = {
10871 : { (JSJitGetterOp)getAttachedShaders },
10872 : { prototypes::id::WebGL2RenderingContext },
10873 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10874 : JSJitInfo::Method,
10875 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10876 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10877 : false, /* isInfallible. False in setters. */
10878 : false, /* isMovable. Not relevant for setters. */
10879 : false, /* isEliminatable. Not relevant for setters. */
10880 : false, /* isAlwaysInSlot. Only relevant for getters. */
10881 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10882 : false, /* isTypedMethod. Only relevant for methods. */
10883 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10884 : };
10885 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10886 : static_assert(0 < 1, "There is no slot for us");
10887 :
10888 : static bool
10889 0 : getAttribLocation(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10890 : {
10891 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
10892 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getAttribLocation");
10893 : }
10894 0 : NonNull<mozilla::WebGLProgram> arg0;
10895 0 : if (args[0].isObject()) {
10896 : {
10897 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
10898 0 : if (NS_FAILED(rv)) {
10899 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getAttribLocation", "WebGLProgram");
10900 0 : return false;
10901 : }
10902 : }
10903 : } else {
10904 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getAttribLocation");
10905 0 : return false;
10906 : }
10907 0 : binding_detail::FakeString arg1;
10908 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
10909 0 : return false;
10910 : }
10911 0 : int32_t result(self->GetAttribLocation(NonNullHelper(arg0), NonNullHelper(Constify(arg1))));
10912 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10913 0 : args.rval().setInt32(int32_t(result));
10914 0 : return true;
10915 : }
10916 :
10917 : static const JSJitInfo getAttribLocation_methodinfo = {
10918 : { (JSJitGetterOp)getAttribLocation },
10919 : { prototypes::id::WebGL2RenderingContext },
10920 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10921 : JSJitInfo::Method,
10922 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10923 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
10924 : false, /* isInfallible. False in setters. */
10925 : false, /* isMovable. Not relevant for setters. */
10926 : false, /* isEliminatable. Not relevant for setters. */
10927 : false, /* isAlwaysInSlot. Only relevant for getters. */
10928 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10929 : false, /* isTypedMethod. Only relevant for methods. */
10930 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10931 : };
10932 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10933 : static_assert(0 < 1, "There is no slot for us");
10934 :
10935 : static bool
10936 0 : getBufferParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10937 : {
10938 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
10939 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getBufferParameter");
10940 : }
10941 : uint32_t arg0;
10942 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10943 0 : return false;
10944 : }
10945 : uint32_t arg1;
10946 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
10947 0 : return false;
10948 : }
10949 0 : JS::Rooted<JS::Value> result(cx);
10950 0 : self->GetBufferParameter(cx, arg0, arg1, &result);
10951 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10952 0 : JS::ExposeValueToActiveJS(result);
10953 0 : args.rval().set(result);
10954 0 : if (!MaybeWrapValue(cx, args.rval())) {
10955 0 : return false;
10956 : }
10957 0 : return true;
10958 : }
10959 :
10960 : static const JSJitInfo getBufferParameter_methodinfo = {
10961 : { (JSJitGetterOp)getBufferParameter },
10962 : { prototypes::id::WebGL2RenderingContext },
10963 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
10964 : JSJitInfo::Method,
10965 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10966 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10967 : false, /* isInfallible. False in setters. */
10968 : false, /* isMovable. Not relevant for setters. */
10969 : false, /* isEliminatable. Not relevant for setters. */
10970 : false, /* isAlwaysInSlot. Only relevant for getters. */
10971 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10972 : false, /* isTypedMethod. Only relevant for methods. */
10973 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10974 : };
10975 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10976 : static_assert(0 < 1, "There is no slot for us");
10977 :
10978 : static bool
10979 0 : getParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
10980 : {
10981 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
10982 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getParameter");
10983 : }
10984 : uint32_t arg0;
10985 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
10986 0 : return false;
10987 : }
10988 0 : binding_detail::FastErrorResult rv;
10989 0 : JS::Rooted<JS::Value> result(cx);
10990 0 : self->GetParameter(cx, arg0, &result, rv);
10991 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
10992 0 : return false;
10993 : }
10994 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10995 0 : JS::ExposeValueToActiveJS(result);
10996 0 : args.rval().set(result);
10997 0 : if (!MaybeWrapValue(cx, args.rval())) {
10998 0 : return false;
10999 : }
11000 0 : return true;
11001 : }
11002 :
11003 : static const JSJitInfo getParameter_methodinfo = {
11004 : { (JSJitGetterOp)getParameter },
11005 : { prototypes::id::WebGL2RenderingContext },
11006 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11007 : JSJitInfo::Method,
11008 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11009 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11010 : false, /* isInfallible. False in setters. */
11011 : false, /* isMovable. Not relevant for setters. */
11012 : false, /* isEliminatable. Not relevant for setters. */
11013 : false, /* isAlwaysInSlot. Only relevant for getters. */
11014 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11015 : false, /* isTypedMethod. Only relevant for methods. */
11016 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11017 : };
11018 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11019 : static_assert(0 < 1, "There is no slot for us");
11020 :
11021 : static bool
11022 0 : getError(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11023 : {
11024 0 : uint32_t result(self->GetError());
11025 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11026 0 : args.rval().setNumber(result);
11027 0 : return true;
11028 : }
11029 :
11030 : static const JSJitInfo getError_methodinfo = {
11031 : { (JSJitGetterOp)getError },
11032 : { prototypes::id::WebGL2RenderingContext },
11033 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11034 : JSJitInfo::Method,
11035 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11036 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
11037 : true, /* isInfallible. False in setters. */
11038 : false, /* isMovable. Not relevant for setters. */
11039 : false, /* isEliminatable. Not relevant for setters. */
11040 : false, /* isAlwaysInSlot. Only relevant for getters. */
11041 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11042 : false, /* isTypedMethod. Only relevant for methods. */
11043 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11044 : };
11045 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11046 : static_assert(0 < 1, "There is no slot for us");
11047 :
11048 : static bool
11049 0 : getFramebufferAttachmentParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11050 : {
11051 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
11052 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getFramebufferAttachmentParameter");
11053 : }
11054 : uint32_t arg0;
11055 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11056 0 : return false;
11057 : }
11058 : uint32_t arg1;
11059 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11060 0 : return false;
11061 : }
11062 : uint32_t arg2;
11063 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
11064 0 : return false;
11065 : }
11066 0 : binding_detail::FastErrorResult rv;
11067 0 : JS::Rooted<JS::Value> result(cx);
11068 0 : self->GetFramebufferAttachmentParameter(cx, arg0, arg1, arg2, &result, rv);
11069 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
11070 0 : return false;
11071 : }
11072 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11073 0 : JS::ExposeValueToActiveJS(result);
11074 0 : args.rval().set(result);
11075 0 : if (!MaybeWrapValue(cx, args.rval())) {
11076 0 : return false;
11077 : }
11078 0 : return true;
11079 : }
11080 :
11081 : static const JSJitInfo getFramebufferAttachmentParameter_methodinfo = {
11082 : { (JSJitGetterOp)getFramebufferAttachmentParameter },
11083 : { prototypes::id::WebGL2RenderingContext },
11084 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11085 : JSJitInfo::Method,
11086 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11087 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11088 : false, /* isInfallible. False in setters. */
11089 : false, /* isMovable. Not relevant for setters. */
11090 : false, /* isEliminatable. Not relevant for setters. */
11091 : false, /* isAlwaysInSlot. Only relevant for getters. */
11092 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11093 : false, /* isTypedMethod. Only relevant for methods. */
11094 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11095 : };
11096 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11097 : static_assert(0 < 1, "There is no slot for us");
11098 :
11099 : static bool
11100 0 : getProgramParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11101 : {
11102 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11103 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getProgramParameter");
11104 : }
11105 0 : NonNull<mozilla::WebGLProgram> arg0;
11106 0 : if (args[0].isObject()) {
11107 : {
11108 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
11109 0 : if (NS_FAILED(rv)) {
11110 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getProgramParameter", "WebGLProgram");
11111 0 : return false;
11112 : }
11113 : }
11114 : } else {
11115 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getProgramParameter");
11116 0 : return false;
11117 : }
11118 : uint32_t arg1;
11119 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11120 0 : return false;
11121 : }
11122 0 : JS::Rooted<JS::Value> result(cx);
11123 0 : self->GetProgramParameter(cx, NonNullHelper(arg0), arg1, &result);
11124 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11125 0 : JS::ExposeValueToActiveJS(result);
11126 0 : args.rval().set(result);
11127 0 : if (!MaybeWrapValue(cx, args.rval())) {
11128 0 : return false;
11129 : }
11130 0 : return true;
11131 : }
11132 :
11133 : static const JSJitInfo getProgramParameter_methodinfo = {
11134 : { (JSJitGetterOp)getProgramParameter },
11135 : { prototypes::id::WebGL2RenderingContext },
11136 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11137 : JSJitInfo::Method,
11138 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11139 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11140 : false, /* isInfallible. False in setters. */
11141 : false, /* isMovable. Not relevant for setters. */
11142 : false, /* isEliminatable. Not relevant for setters. */
11143 : false, /* isAlwaysInSlot. Only relevant for getters. */
11144 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11145 : false, /* isTypedMethod. Only relevant for methods. */
11146 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11147 : };
11148 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11149 : static_assert(0 < 1, "There is no slot for us");
11150 :
11151 : static bool
11152 0 : getProgramInfoLog(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11153 : {
11154 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11155 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getProgramInfoLog");
11156 : }
11157 0 : NonNull<mozilla::WebGLProgram> arg0;
11158 0 : if (args[0].isObject()) {
11159 : {
11160 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
11161 0 : if (NS_FAILED(rv)) {
11162 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getProgramInfoLog", "WebGLProgram");
11163 0 : return false;
11164 : }
11165 : }
11166 : } else {
11167 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getProgramInfoLog");
11168 0 : return false;
11169 : }
11170 0 : DOMString result;
11171 0 : self->GetProgramInfoLog(NonNullHelper(arg0), result);
11172 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11173 0 : if (!xpc::StringToJsval(cx, result, args.rval())) {
11174 0 : return false;
11175 : }
11176 0 : return true;
11177 : }
11178 :
11179 : static const JSJitInfo getProgramInfoLog_methodinfo = {
11180 : { (JSJitGetterOp)getProgramInfoLog },
11181 : { prototypes::id::WebGL2RenderingContext },
11182 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11183 : JSJitInfo::Method,
11184 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11185 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11186 : false, /* isInfallible. False in setters. */
11187 : false, /* isMovable. Not relevant for setters. */
11188 : false, /* isEliminatable. Not relevant for setters. */
11189 : false, /* isAlwaysInSlot. Only relevant for getters. */
11190 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11191 : false, /* isTypedMethod. Only relevant for methods. */
11192 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11193 : };
11194 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11195 : static_assert(0 < 1, "There is no slot for us");
11196 :
11197 : static bool
11198 0 : getRenderbufferParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11199 : {
11200 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11201 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getRenderbufferParameter");
11202 : }
11203 : uint32_t arg0;
11204 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11205 0 : return false;
11206 : }
11207 : uint32_t arg1;
11208 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11209 0 : return false;
11210 : }
11211 0 : JS::Rooted<JS::Value> result(cx);
11212 0 : self->GetRenderbufferParameter(cx, arg0, arg1, &result);
11213 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11214 0 : JS::ExposeValueToActiveJS(result);
11215 0 : args.rval().set(result);
11216 0 : if (!MaybeWrapValue(cx, args.rval())) {
11217 0 : return false;
11218 : }
11219 0 : return true;
11220 : }
11221 :
11222 : static const JSJitInfo getRenderbufferParameter_methodinfo = {
11223 : { (JSJitGetterOp)getRenderbufferParameter },
11224 : { prototypes::id::WebGL2RenderingContext },
11225 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11226 : JSJitInfo::Method,
11227 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11228 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11229 : false, /* isInfallible. False in setters. */
11230 : false, /* isMovable. Not relevant for setters. */
11231 : false, /* isEliminatable. Not relevant for setters. */
11232 : false, /* isAlwaysInSlot. Only relevant for getters. */
11233 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11234 : false, /* isTypedMethod. Only relevant for methods. */
11235 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11236 : };
11237 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11238 : static_assert(0 < 1, "There is no slot for us");
11239 :
11240 : static bool
11241 0 : getShaderParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11242 : {
11243 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11244 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getShaderParameter");
11245 : }
11246 0 : NonNull<mozilla::WebGLShader> arg0;
11247 0 : if (args[0].isObject()) {
11248 : {
11249 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
11250 0 : if (NS_FAILED(rv)) {
11251 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getShaderParameter", "WebGLShader");
11252 0 : return false;
11253 : }
11254 : }
11255 : } else {
11256 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getShaderParameter");
11257 0 : return false;
11258 : }
11259 : uint32_t arg1;
11260 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11261 0 : return false;
11262 : }
11263 0 : JS::Rooted<JS::Value> result(cx);
11264 0 : self->GetShaderParameter(cx, NonNullHelper(arg0), arg1, &result);
11265 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11266 0 : JS::ExposeValueToActiveJS(result);
11267 0 : args.rval().set(result);
11268 0 : if (!MaybeWrapValue(cx, args.rval())) {
11269 0 : return false;
11270 : }
11271 0 : return true;
11272 : }
11273 :
11274 : static const JSJitInfo getShaderParameter_methodinfo = {
11275 : { (JSJitGetterOp)getShaderParameter },
11276 : { prototypes::id::WebGL2RenderingContext },
11277 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11278 : JSJitInfo::Method,
11279 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11280 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11281 : false, /* isInfallible. False in setters. */
11282 : false, /* isMovable. Not relevant for setters. */
11283 : false, /* isEliminatable. Not relevant for setters. */
11284 : false, /* isAlwaysInSlot. Only relevant for getters. */
11285 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11286 : false, /* isTypedMethod. Only relevant for methods. */
11287 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11288 : };
11289 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11290 : static_assert(0 < 1, "There is no slot for us");
11291 :
11292 : static bool
11293 0 : getShaderPrecisionFormat(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11294 : {
11295 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11296 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getShaderPrecisionFormat");
11297 : }
11298 : uint32_t arg0;
11299 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11300 0 : return false;
11301 : }
11302 : uint32_t arg1;
11303 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11304 0 : return false;
11305 : }
11306 0 : auto result(StrongOrRawPtr<mozilla::WebGLShaderPrecisionFormat>(self->GetShaderPrecisionFormat(arg0, arg1)));
11307 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11308 : static_assert(!IsPointer<decltype(result)>::value,
11309 : "NewObject implies that we need to keep the object alive with a strong reference.");
11310 0 : if (!result) {
11311 0 : args.rval().setNull();
11312 0 : return true;
11313 : }
11314 0 : if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
11315 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
11316 0 : return false;
11317 : }
11318 0 : return true;
11319 : }
11320 :
11321 : static const JSJitInfo getShaderPrecisionFormat_methodinfo = {
11322 : { (JSJitGetterOp)getShaderPrecisionFormat },
11323 : { prototypes::id::WebGL2RenderingContext },
11324 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11325 : JSJitInfo::Method,
11326 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11327 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11328 : false, /* isInfallible. False in setters. */
11329 : false, /* isMovable. Not relevant for setters. */
11330 : false, /* isEliminatable. Not relevant for setters. */
11331 : false, /* isAlwaysInSlot. Only relevant for getters. */
11332 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11333 : false, /* isTypedMethod. Only relevant for methods. */
11334 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11335 : };
11336 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11337 : static_assert(0 < 1, "There is no slot for us");
11338 :
11339 : static bool
11340 0 : getShaderInfoLog(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11341 : {
11342 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11343 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getShaderInfoLog");
11344 : }
11345 0 : NonNull<mozilla::WebGLShader> arg0;
11346 0 : if (args[0].isObject()) {
11347 : {
11348 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
11349 0 : if (NS_FAILED(rv)) {
11350 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getShaderInfoLog", "WebGLShader");
11351 0 : return false;
11352 : }
11353 : }
11354 : } else {
11355 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getShaderInfoLog");
11356 0 : return false;
11357 : }
11358 0 : DOMString result;
11359 0 : self->GetShaderInfoLog(NonNullHelper(arg0), result);
11360 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11361 0 : if (!xpc::StringToJsval(cx, result, args.rval())) {
11362 0 : return false;
11363 : }
11364 0 : return true;
11365 : }
11366 :
11367 : static const JSJitInfo getShaderInfoLog_methodinfo = {
11368 : { (JSJitGetterOp)getShaderInfoLog },
11369 : { prototypes::id::WebGL2RenderingContext },
11370 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11371 : JSJitInfo::Method,
11372 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11373 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11374 : false, /* isInfallible. False in setters. */
11375 : false, /* isMovable. Not relevant for setters. */
11376 : false, /* isEliminatable. Not relevant for setters. */
11377 : false, /* isAlwaysInSlot. Only relevant for getters. */
11378 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11379 : false, /* isTypedMethod. Only relevant for methods. */
11380 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11381 : };
11382 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11383 : static_assert(0 < 1, "There is no slot for us");
11384 :
11385 : static bool
11386 0 : getShaderSource(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11387 : {
11388 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11389 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getShaderSource");
11390 : }
11391 0 : NonNull<mozilla::WebGLShader> arg0;
11392 0 : if (args[0].isObject()) {
11393 : {
11394 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
11395 0 : if (NS_FAILED(rv)) {
11396 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getShaderSource", "WebGLShader");
11397 0 : return false;
11398 : }
11399 : }
11400 : } else {
11401 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getShaderSource");
11402 0 : return false;
11403 : }
11404 0 : DOMString result;
11405 0 : self->GetShaderSource(NonNullHelper(arg0), result);
11406 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11407 0 : if (!xpc::StringToJsval(cx, result, args.rval())) {
11408 0 : return false;
11409 : }
11410 0 : return true;
11411 : }
11412 :
11413 : static const JSJitInfo getShaderSource_methodinfo = {
11414 : { (JSJitGetterOp)getShaderSource },
11415 : { prototypes::id::WebGL2RenderingContext },
11416 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11417 : JSJitInfo::Method,
11418 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11419 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11420 : false, /* isInfallible. False in setters. */
11421 : false, /* isMovable. Not relevant for setters. */
11422 : false, /* isEliminatable. Not relevant for setters. */
11423 : false, /* isAlwaysInSlot. Only relevant for getters. */
11424 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11425 : false, /* isTypedMethod. Only relevant for methods. */
11426 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11427 : };
11428 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11429 : static_assert(0 < 1, "There is no slot for us");
11430 :
11431 : static bool
11432 0 : getTexParameter(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11433 : {
11434 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11435 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getTexParameter");
11436 : }
11437 : uint32_t arg0;
11438 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11439 0 : return false;
11440 : }
11441 : uint32_t arg1;
11442 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11443 0 : return false;
11444 : }
11445 0 : JS::Rooted<JS::Value> result(cx);
11446 0 : self->GetTexParameter(cx, arg0, arg1, &result);
11447 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11448 0 : JS::ExposeValueToActiveJS(result);
11449 0 : args.rval().set(result);
11450 0 : if (!MaybeWrapValue(cx, args.rval())) {
11451 0 : return false;
11452 : }
11453 0 : return true;
11454 : }
11455 :
11456 : static const JSJitInfo getTexParameter_methodinfo = {
11457 : { (JSJitGetterOp)getTexParameter },
11458 : { prototypes::id::WebGL2RenderingContext },
11459 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11460 : JSJitInfo::Method,
11461 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11462 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11463 : false, /* isInfallible. False in setters. */
11464 : false, /* isMovable. Not relevant for setters. */
11465 : false, /* isEliminatable. Not relevant for setters. */
11466 : false, /* isAlwaysInSlot. Only relevant for getters. */
11467 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11468 : false, /* isTypedMethod. Only relevant for methods. */
11469 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11470 : };
11471 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11472 : static_assert(0 < 1, "There is no slot for us");
11473 :
11474 : static bool
11475 0 : getUniform(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11476 : {
11477 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11478 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getUniform");
11479 : }
11480 0 : NonNull<mozilla::WebGLProgram> arg0;
11481 0 : if (args[0].isObject()) {
11482 : {
11483 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
11484 0 : if (NS_FAILED(rv)) {
11485 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getUniform", "WebGLProgram");
11486 0 : return false;
11487 : }
11488 : }
11489 : } else {
11490 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getUniform");
11491 0 : return false;
11492 : }
11493 0 : NonNull<mozilla::WebGLUniformLocation> arg1;
11494 0 : if (args[1].isObject()) {
11495 : {
11496 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[1], arg1);
11497 0 : if (NS_FAILED(rv)) {
11498 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of WebGL2RenderingContext.getUniform", "WebGLUniformLocation");
11499 0 : return false;
11500 : }
11501 : }
11502 : } else {
11503 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of WebGL2RenderingContext.getUniform");
11504 0 : return false;
11505 : }
11506 0 : JS::Rooted<JS::Value> result(cx);
11507 0 : self->GetUniform(cx, NonNullHelper(arg0), NonNullHelper(arg1), &result);
11508 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11509 0 : JS::ExposeValueToActiveJS(result);
11510 0 : args.rval().set(result);
11511 0 : if (!MaybeWrapValue(cx, args.rval())) {
11512 0 : return false;
11513 : }
11514 0 : return true;
11515 : }
11516 :
11517 : static const JSJitInfo getUniform_methodinfo = {
11518 : { (JSJitGetterOp)getUniform },
11519 : { prototypes::id::WebGL2RenderingContext },
11520 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11521 : JSJitInfo::Method,
11522 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11523 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11524 : false, /* isInfallible. False in setters. */
11525 : false, /* isMovable. Not relevant for setters. */
11526 : false, /* isEliminatable. Not relevant for setters. */
11527 : false, /* isAlwaysInSlot. Only relevant for getters. */
11528 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11529 : false, /* isTypedMethod. Only relevant for methods. */
11530 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11531 : };
11532 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11533 : static_assert(0 < 1, "There is no slot for us");
11534 :
11535 : static bool
11536 0 : getUniformLocation(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11537 : {
11538 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11539 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getUniformLocation");
11540 : }
11541 0 : NonNull<mozilla::WebGLProgram> arg0;
11542 0 : if (args[0].isObject()) {
11543 : {
11544 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
11545 0 : if (NS_FAILED(rv)) {
11546 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.getUniformLocation", "WebGLProgram");
11547 0 : return false;
11548 : }
11549 : }
11550 : } else {
11551 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.getUniformLocation");
11552 0 : return false;
11553 : }
11554 0 : binding_detail::FakeString arg1;
11555 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
11556 0 : return false;
11557 : }
11558 0 : auto result(StrongOrRawPtr<mozilla::WebGLUniformLocation>(self->GetUniformLocation(NonNullHelper(arg0), NonNullHelper(Constify(arg1)))));
11559 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11560 : static_assert(!IsPointer<decltype(result)>::value,
11561 : "NewObject implies that we need to keep the object alive with a strong reference.");
11562 0 : if (!result) {
11563 0 : args.rval().setNull();
11564 0 : return true;
11565 : }
11566 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
11567 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
11568 0 : return false;
11569 : }
11570 0 : return true;
11571 : }
11572 :
11573 : static const JSJitInfo getUniformLocation_methodinfo = {
11574 : { (JSJitGetterOp)getUniformLocation },
11575 : { prototypes::id::WebGL2RenderingContext },
11576 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11577 : JSJitInfo::Method,
11578 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11579 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11580 : false, /* isInfallible. False in setters. */
11581 : false, /* isMovable. Not relevant for setters. */
11582 : false, /* isEliminatable. Not relevant for setters. */
11583 : false, /* isAlwaysInSlot. Only relevant for getters. */
11584 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11585 : false, /* isTypedMethod. Only relevant for methods. */
11586 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11587 : };
11588 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11589 : static_assert(0 < 1, "There is no slot for us");
11590 :
11591 : static bool
11592 0 : getVertexAttrib(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11593 : {
11594 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11595 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getVertexAttrib");
11596 : }
11597 : uint32_t arg0;
11598 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11599 0 : return false;
11600 : }
11601 : uint32_t arg1;
11602 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11603 0 : return false;
11604 : }
11605 0 : binding_detail::FastErrorResult rv;
11606 0 : JS::Rooted<JS::Value> result(cx);
11607 0 : self->GetVertexAttrib(cx, arg0, arg1, &result, rv);
11608 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
11609 0 : return false;
11610 : }
11611 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11612 0 : JS::ExposeValueToActiveJS(result);
11613 0 : args.rval().set(result);
11614 0 : if (!MaybeWrapValue(cx, args.rval())) {
11615 0 : return false;
11616 : }
11617 0 : return true;
11618 : }
11619 :
11620 : static const JSJitInfo getVertexAttrib_methodinfo = {
11621 : { (JSJitGetterOp)getVertexAttrib },
11622 : { prototypes::id::WebGL2RenderingContext },
11623 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11624 : JSJitInfo::Method,
11625 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11626 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11627 : false, /* isInfallible. False in setters. */
11628 : false, /* isMovable. Not relevant for setters. */
11629 : false, /* isEliminatable. Not relevant for setters. */
11630 : false, /* isAlwaysInSlot. Only relevant for getters. */
11631 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11632 : false, /* isTypedMethod. Only relevant for methods. */
11633 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11634 : };
11635 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11636 : static_assert(0 < 1, "There is no slot for us");
11637 :
11638 : static bool
11639 0 : getVertexAttribOffset(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11640 : {
11641 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11642 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.getVertexAttribOffset");
11643 : }
11644 : uint32_t arg0;
11645 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11646 0 : return false;
11647 : }
11648 : uint32_t arg1;
11649 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11650 0 : return false;
11651 : }
11652 0 : int64_t result(self->GetVertexAttribOffset(arg0, arg1));
11653 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11654 0 : args.rval().set(JS_NumberValue(double(result)));
11655 0 : return true;
11656 : }
11657 :
11658 : static const JSJitInfo getVertexAttribOffset_methodinfo = {
11659 : { (JSJitGetterOp)getVertexAttribOffset },
11660 : { prototypes::id::WebGL2RenderingContext },
11661 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11662 : JSJitInfo::Method,
11663 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11664 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
11665 : false, /* isInfallible. False in setters. */
11666 : false, /* isMovable. Not relevant for setters. */
11667 : false, /* isEliminatable. Not relevant for setters. */
11668 : false, /* isAlwaysInSlot. Only relevant for getters. */
11669 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11670 : false, /* isTypedMethod. Only relevant for methods. */
11671 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11672 : };
11673 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11674 : static_assert(0 < 1, "There is no slot for us");
11675 :
11676 : static bool
11677 0 : hint(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11678 : {
11679 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
11680 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.hint");
11681 : }
11682 : uint32_t arg0;
11683 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11684 0 : return false;
11685 : }
11686 : uint32_t arg1;
11687 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
11688 0 : return false;
11689 : }
11690 0 : self->Hint(arg0, arg1);
11691 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11692 0 : args.rval().setUndefined();
11693 0 : return true;
11694 : }
11695 :
11696 : static const JSJitInfo hint_methodinfo = {
11697 : { (JSJitGetterOp)hint },
11698 : { prototypes::id::WebGL2RenderingContext },
11699 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11700 : JSJitInfo::Method,
11701 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11702 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11703 : false, /* isInfallible. False in setters. */
11704 : false, /* isMovable. Not relevant for setters. */
11705 : false, /* isEliminatable. Not relevant for setters. */
11706 : false, /* isAlwaysInSlot. Only relevant for getters. */
11707 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11708 : false, /* isTypedMethod. Only relevant for methods. */
11709 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11710 : };
11711 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11712 : static_assert(0 < 1, "There is no slot for us");
11713 :
11714 : static bool
11715 0 : isBuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11716 : {
11717 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11718 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isBuffer");
11719 : }
11720 : mozilla::WebGLBuffer* arg0;
11721 0 : if (args[0].isObject()) {
11722 : {
11723 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLBuffer, mozilla::WebGLBuffer>(args[0], arg0);
11724 0 : if (NS_FAILED(rv)) {
11725 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isBuffer", "WebGLBuffer");
11726 0 : return false;
11727 : }
11728 : }
11729 0 : } else if (args[0].isNullOrUndefined()) {
11730 0 : arg0 = nullptr;
11731 : } else {
11732 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isBuffer");
11733 0 : return false;
11734 : }
11735 0 : bool result(self->IsBuffer(Constify(arg0)));
11736 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11737 0 : args.rval().setBoolean(result);
11738 0 : return true;
11739 : }
11740 :
11741 : static const JSJitInfo isBuffer_methodinfo = {
11742 : { (JSJitGetterOp)isBuffer },
11743 : { prototypes::id::WebGL2RenderingContext },
11744 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11745 : JSJitInfo::Method,
11746 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11747 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
11748 : false, /* isInfallible. False in setters. */
11749 : false, /* isMovable. Not relevant for setters. */
11750 : false, /* isEliminatable. Not relevant for setters. */
11751 : false, /* isAlwaysInSlot. Only relevant for getters. */
11752 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11753 : false, /* isTypedMethod. Only relevant for methods. */
11754 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11755 : };
11756 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11757 : static_assert(0 < 1, "There is no slot for us");
11758 :
11759 : static bool
11760 0 : isEnabled(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11761 : {
11762 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11763 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isEnabled");
11764 : }
11765 : uint32_t arg0;
11766 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
11767 0 : return false;
11768 : }
11769 0 : bool result(self->IsEnabled(arg0));
11770 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11771 0 : args.rval().setBoolean(result);
11772 0 : return true;
11773 : }
11774 :
11775 : static const JSJitInfo isEnabled_methodinfo = {
11776 : { (JSJitGetterOp)isEnabled },
11777 : { prototypes::id::WebGL2RenderingContext },
11778 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11779 : JSJitInfo::Method,
11780 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11781 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
11782 : false, /* isInfallible. False in setters. */
11783 : false, /* isMovable. Not relevant for setters. */
11784 : false, /* isEliminatable. Not relevant for setters. */
11785 : false, /* isAlwaysInSlot. Only relevant for getters. */
11786 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11787 : false, /* isTypedMethod. Only relevant for methods. */
11788 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11789 : };
11790 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11791 : static_assert(0 < 1, "There is no slot for us");
11792 :
11793 : static bool
11794 0 : isFramebuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11795 : {
11796 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11797 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isFramebuffer");
11798 : }
11799 : mozilla::WebGLFramebuffer* arg0;
11800 0 : if (args[0].isObject()) {
11801 : {
11802 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLFramebuffer, mozilla::WebGLFramebuffer>(args[0], arg0);
11803 0 : if (NS_FAILED(rv)) {
11804 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isFramebuffer", "WebGLFramebuffer");
11805 0 : return false;
11806 : }
11807 : }
11808 0 : } else if (args[0].isNullOrUndefined()) {
11809 0 : arg0 = nullptr;
11810 : } else {
11811 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isFramebuffer");
11812 0 : return false;
11813 : }
11814 0 : bool result(self->IsFramebuffer(Constify(arg0)));
11815 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11816 0 : args.rval().setBoolean(result);
11817 0 : return true;
11818 : }
11819 :
11820 : static const JSJitInfo isFramebuffer_methodinfo = {
11821 : { (JSJitGetterOp)isFramebuffer },
11822 : { prototypes::id::WebGL2RenderingContext },
11823 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11824 : JSJitInfo::Method,
11825 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11826 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
11827 : false, /* isInfallible. False in setters. */
11828 : false, /* isMovable. Not relevant for setters. */
11829 : false, /* isEliminatable. Not relevant for setters. */
11830 : false, /* isAlwaysInSlot. Only relevant for getters. */
11831 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11832 : false, /* isTypedMethod. Only relevant for methods. */
11833 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11834 : };
11835 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11836 : static_assert(0 < 1, "There is no slot for us");
11837 :
11838 : static bool
11839 0 : isProgram(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11840 : {
11841 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11842 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isProgram");
11843 : }
11844 : mozilla::WebGLProgram* arg0;
11845 0 : if (args[0].isObject()) {
11846 : {
11847 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
11848 0 : if (NS_FAILED(rv)) {
11849 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isProgram", "WebGLProgram");
11850 0 : return false;
11851 : }
11852 : }
11853 0 : } else if (args[0].isNullOrUndefined()) {
11854 0 : arg0 = nullptr;
11855 : } else {
11856 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isProgram");
11857 0 : return false;
11858 : }
11859 0 : bool result(self->IsProgram(Constify(arg0)));
11860 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11861 0 : args.rval().setBoolean(result);
11862 0 : return true;
11863 : }
11864 :
11865 : static const JSJitInfo isProgram_methodinfo = {
11866 : { (JSJitGetterOp)isProgram },
11867 : { prototypes::id::WebGL2RenderingContext },
11868 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11869 : JSJitInfo::Method,
11870 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11871 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
11872 : false, /* isInfallible. False in setters. */
11873 : false, /* isMovable. Not relevant for setters. */
11874 : false, /* isEliminatable. Not relevant for setters. */
11875 : false, /* isAlwaysInSlot. Only relevant for getters. */
11876 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11877 : false, /* isTypedMethod. Only relevant for methods. */
11878 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11879 : };
11880 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11881 : static_assert(0 < 1, "There is no slot for us");
11882 :
11883 : static bool
11884 0 : isRenderbuffer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11885 : {
11886 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11887 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isRenderbuffer");
11888 : }
11889 : mozilla::WebGLRenderbuffer* arg0;
11890 0 : if (args[0].isObject()) {
11891 : {
11892 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLRenderbuffer, mozilla::WebGLRenderbuffer>(args[0], arg0);
11893 0 : if (NS_FAILED(rv)) {
11894 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isRenderbuffer", "WebGLRenderbuffer");
11895 0 : return false;
11896 : }
11897 : }
11898 0 : } else if (args[0].isNullOrUndefined()) {
11899 0 : arg0 = nullptr;
11900 : } else {
11901 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isRenderbuffer");
11902 0 : return false;
11903 : }
11904 0 : bool result(self->IsRenderbuffer(Constify(arg0)));
11905 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11906 0 : args.rval().setBoolean(result);
11907 0 : return true;
11908 : }
11909 :
11910 : static const JSJitInfo isRenderbuffer_methodinfo = {
11911 : { (JSJitGetterOp)isRenderbuffer },
11912 : { prototypes::id::WebGL2RenderingContext },
11913 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11914 : JSJitInfo::Method,
11915 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11916 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
11917 : false, /* isInfallible. False in setters. */
11918 : false, /* isMovable. Not relevant for setters. */
11919 : false, /* isEliminatable. Not relevant for setters. */
11920 : false, /* isAlwaysInSlot. Only relevant for getters. */
11921 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11922 : false, /* isTypedMethod. Only relevant for methods. */
11923 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11924 : };
11925 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11926 : static_assert(0 < 1, "There is no slot for us");
11927 :
11928 : static bool
11929 0 : isShader(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11930 : {
11931 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11932 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isShader");
11933 : }
11934 : mozilla::WebGLShader* arg0;
11935 0 : if (args[0].isObject()) {
11936 : {
11937 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
11938 0 : if (NS_FAILED(rv)) {
11939 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isShader", "WebGLShader");
11940 0 : return false;
11941 : }
11942 : }
11943 0 : } else if (args[0].isNullOrUndefined()) {
11944 0 : arg0 = nullptr;
11945 : } else {
11946 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isShader");
11947 0 : return false;
11948 : }
11949 0 : bool result(self->IsShader(Constify(arg0)));
11950 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11951 0 : args.rval().setBoolean(result);
11952 0 : return true;
11953 : }
11954 :
11955 : static const JSJitInfo isShader_methodinfo = {
11956 : { (JSJitGetterOp)isShader },
11957 : { prototypes::id::WebGL2RenderingContext },
11958 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
11959 : JSJitInfo::Method,
11960 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11961 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
11962 : false, /* isInfallible. False in setters. */
11963 : false, /* isMovable. Not relevant for setters. */
11964 : false, /* isEliminatable. Not relevant for setters. */
11965 : false, /* isAlwaysInSlot. Only relevant for getters. */
11966 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11967 : false, /* isTypedMethod. Only relevant for methods. */
11968 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11969 : };
11970 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11971 : static_assert(0 < 1, "There is no slot for us");
11972 :
11973 : static bool
11974 0 : isTexture(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
11975 : {
11976 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
11977 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.isTexture");
11978 : }
11979 : mozilla::WebGLTexture* arg0;
11980 0 : if (args[0].isObject()) {
11981 : {
11982 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLTexture, mozilla::WebGLTexture>(args[0], arg0);
11983 0 : if (NS_FAILED(rv)) {
11984 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.isTexture", "WebGLTexture");
11985 0 : return false;
11986 : }
11987 : }
11988 0 : } else if (args[0].isNullOrUndefined()) {
11989 0 : arg0 = nullptr;
11990 : } else {
11991 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.isTexture");
11992 0 : return false;
11993 : }
11994 0 : bool result(self->IsTexture(Constify(arg0)));
11995 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11996 0 : args.rval().setBoolean(result);
11997 0 : return true;
11998 : }
11999 :
12000 : static const JSJitInfo isTexture_methodinfo = {
12001 : { (JSJitGetterOp)isTexture },
12002 : { prototypes::id::WebGL2RenderingContext },
12003 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12004 : JSJitInfo::Method,
12005 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12006 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
12007 : false, /* isInfallible. False in setters. */
12008 : false, /* isMovable. Not relevant for setters. */
12009 : false, /* isEliminatable. Not relevant for setters. */
12010 : false, /* isAlwaysInSlot. Only relevant for getters. */
12011 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12012 : false, /* isTypedMethod. Only relevant for methods. */
12013 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12014 : };
12015 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12016 : static_assert(0 < 1, "There is no slot for us");
12017 :
12018 : static bool
12019 0 : lineWidth(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12020 : {
12021 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
12022 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.lineWidth");
12023 : }
12024 : float arg0;
12025 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
12026 0 : return false;
12027 : }
12028 0 : self->LineWidth(arg0);
12029 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12030 0 : args.rval().setUndefined();
12031 0 : return true;
12032 : }
12033 :
12034 : static const JSJitInfo lineWidth_methodinfo = {
12035 : { (JSJitGetterOp)lineWidth },
12036 : { prototypes::id::WebGL2RenderingContext },
12037 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12038 : JSJitInfo::Method,
12039 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12040 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12041 : false, /* isInfallible. False in setters. */
12042 : false, /* isMovable. Not relevant for setters. */
12043 : false, /* isEliminatable. Not relevant for setters. */
12044 : false, /* isAlwaysInSlot. Only relevant for getters. */
12045 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12046 : false, /* isTypedMethod. Only relevant for methods. */
12047 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12048 : };
12049 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12050 : static_assert(0 < 1, "There is no slot for us");
12051 :
12052 : static bool
12053 0 : linkProgram(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12054 : {
12055 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
12056 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.linkProgram");
12057 : }
12058 0 : NonNull<mozilla::WebGLProgram> arg0;
12059 0 : if (args[0].isObject()) {
12060 : {
12061 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
12062 0 : if (NS_FAILED(rv)) {
12063 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.linkProgram", "WebGLProgram");
12064 0 : return false;
12065 : }
12066 : }
12067 : } else {
12068 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.linkProgram");
12069 0 : return false;
12070 : }
12071 0 : self->LinkProgram(NonNullHelper(arg0));
12072 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12073 0 : args.rval().setUndefined();
12074 0 : return true;
12075 : }
12076 :
12077 : static const JSJitInfo linkProgram_methodinfo = {
12078 : { (JSJitGetterOp)linkProgram },
12079 : { prototypes::id::WebGL2RenderingContext },
12080 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12081 : JSJitInfo::Method,
12082 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12083 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12084 : false, /* isInfallible. False in setters. */
12085 : false, /* isMovable. Not relevant for setters. */
12086 : false, /* isEliminatable. Not relevant for setters. */
12087 : false, /* isAlwaysInSlot. Only relevant for getters. */
12088 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12089 : false, /* isTypedMethod. Only relevant for methods. */
12090 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12091 : };
12092 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12093 : static_assert(0 < 1, "There is no slot for us");
12094 :
12095 : static bool
12096 0 : pixelStorei(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12097 : {
12098 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12099 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.pixelStorei");
12100 : }
12101 : uint32_t arg0;
12102 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12103 0 : return false;
12104 : }
12105 : int32_t arg1;
12106 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
12107 0 : return false;
12108 : }
12109 0 : self->PixelStorei(arg0, arg1);
12110 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12111 0 : args.rval().setUndefined();
12112 0 : return true;
12113 : }
12114 :
12115 : static const JSJitInfo pixelStorei_methodinfo = {
12116 : { (JSJitGetterOp)pixelStorei },
12117 : { prototypes::id::WebGL2RenderingContext },
12118 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12119 : JSJitInfo::Method,
12120 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12121 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12122 : false, /* isInfallible. False in setters. */
12123 : false, /* isMovable. Not relevant for setters. */
12124 : false, /* isEliminatable. Not relevant for setters. */
12125 : false, /* isAlwaysInSlot. Only relevant for getters. */
12126 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12127 : false, /* isTypedMethod. Only relevant for methods. */
12128 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12129 : };
12130 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12131 : static_assert(0 < 1, "There is no slot for us");
12132 :
12133 : static bool
12134 0 : polygonOffset(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12135 : {
12136 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12137 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.polygonOffset");
12138 : }
12139 : float arg0;
12140 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
12141 0 : return false;
12142 : }
12143 : float arg1;
12144 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
12145 0 : return false;
12146 : }
12147 0 : self->PolygonOffset(arg0, arg1);
12148 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12149 0 : args.rval().setUndefined();
12150 0 : return true;
12151 : }
12152 :
12153 : static const JSJitInfo polygonOffset_methodinfo = {
12154 : { (JSJitGetterOp)polygonOffset },
12155 : { prototypes::id::WebGL2RenderingContext },
12156 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12157 : JSJitInfo::Method,
12158 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12159 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12160 : false, /* isInfallible. False in setters. */
12161 : false, /* isMovable. Not relevant for setters. */
12162 : false, /* isEliminatable. Not relevant for setters. */
12163 : false, /* isAlwaysInSlot. Only relevant for getters. */
12164 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12165 : false, /* isTypedMethod. Only relevant for methods. */
12166 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12167 : };
12168 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12169 : static_assert(0 < 1, "There is no slot for us");
12170 :
12171 : static bool
12172 0 : renderbufferStorage(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12173 : {
12174 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
12175 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.renderbufferStorage");
12176 : }
12177 : uint32_t arg0;
12178 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12179 0 : return false;
12180 : }
12181 : uint32_t arg1;
12182 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12183 0 : return false;
12184 : }
12185 : int32_t arg2;
12186 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
12187 0 : return false;
12188 : }
12189 : int32_t arg3;
12190 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
12191 0 : return false;
12192 : }
12193 0 : self->RenderbufferStorage(arg0, arg1, arg2, arg3);
12194 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12195 0 : args.rval().setUndefined();
12196 0 : return true;
12197 : }
12198 :
12199 : static const JSJitInfo renderbufferStorage_methodinfo = {
12200 : { (JSJitGetterOp)renderbufferStorage },
12201 : { prototypes::id::WebGL2RenderingContext },
12202 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12203 : JSJitInfo::Method,
12204 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12205 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12206 : false, /* isInfallible. False in setters. */
12207 : false, /* isMovable. Not relevant for setters. */
12208 : false, /* isEliminatable. Not relevant for setters. */
12209 : false, /* isAlwaysInSlot. Only relevant for getters. */
12210 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12211 : false, /* isTypedMethod. Only relevant for methods. */
12212 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12213 : };
12214 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12215 : static_assert(0 < 1, "There is no slot for us");
12216 :
12217 : static bool
12218 0 : sampleCoverage(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12219 : {
12220 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12221 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.sampleCoverage");
12222 : }
12223 : float arg0;
12224 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
12225 0 : return false;
12226 : }
12227 : bool arg1;
12228 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
12229 0 : return false;
12230 : }
12231 0 : self->SampleCoverage(arg0, arg1);
12232 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12233 0 : args.rval().setUndefined();
12234 0 : return true;
12235 : }
12236 :
12237 : static const JSJitInfo sampleCoverage_methodinfo = {
12238 : { (JSJitGetterOp)sampleCoverage },
12239 : { prototypes::id::WebGL2RenderingContext },
12240 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12241 : JSJitInfo::Method,
12242 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12243 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12244 : false, /* isInfallible. False in setters. */
12245 : false, /* isMovable. Not relevant for setters. */
12246 : false, /* isEliminatable. Not relevant for setters. */
12247 : false, /* isAlwaysInSlot. Only relevant for getters. */
12248 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12249 : false, /* isTypedMethod. Only relevant for methods. */
12250 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12251 : };
12252 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12253 : static_assert(0 < 1, "There is no slot for us");
12254 :
12255 : static bool
12256 0 : scissor(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12257 : {
12258 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
12259 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.scissor");
12260 : }
12261 : int32_t arg0;
12262 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
12263 0 : return false;
12264 : }
12265 : int32_t arg1;
12266 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
12267 0 : return false;
12268 : }
12269 : int32_t arg2;
12270 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
12271 0 : return false;
12272 : }
12273 : int32_t arg3;
12274 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
12275 0 : return false;
12276 : }
12277 0 : self->Scissor(arg0, arg1, arg2, arg3);
12278 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12279 0 : args.rval().setUndefined();
12280 0 : return true;
12281 : }
12282 :
12283 : static const JSJitInfo scissor_methodinfo = {
12284 : { (JSJitGetterOp)scissor },
12285 : { prototypes::id::WebGL2RenderingContext },
12286 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12287 : JSJitInfo::Method,
12288 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12289 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12290 : false, /* isInfallible. False in setters. */
12291 : false, /* isMovable. Not relevant for setters. */
12292 : false, /* isEliminatable. Not relevant for setters. */
12293 : false, /* isAlwaysInSlot. Only relevant for getters. */
12294 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12295 : false, /* isTypedMethod. Only relevant for methods. */
12296 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12297 : };
12298 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12299 : static_assert(0 < 1, "There is no slot for us");
12300 :
12301 : static bool
12302 0 : shaderSource(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12303 : {
12304 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12305 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.shaderSource");
12306 : }
12307 0 : NonNull<mozilla::WebGLShader> arg0;
12308 0 : if (args[0].isObject()) {
12309 : {
12310 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLShader, mozilla::WebGLShader>(args[0], arg0);
12311 0 : if (NS_FAILED(rv)) {
12312 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.shaderSource", "WebGLShader");
12313 0 : return false;
12314 : }
12315 : }
12316 : } else {
12317 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.shaderSource");
12318 0 : return false;
12319 : }
12320 0 : binding_detail::FakeString arg1;
12321 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
12322 0 : return false;
12323 : }
12324 0 : self->ShaderSource(NonNullHelper(arg0), NonNullHelper(Constify(arg1)));
12325 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12326 0 : args.rval().setUndefined();
12327 0 : return true;
12328 : }
12329 :
12330 : static const JSJitInfo shaderSource_methodinfo = {
12331 : { (JSJitGetterOp)shaderSource },
12332 : { prototypes::id::WebGL2RenderingContext },
12333 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12334 : JSJitInfo::Method,
12335 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12336 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12337 : false, /* isInfallible. False in setters. */
12338 : false, /* isMovable. Not relevant for setters. */
12339 : false, /* isEliminatable. Not relevant for setters. */
12340 : false, /* isAlwaysInSlot. Only relevant for getters. */
12341 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12342 : false, /* isTypedMethod. Only relevant for methods. */
12343 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12344 : };
12345 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12346 : static_assert(0 < 1, "There is no slot for us");
12347 :
12348 : static bool
12349 0 : stencilFunc(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12350 : {
12351 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
12352 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.stencilFunc");
12353 : }
12354 : uint32_t arg0;
12355 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12356 0 : return false;
12357 : }
12358 : int32_t arg1;
12359 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
12360 0 : return false;
12361 : }
12362 : uint32_t arg2;
12363 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
12364 0 : return false;
12365 : }
12366 0 : self->StencilFunc(arg0, arg1, arg2);
12367 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12368 0 : args.rval().setUndefined();
12369 0 : return true;
12370 : }
12371 :
12372 : static const JSJitInfo stencilFunc_methodinfo = {
12373 : { (JSJitGetterOp)stencilFunc },
12374 : { prototypes::id::WebGL2RenderingContext },
12375 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12376 : JSJitInfo::Method,
12377 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12378 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12379 : false, /* isInfallible. False in setters. */
12380 : false, /* isMovable. Not relevant for setters. */
12381 : false, /* isEliminatable. Not relevant for setters. */
12382 : false, /* isAlwaysInSlot. Only relevant for getters. */
12383 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12384 : false, /* isTypedMethod. Only relevant for methods. */
12385 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12386 : };
12387 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12388 : static_assert(0 < 1, "There is no slot for us");
12389 :
12390 : static bool
12391 0 : stencilFuncSeparate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12392 : {
12393 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
12394 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.stencilFuncSeparate");
12395 : }
12396 : uint32_t arg0;
12397 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12398 0 : return false;
12399 : }
12400 : uint32_t arg1;
12401 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12402 0 : return false;
12403 : }
12404 : int32_t arg2;
12405 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
12406 0 : return false;
12407 : }
12408 : uint32_t arg3;
12409 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
12410 0 : return false;
12411 : }
12412 0 : self->StencilFuncSeparate(arg0, arg1, arg2, arg3);
12413 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12414 0 : args.rval().setUndefined();
12415 0 : return true;
12416 : }
12417 :
12418 : static const JSJitInfo stencilFuncSeparate_methodinfo = {
12419 : { (JSJitGetterOp)stencilFuncSeparate },
12420 : { prototypes::id::WebGL2RenderingContext },
12421 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12422 : JSJitInfo::Method,
12423 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12424 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12425 : false, /* isInfallible. False in setters. */
12426 : false, /* isMovable. Not relevant for setters. */
12427 : false, /* isEliminatable. Not relevant for setters. */
12428 : false, /* isAlwaysInSlot. Only relevant for getters. */
12429 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12430 : false, /* isTypedMethod. Only relevant for methods. */
12431 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12432 : };
12433 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12434 : static_assert(0 < 1, "There is no slot for us");
12435 :
12436 : static bool
12437 0 : stencilMask(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12438 : {
12439 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
12440 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.stencilMask");
12441 : }
12442 : uint32_t arg0;
12443 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12444 0 : return false;
12445 : }
12446 0 : self->StencilMask(arg0);
12447 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12448 0 : args.rval().setUndefined();
12449 0 : return true;
12450 : }
12451 :
12452 : static const JSJitInfo stencilMask_methodinfo = {
12453 : { (JSJitGetterOp)stencilMask },
12454 : { prototypes::id::WebGL2RenderingContext },
12455 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12456 : JSJitInfo::Method,
12457 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12458 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12459 : false, /* isInfallible. False in setters. */
12460 : false, /* isMovable. Not relevant for setters. */
12461 : false, /* isEliminatable. Not relevant for setters. */
12462 : false, /* isAlwaysInSlot. Only relevant for getters. */
12463 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12464 : false, /* isTypedMethod. Only relevant for methods. */
12465 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12466 : };
12467 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12468 : static_assert(0 < 1, "There is no slot for us");
12469 :
12470 : static bool
12471 0 : stencilMaskSeparate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12472 : {
12473 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12474 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.stencilMaskSeparate");
12475 : }
12476 : uint32_t arg0;
12477 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12478 0 : return false;
12479 : }
12480 : uint32_t arg1;
12481 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12482 0 : return false;
12483 : }
12484 0 : self->StencilMaskSeparate(arg0, arg1);
12485 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12486 0 : args.rval().setUndefined();
12487 0 : return true;
12488 : }
12489 :
12490 : static const JSJitInfo stencilMaskSeparate_methodinfo = {
12491 : { (JSJitGetterOp)stencilMaskSeparate },
12492 : { prototypes::id::WebGL2RenderingContext },
12493 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12494 : JSJitInfo::Method,
12495 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12496 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12497 : false, /* isInfallible. False in setters. */
12498 : false, /* isMovable. Not relevant for setters. */
12499 : false, /* isEliminatable. Not relevant for setters. */
12500 : false, /* isAlwaysInSlot. Only relevant for getters. */
12501 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12502 : false, /* isTypedMethod. Only relevant for methods. */
12503 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12504 : };
12505 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12506 : static_assert(0 < 1, "There is no slot for us");
12507 :
12508 : static bool
12509 0 : stencilOp(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12510 : {
12511 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
12512 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.stencilOp");
12513 : }
12514 : uint32_t arg0;
12515 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12516 0 : return false;
12517 : }
12518 : uint32_t arg1;
12519 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12520 0 : return false;
12521 : }
12522 : uint32_t arg2;
12523 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
12524 0 : return false;
12525 : }
12526 0 : self->StencilOp(arg0, arg1, arg2);
12527 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12528 0 : args.rval().setUndefined();
12529 0 : return true;
12530 : }
12531 :
12532 : static const JSJitInfo stencilOp_methodinfo = {
12533 : { (JSJitGetterOp)stencilOp },
12534 : { prototypes::id::WebGL2RenderingContext },
12535 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12536 : JSJitInfo::Method,
12537 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12538 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12539 : false, /* isInfallible. False in setters. */
12540 : false, /* isMovable. Not relevant for setters. */
12541 : false, /* isEliminatable. Not relevant for setters. */
12542 : false, /* isAlwaysInSlot. Only relevant for getters. */
12543 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12544 : false, /* isTypedMethod. Only relevant for methods. */
12545 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12546 : };
12547 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12548 : static_assert(0 < 1, "There is no slot for us");
12549 :
12550 : static bool
12551 0 : stencilOpSeparate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12552 : {
12553 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
12554 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.stencilOpSeparate");
12555 : }
12556 : uint32_t arg0;
12557 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12558 0 : return false;
12559 : }
12560 : uint32_t arg1;
12561 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12562 0 : return false;
12563 : }
12564 : uint32_t arg2;
12565 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
12566 0 : return false;
12567 : }
12568 : uint32_t arg3;
12569 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[3], &arg3)) {
12570 0 : return false;
12571 : }
12572 0 : self->StencilOpSeparate(arg0, arg1, arg2, arg3);
12573 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12574 0 : args.rval().setUndefined();
12575 0 : return true;
12576 : }
12577 :
12578 : static const JSJitInfo stencilOpSeparate_methodinfo = {
12579 : { (JSJitGetterOp)stencilOpSeparate },
12580 : { prototypes::id::WebGL2RenderingContext },
12581 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12582 : JSJitInfo::Method,
12583 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12584 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12585 : false, /* isInfallible. False in setters. */
12586 : false, /* isMovable. Not relevant for setters. */
12587 : false, /* isEliminatable. Not relevant for setters. */
12588 : false, /* isAlwaysInSlot. Only relevant for getters. */
12589 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12590 : false, /* isTypedMethod. Only relevant for methods. */
12591 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12592 : };
12593 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12594 : static_assert(0 < 1, "There is no slot for us");
12595 :
12596 : static bool
12597 0 : texParameterf(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12598 : {
12599 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
12600 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texParameterf");
12601 : }
12602 : uint32_t arg0;
12603 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12604 0 : return false;
12605 : }
12606 : uint32_t arg1;
12607 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12608 0 : return false;
12609 : }
12610 : float arg2;
12611 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
12612 0 : return false;
12613 : }
12614 0 : self->TexParameterf(arg0, arg1, arg2);
12615 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12616 0 : args.rval().setUndefined();
12617 0 : return true;
12618 : }
12619 :
12620 : static const JSJitInfo texParameterf_methodinfo = {
12621 : { (JSJitGetterOp)texParameterf },
12622 : { prototypes::id::WebGL2RenderingContext },
12623 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12624 : JSJitInfo::Method,
12625 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12626 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12627 : false, /* isInfallible. False in setters. */
12628 : false, /* isMovable. Not relevant for setters. */
12629 : false, /* isEliminatable. Not relevant for setters. */
12630 : false, /* isAlwaysInSlot. Only relevant for getters. */
12631 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12632 : false, /* isTypedMethod. Only relevant for methods. */
12633 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12634 : };
12635 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12636 : static_assert(0 < 1, "There is no slot for us");
12637 :
12638 : static bool
12639 0 : texParameteri(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12640 : {
12641 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
12642 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.texParameteri");
12643 : }
12644 : uint32_t arg0;
12645 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
12646 0 : return false;
12647 : }
12648 : uint32_t arg1;
12649 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
12650 0 : return false;
12651 : }
12652 : int32_t arg2;
12653 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
12654 0 : return false;
12655 : }
12656 0 : self->TexParameteri(arg0, arg1, arg2);
12657 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12658 0 : args.rval().setUndefined();
12659 0 : return true;
12660 : }
12661 :
12662 : static const JSJitInfo texParameteri_methodinfo = {
12663 : { (JSJitGetterOp)texParameteri },
12664 : { prototypes::id::WebGL2RenderingContext },
12665 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12666 : JSJitInfo::Method,
12667 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12668 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12669 : false, /* isInfallible. False in setters. */
12670 : false, /* isMovable. Not relevant for setters. */
12671 : false, /* isEliminatable. Not relevant for setters. */
12672 : false, /* isAlwaysInSlot. Only relevant for getters. */
12673 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12674 : false, /* isTypedMethod. Only relevant for methods. */
12675 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12676 : };
12677 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12678 : static_assert(0 < 1, "There is no slot for us");
12679 :
12680 : static bool
12681 0 : uniform1f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12682 : {
12683 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12684 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform1f");
12685 : }
12686 : mozilla::WebGLUniformLocation* arg0;
12687 0 : if (args[0].isObject()) {
12688 : {
12689 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
12690 0 : if (NS_FAILED(rv)) {
12691 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform1f", "WebGLUniformLocation");
12692 0 : return false;
12693 : }
12694 : }
12695 0 : } else if (args[0].isNullOrUndefined()) {
12696 0 : arg0 = nullptr;
12697 : } else {
12698 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform1f");
12699 0 : return false;
12700 : }
12701 : float arg1;
12702 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
12703 0 : return false;
12704 : }
12705 0 : self->Uniform1f(Constify(arg0), arg1);
12706 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12707 0 : args.rval().setUndefined();
12708 0 : return true;
12709 : }
12710 :
12711 : static const JSJitInfo uniform1f_methodinfo = {
12712 : { (JSJitGetterOp)uniform1f },
12713 : { prototypes::id::WebGL2RenderingContext },
12714 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12715 : JSJitInfo::Method,
12716 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12717 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12718 : false, /* isInfallible. False in setters. */
12719 : false, /* isMovable. Not relevant for setters. */
12720 : false, /* isEliminatable. Not relevant for setters. */
12721 : false, /* isAlwaysInSlot. Only relevant for getters. */
12722 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12723 : false, /* isTypedMethod. Only relevant for methods. */
12724 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12725 : };
12726 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12727 : static_assert(0 < 1, "There is no slot for us");
12728 :
12729 : static bool
12730 0 : uniform2f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12731 : {
12732 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
12733 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform2f");
12734 : }
12735 : mozilla::WebGLUniformLocation* arg0;
12736 0 : if (args[0].isObject()) {
12737 : {
12738 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
12739 0 : if (NS_FAILED(rv)) {
12740 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform2f", "WebGLUniformLocation");
12741 0 : return false;
12742 : }
12743 : }
12744 0 : } else if (args[0].isNullOrUndefined()) {
12745 0 : arg0 = nullptr;
12746 : } else {
12747 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform2f");
12748 0 : return false;
12749 : }
12750 : float arg1;
12751 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
12752 0 : return false;
12753 : }
12754 : float arg2;
12755 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
12756 0 : return false;
12757 : }
12758 0 : self->Uniform2f(Constify(arg0), arg1, arg2);
12759 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12760 0 : args.rval().setUndefined();
12761 0 : return true;
12762 : }
12763 :
12764 : static const JSJitInfo uniform2f_methodinfo = {
12765 : { (JSJitGetterOp)uniform2f },
12766 : { prototypes::id::WebGL2RenderingContext },
12767 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12768 : JSJitInfo::Method,
12769 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12770 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12771 : false, /* isInfallible. False in setters. */
12772 : false, /* isMovable. Not relevant for setters. */
12773 : false, /* isEliminatable. Not relevant for setters. */
12774 : false, /* isAlwaysInSlot. Only relevant for getters. */
12775 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12776 : false, /* isTypedMethod. Only relevant for methods. */
12777 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12778 : };
12779 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12780 : static_assert(0 < 1, "There is no slot for us");
12781 :
12782 : static bool
12783 0 : uniform3f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12784 : {
12785 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
12786 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform3f");
12787 : }
12788 : mozilla::WebGLUniformLocation* arg0;
12789 0 : if (args[0].isObject()) {
12790 : {
12791 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
12792 0 : if (NS_FAILED(rv)) {
12793 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform3f", "WebGLUniformLocation");
12794 0 : return false;
12795 : }
12796 : }
12797 0 : } else if (args[0].isNullOrUndefined()) {
12798 0 : arg0 = nullptr;
12799 : } else {
12800 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform3f");
12801 0 : return false;
12802 : }
12803 : float arg1;
12804 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
12805 0 : return false;
12806 : }
12807 : float arg2;
12808 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
12809 0 : return false;
12810 : }
12811 : float arg3;
12812 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[3], &arg3)) {
12813 0 : return false;
12814 : }
12815 0 : self->Uniform3f(Constify(arg0), arg1, arg2, arg3);
12816 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12817 0 : args.rval().setUndefined();
12818 0 : return true;
12819 : }
12820 :
12821 : static const JSJitInfo uniform3f_methodinfo = {
12822 : { (JSJitGetterOp)uniform3f },
12823 : { prototypes::id::WebGL2RenderingContext },
12824 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12825 : JSJitInfo::Method,
12826 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12827 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12828 : false, /* isInfallible. False in setters. */
12829 : false, /* isMovable. Not relevant for setters. */
12830 : false, /* isEliminatable. Not relevant for setters. */
12831 : false, /* isAlwaysInSlot. Only relevant for getters. */
12832 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12833 : false, /* isTypedMethod. Only relevant for methods. */
12834 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12835 : };
12836 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12837 : static_assert(0 < 1, "There is no slot for us");
12838 :
12839 : static bool
12840 0 : uniform4f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12841 : {
12842 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
12843 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform4f");
12844 : }
12845 : mozilla::WebGLUniformLocation* arg0;
12846 0 : if (args[0].isObject()) {
12847 : {
12848 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
12849 0 : if (NS_FAILED(rv)) {
12850 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform4f", "WebGLUniformLocation");
12851 0 : return false;
12852 : }
12853 : }
12854 0 : } else if (args[0].isNullOrUndefined()) {
12855 0 : arg0 = nullptr;
12856 : } else {
12857 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform4f");
12858 0 : return false;
12859 : }
12860 : float arg1;
12861 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
12862 0 : return false;
12863 : }
12864 : float arg2;
12865 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
12866 0 : return false;
12867 : }
12868 : float arg3;
12869 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[3], &arg3)) {
12870 0 : return false;
12871 : }
12872 : float arg4;
12873 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[4], &arg4)) {
12874 0 : return false;
12875 : }
12876 0 : self->Uniform4f(Constify(arg0), arg1, arg2, arg3, arg4);
12877 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12878 0 : args.rval().setUndefined();
12879 0 : return true;
12880 : }
12881 :
12882 : static const JSJitInfo uniform4f_methodinfo = {
12883 : { (JSJitGetterOp)uniform4f },
12884 : { prototypes::id::WebGL2RenderingContext },
12885 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12886 : JSJitInfo::Method,
12887 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12888 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12889 : false, /* isInfallible. False in setters. */
12890 : false, /* isMovable. Not relevant for setters. */
12891 : false, /* isEliminatable. Not relevant for setters. */
12892 : false, /* isAlwaysInSlot. Only relevant for getters. */
12893 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12894 : false, /* isTypedMethod. Only relevant for methods. */
12895 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12896 : };
12897 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12898 : static_assert(0 < 1, "There is no slot for us");
12899 :
12900 : static bool
12901 0 : uniform1i(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12902 : {
12903 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12904 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform1i");
12905 : }
12906 : mozilla::WebGLUniformLocation* arg0;
12907 0 : if (args[0].isObject()) {
12908 : {
12909 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
12910 0 : if (NS_FAILED(rv)) {
12911 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform1i", "WebGLUniformLocation");
12912 0 : return false;
12913 : }
12914 : }
12915 0 : } else if (args[0].isNullOrUndefined()) {
12916 0 : arg0 = nullptr;
12917 : } else {
12918 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform1i");
12919 0 : return false;
12920 : }
12921 : int32_t arg1;
12922 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
12923 0 : return false;
12924 : }
12925 0 : self->Uniform1i(Constify(arg0), arg1);
12926 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12927 0 : args.rval().setUndefined();
12928 0 : return true;
12929 : }
12930 :
12931 : static const JSJitInfo uniform1i_methodinfo = {
12932 : { (JSJitGetterOp)uniform1i },
12933 : { prototypes::id::WebGL2RenderingContext },
12934 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12935 : JSJitInfo::Method,
12936 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12937 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12938 : false, /* isInfallible. False in setters. */
12939 : false, /* isMovable. Not relevant for setters. */
12940 : false, /* isEliminatable. Not relevant for setters. */
12941 : false, /* isAlwaysInSlot. Only relevant for getters. */
12942 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12943 : false, /* isTypedMethod. Only relevant for methods. */
12944 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12945 : };
12946 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12947 : static_assert(0 < 1, "There is no slot for us");
12948 :
12949 : static bool
12950 0 : uniform2i(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
12951 : {
12952 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
12953 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform2i");
12954 : }
12955 : mozilla::WebGLUniformLocation* arg0;
12956 0 : if (args[0].isObject()) {
12957 : {
12958 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
12959 0 : if (NS_FAILED(rv)) {
12960 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform2i", "WebGLUniformLocation");
12961 0 : return false;
12962 : }
12963 : }
12964 0 : } else if (args[0].isNullOrUndefined()) {
12965 0 : arg0 = nullptr;
12966 : } else {
12967 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform2i");
12968 0 : return false;
12969 : }
12970 : int32_t arg1;
12971 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
12972 0 : return false;
12973 : }
12974 : int32_t arg2;
12975 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
12976 0 : return false;
12977 : }
12978 0 : self->Uniform2i(Constify(arg0), arg1, arg2);
12979 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12980 0 : args.rval().setUndefined();
12981 0 : return true;
12982 : }
12983 :
12984 : static const JSJitInfo uniform2i_methodinfo = {
12985 : { (JSJitGetterOp)uniform2i },
12986 : { prototypes::id::WebGL2RenderingContext },
12987 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
12988 : JSJitInfo::Method,
12989 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12990 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12991 : false, /* isInfallible. False in setters. */
12992 : false, /* isMovable. Not relevant for setters. */
12993 : false, /* isEliminatable. Not relevant for setters. */
12994 : false, /* isAlwaysInSlot. Only relevant for getters. */
12995 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12996 : false, /* isTypedMethod. Only relevant for methods. */
12997 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12998 : };
12999 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13000 : static_assert(0 < 1, "There is no slot for us");
13001 :
13002 : static bool
13003 0 : uniform3i(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13004 : {
13005 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
13006 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform3i");
13007 : }
13008 : mozilla::WebGLUniformLocation* arg0;
13009 0 : if (args[0].isObject()) {
13010 : {
13011 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
13012 0 : if (NS_FAILED(rv)) {
13013 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform3i", "WebGLUniformLocation");
13014 0 : return false;
13015 : }
13016 : }
13017 0 : } else if (args[0].isNullOrUndefined()) {
13018 0 : arg0 = nullptr;
13019 : } else {
13020 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform3i");
13021 0 : return false;
13022 : }
13023 : int32_t arg1;
13024 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
13025 0 : return false;
13026 : }
13027 : int32_t arg2;
13028 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
13029 0 : return false;
13030 : }
13031 : int32_t arg3;
13032 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
13033 0 : return false;
13034 : }
13035 0 : self->Uniform3i(Constify(arg0), arg1, arg2, arg3);
13036 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13037 0 : args.rval().setUndefined();
13038 0 : return true;
13039 : }
13040 :
13041 : static const JSJitInfo uniform3i_methodinfo = {
13042 : { (JSJitGetterOp)uniform3i },
13043 : { prototypes::id::WebGL2RenderingContext },
13044 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13045 : JSJitInfo::Method,
13046 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13047 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13048 : false, /* isInfallible. False in setters. */
13049 : false, /* isMovable. Not relevant for setters. */
13050 : false, /* isEliminatable. Not relevant for setters. */
13051 : false, /* isAlwaysInSlot. Only relevant for getters. */
13052 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13053 : false, /* isTypedMethod. Only relevant for methods. */
13054 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13055 : };
13056 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13057 : static_assert(0 < 1, "There is no slot for us");
13058 :
13059 : static bool
13060 0 : uniform4i(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13061 : {
13062 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
13063 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.uniform4i");
13064 : }
13065 : mozilla::WebGLUniformLocation* arg0;
13066 0 : if (args[0].isObject()) {
13067 : {
13068 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLUniformLocation, mozilla::WebGLUniformLocation>(args[0], arg0);
13069 0 : if (NS_FAILED(rv)) {
13070 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.uniform4i", "WebGLUniformLocation");
13071 0 : return false;
13072 : }
13073 : }
13074 0 : } else if (args[0].isNullOrUndefined()) {
13075 0 : arg0 = nullptr;
13076 : } else {
13077 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.uniform4i");
13078 0 : return false;
13079 : }
13080 : int32_t arg1;
13081 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
13082 0 : return false;
13083 : }
13084 : int32_t arg2;
13085 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
13086 0 : return false;
13087 : }
13088 : int32_t arg3;
13089 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
13090 0 : return false;
13091 : }
13092 : int32_t arg4;
13093 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
13094 0 : return false;
13095 : }
13096 0 : self->Uniform4i(Constify(arg0), arg1, arg2, arg3, arg4);
13097 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13098 0 : args.rval().setUndefined();
13099 0 : return true;
13100 : }
13101 :
13102 : static const JSJitInfo uniform4i_methodinfo = {
13103 : { (JSJitGetterOp)uniform4i },
13104 : { prototypes::id::WebGL2RenderingContext },
13105 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13106 : JSJitInfo::Method,
13107 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13108 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13109 : false, /* isInfallible. False in setters. */
13110 : false, /* isMovable. Not relevant for setters. */
13111 : false, /* isEliminatable. Not relevant for setters. */
13112 : false, /* isAlwaysInSlot. Only relevant for getters. */
13113 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13114 : false, /* isTypedMethod. Only relevant for methods. */
13115 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13116 : };
13117 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13118 : static_assert(0 < 1, "There is no slot for us");
13119 :
13120 : static bool
13121 0 : useProgram(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13122 : {
13123 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
13124 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.useProgram");
13125 : }
13126 : mozilla::WebGLProgram* arg0;
13127 0 : if (args[0].isObject()) {
13128 : {
13129 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
13130 0 : if (NS_FAILED(rv)) {
13131 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.useProgram", "WebGLProgram");
13132 0 : return false;
13133 : }
13134 : }
13135 0 : } else if (args[0].isNullOrUndefined()) {
13136 0 : arg0 = nullptr;
13137 : } else {
13138 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.useProgram");
13139 0 : return false;
13140 : }
13141 0 : self->UseProgram(Constify(arg0));
13142 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13143 0 : args.rval().setUndefined();
13144 0 : return true;
13145 : }
13146 :
13147 : static const JSJitInfo useProgram_methodinfo = {
13148 : { (JSJitGetterOp)useProgram },
13149 : { prototypes::id::WebGL2RenderingContext },
13150 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13151 : JSJitInfo::Method,
13152 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13153 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13154 : false, /* isInfallible. False in setters. */
13155 : false, /* isMovable. Not relevant for setters. */
13156 : false, /* isEliminatable. Not relevant for setters. */
13157 : false, /* isAlwaysInSlot. Only relevant for getters. */
13158 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13159 : false, /* isTypedMethod. Only relevant for methods. */
13160 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13161 : };
13162 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13163 : static_assert(0 < 1, "There is no slot for us");
13164 :
13165 : static bool
13166 0 : validateProgram(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13167 : {
13168 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
13169 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.validateProgram");
13170 : }
13171 0 : NonNull<mozilla::WebGLProgram> arg0;
13172 0 : if (args[0].isObject()) {
13173 : {
13174 0 : nsresult rv = UnwrapObject<prototypes::id::WebGLProgram, mozilla::WebGLProgram>(args[0], arg0);
13175 0 : if (NS_FAILED(rv)) {
13176 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of WebGL2RenderingContext.validateProgram", "WebGLProgram");
13177 0 : return false;
13178 : }
13179 : }
13180 : } else {
13181 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of WebGL2RenderingContext.validateProgram");
13182 0 : return false;
13183 : }
13184 0 : self->ValidateProgram(NonNullHelper(arg0));
13185 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13186 0 : args.rval().setUndefined();
13187 0 : return true;
13188 : }
13189 :
13190 : static const JSJitInfo validateProgram_methodinfo = {
13191 : { (JSJitGetterOp)validateProgram },
13192 : { prototypes::id::WebGL2RenderingContext },
13193 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13194 : JSJitInfo::Method,
13195 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13196 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13197 : false, /* isInfallible. False in setters. */
13198 : false, /* isMovable. Not relevant for setters. */
13199 : false, /* isEliminatable. Not relevant for setters. */
13200 : false, /* isAlwaysInSlot. Only relevant for getters. */
13201 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13202 : false, /* isTypedMethod. Only relevant for methods. */
13203 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13204 : };
13205 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13206 : static_assert(0 < 1, "There is no slot for us");
13207 :
13208 : static bool
13209 0 : vertexAttrib1f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13210 : {
13211 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
13212 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib1f");
13213 : }
13214 : uint32_t arg0;
13215 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13216 0 : return false;
13217 : }
13218 : float arg1;
13219 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
13220 0 : return false;
13221 : }
13222 0 : self->VertexAttrib1f(arg0, arg1);
13223 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13224 0 : args.rval().setUndefined();
13225 0 : return true;
13226 : }
13227 :
13228 : static const JSJitInfo vertexAttrib1f_methodinfo = {
13229 : { (JSJitGetterOp)vertexAttrib1f },
13230 : { prototypes::id::WebGL2RenderingContext },
13231 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13232 : JSJitInfo::Method,
13233 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13234 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13235 : false, /* isInfallible. False in setters. */
13236 : false, /* isMovable. Not relevant for setters. */
13237 : false, /* isEliminatable. Not relevant for setters. */
13238 : false, /* isAlwaysInSlot. Only relevant for getters. */
13239 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13240 : false, /* isTypedMethod. Only relevant for methods. */
13241 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13242 : };
13243 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13244 : static_assert(0 < 1, "There is no slot for us");
13245 :
13246 : static bool
13247 0 : vertexAttrib1fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13248 : {
13249 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
13250 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib1fv");
13251 : }
13252 : uint32_t arg0;
13253 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13254 0 : return false;
13255 : }
13256 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
13257 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
13258 : {
13259 0 : bool done = false, failed = false, tryNext;
13260 0 : if (args[1].isObject()) {
13261 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
13262 :
13263 0 : if (!done) {
13264 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
13265 : }
13266 : }
13267 0 : if (failed) {
13268 0 : return false;
13269 : }
13270 0 : if (!done) {
13271 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.vertexAttrib1fv", "Float32Array, UnrestrictedFloatSequence");
13272 0 : return false;
13273 : }
13274 : }
13275 0 : self->VertexAttrib1fv(arg0, Constify(arg1));
13276 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13277 0 : args.rval().setUndefined();
13278 0 : return true;
13279 : }
13280 :
13281 : static const JSJitInfo vertexAttrib1fv_methodinfo = {
13282 : { (JSJitGetterOp)vertexAttrib1fv },
13283 : { prototypes::id::WebGL2RenderingContext },
13284 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13285 : JSJitInfo::Method,
13286 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13287 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13288 : false, /* isInfallible. False in setters. */
13289 : false, /* isMovable. Not relevant for setters. */
13290 : false, /* isEliminatable. Not relevant for setters. */
13291 : false, /* isAlwaysInSlot. Only relevant for getters. */
13292 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13293 : false, /* isTypedMethod. Only relevant for methods. */
13294 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13295 : };
13296 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13297 : static_assert(0 < 1, "There is no slot for us");
13298 :
13299 : static bool
13300 0 : vertexAttrib2f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13301 : {
13302 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
13303 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib2f");
13304 : }
13305 : uint32_t arg0;
13306 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13307 0 : return false;
13308 : }
13309 : float arg1;
13310 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
13311 0 : return false;
13312 : }
13313 : float arg2;
13314 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
13315 0 : return false;
13316 : }
13317 0 : self->VertexAttrib2f(arg0, arg1, arg2);
13318 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13319 0 : args.rval().setUndefined();
13320 0 : return true;
13321 : }
13322 :
13323 : static const JSJitInfo vertexAttrib2f_methodinfo = {
13324 : { (JSJitGetterOp)vertexAttrib2f },
13325 : { prototypes::id::WebGL2RenderingContext },
13326 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13327 : JSJitInfo::Method,
13328 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13329 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13330 : false, /* isInfallible. False in setters. */
13331 : false, /* isMovable. Not relevant for setters. */
13332 : false, /* isEliminatable. Not relevant for setters. */
13333 : false, /* isAlwaysInSlot. Only relevant for getters. */
13334 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13335 : false, /* isTypedMethod. Only relevant for methods. */
13336 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13337 : };
13338 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13339 : static_assert(0 < 1, "There is no slot for us");
13340 :
13341 : static bool
13342 0 : vertexAttrib2fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13343 : {
13344 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
13345 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib2fv");
13346 : }
13347 : uint32_t arg0;
13348 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13349 0 : return false;
13350 : }
13351 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
13352 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
13353 : {
13354 0 : bool done = false, failed = false, tryNext;
13355 0 : if (args[1].isObject()) {
13356 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
13357 :
13358 0 : if (!done) {
13359 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
13360 : }
13361 : }
13362 0 : if (failed) {
13363 0 : return false;
13364 : }
13365 0 : if (!done) {
13366 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.vertexAttrib2fv", "Float32Array, UnrestrictedFloatSequence");
13367 0 : return false;
13368 : }
13369 : }
13370 0 : self->VertexAttrib2fv(arg0, Constify(arg1));
13371 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13372 0 : args.rval().setUndefined();
13373 0 : return true;
13374 : }
13375 :
13376 : static const JSJitInfo vertexAttrib2fv_methodinfo = {
13377 : { (JSJitGetterOp)vertexAttrib2fv },
13378 : { prototypes::id::WebGL2RenderingContext },
13379 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13380 : JSJitInfo::Method,
13381 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13382 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13383 : false, /* isInfallible. False in setters. */
13384 : false, /* isMovable. Not relevant for setters. */
13385 : false, /* isEliminatable. Not relevant for setters. */
13386 : false, /* isAlwaysInSlot. Only relevant for getters. */
13387 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13388 : false, /* isTypedMethod. Only relevant for methods. */
13389 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13390 : };
13391 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13392 : static_assert(0 < 1, "There is no slot for us");
13393 :
13394 : static bool
13395 0 : vertexAttrib3f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13396 : {
13397 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
13398 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib3f");
13399 : }
13400 : uint32_t arg0;
13401 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13402 0 : return false;
13403 : }
13404 : float arg1;
13405 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
13406 0 : return false;
13407 : }
13408 : float arg2;
13409 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
13410 0 : return false;
13411 : }
13412 : float arg3;
13413 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[3], &arg3)) {
13414 0 : return false;
13415 : }
13416 0 : self->VertexAttrib3f(arg0, arg1, arg2, arg3);
13417 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13418 0 : args.rval().setUndefined();
13419 0 : return true;
13420 : }
13421 :
13422 : static const JSJitInfo vertexAttrib3f_methodinfo = {
13423 : { (JSJitGetterOp)vertexAttrib3f },
13424 : { prototypes::id::WebGL2RenderingContext },
13425 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13426 : JSJitInfo::Method,
13427 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13428 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13429 : false, /* isInfallible. False in setters. */
13430 : false, /* isMovable. Not relevant for setters. */
13431 : false, /* isEliminatable. Not relevant for setters. */
13432 : false, /* isAlwaysInSlot. Only relevant for getters. */
13433 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13434 : false, /* isTypedMethod. Only relevant for methods. */
13435 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13436 : };
13437 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13438 : static_assert(0 < 1, "There is no slot for us");
13439 :
13440 : static bool
13441 0 : vertexAttrib3fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13442 : {
13443 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
13444 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib3fv");
13445 : }
13446 : uint32_t arg0;
13447 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13448 0 : return false;
13449 : }
13450 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
13451 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
13452 : {
13453 0 : bool done = false, failed = false, tryNext;
13454 0 : if (args[1].isObject()) {
13455 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
13456 :
13457 0 : if (!done) {
13458 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
13459 : }
13460 : }
13461 0 : if (failed) {
13462 0 : return false;
13463 : }
13464 0 : if (!done) {
13465 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.vertexAttrib3fv", "Float32Array, UnrestrictedFloatSequence");
13466 0 : return false;
13467 : }
13468 : }
13469 0 : self->VertexAttrib3fv(arg0, Constify(arg1));
13470 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13471 0 : args.rval().setUndefined();
13472 0 : return true;
13473 : }
13474 :
13475 : static const JSJitInfo vertexAttrib3fv_methodinfo = {
13476 : { (JSJitGetterOp)vertexAttrib3fv },
13477 : { prototypes::id::WebGL2RenderingContext },
13478 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13479 : JSJitInfo::Method,
13480 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13481 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13482 : false, /* isInfallible. False in setters. */
13483 : false, /* isMovable. Not relevant for setters. */
13484 : false, /* isEliminatable. Not relevant for setters. */
13485 : false, /* isAlwaysInSlot. Only relevant for getters. */
13486 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13487 : false, /* isTypedMethod. Only relevant for methods. */
13488 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13489 : };
13490 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13491 : static_assert(0 < 1, "There is no slot for us");
13492 :
13493 : static bool
13494 0 : vertexAttrib4f(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13495 : {
13496 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
13497 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib4f");
13498 : }
13499 : uint32_t arg0;
13500 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13501 0 : return false;
13502 : }
13503 : float arg1;
13504 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
13505 0 : return false;
13506 : }
13507 : float arg2;
13508 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[2], &arg2)) {
13509 0 : return false;
13510 : }
13511 : float arg3;
13512 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[3], &arg3)) {
13513 0 : return false;
13514 : }
13515 : float arg4;
13516 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[4], &arg4)) {
13517 0 : return false;
13518 : }
13519 0 : self->VertexAttrib4f(arg0, arg1, arg2, arg3, arg4);
13520 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13521 0 : args.rval().setUndefined();
13522 0 : return true;
13523 : }
13524 :
13525 : static const JSJitInfo vertexAttrib4f_methodinfo = {
13526 : { (JSJitGetterOp)vertexAttrib4f },
13527 : { prototypes::id::WebGL2RenderingContext },
13528 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13529 : JSJitInfo::Method,
13530 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13531 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13532 : false, /* isInfallible. False in setters. */
13533 : false, /* isMovable. Not relevant for setters. */
13534 : false, /* isEliminatable. Not relevant for setters. */
13535 : false, /* isAlwaysInSlot. Only relevant for getters. */
13536 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13537 : false, /* isTypedMethod. Only relevant for methods. */
13538 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13539 : };
13540 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13541 : static_assert(0 < 1, "There is no slot for us");
13542 :
13543 : static bool
13544 0 : vertexAttrib4fv(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13545 : {
13546 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
13547 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttrib4fv");
13548 : }
13549 : uint32_t arg0;
13550 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13551 0 : return false;
13552 : }
13553 0 : Float32ArrayOrUnrestrictedFloatSequence arg1;
13554 0 : Float32ArrayOrUnrestrictedFloatSequenceArgument arg1_holder(arg1);
13555 : {
13556 0 : bool done = false, failed = false, tryNext;
13557 0 : if (args[1].isObject()) {
13558 0 : done = (failed = !arg1_holder.TrySetToFloat32Array(cx, args[1], tryNext, false)) || !tryNext;
13559 :
13560 0 : if (!done) {
13561 0 : done = (failed = !arg1_holder.TrySetToUnrestrictedFloatSequence(cx, args[1], tryNext, false)) || !tryNext;
13562 : }
13563 : }
13564 0 : if (failed) {
13565 0 : return false;
13566 : }
13567 0 : if (!done) {
13568 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of WebGL2RenderingContext.vertexAttrib4fv", "Float32Array, UnrestrictedFloatSequence");
13569 0 : return false;
13570 : }
13571 : }
13572 0 : self->VertexAttrib4fv(arg0, Constify(arg1));
13573 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13574 0 : args.rval().setUndefined();
13575 0 : return true;
13576 : }
13577 :
13578 : static const JSJitInfo vertexAttrib4fv_methodinfo = {
13579 : { (JSJitGetterOp)vertexAttrib4fv },
13580 : { prototypes::id::WebGL2RenderingContext },
13581 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13582 : JSJitInfo::Method,
13583 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13584 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13585 : false, /* isInfallible. False in setters. */
13586 : false, /* isMovable. Not relevant for setters. */
13587 : false, /* isEliminatable. Not relevant for setters. */
13588 : false, /* isAlwaysInSlot. Only relevant for getters. */
13589 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13590 : false, /* isTypedMethod. Only relevant for methods. */
13591 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13592 : };
13593 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13594 : static_assert(0 < 1, "There is no slot for us");
13595 :
13596 : static bool
13597 0 : vertexAttribPointer(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13598 : {
13599 0 : if (MOZ_UNLIKELY(args.length() < 6)) {
13600 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.vertexAttribPointer");
13601 : }
13602 : uint32_t arg0;
13603 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], &arg0)) {
13604 0 : return false;
13605 : }
13606 : int32_t arg1;
13607 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
13608 0 : return false;
13609 : }
13610 : uint32_t arg2;
13611 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[2], &arg2)) {
13612 0 : return false;
13613 : }
13614 : bool arg3;
13615 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[3], &arg3)) {
13616 0 : return false;
13617 : }
13618 : int32_t arg4;
13619 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
13620 0 : return false;
13621 : }
13622 : int64_t arg5;
13623 0 : if (!ValueToPrimitive<int64_t, eDefault>(cx, args[5], &arg5)) {
13624 0 : return false;
13625 : }
13626 0 : self->VertexAttribPointer(arg0, arg1, arg2, arg3, arg4, arg5);
13627 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13628 0 : args.rval().setUndefined();
13629 0 : return true;
13630 : }
13631 :
13632 : static const JSJitInfo vertexAttribPointer_methodinfo = {
13633 : { (JSJitGetterOp)vertexAttribPointer },
13634 : { prototypes::id::WebGL2RenderingContext },
13635 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13636 : JSJitInfo::Method,
13637 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13638 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13639 : false, /* isInfallible. False in setters. */
13640 : false, /* isMovable. Not relevant for setters. */
13641 : false, /* isEliminatable. Not relevant for setters. */
13642 : false, /* isAlwaysInSlot. Only relevant for getters. */
13643 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13644 : false, /* isTypedMethod. Only relevant for methods. */
13645 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13646 : };
13647 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13648 : static_assert(0 < 1, "There is no slot for us");
13649 :
13650 : static bool
13651 0 : viewport(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::WebGL2Context* self, const JSJitMethodCallArgs& args)
13652 : {
13653 0 : if (MOZ_UNLIKELY(args.length() < 4)) {
13654 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "WebGL2RenderingContext.viewport");
13655 : }
13656 : int32_t arg0;
13657 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
13658 0 : return false;
13659 : }
13660 : int32_t arg1;
13661 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], &arg1)) {
13662 0 : return false;
13663 : }
13664 : int32_t arg2;
13665 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
13666 0 : return false;
13667 : }
13668 : int32_t arg3;
13669 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
13670 0 : return false;
13671 : }
13672 0 : self->Viewport(arg0, arg1, arg2, arg3);
13673 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13674 0 : args.rval().setUndefined();
13675 0 : return true;
13676 : }
13677 :
13678 : static const JSJitInfo viewport_methodinfo = {
13679 : { (JSJitGetterOp)viewport },
13680 : { prototypes::id::WebGL2RenderingContext },
13681 : { PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth },
13682 : JSJitInfo::Method,
13683 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13684 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13685 : false, /* isInfallible. False in setters. */
13686 : false, /* isMovable. Not relevant for setters. */
13687 : false, /* isEliminatable. Not relevant for setters. */
13688 : false, /* isAlwaysInSlot. Only relevant for getters. */
13689 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
13690 : false, /* isTypedMethod. Only relevant for methods. */
13691 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13692 : };
13693 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
13694 : static_assert(0 < 1, "There is no slot for us");
13695 :
13696 : static bool
13697 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
13698 : {
13699 0 : mozilla::WebGL2Context* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGL2Context>(obj);
13700 : // We don't want to preserve if we don't have a wrapper, and we
13701 : // obviously can't preserve if we're not initialized.
13702 0 : if (self && self->GetWrapperPreserveColor()) {
13703 0 : PreserveWrapper(self);
13704 : }
13705 0 : return true;
13706 : }
13707 :
13708 : static void
13709 0 : _finalize(js::FreeOp* fop, JSObject* obj)
13710 : {
13711 0 : mozilla::WebGL2Context* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGL2Context>(obj);
13712 0 : if (self) {
13713 0 : ClearWrapper(self, self, obj);
13714 0 : AddForDeferredFinalization<mozilla::WebGL2Context>(self);
13715 : }
13716 0 : }
13717 :
13718 : static void
13719 0 : _objectMoved(JSObject* obj, const JSObject* old)
13720 : {
13721 0 : mozilla::WebGL2Context* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGL2Context>(obj);
13722 0 : if (self) {
13723 0 : UpdateWrapper(self, self, obj, old);
13724 : }
13725 0 : }
13726 :
13727 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
13728 : #if defined(__clang__)
13729 : #pragma clang diagnostic push
13730 : #pragma clang diagnostic ignored "-Wmissing-braces"
13731 : #endif
13732 : static const JSFunctionSpec sMethods_specs[] = {
13733 : JS_FNSPEC("bufferData", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bufferData_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13734 : JS_FNSPEC("bufferSubData", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bufferSubData_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13735 : JS_FNSPEC("copyBufferSubData", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(©BufferSubData_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13736 : JS_FNSPEC("getBufferSubData", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getBufferSubData_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13737 : JS_FNSPEC("blitFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blitFramebuffer_methodinfo), 10, JSPROP_ENUMERATE, nullptr),
13738 : JS_FNSPEC("framebufferTextureLayer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&framebufferTextureLayer_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13739 : JS_FNSPEC("invalidateFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&invalidateFramebuffer_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13740 : JS_FNSPEC("invalidateSubFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&invalidateSubFramebuffer_methodinfo), 6, JSPROP_ENUMERATE, nullptr),
13741 : JS_FNSPEC("readBuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&readBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13742 : JS_FNSPEC("getInternalformatParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getInternalformatParameter_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13743 : JS_FNSPEC("renderbufferStorageMultisample", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&renderbufferStorageMultisample_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13744 : JS_FNSPEC("texStorage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texStorage2D_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13745 : JS_FNSPEC("texStorage3D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texStorage3D_methodinfo), 6, JSPROP_ENUMERATE, nullptr),
13746 : JS_FNSPEC("texImage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texImage2D_methodinfo), 6, JSPROP_ENUMERATE, nullptr),
13747 : JS_FNSPEC("texSubImage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texSubImage2D_methodinfo), 7, JSPROP_ENUMERATE, nullptr),
13748 : JS_FNSPEC("texImage3D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texImage3D_methodinfo), 10, JSPROP_ENUMERATE, nullptr),
13749 : JS_FNSPEC("texSubImage3D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texSubImage3D_methodinfo), 11, JSPROP_ENUMERATE, nullptr),
13750 : JS_FNSPEC("copyTexSubImage3D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(©TexSubImage3D_methodinfo), 9, JSPROP_ENUMERATE, nullptr),
13751 : JS_FNSPEC("compressedTexImage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&compressedTexImage2D_methodinfo), 7, JSPROP_ENUMERATE, nullptr),
13752 : JS_FNSPEC("compressedTexImage3D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&compressedTexImage3D_methodinfo), 8, JSPROP_ENUMERATE, nullptr),
13753 : JS_FNSPEC("compressedTexSubImage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&compressedTexSubImage2D_methodinfo), 8, JSPROP_ENUMERATE, nullptr),
13754 : JS_FNSPEC("compressedTexSubImage3D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&compressedTexSubImage3D_methodinfo), 10, JSPROP_ENUMERATE, nullptr),
13755 : JS_FNSPEC("getFragDataLocation", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getFragDataLocation_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13756 : JS_FNSPEC("uniform1ui", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform1ui_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13757 : JS_FNSPEC("uniform2ui", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform2ui_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13758 : JS_FNSPEC("uniform3ui", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform3ui_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13759 : JS_FNSPEC("uniform4ui", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform4ui_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13760 : JS_FNSPEC("uniform1fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform1fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13761 : JS_FNSPEC("uniform2fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform2fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13762 : JS_FNSPEC("uniform3fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform3fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13763 : JS_FNSPEC("uniform4fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform4fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13764 : JS_FNSPEC("uniform1iv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform1iv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13765 : JS_FNSPEC("uniform2iv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform2iv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13766 : JS_FNSPEC("uniform3iv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform3iv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13767 : JS_FNSPEC("uniform4iv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform4iv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13768 : JS_FNSPEC("uniform1uiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform1uiv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13769 : JS_FNSPEC("uniform2uiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform2uiv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13770 : JS_FNSPEC("uniform3uiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform3uiv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13771 : JS_FNSPEC("uniform4uiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform4uiv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13772 : JS_FNSPEC("uniformMatrix2fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix2fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13773 : JS_FNSPEC("uniformMatrix3x2fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix3x2fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13774 : JS_FNSPEC("uniformMatrix4x2fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix4x2fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13775 : JS_FNSPEC("uniformMatrix2x3fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix2x3fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13776 : JS_FNSPEC("uniformMatrix3fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix3fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13777 : JS_FNSPEC("uniformMatrix4x3fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix4x3fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13778 : JS_FNSPEC("uniformMatrix2x4fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix2x4fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13779 : JS_FNSPEC("uniformMatrix3x4fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix3x4fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13780 : JS_FNSPEC("uniformMatrix4fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformMatrix4fv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13781 : JS_FNSPEC("vertexAttribI4i", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribI4i_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13782 : JS_FNSPEC("vertexAttribI4iv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribI4iv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13783 : JS_FNSPEC("vertexAttribI4ui", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribI4ui_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13784 : JS_FNSPEC("vertexAttribI4uiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribI4uiv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13785 : JS_FNSPEC("vertexAttribIPointer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribIPointer_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13786 : JS_FNSPEC("vertexAttribDivisor", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribDivisor_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13787 : JS_FNSPEC("drawArraysInstanced", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&drawArraysInstanced_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13788 : JS_FNSPEC("drawElementsInstanced", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&drawElementsInstanced_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13789 : JS_FNSPEC("drawRangeElements", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&drawRangeElements_methodinfo), 6, JSPROP_ENUMERATE, nullptr),
13790 : JS_FNSPEC("readPixels", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&readPixels_methodinfo), 7, JSPROP_ENUMERATE, nullptr),
13791 : JS_FNSPEC("drawBuffers", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&drawBuffers_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13792 : JS_FNSPEC("clearBufferfv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearBufferfv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13793 : JS_FNSPEC("clearBufferiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearBufferiv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13794 : JS_FNSPEC("clearBufferuiv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearBufferuiv_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13795 : JS_FNSPEC("clearBufferfi", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearBufferfi_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13796 : JS_FNSPEC("createQuery", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createQuery_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13797 : JS_FNSPEC("deleteQuery", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteQuery_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13798 : JS_FNSPEC("isQuery", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isQuery_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13799 : JS_FNSPEC("beginQuery", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&beginQuery_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13800 : JS_FNSPEC("endQuery", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&endQuery_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13801 : JS_FNSPEC("getQuery", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getQuery_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13802 : JS_FNSPEC("getQueryParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getQueryParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13803 : JS_FNSPEC("createSampler", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createSampler_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13804 : JS_FNSPEC("deleteSampler", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteSampler_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13805 : JS_FNSPEC("isSampler", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isSampler_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13806 : JS_FNSPEC("bindSampler", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindSampler_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13807 : JS_FNSPEC("samplerParameteri", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&samplerParameteri_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13808 : JS_FNSPEC("samplerParameterf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&samplerParameterf_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13809 : JS_FNSPEC("getSamplerParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getSamplerParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13810 : JS_FNSPEC("fenceSync", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&fenceSync_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13811 : JS_FNSPEC("isSync", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isSync_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13812 : JS_FNSPEC("deleteSync", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteSync_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13813 : JS_FNSPEC("clientWaitSync", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clientWaitSync_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13814 : JS_FNSPEC("waitSync", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&waitSync_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13815 : JS_FNSPEC("getSyncParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getSyncParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13816 : JS_FNSPEC("createTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createTransformFeedback_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13817 : JS_FNSPEC("deleteTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteTransformFeedback_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13818 : JS_FNSPEC("isTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isTransformFeedback_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13819 : JS_FNSPEC("bindTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindTransformFeedback_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13820 : JS_FNSPEC("beginTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&beginTransformFeedback_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13821 : JS_FNSPEC("endTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&endTransformFeedback_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13822 : JS_FNSPEC("transformFeedbackVaryings", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&transformFeedbackVaryings_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13823 : JS_FNSPEC("getTransformFeedbackVarying", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getTransformFeedbackVarying_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13824 : JS_FNSPEC("pauseTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&pauseTransformFeedback_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13825 : JS_FNSPEC("resumeTransformFeedback", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&resumeTransformFeedback_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13826 : JS_FNSPEC("bindBufferBase", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindBufferBase_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13827 : JS_FNSPEC("bindBufferRange", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindBufferRange_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13828 : JS_FNSPEC("getIndexedParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getIndexedParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13829 : JS_FNSPEC("getUniformIndices", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getUniformIndices_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13830 : JS_FNSPEC("getActiveUniforms", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getActiveUniforms_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13831 : JS_FNSPEC("getUniformBlockIndex", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getUniformBlockIndex_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13832 : JS_FNSPEC("getActiveUniformBlockParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getActiveUniformBlockParameter_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13833 : JS_FNSPEC("getActiveUniformBlockName", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getActiveUniformBlockName_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13834 : JS_FNSPEC("uniformBlockBinding", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniformBlockBinding_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13835 : JS_FNSPEC("createVertexArray", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createVertexArray_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13836 : JS_FNSPEC("deleteVertexArray", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteVertexArray_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13837 : JS_FNSPEC("isVertexArray", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isVertexArray_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13838 : JS_FNSPEC("bindVertexArray", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindVertexArray_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13839 : JS_FNSPEC("getContextAttributes", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getContextAttributes_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13840 : JS_FNSPEC("isContextLost", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isContextLost_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13841 : JS_FNSPEC("getSupportedExtensions", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getSupportedExtensions_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13842 : JS_FNSPEC("getExtension", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getExtension_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13843 : JS_FNSPEC("activeTexture", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&activeTexture_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13844 : JS_FNSPEC("attachShader", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&attachShader_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13845 : JS_FNSPEC("bindAttribLocation", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindAttribLocation_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13846 : JS_FNSPEC("bindBuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindBuffer_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13847 : JS_FNSPEC("bindFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindFramebuffer_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13848 : JS_FNSPEC("bindRenderbuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindRenderbuffer_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13849 : JS_FNSPEC("bindTexture", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&bindTexture_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13850 : JS_FNSPEC("blendColor", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blendColor_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13851 : JS_FNSPEC("blendEquation", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blendEquation_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13852 : JS_FNSPEC("blendEquationSeparate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blendEquationSeparate_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13853 : JS_FNSPEC("blendFunc", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blendFunc_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13854 : JS_FNSPEC("blendFuncSeparate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blendFuncSeparate_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13855 : JS_FNSPEC("checkFramebufferStatus", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&checkFramebufferStatus_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13856 : JS_FNSPEC("clear", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clear_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13857 : JS_FNSPEC("clearColor", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearColor_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13858 : JS_FNSPEC("clearDepth", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearDepth_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13859 : JS_FNSPEC("clearStencil", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&clearStencil_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13860 : JS_FNSPEC("colorMask", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&colorMask_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13861 : JS_FNSPEC("compileShader", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&compileShader_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13862 : JS_FNSPEC("copyTexImage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(©TexImage2D_methodinfo), 8, JSPROP_ENUMERATE, nullptr),
13863 : JS_FNSPEC("copyTexSubImage2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(©TexSubImage2D_methodinfo), 8, JSPROP_ENUMERATE, nullptr),
13864 : JS_FNSPEC("createBuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createBuffer_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13865 : JS_FNSPEC("createFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createFramebuffer_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13866 : JS_FNSPEC("createProgram", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createProgram_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13867 : JS_FNSPEC("createRenderbuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createRenderbuffer_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13868 : JS_FNSPEC("createShader", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createShader_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13869 : JS_FNSPEC("createTexture", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createTexture_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13870 : JS_FNSPEC("cullFace", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&cullFace_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13871 : JS_FNSPEC("deleteBuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13872 : JS_FNSPEC("deleteFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteFramebuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13873 : JS_FNSPEC("deleteProgram", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteProgram_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13874 : JS_FNSPEC("deleteRenderbuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteRenderbuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13875 : JS_FNSPEC("deleteShader", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteShader_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13876 : JS_FNSPEC("deleteTexture", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&deleteTexture_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13877 : JS_FNSPEC("depthFunc", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&depthFunc_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13878 : JS_FNSPEC("depthMask", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&depthMask_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13879 : JS_FNSPEC("depthRange", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&depthRange_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13880 : JS_FNSPEC("detachShader", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&detachShader_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13881 : JS_FNSPEC("disable", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&disable_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13882 : JS_FNSPEC("disableVertexAttribArray", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&disableVertexAttribArray_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13883 : JS_FNSPEC("drawArrays", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&drawArrays_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13884 : JS_FNSPEC("drawElements", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&drawElements_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13885 : JS_FNSPEC("enable", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&enable_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13886 : JS_FNSPEC("enableVertexAttribArray", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&enableVertexAttribArray_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13887 : JS_FNSPEC("finish", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&finish_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13888 : JS_FNSPEC("flush", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&flush_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13889 : JS_FNSPEC("framebufferRenderbuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&framebufferRenderbuffer_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13890 : JS_FNSPEC("framebufferTexture2D", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&framebufferTexture2D_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13891 : JS_FNSPEC("frontFace", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&frontFace_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13892 : JS_FNSPEC("generateMipmap", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&generateMipmap_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13893 : JS_FNSPEC("getActiveAttrib", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getActiveAttrib_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13894 : JS_FNSPEC("getActiveUniform", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getActiveUniform_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13895 : JS_FNSPEC("getAttachedShaders", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getAttachedShaders_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13896 : JS_FNSPEC("getAttribLocation", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getAttribLocation_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13897 : JS_FNSPEC("getBufferParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getBufferParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13898 : JS_FNSPEC("getParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getParameter_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13899 : JS_FNSPEC("getError", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getError_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
13900 : JS_FNSPEC("getFramebufferAttachmentParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getFramebufferAttachmentParameter_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13901 : JS_FNSPEC("getProgramParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getProgramParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13902 : JS_FNSPEC("getProgramInfoLog", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getProgramInfoLog_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13903 : JS_FNSPEC("getRenderbufferParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getRenderbufferParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13904 : JS_FNSPEC("getShaderParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getShaderParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13905 : JS_FNSPEC("getShaderPrecisionFormat", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getShaderPrecisionFormat_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13906 : JS_FNSPEC("getShaderInfoLog", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getShaderInfoLog_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13907 : JS_FNSPEC("getShaderSource", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getShaderSource_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13908 : JS_FNSPEC("getTexParameter", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getTexParameter_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13909 : JS_FNSPEC("getUniform", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getUniform_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13910 : JS_FNSPEC("getUniformLocation", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getUniformLocation_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13911 : JS_FNSPEC("getVertexAttrib", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getVertexAttrib_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13912 : JS_FNSPEC("getVertexAttribOffset", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getVertexAttribOffset_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13913 : JS_FNSPEC("hint", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&hint_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13914 : JS_FNSPEC("isBuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13915 : JS_FNSPEC("isEnabled", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isEnabled_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13916 : JS_FNSPEC("isFramebuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isFramebuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13917 : JS_FNSPEC("isProgram", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isProgram_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13918 : JS_FNSPEC("isRenderbuffer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isRenderbuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13919 : JS_FNSPEC("isShader", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isShader_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13920 : JS_FNSPEC("isTexture", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&isTexture_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13921 : JS_FNSPEC("lineWidth", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&lineWidth_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13922 : JS_FNSPEC("linkProgram", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&linkProgram_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13923 : JS_FNSPEC("pixelStorei", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&pixelStorei_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13924 : JS_FNSPEC("polygonOffset", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&polygonOffset_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13925 : JS_FNSPEC("renderbufferStorage", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&renderbufferStorage_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13926 : JS_FNSPEC("sampleCoverage", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&sampleCoverage_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13927 : JS_FNSPEC("scissor", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&scissor_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13928 : JS_FNSPEC("shaderSource", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&shaderSource_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13929 : JS_FNSPEC("stencilFunc", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&stencilFunc_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13930 : JS_FNSPEC("stencilFuncSeparate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&stencilFuncSeparate_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13931 : JS_FNSPEC("stencilMask", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&stencilMask_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13932 : JS_FNSPEC("stencilMaskSeparate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&stencilMaskSeparate_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13933 : JS_FNSPEC("stencilOp", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&stencilOp_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13934 : JS_FNSPEC("stencilOpSeparate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&stencilOpSeparate_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13935 : JS_FNSPEC("texParameterf", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texParameterf_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13936 : JS_FNSPEC("texParameteri", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&texParameteri_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13937 : JS_FNSPEC("uniform1f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform1f_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13938 : JS_FNSPEC("uniform2f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform2f_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13939 : JS_FNSPEC("uniform3f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform3f_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13940 : JS_FNSPEC("uniform4f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform4f_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13941 : JS_FNSPEC("uniform1i", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform1i_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13942 : JS_FNSPEC("uniform2i", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform2i_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13943 : JS_FNSPEC("uniform3i", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform3i_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13944 : JS_FNSPEC("uniform4i", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&uniform4i_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13945 : JS_FNSPEC("useProgram", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&useProgram_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13946 : JS_FNSPEC("validateProgram", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&validateProgram_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
13947 : JS_FNSPEC("vertexAttrib1f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib1f_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13948 : JS_FNSPEC("vertexAttrib1fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib1fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13949 : JS_FNSPEC("vertexAttrib2f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib2f_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
13950 : JS_FNSPEC("vertexAttrib2fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib2fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13951 : JS_FNSPEC("vertexAttrib3f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib3f_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13952 : JS_FNSPEC("vertexAttrib3fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib3fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13953 : JS_FNSPEC("vertexAttrib4f", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib4f_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
13954 : JS_FNSPEC("vertexAttrib4fv", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttrib4fv_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
13955 : JS_FNSPEC("vertexAttribPointer", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&vertexAttribPointer_methodinfo), 6, JSPROP_ENUMERATE, nullptr),
13956 : JS_FNSPEC("viewport", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&viewport_methodinfo), 4, JSPROP_ENUMERATE, nullptr),
13957 : JS_FS_END
13958 : };
13959 : #if defined(__clang__)
13960 : #pragma clang diagnostic pop
13961 : #endif
13962 :
13963 :
13964 : // Can't be const because the pref-enabled boolean needs to be writable
13965 : static Prefable<const JSFunctionSpec> sMethods[] = {
13966 : { nullptr, &sMethods_specs[0] },
13967 : { nullptr, nullptr }
13968 : };
13969 :
13970 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
13971 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
13972 : static_assert(224 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
13973 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
13974 :
13975 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
13976 : #if defined(__clang__)
13977 : #pragma clang diagnostic push
13978 : #pragma clang diagnostic ignored "-Wmissing-braces"
13979 : #endif
13980 : static const JSPropertySpec sAttributes_specs[] = {
13981 : { "canvas", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &canvas_getterinfo, nullptr, nullptr },
13982 : { "drawingBufferWidth", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &drawingBufferWidth_getterinfo, nullptr, nullptr },
13983 : { "drawingBufferHeight", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &drawingBufferHeight_getterinfo, nullptr, nullptr },
13984 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
13985 : };
13986 : #if defined(__clang__)
13987 : #pragma clang diagnostic pop
13988 : #endif
13989 :
13990 :
13991 : // Can't be const because the pref-enabled boolean needs to be writable
13992 : static Prefable<const JSPropertySpec> sAttributes[] = {
13993 : { nullptr, &sAttributes_specs[0] },
13994 : { nullptr, nullptr }
13995 : };
13996 :
13997 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
13998 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
13999 : static_assert(3 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
14000 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
14001 :
14002 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
14003 : #if defined(__clang__)
14004 : #pragma clang diagnostic push
14005 : #pragma clang diagnostic ignored "-Wmissing-braces"
14006 : #endif
14007 3 : static const ConstantSpec sConstants_specs[] = {
14008 : { "READ_BUFFER", JS::NumberValue(3074U) },
14009 : { "UNPACK_ROW_LENGTH", JS::NumberValue(3314U) },
14010 : { "UNPACK_SKIP_ROWS", JS::NumberValue(3315U) },
14011 : { "UNPACK_SKIP_PIXELS", JS::NumberValue(3316U) },
14012 : { "PACK_ROW_LENGTH", JS::NumberValue(3330U) },
14013 : { "PACK_SKIP_ROWS", JS::NumberValue(3331U) },
14014 : { "PACK_SKIP_PIXELS", JS::NumberValue(3332U) },
14015 : { "COLOR", JS::NumberValue(6144U) },
14016 : { "DEPTH", JS::NumberValue(6145U) },
14017 : { "STENCIL", JS::NumberValue(6146U) },
14018 : { "RED", JS::NumberValue(6403U) },
14019 : { "RGB8", JS::NumberValue(32849U) },
14020 : { "RGBA8", JS::NumberValue(32856U) },
14021 : { "RGB10_A2", JS::NumberValue(32857U) },
14022 : { "TEXTURE_BINDING_3D", JS::NumberValue(32874U) },
14023 : { "UNPACK_SKIP_IMAGES", JS::NumberValue(32877U) },
14024 : { "UNPACK_IMAGE_HEIGHT", JS::NumberValue(32878U) },
14025 : { "TEXTURE_3D", JS::NumberValue(32879U) },
14026 : { "TEXTURE_WRAP_R", JS::NumberValue(32882U) },
14027 : { "MAX_3D_TEXTURE_SIZE", JS::NumberValue(32883U) },
14028 : { "UNSIGNED_INT_2_10_10_10_REV", JS::NumberValue(33640U) },
14029 : { "MAX_ELEMENTS_VERTICES", JS::NumberValue(33000U) },
14030 : { "MAX_ELEMENTS_INDICES", JS::NumberValue(33001U) },
14031 : { "TEXTURE_MIN_LOD", JS::NumberValue(33082U) },
14032 : { "TEXTURE_MAX_LOD", JS::NumberValue(33083U) },
14033 : { "TEXTURE_BASE_LEVEL", JS::NumberValue(33084U) },
14034 : { "TEXTURE_MAX_LEVEL", JS::NumberValue(33085U) },
14035 : { "MIN", JS::NumberValue(32775U) },
14036 : { "MAX", JS::NumberValue(32776U) },
14037 : { "DEPTH_COMPONENT24", JS::NumberValue(33190U) },
14038 : { "MAX_TEXTURE_LOD_BIAS", JS::NumberValue(34045U) },
14039 : { "TEXTURE_COMPARE_MODE", JS::NumberValue(34892U) },
14040 : { "TEXTURE_COMPARE_FUNC", JS::NumberValue(34893U) },
14041 : { "CURRENT_QUERY", JS::NumberValue(34917U) },
14042 : { "QUERY_RESULT", JS::NumberValue(34918U) },
14043 : { "QUERY_RESULT_AVAILABLE", JS::NumberValue(34919U) },
14044 : { "STREAM_READ", JS::NumberValue(35041U) },
14045 : { "STREAM_COPY", JS::NumberValue(35042U) },
14046 : { "STATIC_READ", JS::NumberValue(35045U) },
14047 : { "STATIC_COPY", JS::NumberValue(35046U) },
14048 : { "DYNAMIC_READ", JS::NumberValue(35049U) },
14049 : { "DYNAMIC_COPY", JS::NumberValue(35050U) },
14050 : { "MAX_DRAW_BUFFERS", JS::NumberValue(34852U) },
14051 : { "DRAW_BUFFER0", JS::NumberValue(34853U) },
14052 : { "DRAW_BUFFER1", JS::NumberValue(34854U) },
14053 : { "DRAW_BUFFER2", JS::NumberValue(34855U) },
14054 : { "DRAW_BUFFER3", JS::NumberValue(34856U) },
14055 : { "DRAW_BUFFER4", JS::NumberValue(34857U) },
14056 : { "DRAW_BUFFER5", JS::NumberValue(34858U) },
14057 : { "DRAW_BUFFER6", JS::NumberValue(34859U) },
14058 : { "DRAW_BUFFER7", JS::NumberValue(34860U) },
14059 : { "DRAW_BUFFER8", JS::NumberValue(34861U) },
14060 : { "DRAW_BUFFER9", JS::NumberValue(34862U) },
14061 : { "DRAW_BUFFER10", JS::NumberValue(34863U) },
14062 : { "DRAW_BUFFER11", JS::NumberValue(34864U) },
14063 : { "DRAW_BUFFER12", JS::NumberValue(34865U) },
14064 : { "DRAW_BUFFER13", JS::NumberValue(34866U) },
14065 : { "DRAW_BUFFER14", JS::NumberValue(34867U) },
14066 : { "DRAW_BUFFER15", JS::NumberValue(34868U) },
14067 : { "MAX_FRAGMENT_UNIFORM_COMPONENTS", JS::NumberValue(35657U) },
14068 : { "MAX_VERTEX_UNIFORM_COMPONENTS", JS::NumberValue(35658U) },
14069 : { "SAMPLER_3D", JS::NumberValue(35679U) },
14070 : { "SAMPLER_2D_SHADOW", JS::NumberValue(35682U) },
14071 : { "FRAGMENT_SHADER_DERIVATIVE_HINT", JS::NumberValue(35723U) },
14072 : { "PIXEL_PACK_BUFFER", JS::NumberValue(35051U) },
14073 : { "PIXEL_UNPACK_BUFFER", JS::NumberValue(35052U) },
14074 : { "PIXEL_PACK_BUFFER_BINDING", JS::NumberValue(35053U) },
14075 : { "PIXEL_UNPACK_BUFFER_BINDING", JS::NumberValue(35055U) },
14076 : { "FLOAT_MAT2x3", JS::NumberValue(35685U) },
14077 : { "FLOAT_MAT2x4", JS::NumberValue(35686U) },
14078 : { "FLOAT_MAT3x2", JS::NumberValue(35687U) },
14079 : { "FLOAT_MAT3x4", JS::NumberValue(35688U) },
14080 : { "FLOAT_MAT4x2", JS::NumberValue(35689U) },
14081 : { "FLOAT_MAT4x3", JS::NumberValue(35690U) },
14082 : { "SRGB", JS::NumberValue(35904U) },
14083 : { "SRGB8", JS::NumberValue(35905U) },
14084 : { "SRGB8_ALPHA8", JS::NumberValue(35907U) },
14085 : { "COMPARE_REF_TO_TEXTURE", JS::NumberValue(34894U) },
14086 : { "RGBA32F", JS::NumberValue(34836U) },
14087 : { "RGB32F", JS::NumberValue(34837U) },
14088 : { "RGBA16F", JS::NumberValue(34842U) },
14089 : { "RGB16F", JS::NumberValue(34843U) },
14090 : { "VERTEX_ATTRIB_ARRAY_INTEGER", JS::NumberValue(35069U) },
14091 : { "MAX_ARRAY_TEXTURE_LAYERS", JS::NumberValue(35071U) },
14092 : { "MIN_PROGRAM_TEXEL_OFFSET", JS::NumberValue(35076U) },
14093 : { "MAX_PROGRAM_TEXEL_OFFSET", JS::NumberValue(35077U) },
14094 : { "MAX_VARYING_COMPONENTS", JS::NumberValue(35659U) },
14095 : { "TEXTURE_2D_ARRAY", JS::NumberValue(35866U) },
14096 : { "TEXTURE_BINDING_2D_ARRAY", JS::NumberValue(35869U) },
14097 : { "R11F_G11F_B10F", JS::NumberValue(35898U) },
14098 : { "UNSIGNED_INT_10F_11F_11F_REV", JS::NumberValue(35899U) },
14099 : { "RGB9_E5", JS::NumberValue(35901U) },
14100 : { "UNSIGNED_INT_5_9_9_9_REV", JS::NumberValue(35902U) },
14101 : { "TRANSFORM_FEEDBACK_BUFFER_MODE", JS::NumberValue(35967U) },
14102 : { "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", JS::NumberValue(35968U) },
14103 : { "TRANSFORM_FEEDBACK_VARYINGS", JS::NumberValue(35971U) },
14104 : { "TRANSFORM_FEEDBACK_BUFFER_START", JS::NumberValue(35972U) },
14105 : { "TRANSFORM_FEEDBACK_BUFFER_SIZE", JS::NumberValue(35973U) },
14106 : { "TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN", JS::NumberValue(35976U) },
14107 : { "RASTERIZER_DISCARD", JS::NumberValue(35977U) },
14108 : { "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", JS::NumberValue(35978U) },
14109 : { "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", JS::NumberValue(35979U) },
14110 : { "INTERLEAVED_ATTRIBS", JS::NumberValue(35980U) },
14111 : { "SEPARATE_ATTRIBS", JS::NumberValue(35981U) },
14112 : { "TRANSFORM_FEEDBACK_BUFFER", JS::NumberValue(35982U) },
14113 : { "TRANSFORM_FEEDBACK_BUFFER_BINDING", JS::NumberValue(35983U) },
14114 : { "RGBA32UI", JS::NumberValue(36208U) },
14115 : { "RGB32UI", JS::NumberValue(36209U) },
14116 : { "RGBA16UI", JS::NumberValue(36214U) },
14117 : { "RGB16UI", JS::NumberValue(36215U) },
14118 : { "RGBA8UI", JS::NumberValue(36220U) },
14119 : { "RGB8UI", JS::NumberValue(36221U) },
14120 : { "RGBA32I", JS::NumberValue(36226U) },
14121 : { "RGB32I", JS::NumberValue(36227U) },
14122 : { "RGBA16I", JS::NumberValue(36232U) },
14123 : { "RGB16I", JS::NumberValue(36233U) },
14124 : { "RGBA8I", JS::NumberValue(36238U) },
14125 : { "RGB8I", JS::NumberValue(36239U) },
14126 : { "RED_INTEGER", JS::NumberValue(36244U) },
14127 : { "RGB_INTEGER", JS::NumberValue(36248U) },
14128 : { "RGBA_INTEGER", JS::NumberValue(36249U) },
14129 : { "SAMPLER_2D_ARRAY", JS::NumberValue(36289U) },
14130 : { "SAMPLER_2D_ARRAY_SHADOW", JS::NumberValue(36292U) },
14131 : { "SAMPLER_CUBE_SHADOW", JS::NumberValue(36293U) },
14132 : { "UNSIGNED_INT_VEC2", JS::NumberValue(36294U) },
14133 : { "UNSIGNED_INT_VEC3", JS::NumberValue(36295U) },
14134 : { "UNSIGNED_INT_VEC4", JS::NumberValue(36296U) },
14135 : { "INT_SAMPLER_2D", JS::NumberValue(36298U) },
14136 : { "INT_SAMPLER_3D", JS::NumberValue(36299U) },
14137 : { "INT_SAMPLER_CUBE", JS::NumberValue(36300U) },
14138 : { "INT_SAMPLER_2D_ARRAY", JS::NumberValue(36303U) },
14139 : { "UNSIGNED_INT_SAMPLER_2D", JS::NumberValue(36306U) },
14140 : { "UNSIGNED_INT_SAMPLER_3D", JS::NumberValue(36307U) },
14141 : { "UNSIGNED_INT_SAMPLER_CUBE", JS::NumberValue(36308U) },
14142 : { "UNSIGNED_INT_SAMPLER_2D_ARRAY", JS::NumberValue(36311U) },
14143 : { "DEPTH_COMPONENT32F", JS::NumberValue(36012U) },
14144 : { "DEPTH32F_STENCIL8", JS::NumberValue(36013U) },
14145 : { "FLOAT_32_UNSIGNED_INT_24_8_REV", JS::NumberValue(36269U) },
14146 : { "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", JS::NumberValue(33296U) },
14147 : { "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE", JS::NumberValue(33297U) },
14148 : { "FRAMEBUFFER_ATTACHMENT_RED_SIZE", JS::NumberValue(33298U) },
14149 : { "FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", JS::NumberValue(33299U) },
14150 : { "FRAMEBUFFER_ATTACHMENT_BLUE_SIZE", JS::NumberValue(33300U) },
14151 : { "FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", JS::NumberValue(33301U) },
14152 : { "FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE", JS::NumberValue(33302U) },
14153 : { "FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", JS::NumberValue(33303U) },
14154 : { "FRAMEBUFFER_DEFAULT", JS::NumberValue(33304U) },
14155 : { "UNSIGNED_INT_24_8", JS::NumberValue(34042U) },
14156 : { "DEPTH24_STENCIL8", JS::NumberValue(35056U) },
14157 : { "UNSIGNED_NORMALIZED", JS::NumberValue(35863U) },
14158 : { "DRAW_FRAMEBUFFER_BINDING", JS::NumberValue(36006U) },
14159 : { "READ_FRAMEBUFFER", JS::NumberValue(36008U) },
14160 : { "DRAW_FRAMEBUFFER", JS::NumberValue(36009U) },
14161 : { "READ_FRAMEBUFFER_BINDING", JS::NumberValue(36010U) },
14162 : { "RENDERBUFFER_SAMPLES", JS::NumberValue(36011U) },
14163 : { "FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", JS::NumberValue(36052U) },
14164 : { "MAX_COLOR_ATTACHMENTS", JS::NumberValue(36063U) },
14165 : { "COLOR_ATTACHMENT1", JS::NumberValue(36065U) },
14166 : { "COLOR_ATTACHMENT2", JS::NumberValue(36066U) },
14167 : { "COLOR_ATTACHMENT3", JS::NumberValue(36067U) },
14168 : { "COLOR_ATTACHMENT4", JS::NumberValue(36068U) },
14169 : { "COLOR_ATTACHMENT5", JS::NumberValue(36069U) },
14170 : { "COLOR_ATTACHMENT6", JS::NumberValue(36070U) },
14171 : { "COLOR_ATTACHMENT7", JS::NumberValue(36071U) },
14172 : { "COLOR_ATTACHMENT8", JS::NumberValue(36072U) },
14173 : { "COLOR_ATTACHMENT9", JS::NumberValue(36073U) },
14174 : { "COLOR_ATTACHMENT10", JS::NumberValue(36074U) },
14175 : { "COLOR_ATTACHMENT11", JS::NumberValue(36075U) },
14176 : { "COLOR_ATTACHMENT12", JS::NumberValue(36076U) },
14177 : { "COLOR_ATTACHMENT13", JS::NumberValue(36077U) },
14178 : { "COLOR_ATTACHMENT14", JS::NumberValue(36078U) },
14179 : { "COLOR_ATTACHMENT15", JS::NumberValue(36079U) },
14180 : { "FRAMEBUFFER_INCOMPLETE_MULTISAMPLE", JS::NumberValue(36182U) },
14181 : { "MAX_SAMPLES", JS::NumberValue(36183U) },
14182 : { "HALF_FLOAT", JS::NumberValue(5131U) },
14183 : { "RG", JS::NumberValue(33319U) },
14184 : { "RG_INTEGER", JS::NumberValue(33320U) },
14185 : { "R8", JS::NumberValue(33321U) },
14186 : { "RG8", JS::NumberValue(33323U) },
14187 : { "R16F", JS::NumberValue(33325U) },
14188 : { "R32F", JS::NumberValue(33326U) },
14189 : { "RG16F", JS::NumberValue(33327U) },
14190 : { "RG32F", JS::NumberValue(33328U) },
14191 : { "R8I", JS::NumberValue(33329U) },
14192 : { "R8UI", JS::NumberValue(33330U) },
14193 : { "R16I", JS::NumberValue(33331U) },
14194 : { "R16UI", JS::NumberValue(33332U) },
14195 : { "R32I", JS::NumberValue(33333U) },
14196 : { "R32UI", JS::NumberValue(33334U) },
14197 : { "RG8I", JS::NumberValue(33335U) },
14198 : { "RG8UI", JS::NumberValue(33336U) },
14199 : { "RG16I", JS::NumberValue(33337U) },
14200 : { "RG16UI", JS::NumberValue(33338U) },
14201 : { "RG32I", JS::NumberValue(33339U) },
14202 : { "RG32UI", JS::NumberValue(33340U) },
14203 : { "VERTEX_ARRAY_BINDING", JS::NumberValue(34229U) },
14204 : { "R8_SNORM", JS::NumberValue(36756U) },
14205 : { "RG8_SNORM", JS::NumberValue(36757U) },
14206 : { "RGB8_SNORM", JS::NumberValue(36758U) },
14207 : { "RGBA8_SNORM", JS::NumberValue(36759U) },
14208 : { "SIGNED_NORMALIZED", JS::NumberValue(36764U) },
14209 : { "COPY_READ_BUFFER", JS::NumberValue(36662U) },
14210 : { "COPY_WRITE_BUFFER", JS::NumberValue(36663U) },
14211 : { "COPY_READ_BUFFER_BINDING", JS::NumberValue(36662U) },
14212 : { "COPY_WRITE_BUFFER_BINDING", JS::NumberValue(36663U) },
14213 : { "UNIFORM_BUFFER", JS::NumberValue(35345U) },
14214 : { "UNIFORM_BUFFER_BINDING", JS::NumberValue(35368U) },
14215 : { "UNIFORM_BUFFER_START", JS::NumberValue(35369U) },
14216 : { "UNIFORM_BUFFER_SIZE", JS::NumberValue(35370U) },
14217 : { "MAX_VERTEX_UNIFORM_BLOCKS", JS::NumberValue(35371U) },
14218 : { "MAX_FRAGMENT_UNIFORM_BLOCKS", JS::NumberValue(35373U) },
14219 : { "MAX_COMBINED_UNIFORM_BLOCKS", JS::NumberValue(35374U) },
14220 : { "MAX_UNIFORM_BUFFER_BINDINGS", JS::NumberValue(35375U) },
14221 : { "MAX_UNIFORM_BLOCK_SIZE", JS::NumberValue(35376U) },
14222 : { "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", JS::NumberValue(35377U) },
14223 : { "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", JS::NumberValue(35379U) },
14224 : { "UNIFORM_BUFFER_OFFSET_ALIGNMENT", JS::NumberValue(35380U) },
14225 : { "ACTIVE_UNIFORM_BLOCKS", JS::NumberValue(35382U) },
14226 : { "UNIFORM_TYPE", JS::NumberValue(35383U) },
14227 : { "UNIFORM_SIZE", JS::NumberValue(35384U) },
14228 : { "UNIFORM_BLOCK_INDEX", JS::NumberValue(35386U) },
14229 : { "UNIFORM_OFFSET", JS::NumberValue(35387U) },
14230 : { "UNIFORM_ARRAY_STRIDE", JS::NumberValue(35388U) },
14231 : { "UNIFORM_MATRIX_STRIDE", JS::NumberValue(35389U) },
14232 : { "UNIFORM_IS_ROW_MAJOR", JS::NumberValue(35390U) },
14233 : { "UNIFORM_BLOCK_BINDING", JS::NumberValue(35391U) },
14234 : { "UNIFORM_BLOCK_DATA_SIZE", JS::NumberValue(35392U) },
14235 : { "UNIFORM_BLOCK_ACTIVE_UNIFORMS", JS::NumberValue(35394U) },
14236 : { "UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES", JS::NumberValue(35395U) },
14237 : { "UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", JS::NumberValue(35396U) },
14238 : { "UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER", JS::NumberValue(35398U) },
14239 : { "INVALID_INDEX", JS::NumberValue(4294967295U) },
14240 : { "MAX_VERTEX_OUTPUT_COMPONENTS", JS::NumberValue(37154U) },
14241 : { "MAX_FRAGMENT_INPUT_COMPONENTS", JS::NumberValue(37157U) },
14242 : { "MAX_SERVER_WAIT_TIMEOUT", JS::NumberValue(37137U) },
14243 : { "OBJECT_TYPE", JS::NumberValue(37138U) },
14244 : { "SYNC_CONDITION", JS::NumberValue(37139U) },
14245 : { "SYNC_STATUS", JS::NumberValue(37140U) },
14246 : { "SYNC_FLAGS", JS::NumberValue(37141U) },
14247 : { "SYNC_FENCE", JS::NumberValue(37142U) },
14248 : { "SYNC_GPU_COMMANDS_COMPLETE", JS::NumberValue(37143U) },
14249 : { "UNSIGNALED", JS::NumberValue(37144U) },
14250 : { "SIGNALED", JS::NumberValue(37145U) },
14251 : { "ALREADY_SIGNALED", JS::NumberValue(37146U) },
14252 : { "TIMEOUT_EXPIRED", JS::NumberValue(37147U) },
14253 : { "CONDITION_SATISFIED", JS::NumberValue(37148U) },
14254 : { "WAIT_FAILED", JS::NumberValue(37149U) },
14255 : { "SYNC_FLUSH_COMMANDS_BIT", JS::NumberValue(1U) },
14256 : { "VERTEX_ATTRIB_ARRAY_DIVISOR", JS::NumberValue(35070U) },
14257 : { "ANY_SAMPLES_PASSED", JS::NumberValue(35887U) },
14258 : { "ANY_SAMPLES_PASSED_CONSERVATIVE", JS::NumberValue(36202U) },
14259 : { "SAMPLER_BINDING", JS::NumberValue(35097U) },
14260 : { "RGB10_A2UI", JS::NumberValue(36975U) },
14261 : { "INT_2_10_10_10_REV", JS::NumberValue(36255U) },
14262 : { "TRANSFORM_FEEDBACK", JS::NumberValue(36386U) },
14263 : { "TRANSFORM_FEEDBACK_PAUSED", JS::NumberValue(36387U) },
14264 : { "TRANSFORM_FEEDBACK_ACTIVE", JS::NumberValue(36388U) },
14265 : { "TRANSFORM_FEEDBACK_BINDING", JS::NumberValue(36389U) },
14266 : { "TEXTURE_IMMUTABLE_FORMAT", JS::NumberValue(37167U) },
14267 : { "MAX_ELEMENT_INDEX", JS::NumberValue(36203U) },
14268 : { "TEXTURE_IMMUTABLE_LEVELS", JS::NumberValue(33503U) },
14269 : { "TIMEOUT_IGNORED", JS::CanonicalizedDoubleValue(-1LL) },
14270 : { "MAX_CLIENT_WAIT_TIMEOUT_WEBGL", JS::NumberValue(37447U) },
14271 : { "DEPTH_BUFFER_BIT", JS::NumberValue(256U) },
14272 : { "STENCIL_BUFFER_BIT", JS::NumberValue(1024U) },
14273 : { "COLOR_BUFFER_BIT", JS::NumberValue(16384U) },
14274 : { "POINTS", JS::NumberValue(0U) },
14275 : { "LINES", JS::NumberValue(1U) },
14276 : { "LINE_LOOP", JS::NumberValue(2U) },
14277 : { "LINE_STRIP", JS::NumberValue(3U) },
14278 : { "TRIANGLES", JS::NumberValue(4U) },
14279 : { "TRIANGLE_STRIP", JS::NumberValue(5U) },
14280 : { "TRIANGLE_FAN", JS::NumberValue(6U) },
14281 : { "ZERO", JS::NumberValue(0U) },
14282 : { "ONE", JS::NumberValue(1U) },
14283 : { "SRC_COLOR", JS::NumberValue(768U) },
14284 : { "ONE_MINUS_SRC_COLOR", JS::NumberValue(769U) },
14285 : { "SRC_ALPHA", JS::NumberValue(770U) },
14286 : { "ONE_MINUS_SRC_ALPHA", JS::NumberValue(771U) },
14287 : { "DST_ALPHA", JS::NumberValue(772U) },
14288 : { "ONE_MINUS_DST_ALPHA", JS::NumberValue(773U) },
14289 : { "DST_COLOR", JS::NumberValue(774U) },
14290 : { "ONE_MINUS_DST_COLOR", JS::NumberValue(775U) },
14291 : { "SRC_ALPHA_SATURATE", JS::NumberValue(776U) },
14292 : { "FUNC_ADD", JS::NumberValue(32774U) },
14293 : { "BLEND_EQUATION", JS::NumberValue(32777U) },
14294 : { "BLEND_EQUATION_RGB", JS::NumberValue(32777U) },
14295 : { "BLEND_EQUATION_ALPHA", JS::NumberValue(34877U) },
14296 : { "FUNC_SUBTRACT", JS::NumberValue(32778U) },
14297 : { "FUNC_REVERSE_SUBTRACT", JS::NumberValue(32779U) },
14298 : { "BLEND_DST_RGB", JS::NumberValue(32968U) },
14299 : { "BLEND_SRC_RGB", JS::NumberValue(32969U) },
14300 : { "BLEND_DST_ALPHA", JS::NumberValue(32970U) },
14301 : { "BLEND_SRC_ALPHA", JS::NumberValue(32971U) },
14302 : { "CONSTANT_COLOR", JS::NumberValue(32769U) },
14303 : { "ONE_MINUS_CONSTANT_COLOR", JS::NumberValue(32770U) },
14304 : { "CONSTANT_ALPHA", JS::NumberValue(32771U) },
14305 : { "ONE_MINUS_CONSTANT_ALPHA", JS::NumberValue(32772U) },
14306 : { "BLEND_COLOR", JS::NumberValue(32773U) },
14307 : { "ARRAY_BUFFER", JS::NumberValue(34962U) },
14308 : { "ELEMENT_ARRAY_BUFFER", JS::NumberValue(34963U) },
14309 : { "ARRAY_BUFFER_BINDING", JS::NumberValue(34964U) },
14310 : { "ELEMENT_ARRAY_BUFFER_BINDING", JS::NumberValue(34965U) },
14311 : { "STREAM_DRAW", JS::NumberValue(35040U) },
14312 : { "STATIC_DRAW", JS::NumberValue(35044U) },
14313 : { "DYNAMIC_DRAW", JS::NumberValue(35048U) },
14314 : { "BUFFER_SIZE", JS::NumberValue(34660U) },
14315 : { "BUFFER_USAGE", JS::NumberValue(34661U) },
14316 : { "CURRENT_VERTEX_ATTRIB", JS::NumberValue(34342U) },
14317 : { "FRONT", JS::NumberValue(1028U) },
14318 : { "BACK", JS::NumberValue(1029U) },
14319 : { "FRONT_AND_BACK", JS::NumberValue(1032U) },
14320 : { "CULL_FACE", JS::NumberValue(2884U) },
14321 : { "BLEND", JS::NumberValue(3042U) },
14322 : { "DITHER", JS::NumberValue(3024U) },
14323 : { "STENCIL_TEST", JS::NumberValue(2960U) },
14324 : { "DEPTH_TEST", JS::NumberValue(2929U) },
14325 : { "SCISSOR_TEST", JS::NumberValue(3089U) },
14326 : { "POLYGON_OFFSET_FILL", JS::NumberValue(32823U) },
14327 : { "SAMPLE_ALPHA_TO_COVERAGE", JS::NumberValue(32926U) },
14328 : { "SAMPLE_COVERAGE", JS::NumberValue(32928U) },
14329 : { "NO_ERROR", JS::NumberValue(0U) },
14330 : { "INVALID_ENUM", JS::NumberValue(1280U) },
14331 : { "INVALID_VALUE", JS::NumberValue(1281U) },
14332 : { "INVALID_OPERATION", JS::NumberValue(1282U) },
14333 : { "OUT_OF_MEMORY", JS::NumberValue(1285U) },
14334 : { "CW", JS::NumberValue(2304U) },
14335 : { "CCW", JS::NumberValue(2305U) },
14336 : { "LINE_WIDTH", JS::NumberValue(2849U) },
14337 : { "ALIASED_POINT_SIZE_RANGE", JS::NumberValue(33901U) },
14338 : { "ALIASED_LINE_WIDTH_RANGE", JS::NumberValue(33902U) },
14339 : { "CULL_FACE_MODE", JS::NumberValue(2885U) },
14340 : { "FRONT_FACE", JS::NumberValue(2886U) },
14341 : { "DEPTH_RANGE", JS::NumberValue(2928U) },
14342 : { "DEPTH_WRITEMASK", JS::NumberValue(2930U) },
14343 : { "DEPTH_CLEAR_VALUE", JS::NumberValue(2931U) },
14344 : { "DEPTH_FUNC", JS::NumberValue(2932U) },
14345 : { "STENCIL_CLEAR_VALUE", JS::NumberValue(2961U) },
14346 : { "STENCIL_FUNC", JS::NumberValue(2962U) },
14347 : { "STENCIL_FAIL", JS::NumberValue(2964U) },
14348 : { "STENCIL_PASS_DEPTH_FAIL", JS::NumberValue(2965U) },
14349 : { "STENCIL_PASS_DEPTH_PASS", JS::NumberValue(2966U) },
14350 : { "STENCIL_REF", JS::NumberValue(2967U) },
14351 : { "STENCIL_VALUE_MASK", JS::NumberValue(2963U) },
14352 : { "STENCIL_WRITEMASK", JS::NumberValue(2968U) },
14353 : { "STENCIL_BACK_FUNC", JS::NumberValue(34816U) },
14354 : { "STENCIL_BACK_FAIL", JS::NumberValue(34817U) },
14355 : { "STENCIL_BACK_PASS_DEPTH_FAIL", JS::NumberValue(34818U) },
14356 : { "STENCIL_BACK_PASS_DEPTH_PASS", JS::NumberValue(34819U) },
14357 : { "STENCIL_BACK_REF", JS::NumberValue(36003U) },
14358 : { "STENCIL_BACK_VALUE_MASK", JS::NumberValue(36004U) },
14359 : { "STENCIL_BACK_WRITEMASK", JS::NumberValue(36005U) },
14360 : { "VIEWPORT", JS::NumberValue(2978U) },
14361 : { "SCISSOR_BOX", JS::NumberValue(3088U) },
14362 : { "COLOR_CLEAR_VALUE", JS::NumberValue(3106U) },
14363 : { "COLOR_WRITEMASK", JS::NumberValue(3107U) },
14364 : { "UNPACK_ALIGNMENT", JS::NumberValue(3317U) },
14365 : { "PACK_ALIGNMENT", JS::NumberValue(3333U) },
14366 : { "MAX_TEXTURE_SIZE", JS::NumberValue(3379U) },
14367 : { "MAX_VIEWPORT_DIMS", JS::NumberValue(3386U) },
14368 : { "SUBPIXEL_BITS", JS::NumberValue(3408U) },
14369 : { "RED_BITS", JS::NumberValue(3410U) },
14370 : { "GREEN_BITS", JS::NumberValue(3411U) },
14371 : { "BLUE_BITS", JS::NumberValue(3412U) },
14372 : { "ALPHA_BITS", JS::NumberValue(3413U) },
14373 : { "DEPTH_BITS", JS::NumberValue(3414U) },
14374 : { "STENCIL_BITS", JS::NumberValue(3415U) },
14375 : { "POLYGON_OFFSET_UNITS", JS::NumberValue(10752U) },
14376 : { "POLYGON_OFFSET_FACTOR", JS::NumberValue(32824U) },
14377 : { "TEXTURE_BINDING_2D", JS::NumberValue(32873U) },
14378 : { "SAMPLE_BUFFERS", JS::NumberValue(32936U) },
14379 : { "SAMPLES", JS::NumberValue(32937U) },
14380 : { "SAMPLE_COVERAGE_VALUE", JS::NumberValue(32938U) },
14381 : { "SAMPLE_COVERAGE_INVERT", JS::NumberValue(32939U) },
14382 : { "COMPRESSED_TEXTURE_FORMATS", JS::NumberValue(34467U) },
14383 : { "DONT_CARE", JS::NumberValue(4352U) },
14384 : { "FASTEST", JS::NumberValue(4353U) },
14385 : { "NICEST", JS::NumberValue(4354U) },
14386 : { "GENERATE_MIPMAP_HINT", JS::NumberValue(33170U) },
14387 : { "BYTE", JS::NumberValue(5120U) },
14388 : { "UNSIGNED_BYTE", JS::NumberValue(5121U) },
14389 : { "SHORT", JS::NumberValue(5122U) },
14390 : { "UNSIGNED_SHORT", JS::NumberValue(5123U) },
14391 : { "INT", JS::NumberValue(5124U) },
14392 : { "UNSIGNED_INT", JS::NumberValue(5125U) },
14393 : { "FLOAT", JS::NumberValue(5126U) },
14394 : { "DEPTH_COMPONENT", JS::NumberValue(6402U) },
14395 : { "ALPHA", JS::NumberValue(6406U) },
14396 : { "RGB", JS::NumberValue(6407U) },
14397 : { "RGBA", JS::NumberValue(6408U) },
14398 : { "LUMINANCE", JS::NumberValue(6409U) },
14399 : { "LUMINANCE_ALPHA", JS::NumberValue(6410U) },
14400 : { "UNSIGNED_SHORT_4_4_4_4", JS::NumberValue(32819U) },
14401 : { "UNSIGNED_SHORT_5_5_5_1", JS::NumberValue(32820U) },
14402 : { "UNSIGNED_SHORT_5_6_5", JS::NumberValue(33635U) },
14403 : { "FRAGMENT_SHADER", JS::NumberValue(35632U) },
14404 : { "VERTEX_SHADER", JS::NumberValue(35633U) },
14405 : { "MAX_VERTEX_ATTRIBS", JS::NumberValue(34921U) },
14406 : { "MAX_VERTEX_UNIFORM_VECTORS", JS::NumberValue(36347U) },
14407 : { "MAX_VARYING_VECTORS", JS::NumberValue(36348U) },
14408 : { "MAX_COMBINED_TEXTURE_IMAGE_UNITS", JS::NumberValue(35661U) },
14409 : { "MAX_VERTEX_TEXTURE_IMAGE_UNITS", JS::NumberValue(35660U) },
14410 : { "MAX_TEXTURE_IMAGE_UNITS", JS::NumberValue(34930U) },
14411 : { "MAX_FRAGMENT_UNIFORM_VECTORS", JS::NumberValue(36349U) },
14412 : { "SHADER_TYPE", JS::NumberValue(35663U) },
14413 : { "DELETE_STATUS", JS::NumberValue(35712U) },
14414 : { "LINK_STATUS", JS::NumberValue(35714U) },
14415 : { "VALIDATE_STATUS", JS::NumberValue(35715U) },
14416 : { "ATTACHED_SHADERS", JS::NumberValue(35717U) },
14417 : { "ACTIVE_UNIFORMS", JS::NumberValue(35718U) },
14418 : { "ACTIVE_ATTRIBUTES", JS::NumberValue(35721U) },
14419 : { "SHADING_LANGUAGE_VERSION", JS::NumberValue(35724U) },
14420 : { "CURRENT_PROGRAM", JS::NumberValue(35725U) },
14421 : { "NEVER", JS::NumberValue(512U) },
14422 : { "LESS", JS::NumberValue(513U) },
14423 : { "EQUAL", JS::NumberValue(514U) },
14424 : { "LEQUAL", JS::NumberValue(515U) },
14425 : { "GREATER", JS::NumberValue(516U) },
14426 : { "NOTEQUAL", JS::NumberValue(517U) },
14427 : { "GEQUAL", JS::NumberValue(518U) },
14428 : { "ALWAYS", JS::NumberValue(519U) },
14429 : { "KEEP", JS::NumberValue(7680U) },
14430 : { "REPLACE", JS::NumberValue(7681U) },
14431 : { "INCR", JS::NumberValue(7682U) },
14432 : { "DECR", JS::NumberValue(7683U) },
14433 : { "INVERT", JS::NumberValue(5386U) },
14434 : { "INCR_WRAP", JS::NumberValue(34055U) },
14435 : { "DECR_WRAP", JS::NumberValue(34056U) },
14436 : { "VENDOR", JS::NumberValue(7936U) },
14437 : { "RENDERER", JS::NumberValue(7937U) },
14438 : { "VERSION", JS::NumberValue(7938U) },
14439 : { "NEAREST", JS::NumberValue(9728U) },
14440 : { "LINEAR", JS::NumberValue(9729U) },
14441 : { "NEAREST_MIPMAP_NEAREST", JS::NumberValue(9984U) },
14442 : { "LINEAR_MIPMAP_NEAREST", JS::NumberValue(9985U) },
14443 : { "NEAREST_MIPMAP_LINEAR", JS::NumberValue(9986U) },
14444 : { "LINEAR_MIPMAP_LINEAR", JS::NumberValue(9987U) },
14445 : { "TEXTURE_MAG_FILTER", JS::NumberValue(10240U) },
14446 : { "TEXTURE_MIN_FILTER", JS::NumberValue(10241U) },
14447 : { "TEXTURE_WRAP_S", JS::NumberValue(10242U) },
14448 : { "TEXTURE_WRAP_T", JS::NumberValue(10243U) },
14449 : { "TEXTURE_2D", JS::NumberValue(3553U) },
14450 : { "TEXTURE", JS::NumberValue(5890U) },
14451 : { "TEXTURE_CUBE_MAP", JS::NumberValue(34067U) },
14452 : { "TEXTURE_BINDING_CUBE_MAP", JS::NumberValue(34068U) },
14453 : { "TEXTURE_CUBE_MAP_POSITIVE_X", JS::NumberValue(34069U) },
14454 : { "TEXTURE_CUBE_MAP_NEGATIVE_X", JS::NumberValue(34070U) },
14455 : { "TEXTURE_CUBE_MAP_POSITIVE_Y", JS::NumberValue(34071U) },
14456 : { "TEXTURE_CUBE_MAP_NEGATIVE_Y", JS::NumberValue(34072U) },
14457 : { "TEXTURE_CUBE_MAP_POSITIVE_Z", JS::NumberValue(34073U) },
14458 : { "TEXTURE_CUBE_MAP_NEGATIVE_Z", JS::NumberValue(34074U) },
14459 : { "MAX_CUBE_MAP_TEXTURE_SIZE", JS::NumberValue(34076U) },
14460 : { "TEXTURE0", JS::NumberValue(33984U) },
14461 : { "TEXTURE1", JS::NumberValue(33985U) },
14462 : { "TEXTURE2", JS::NumberValue(33986U) },
14463 : { "TEXTURE3", JS::NumberValue(33987U) },
14464 : { "TEXTURE4", JS::NumberValue(33988U) },
14465 : { "TEXTURE5", JS::NumberValue(33989U) },
14466 : { "TEXTURE6", JS::NumberValue(33990U) },
14467 : { "TEXTURE7", JS::NumberValue(33991U) },
14468 : { "TEXTURE8", JS::NumberValue(33992U) },
14469 : { "TEXTURE9", JS::NumberValue(33993U) },
14470 : { "TEXTURE10", JS::NumberValue(33994U) },
14471 : { "TEXTURE11", JS::NumberValue(33995U) },
14472 : { "TEXTURE12", JS::NumberValue(33996U) },
14473 : { "TEXTURE13", JS::NumberValue(33997U) },
14474 : { "TEXTURE14", JS::NumberValue(33998U) },
14475 : { "TEXTURE15", JS::NumberValue(33999U) },
14476 : { "TEXTURE16", JS::NumberValue(34000U) },
14477 : { "TEXTURE17", JS::NumberValue(34001U) },
14478 : { "TEXTURE18", JS::NumberValue(34002U) },
14479 : { "TEXTURE19", JS::NumberValue(34003U) },
14480 : { "TEXTURE20", JS::NumberValue(34004U) },
14481 : { "TEXTURE21", JS::NumberValue(34005U) },
14482 : { "TEXTURE22", JS::NumberValue(34006U) },
14483 : { "TEXTURE23", JS::NumberValue(34007U) },
14484 : { "TEXTURE24", JS::NumberValue(34008U) },
14485 : { "TEXTURE25", JS::NumberValue(34009U) },
14486 : { "TEXTURE26", JS::NumberValue(34010U) },
14487 : { "TEXTURE27", JS::NumberValue(34011U) },
14488 : { "TEXTURE28", JS::NumberValue(34012U) },
14489 : { "TEXTURE29", JS::NumberValue(34013U) },
14490 : { "TEXTURE30", JS::NumberValue(34014U) },
14491 : { "TEXTURE31", JS::NumberValue(34015U) },
14492 : { "ACTIVE_TEXTURE", JS::NumberValue(34016U) },
14493 : { "REPEAT", JS::NumberValue(10497U) },
14494 : { "CLAMP_TO_EDGE", JS::NumberValue(33071U) },
14495 : { "MIRRORED_REPEAT", JS::NumberValue(33648U) },
14496 : { "FLOAT_VEC2", JS::NumberValue(35664U) },
14497 : { "FLOAT_VEC3", JS::NumberValue(35665U) },
14498 : { "FLOAT_VEC4", JS::NumberValue(35666U) },
14499 : { "INT_VEC2", JS::NumberValue(35667U) },
14500 : { "INT_VEC3", JS::NumberValue(35668U) },
14501 : { "INT_VEC4", JS::NumberValue(35669U) },
14502 : { "BOOL", JS::NumberValue(35670U) },
14503 : { "BOOL_VEC2", JS::NumberValue(35671U) },
14504 : { "BOOL_VEC3", JS::NumberValue(35672U) },
14505 : { "BOOL_VEC4", JS::NumberValue(35673U) },
14506 : { "FLOAT_MAT2", JS::NumberValue(35674U) },
14507 : { "FLOAT_MAT3", JS::NumberValue(35675U) },
14508 : { "FLOAT_MAT4", JS::NumberValue(35676U) },
14509 : { "SAMPLER_2D", JS::NumberValue(35678U) },
14510 : { "SAMPLER_CUBE", JS::NumberValue(35680U) },
14511 : { "VERTEX_ATTRIB_ARRAY_ENABLED", JS::NumberValue(34338U) },
14512 : { "VERTEX_ATTRIB_ARRAY_SIZE", JS::NumberValue(34339U) },
14513 : { "VERTEX_ATTRIB_ARRAY_STRIDE", JS::NumberValue(34340U) },
14514 : { "VERTEX_ATTRIB_ARRAY_TYPE", JS::NumberValue(34341U) },
14515 : { "VERTEX_ATTRIB_ARRAY_NORMALIZED", JS::NumberValue(34922U) },
14516 : { "VERTEX_ATTRIB_ARRAY_POINTER", JS::NumberValue(34373U) },
14517 : { "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", JS::NumberValue(34975U) },
14518 : { "IMPLEMENTATION_COLOR_READ_TYPE", JS::NumberValue(35738U) },
14519 : { "IMPLEMENTATION_COLOR_READ_FORMAT", JS::NumberValue(35739U) },
14520 : { "COMPILE_STATUS", JS::NumberValue(35713U) },
14521 : { "LOW_FLOAT", JS::NumberValue(36336U) },
14522 : { "MEDIUM_FLOAT", JS::NumberValue(36337U) },
14523 : { "HIGH_FLOAT", JS::NumberValue(36338U) },
14524 : { "LOW_INT", JS::NumberValue(36339U) },
14525 : { "MEDIUM_INT", JS::NumberValue(36340U) },
14526 : { "HIGH_INT", JS::NumberValue(36341U) },
14527 : { "FRAMEBUFFER", JS::NumberValue(36160U) },
14528 : { "RENDERBUFFER", JS::NumberValue(36161U) },
14529 : { "RGBA4", JS::NumberValue(32854U) },
14530 : { "RGB5_A1", JS::NumberValue(32855U) },
14531 : { "RGB565", JS::NumberValue(36194U) },
14532 : { "DEPTH_COMPONENT16", JS::NumberValue(33189U) },
14533 : { "STENCIL_INDEX8", JS::NumberValue(36168U) },
14534 : { "DEPTH_STENCIL", JS::NumberValue(34041U) },
14535 : { "RENDERBUFFER_WIDTH", JS::NumberValue(36162U) },
14536 : { "RENDERBUFFER_HEIGHT", JS::NumberValue(36163U) },
14537 : { "RENDERBUFFER_INTERNAL_FORMAT", JS::NumberValue(36164U) },
14538 : { "RENDERBUFFER_RED_SIZE", JS::NumberValue(36176U) },
14539 : { "RENDERBUFFER_GREEN_SIZE", JS::NumberValue(36177U) },
14540 : { "RENDERBUFFER_BLUE_SIZE", JS::NumberValue(36178U) },
14541 : { "RENDERBUFFER_ALPHA_SIZE", JS::NumberValue(36179U) },
14542 : { "RENDERBUFFER_DEPTH_SIZE", JS::NumberValue(36180U) },
14543 : { "RENDERBUFFER_STENCIL_SIZE", JS::NumberValue(36181U) },
14544 : { "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", JS::NumberValue(36048U) },
14545 : { "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", JS::NumberValue(36049U) },
14546 : { "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", JS::NumberValue(36050U) },
14547 : { "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", JS::NumberValue(36051U) },
14548 : { "COLOR_ATTACHMENT0", JS::NumberValue(36064U) },
14549 : { "DEPTH_ATTACHMENT", JS::NumberValue(36096U) },
14550 : { "STENCIL_ATTACHMENT", JS::NumberValue(36128U) },
14551 : { "DEPTH_STENCIL_ATTACHMENT", JS::NumberValue(33306U) },
14552 : { "NONE", JS::NumberValue(0U) },
14553 : { "FRAMEBUFFER_COMPLETE", JS::NumberValue(36053U) },
14554 : { "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", JS::NumberValue(36054U) },
14555 : { "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", JS::NumberValue(36055U) },
14556 : { "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", JS::NumberValue(36057U) },
14557 : { "FRAMEBUFFER_UNSUPPORTED", JS::NumberValue(36061U) },
14558 : { "FRAMEBUFFER_BINDING", JS::NumberValue(36006U) },
14559 : { "RENDERBUFFER_BINDING", JS::NumberValue(36007U) },
14560 : { "MAX_RENDERBUFFER_SIZE", JS::NumberValue(34024U) },
14561 : { "INVALID_FRAMEBUFFER_OPERATION", JS::NumberValue(1286U) },
14562 : { "UNPACK_FLIP_Y_WEBGL", JS::NumberValue(37440U) },
14563 : { "UNPACK_PREMULTIPLY_ALPHA_WEBGL", JS::NumberValue(37441U) },
14564 : { "CONTEXT_LOST_WEBGL", JS::NumberValue(37442U) },
14565 : { "UNPACK_COLORSPACE_CONVERSION_WEBGL", JS::NumberValue(37443U) },
14566 : { "BROWSER_DEFAULT_WEBGL", JS::NumberValue(37444U) },
14567 : { 0, JS::UndefinedValue() }
14568 16 : };
14569 : #if defined(__clang__)
14570 : #pragma clang diagnostic pop
14571 : #endif
14572 :
14573 :
14574 : // Can't be const because the pref-enabled boolean needs to be writable
14575 : static Prefable<const ConstantSpec> sConstants[] = {
14576 : { nullptr, &sConstants_specs[0] },
14577 : { nullptr, nullptr }
14578 : };
14579 :
14580 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
14581 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
14582 : static_assert(559 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
14583 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
14584 :
14585 :
14586 : static uint16_t sNativeProperties_sortedPropertyIndices[786];
14587 : static PropertyInfo sNativeProperties_propertyInfos[786];
14588 :
14589 : static const NativePropertiesN<3> sNativeProperties = {
14590 : false, 0,
14591 : false, 0,
14592 : true, 0 /* sMethods */,
14593 : true, 1 /* sAttributes */,
14594 : false, 0,
14595 : false, 0,
14596 : true, 2 /* sConstants */,
14597 : -1,
14598 : 786,
14599 : sNativeProperties_sortedPropertyIndices,
14600 : {
14601 : { sMethods, &sNativeProperties_propertyInfos[0] },
14602 : { sAttributes, &sNativeProperties_propertyInfos[224] },
14603 : { sConstants, &sNativeProperties_propertyInfos[227] }
14604 : }
14605 : };
14606 : static_assert(786 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
14607 : "We have a property info count that is oversized");
14608 :
14609 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
14610 : {
14611 : "Function",
14612 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
14613 : &sBoringInterfaceObjectClassClassOps,
14614 : JS_NULL_CLASS_SPEC,
14615 : JS_NULL_CLASS_EXT,
14616 : &sInterfaceObjectClassObjectOps
14617 : },
14618 : eInterface,
14619 : true,
14620 : prototypes::id::WebGL2RenderingContext,
14621 : PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth,
14622 : sNativePropertyHooks,
14623 : "function WebGL2RenderingContext() {\n [native code]\n}",
14624 : JS::GetRealmFunctionPrototype
14625 : };
14626 :
14627 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
14628 : {
14629 : "WebGL2RenderingContextPrototype",
14630 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
14631 : JS_NULL_CLASS_OPS,
14632 : JS_NULL_CLASS_SPEC,
14633 : JS_NULL_CLASS_EXT,
14634 : JS_NULL_OBJECT_OPS
14635 : },
14636 : eInterfacePrototype,
14637 : false,
14638 : prototypes::id::WebGL2RenderingContext,
14639 : PrototypeTraits<prototypes::id::WebGL2RenderingContext>::Depth,
14640 : sNativePropertyHooks,
14641 : "[object WebGL2RenderingContextPrototype]",
14642 : JS::GetRealmObjectPrototype
14643 : };
14644 :
14645 : bool
14646 0 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
14647 : {
14648 : static bool sPrefValue;
14649 : static bool sPrefCacheSetUp = false;
14650 0 : if (!sPrefCacheSetUp) {
14651 0 : sPrefCacheSetUp = true;
14652 0 : Preferences::AddBoolVarCache(&sPrefValue, "webgl.enable-webgl2");
14653 : }
14654 :
14655 0 : return sPrefValue;
14656 : }
14657 :
14658 : JSObject*
14659 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
14660 : {
14661 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
14662 : }
14663 :
14664 : static const js::ClassOps sClassOps = {
14665 : _addProperty, /* addProperty */
14666 : nullptr, /* delProperty */
14667 : nullptr, /* getProperty */
14668 : nullptr, /* setProperty */
14669 : nullptr, /* enumerate */
14670 : nullptr, /* newEnumerate */
14671 : nullptr, /* resolve */
14672 : nullptr, /* mayResolve */
14673 : _finalize, /* finalize */
14674 : nullptr, /* call */
14675 : nullptr, /* hasInstance */
14676 : nullptr, /* construct */
14677 : nullptr, /* trace */
14678 : };
14679 :
14680 : static const js::ClassExtension sClassExtension = {
14681 : nullptr, /* weakmapKeyDelegateOp */
14682 : _objectMoved /* objectMovedOp */
14683 : };
14684 :
14685 : static const DOMJSClass sClass = {
14686 : { "WebGL2RenderingContext",
14687 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
14688 : &sClassOps,
14689 : JS_NULL_CLASS_SPEC,
14690 : &sClassExtension,
14691 : JS_NULL_OBJECT_OPS
14692 : },
14693 : { prototypes::id::WebGL2RenderingContext, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
14694 : IsBaseOf<nsISupports, mozilla::WebGL2Context >::value,
14695 : sNativePropertyHooks,
14696 : FindAssociatedGlobalForNative<mozilla::WebGL2Context>::Get,
14697 : GetProtoObjectHandle,
14698 : GetCCParticipant<mozilla::WebGL2Context>::Get()
14699 : };
14700 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
14701 : "Must have the right minimal number of reserved slots.");
14702 : static_assert(1 >= 1,
14703 : "Must have enough reserved slots.");
14704 :
14705 : const JSClass*
14706 0 : GetJSClass()
14707 : {
14708 0 : return sClass.ToJSClass();
14709 : }
14710 :
14711 : bool
14712 0 : Wrap(JSContext* aCx, mozilla::WebGL2Context* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
14713 : {
14714 : MOZ_ASSERT(static_cast<mozilla::WebGL2Context*>(aObject) ==
14715 : reinterpret_cast<mozilla::WebGL2Context*>(aObject),
14716 : "Multiple inheritance for mozilla::WebGL2Context is broken.");
14717 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
14718 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
14719 0 : MOZ_ASSERT(!aCache->GetWrapper(),
14720 : "You should probably not be using Wrap() directly; use "
14721 : "GetOrCreateDOMReflector instead");
14722 :
14723 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
14724 : "nsISupports must be on our primary inheritance chain");
14725 :
14726 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
14727 0 : if (!global) {
14728 0 : return false;
14729 : }
14730 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
14731 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
14732 :
14733 : // That might have ended up wrapping us already, due to the wonders
14734 : // of XBL. Check for that, and bail out as needed.
14735 0 : aReflector.set(aCache->GetWrapper());
14736 0 : if (aReflector) {
14737 : #ifdef DEBUG
14738 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
14739 : #endif // DEBUG
14740 0 : return true;
14741 : }
14742 :
14743 0 : JSAutoCompartment ac(aCx, global);
14744 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
14745 0 : if (!canonicalProto) {
14746 0 : return false;
14747 : }
14748 0 : JS::Rooted<JSObject*> proto(aCx);
14749 0 : if (aGivenProto) {
14750 0 : proto = aGivenProto;
14751 : // Unfortunately, while aGivenProto was in the compartment of aCx
14752 : // coming in, we changed compartments to that of "parent" so may need
14753 : // to wrap the proto here.
14754 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
14755 0 : if (!JS_WrapObject(aCx, &proto)) {
14756 0 : return false;
14757 : }
14758 : }
14759 : } else {
14760 0 : proto = canonicalProto;
14761 : }
14762 :
14763 0 : BindingJSObjectCreator<mozilla::WebGL2Context> creator(aCx);
14764 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
14765 0 : if (!aReflector) {
14766 0 : return false;
14767 : }
14768 :
14769 0 : aCache->SetWrapper(aReflector);
14770 0 : creator.InitializationSucceeded();
14771 :
14772 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
14773 : aCache->GetWrapperPreserveColor() == aReflector);
14774 : // If proto != canonicalProto, we have to preserve our wrapper;
14775 : // otherwise we won't be able to properly recreate it later, since
14776 : // we won't know what proto to use. Note that we don't check
14777 : // aGivenProto here, since it's entirely possible (and even
14778 : // somewhat common) to have a non-null aGivenProto which is the
14779 : // same as canonicalProto.
14780 0 : if (proto != canonicalProto) {
14781 0 : PreserveWrapper(aObject);
14782 : }
14783 :
14784 0 : return true;
14785 : }
14786 :
14787 : const NativePropertyHooks sNativePropertyHooks[] = { {
14788 : nullptr,
14789 : nullptr,
14790 : nullptr,
14791 : { sNativeProperties.Upcast(), nullptr },
14792 : prototypes::id::WebGL2RenderingContext,
14793 : constructors::id::WebGL2RenderingContext,
14794 : nullptr,
14795 : &DefaultXrayExpandoObjectClass
14796 : } };
14797 :
14798 : void
14799 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
14800 : {
14801 0 : JS::Rooted<JSObject*> parentProto(aCx, JS::GetRealmObjectPrototype(aCx));
14802 0 : if (!parentProto) {
14803 0 : return;
14804 : }
14805 :
14806 0 : JS::Rooted<JSObject*> constructorProto(aCx, JS::GetRealmFunctionPrototype(aCx));
14807 0 : if (!constructorProto) {
14808 0 : return;
14809 : }
14810 :
14811 : static bool sIdsInited = false;
14812 0 : if (!sIdsInited && NS_IsMainThread()) {
14813 0 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
14814 0 : return;
14815 : }
14816 0 : sIdsInited = true;
14817 : }
14818 :
14819 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::WebGL2RenderingContext);
14820 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::WebGL2RenderingContext);
14821 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
14822 : &sPrototypeClass.mBase, protoCache,
14823 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
14824 : interfaceCache,
14825 : sNativeProperties.Upcast(),
14826 : nullptr,
14827 : "WebGL2RenderingContext", aDefineOnGlobal,
14828 : nullptr,
14829 0 : false);
14830 : }
14831 :
14832 : JS::Handle<JSObject*>
14833 0 : GetProtoObjectHandle(JSContext* aCx)
14834 : {
14835 : /* Get the interface prototype object for this class. This will create the
14836 : object as needed. */
14837 0 : bool aDefineOnGlobal = true;
14838 :
14839 : /* Make sure our global is sane. Hopefully we can remove this sometime */
14840 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
14841 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
14842 0 : return nullptr;
14843 : }
14844 :
14845 : /* Check to see whether the interface objects are already installed */
14846 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
14847 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::WebGL2RenderingContext)) {
14848 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
14849 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
14850 : }
14851 :
14852 : /*
14853 : * The object might _still_ be null, but that's OK.
14854 : *
14855 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
14856 : * traced by TraceProtoAndIfaceCache() and its contents are never
14857 : * changed after they have been set.
14858 : *
14859 : * Calling address() avoids the read read barrier that does gray
14860 : * unmarking, but it's not possible for the object to be gray here.
14861 : */
14862 :
14863 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::WebGL2RenderingContext);
14864 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
14865 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
14866 : }
14867 :
14868 : JS::Handle<JSObject*>
14869 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
14870 : {
14871 : /* Get the interface object for this class. This will create the object as
14872 : needed. */
14873 :
14874 : /* Make sure our global is sane. Hopefully we can remove this sometime */
14875 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
14876 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
14877 0 : return nullptr;
14878 : }
14879 :
14880 : /* Check to see whether the interface objects are already installed */
14881 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
14882 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::WebGL2RenderingContext)) {
14883 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
14884 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
14885 : }
14886 :
14887 : /*
14888 : * The object might _still_ be null, but that's OK.
14889 : *
14890 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
14891 : * traced by TraceProtoAndIfaceCache() and its contents are never
14892 : * changed after they have been set.
14893 : *
14894 : * Calling address() avoids the read read barrier that does gray
14895 : * unmarking, but it's not possible for the object to be gray here.
14896 : */
14897 :
14898 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::WebGL2RenderingContext);
14899 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
14900 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
14901 : }
14902 :
14903 : JSObject*
14904 0 : GetConstructorObject(JSContext* aCx)
14905 : {
14906 0 : return GetConstructorObjectHandle(aCx);
14907 : }
14908 :
14909 : } // namespace WebGL2RenderingContextBinding
14910 :
14911 :
14912 :
14913 : namespace WebGLSamplerBinding {
14914 :
14915 : static bool
14916 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
14917 : {
14918 0 : mozilla::WebGLSampler* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLSampler>(obj);
14919 : // We don't want to preserve if we don't have a wrapper, and we
14920 : // obviously can't preserve if we're not initialized.
14921 0 : if (self && self->GetWrapperPreserveColor()) {
14922 0 : PreserveWrapper(self);
14923 : }
14924 0 : return true;
14925 : }
14926 :
14927 : static void
14928 0 : _finalize(js::FreeOp* fop, JSObject* obj)
14929 : {
14930 0 : mozilla::WebGLSampler* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLSampler>(obj);
14931 0 : if (self) {
14932 0 : ClearWrapper(self, self, obj);
14933 0 : AddForDeferredFinalization<mozilla::WebGLSampler>(self);
14934 : }
14935 0 : }
14936 :
14937 : static void
14938 0 : _objectMoved(JSObject* obj, const JSObject* old)
14939 : {
14940 0 : mozilla::WebGLSampler* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLSampler>(obj);
14941 0 : if (self) {
14942 0 : UpdateWrapper(self, self, obj, old);
14943 : }
14944 0 : }
14945 :
14946 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
14947 : {
14948 : "Function",
14949 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
14950 : &sBoringInterfaceObjectClassClassOps,
14951 : JS_NULL_CLASS_SPEC,
14952 : JS_NULL_CLASS_EXT,
14953 : &sInterfaceObjectClassObjectOps
14954 : },
14955 : eInterface,
14956 : true,
14957 : prototypes::id::WebGLSampler,
14958 : PrototypeTraits<prototypes::id::WebGLSampler>::Depth,
14959 : sNativePropertyHooks,
14960 : "function WebGLSampler() {\n [native code]\n}",
14961 : JS::GetRealmFunctionPrototype
14962 : };
14963 :
14964 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
14965 : {
14966 : "WebGLSamplerPrototype",
14967 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
14968 : JS_NULL_CLASS_OPS,
14969 : JS_NULL_CLASS_SPEC,
14970 : JS_NULL_CLASS_EXT,
14971 : JS_NULL_OBJECT_OPS
14972 : },
14973 : eInterfacePrototype,
14974 : false,
14975 : prototypes::id::WebGLSampler,
14976 : PrototypeTraits<prototypes::id::WebGLSampler>::Depth,
14977 : sNativePropertyHooks,
14978 : "[object WebGLSamplerPrototype]",
14979 : JS::GetRealmObjectPrototype
14980 : };
14981 :
14982 : bool
14983 0 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
14984 : {
14985 : static bool sPrefValue;
14986 : static bool sPrefCacheSetUp = false;
14987 0 : if (!sPrefCacheSetUp) {
14988 0 : sPrefCacheSetUp = true;
14989 0 : Preferences::AddBoolVarCache(&sPrefValue, "webgl.enable-webgl2");
14990 : }
14991 :
14992 0 : return sPrefValue;
14993 : }
14994 :
14995 : JSObject*
14996 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
14997 : {
14998 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
14999 : }
15000 :
15001 : static const js::ClassOps sClassOps = {
15002 : _addProperty, /* addProperty */
15003 : nullptr, /* delProperty */
15004 : nullptr, /* getProperty */
15005 : nullptr, /* setProperty */
15006 : nullptr, /* enumerate */
15007 : nullptr, /* newEnumerate */
15008 : nullptr, /* resolve */
15009 : nullptr, /* mayResolve */
15010 : _finalize, /* finalize */
15011 : nullptr, /* call */
15012 : nullptr, /* hasInstance */
15013 : nullptr, /* construct */
15014 : nullptr, /* trace */
15015 : };
15016 :
15017 : static const js::ClassExtension sClassExtension = {
15018 : nullptr, /* weakmapKeyDelegateOp */
15019 : _objectMoved /* objectMovedOp */
15020 : };
15021 :
15022 : static const DOMJSClass sClass = {
15023 : { "WebGLSampler",
15024 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
15025 : &sClassOps,
15026 : JS_NULL_CLASS_SPEC,
15027 : &sClassExtension,
15028 : JS_NULL_OBJECT_OPS
15029 : },
15030 : { prototypes::id::WebGLSampler, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
15031 : IsBaseOf<nsISupports, mozilla::WebGLSampler >::value,
15032 : sNativePropertyHooks,
15033 : FindAssociatedGlobalForNative<mozilla::WebGLSampler>::Get,
15034 : GetProtoObjectHandle,
15035 : GetCCParticipant<mozilla::WebGLSampler>::Get()
15036 : };
15037 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
15038 : "Must have the right minimal number of reserved slots.");
15039 : static_assert(1 >= 1,
15040 : "Must have enough reserved slots.");
15041 :
15042 : const JSClass*
15043 0 : GetJSClass()
15044 : {
15045 0 : return sClass.ToJSClass();
15046 : }
15047 :
15048 : bool
15049 0 : Wrap(JSContext* aCx, mozilla::WebGLSampler* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
15050 : {
15051 : MOZ_ASSERT(static_cast<mozilla::WebGLSampler*>(aObject) ==
15052 : reinterpret_cast<mozilla::WebGLSampler*>(aObject),
15053 : "Multiple inheritance for mozilla::WebGLSampler is broken.");
15054 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
15055 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
15056 0 : MOZ_ASSERT(!aCache->GetWrapper(),
15057 : "You should probably not be using Wrap() directly; use "
15058 : "GetOrCreateDOMReflector instead");
15059 :
15060 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
15061 : "nsISupports must be on our primary inheritance chain");
15062 :
15063 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
15064 0 : if (!global) {
15065 0 : return false;
15066 : }
15067 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
15068 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
15069 :
15070 : // That might have ended up wrapping us already, due to the wonders
15071 : // of XBL. Check for that, and bail out as needed.
15072 0 : aReflector.set(aCache->GetWrapper());
15073 0 : if (aReflector) {
15074 : #ifdef DEBUG
15075 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
15076 : #endif // DEBUG
15077 0 : return true;
15078 : }
15079 :
15080 0 : JSAutoCompartment ac(aCx, global);
15081 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
15082 0 : if (!canonicalProto) {
15083 0 : return false;
15084 : }
15085 0 : JS::Rooted<JSObject*> proto(aCx);
15086 0 : if (aGivenProto) {
15087 0 : proto = aGivenProto;
15088 : // Unfortunately, while aGivenProto was in the compartment of aCx
15089 : // coming in, we changed compartments to that of "parent" so may need
15090 : // to wrap the proto here.
15091 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
15092 0 : if (!JS_WrapObject(aCx, &proto)) {
15093 0 : return false;
15094 : }
15095 : }
15096 : } else {
15097 0 : proto = canonicalProto;
15098 : }
15099 :
15100 0 : BindingJSObjectCreator<mozilla::WebGLSampler> creator(aCx);
15101 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
15102 0 : if (!aReflector) {
15103 0 : return false;
15104 : }
15105 :
15106 0 : aCache->SetWrapper(aReflector);
15107 0 : creator.InitializationSucceeded();
15108 :
15109 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
15110 : aCache->GetWrapperPreserveColor() == aReflector);
15111 : // If proto != canonicalProto, we have to preserve our wrapper;
15112 : // otherwise we won't be able to properly recreate it later, since
15113 : // we won't know what proto to use. Note that we don't check
15114 : // aGivenProto here, since it's entirely possible (and even
15115 : // somewhat common) to have a non-null aGivenProto which is the
15116 : // same as canonicalProto.
15117 0 : if (proto != canonicalProto) {
15118 0 : PreserveWrapper(aObject);
15119 : }
15120 :
15121 0 : return true;
15122 : }
15123 :
15124 : const NativePropertyHooks sNativePropertyHooks[] = { {
15125 : nullptr,
15126 : nullptr,
15127 : nullptr,
15128 : { nullptr, nullptr },
15129 : prototypes::id::WebGLSampler,
15130 : constructors::id::WebGLSampler,
15131 : nullptr,
15132 : &DefaultXrayExpandoObjectClass
15133 : } };
15134 :
15135 : void
15136 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
15137 : {
15138 0 : JS::Rooted<JSObject*> parentProto(aCx, JS::GetRealmObjectPrototype(aCx));
15139 0 : if (!parentProto) {
15140 0 : return;
15141 : }
15142 :
15143 0 : JS::Rooted<JSObject*> constructorProto(aCx, JS::GetRealmFunctionPrototype(aCx));
15144 0 : if (!constructorProto) {
15145 0 : return;
15146 : }
15147 :
15148 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::WebGLSampler);
15149 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::WebGLSampler);
15150 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
15151 : &sPrototypeClass.mBase, protoCache,
15152 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
15153 : interfaceCache,
15154 : nullptr,
15155 : nullptr,
15156 : "WebGLSampler", aDefineOnGlobal,
15157 : nullptr,
15158 0 : false);
15159 : }
15160 :
15161 : JS::Handle<JSObject*>
15162 0 : GetProtoObjectHandle(JSContext* aCx)
15163 : {
15164 : /* Get the interface prototype object for this class. This will create the
15165 : object as needed. */
15166 0 : bool aDefineOnGlobal = true;
15167 :
15168 : /* Make sure our global is sane. Hopefully we can remove this sometime */
15169 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
15170 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
15171 0 : return nullptr;
15172 : }
15173 :
15174 : /* Check to see whether the interface objects are already installed */
15175 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
15176 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::WebGLSampler)) {
15177 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
15178 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
15179 : }
15180 :
15181 : /*
15182 : * The object might _still_ be null, but that's OK.
15183 : *
15184 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
15185 : * traced by TraceProtoAndIfaceCache() and its contents are never
15186 : * changed after they have been set.
15187 : *
15188 : * Calling address() avoids the read read barrier that does gray
15189 : * unmarking, but it's not possible for the object to be gray here.
15190 : */
15191 :
15192 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::WebGLSampler);
15193 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
15194 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
15195 : }
15196 :
15197 : JS::Handle<JSObject*>
15198 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
15199 : {
15200 : /* Get the interface object for this class. This will create the object as
15201 : needed. */
15202 :
15203 : /* Make sure our global is sane. Hopefully we can remove this sometime */
15204 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
15205 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
15206 0 : return nullptr;
15207 : }
15208 :
15209 : /* Check to see whether the interface objects are already installed */
15210 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
15211 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::WebGLSampler)) {
15212 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
15213 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
15214 : }
15215 :
15216 : /*
15217 : * The object might _still_ be null, but that's OK.
15218 : *
15219 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
15220 : * traced by TraceProtoAndIfaceCache() and its contents are never
15221 : * changed after they have been set.
15222 : *
15223 : * Calling address() avoids the read read barrier that does gray
15224 : * unmarking, but it's not possible for the object to be gray here.
15225 : */
15226 :
15227 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::WebGLSampler);
15228 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
15229 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
15230 : }
15231 :
15232 : JSObject*
15233 0 : GetConstructorObject(JSContext* aCx)
15234 : {
15235 0 : return GetConstructorObjectHandle(aCx);
15236 : }
15237 :
15238 : } // namespace WebGLSamplerBinding
15239 :
15240 :
15241 :
15242 : namespace WebGLSyncBinding {
15243 :
15244 : static bool
15245 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
15246 : {
15247 0 : mozilla::WebGLSync* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLSync>(obj);
15248 : // We don't want to preserve if we don't have a wrapper, and we
15249 : // obviously can't preserve if we're not initialized.
15250 0 : if (self && self->GetWrapperPreserveColor()) {
15251 0 : PreserveWrapper(self);
15252 : }
15253 0 : return true;
15254 : }
15255 :
15256 : static void
15257 0 : _finalize(js::FreeOp* fop, JSObject* obj)
15258 : {
15259 0 : mozilla::WebGLSync* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLSync>(obj);
15260 0 : if (self) {
15261 0 : ClearWrapper(self, self, obj);
15262 0 : AddForDeferredFinalization<mozilla::WebGLSync>(self);
15263 : }
15264 0 : }
15265 :
15266 : static void
15267 0 : _objectMoved(JSObject* obj, const JSObject* old)
15268 : {
15269 0 : mozilla::WebGLSync* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLSync>(obj);
15270 0 : if (self) {
15271 0 : UpdateWrapper(self, self, obj, old);
15272 : }
15273 0 : }
15274 :
15275 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
15276 : {
15277 : "Function",
15278 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
15279 : &sBoringInterfaceObjectClassClassOps,
15280 : JS_NULL_CLASS_SPEC,
15281 : JS_NULL_CLASS_EXT,
15282 : &sInterfaceObjectClassObjectOps
15283 : },
15284 : eInterface,
15285 : true,
15286 : prototypes::id::WebGLSync,
15287 : PrototypeTraits<prototypes::id::WebGLSync>::Depth,
15288 : sNativePropertyHooks,
15289 : "function WebGLSync() {\n [native code]\n}",
15290 : JS::GetRealmFunctionPrototype
15291 : };
15292 :
15293 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
15294 : {
15295 : "WebGLSyncPrototype",
15296 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
15297 : JS_NULL_CLASS_OPS,
15298 : JS_NULL_CLASS_SPEC,
15299 : JS_NULL_CLASS_EXT,
15300 : JS_NULL_OBJECT_OPS
15301 : },
15302 : eInterfacePrototype,
15303 : false,
15304 : prototypes::id::WebGLSync,
15305 : PrototypeTraits<prototypes::id::WebGLSync>::Depth,
15306 : sNativePropertyHooks,
15307 : "[object WebGLSyncPrototype]",
15308 : JS::GetRealmObjectPrototype
15309 : };
15310 :
15311 : bool
15312 0 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
15313 : {
15314 : static bool sPrefValue;
15315 : static bool sPrefCacheSetUp = false;
15316 0 : if (!sPrefCacheSetUp) {
15317 0 : sPrefCacheSetUp = true;
15318 0 : Preferences::AddBoolVarCache(&sPrefValue, "webgl.enable-webgl2");
15319 : }
15320 :
15321 0 : return sPrefValue;
15322 : }
15323 :
15324 : JSObject*
15325 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
15326 : {
15327 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
15328 : }
15329 :
15330 : static const js::ClassOps sClassOps = {
15331 : _addProperty, /* addProperty */
15332 : nullptr, /* delProperty */
15333 : nullptr, /* getProperty */
15334 : nullptr, /* setProperty */
15335 : nullptr, /* enumerate */
15336 : nullptr, /* newEnumerate */
15337 : nullptr, /* resolve */
15338 : nullptr, /* mayResolve */
15339 : _finalize, /* finalize */
15340 : nullptr, /* call */
15341 : nullptr, /* hasInstance */
15342 : nullptr, /* construct */
15343 : nullptr, /* trace */
15344 : };
15345 :
15346 : static const js::ClassExtension sClassExtension = {
15347 : nullptr, /* weakmapKeyDelegateOp */
15348 : _objectMoved /* objectMovedOp */
15349 : };
15350 :
15351 : static const DOMJSClass sClass = {
15352 : { "WebGLSync",
15353 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
15354 : &sClassOps,
15355 : JS_NULL_CLASS_SPEC,
15356 : &sClassExtension,
15357 : JS_NULL_OBJECT_OPS
15358 : },
15359 : { prototypes::id::WebGLSync, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
15360 : IsBaseOf<nsISupports, mozilla::WebGLSync >::value,
15361 : sNativePropertyHooks,
15362 : FindAssociatedGlobalForNative<mozilla::WebGLSync>::Get,
15363 : GetProtoObjectHandle,
15364 : GetCCParticipant<mozilla::WebGLSync>::Get()
15365 : };
15366 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
15367 : "Must have the right minimal number of reserved slots.");
15368 : static_assert(1 >= 1,
15369 : "Must have enough reserved slots.");
15370 :
15371 : const JSClass*
15372 0 : GetJSClass()
15373 : {
15374 0 : return sClass.ToJSClass();
15375 : }
15376 :
15377 : bool
15378 0 : Wrap(JSContext* aCx, mozilla::WebGLSync* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
15379 : {
15380 : MOZ_ASSERT(static_cast<mozilla::WebGLSync*>(aObject) ==
15381 : reinterpret_cast<mozilla::WebGLSync*>(aObject),
15382 : "Multiple inheritance for mozilla::WebGLSync is broken.");
15383 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
15384 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
15385 0 : MOZ_ASSERT(!aCache->GetWrapper(),
15386 : "You should probably not be using Wrap() directly; use "
15387 : "GetOrCreateDOMReflector instead");
15388 :
15389 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
15390 : "nsISupports must be on our primary inheritance chain");
15391 :
15392 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
15393 0 : if (!global) {
15394 0 : return false;
15395 : }
15396 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
15397 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
15398 :
15399 : // That might have ended up wrapping us already, due to the wonders
15400 : // of XBL. Check for that, and bail out as needed.
15401 0 : aReflector.set(aCache->GetWrapper());
15402 0 : if (aReflector) {
15403 : #ifdef DEBUG
15404 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
15405 : #endif // DEBUG
15406 0 : return true;
15407 : }
15408 :
15409 0 : JSAutoCompartment ac(aCx, global);
15410 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
15411 0 : if (!canonicalProto) {
15412 0 : return false;
15413 : }
15414 0 : JS::Rooted<JSObject*> proto(aCx);
15415 0 : if (aGivenProto) {
15416 0 : proto = aGivenProto;
15417 : // Unfortunately, while aGivenProto was in the compartment of aCx
15418 : // coming in, we changed compartments to that of "parent" so may need
15419 : // to wrap the proto here.
15420 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
15421 0 : if (!JS_WrapObject(aCx, &proto)) {
15422 0 : return false;
15423 : }
15424 : }
15425 : } else {
15426 0 : proto = canonicalProto;
15427 : }
15428 :
15429 0 : BindingJSObjectCreator<mozilla::WebGLSync> creator(aCx);
15430 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
15431 0 : if (!aReflector) {
15432 0 : return false;
15433 : }
15434 :
15435 0 : aCache->SetWrapper(aReflector);
15436 0 : creator.InitializationSucceeded();
15437 :
15438 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
15439 : aCache->GetWrapperPreserveColor() == aReflector);
15440 : // If proto != canonicalProto, we have to preserve our wrapper;
15441 : // otherwise we won't be able to properly recreate it later, since
15442 : // we won't know what proto to use. Note that we don't check
15443 : // aGivenProto here, since it's entirely possible (and even
15444 : // somewhat common) to have a non-null aGivenProto which is the
15445 : // same as canonicalProto.
15446 0 : if (proto != canonicalProto) {
15447 0 : PreserveWrapper(aObject);
15448 : }
15449 :
15450 0 : return true;
15451 : }
15452 :
15453 : const NativePropertyHooks sNativePropertyHooks[] = { {
15454 : nullptr,
15455 : nullptr,
15456 : nullptr,
15457 : { nullptr, nullptr },
15458 : prototypes::id::WebGLSync,
15459 : constructors::id::WebGLSync,
15460 : nullptr,
15461 : &DefaultXrayExpandoObjectClass
15462 : } };
15463 :
15464 : void
15465 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
15466 : {
15467 0 : JS::Rooted<JSObject*> parentProto(aCx, JS::GetRealmObjectPrototype(aCx));
15468 0 : if (!parentProto) {
15469 0 : return;
15470 : }
15471 :
15472 0 : JS::Rooted<JSObject*> constructorProto(aCx, JS::GetRealmFunctionPrototype(aCx));
15473 0 : if (!constructorProto) {
15474 0 : return;
15475 : }
15476 :
15477 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::WebGLSync);
15478 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::WebGLSync);
15479 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
15480 : &sPrototypeClass.mBase, protoCache,
15481 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
15482 : interfaceCache,
15483 : nullptr,
15484 : nullptr,
15485 : "WebGLSync", aDefineOnGlobal,
15486 : nullptr,
15487 0 : false);
15488 : }
15489 :
15490 : JS::Handle<JSObject*>
15491 0 : GetProtoObjectHandle(JSContext* aCx)
15492 : {
15493 : /* Get the interface prototype object for this class. This will create the
15494 : object as needed. */
15495 0 : bool aDefineOnGlobal = true;
15496 :
15497 : /* Make sure our global is sane. Hopefully we can remove this sometime */
15498 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
15499 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
15500 0 : return nullptr;
15501 : }
15502 :
15503 : /* Check to see whether the interface objects are already installed */
15504 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
15505 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::WebGLSync)) {
15506 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
15507 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
15508 : }
15509 :
15510 : /*
15511 : * The object might _still_ be null, but that's OK.
15512 : *
15513 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
15514 : * traced by TraceProtoAndIfaceCache() and its contents are never
15515 : * changed after they have been set.
15516 : *
15517 : * Calling address() avoids the read read barrier that does gray
15518 : * unmarking, but it's not possible for the object to be gray here.
15519 : */
15520 :
15521 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::WebGLSync);
15522 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
15523 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
15524 : }
15525 :
15526 : JS::Handle<JSObject*>
15527 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
15528 : {
15529 : /* Get the interface object for this class. This will create the object as
15530 : needed. */
15531 :
15532 : /* Make sure our global is sane. Hopefully we can remove this sometime */
15533 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
15534 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
15535 0 : return nullptr;
15536 : }
15537 :
15538 : /* Check to see whether the interface objects are already installed */
15539 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
15540 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::WebGLSync)) {
15541 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
15542 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
15543 : }
15544 :
15545 : /*
15546 : * The object might _still_ be null, but that's OK.
15547 : *
15548 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
15549 : * traced by TraceProtoAndIfaceCache() and its contents are never
15550 : * changed after they have been set.
15551 : *
15552 : * Calling address() avoids the read read barrier that does gray
15553 : * unmarking, but it's not possible for the object to be gray here.
15554 : */
15555 :
15556 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::WebGLSync);
15557 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
15558 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
15559 : }
15560 :
15561 : JSObject*
15562 0 : GetConstructorObject(JSContext* aCx)
15563 : {
15564 0 : return GetConstructorObjectHandle(aCx);
15565 : }
15566 :
15567 : } // namespace WebGLSyncBinding
15568 :
15569 :
15570 :
15571 : namespace WebGLTransformFeedbackBinding {
15572 :
15573 : static bool
15574 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
15575 : {
15576 0 : mozilla::WebGLTransformFeedback* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLTransformFeedback>(obj);
15577 : // We don't want to preserve if we don't have a wrapper, and we
15578 : // obviously can't preserve if we're not initialized.
15579 0 : if (self && self->GetWrapperPreserveColor()) {
15580 0 : PreserveWrapper(self);
15581 : }
15582 0 : return true;
15583 : }
15584 :
15585 : static void
15586 0 : _finalize(js::FreeOp* fop, JSObject* obj)
15587 : {
15588 0 : mozilla::WebGLTransformFeedback* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLTransformFeedback>(obj);
15589 0 : if (self) {
15590 0 : ClearWrapper(self, self, obj);
15591 0 : AddForDeferredFinalization<mozilla::WebGLTransformFeedback>(self);
15592 : }
15593 0 : }
15594 :
15595 : static void
15596 0 : _objectMoved(JSObject* obj, const JSObject* old)
15597 : {
15598 0 : mozilla::WebGLTransformFeedback* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::WebGLTransformFeedback>(obj);
15599 0 : if (self) {
15600 0 : UpdateWrapper(self, self, obj, old);
15601 : }
15602 0 : }
15603 :
15604 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
15605 : {
15606 : "Function",
15607 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
15608 : &sBoringInterfaceObjectClassClassOps,
15609 : JS_NULL_CLASS_SPEC,
15610 : JS_NULL_CLASS_EXT,
15611 : &sInterfaceObjectClassObjectOps
15612 : },
15613 : eInterface,
15614 : true,
15615 : prototypes::id::WebGLTransformFeedback,
15616 : PrototypeTraits<prototypes::id::WebGLTransformFeedback>::Depth,
15617 : sNativePropertyHooks,
15618 : "function WebGLTransformFeedback() {\n [native code]\n}",
15619 : JS::GetRealmFunctionPrototype
15620 : };
15621 :
15622 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
15623 : {
15624 : "WebGLTransformFeedbackPrototype",
15625 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
15626 : JS_NULL_CLASS_OPS,
15627 : JS_NULL_CLASS_SPEC,
15628 : JS_NULL_CLASS_EXT,
15629 : JS_NULL_OBJECT_OPS
15630 : },
15631 : eInterfacePrototype,
15632 : false,
15633 : prototypes::id::WebGLTransformFeedback,
15634 : PrototypeTraits<prototypes::id::WebGLTransformFeedback>::Depth,
15635 : sNativePropertyHooks,
15636 : "[object WebGLTransformFeedbackPrototype]",
15637 : JS::GetRealmObjectPrototype
15638 : };
15639 :
15640 : bool
15641 0 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
15642 : {
15643 : static bool sPrefValue;
15644 : static bool sPrefCacheSetUp = false;
15645 0 : if (!sPrefCacheSetUp) {
15646 0 : sPrefCacheSetUp = true;
15647 0 : Preferences::AddBoolVarCache(&sPrefValue, "webgl.enable-webgl2");
15648 : }
15649 :
15650 0 : return sPrefValue;
15651 : }
15652 :
15653 : JSObject*
15654 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
15655 : {
15656 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
15657 : }
15658 :
15659 : static const js::ClassOps sClassOps = {
15660 : _addProperty, /* addProperty */
15661 : nullptr, /* delProperty */
15662 : nullptr, /* getProperty */
15663 : nullptr, /* setProperty */
15664 : nullptr, /* enumerate */
15665 : nullptr, /* newEnumerate */
15666 : nullptr, /* resolve */
15667 : nullptr, /* mayResolve */
15668 : _finalize, /* finalize */
15669 : nullptr, /* call */
15670 : nullptr, /* hasInstance */
15671 : nullptr, /* construct */
15672 : nullptr, /* trace */
15673 : };
15674 :
15675 : static const js::ClassExtension sClassExtension = {
15676 : nullptr, /* weakmapKeyDelegateOp */
15677 : _objectMoved /* objectMovedOp */
15678 : };
15679 :
15680 : static const DOMJSClass sClass = {
15681 : { "WebGLTransformFeedback",
15682 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
15683 : &sClassOps,
15684 : JS_NULL_CLASS_SPEC,
15685 : &sClassExtension,
15686 : JS_NULL_OBJECT_OPS
15687 : },
15688 : { prototypes::id::WebGLTransformFeedback, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
15689 : IsBaseOf<nsISupports, mozilla::WebGLTransformFeedback >::value,
15690 : sNativePropertyHooks,
15691 : FindAssociatedGlobalForNative<mozilla::WebGLTransformFeedback>::Get,
15692 : GetProtoObjectHandle,
15693 : GetCCParticipant<mozilla::WebGLTransformFeedback>::Get()
15694 : };
15695 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
15696 : "Must have the right minimal number of reserved slots.");
15697 : static_assert(1 >= 1,
15698 : "Must have enough reserved slots.");
15699 :
15700 : const JSClass*
15701 0 : GetJSClass()
15702 : {
15703 0 : return sClass.ToJSClass();
15704 : }
15705 :
15706 : bool
15707 0 : Wrap(JSContext* aCx, mozilla::WebGLTransformFeedback* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
15708 : {
15709 : MOZ_ASSERT(static_cast<mozilla::WebGLTransformFeedback*>(aObject) ==
15710 : reinterpret_cast<mozilla::WebGLTransformFeedback*>(aObject),
15711 : "Multiple inheritance for mozilla::WebGLTransformFeedback is broken.");
15712 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
15713 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
15714 0 : MOZ_ASSERT(!aCache->GetWrapper(),
15715 : "You should probably not be using Wrap() directly; use "
15716 : "GetOrCreateDOMReflector instead");
15717 :
15718 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
15719 : "nsISupports must be on our primary inheritance chain");
15720 :
15721 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
15722 0 : if (!global) {
15723 0 : return false;
15724 : }
15725 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
15726 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
15727 :
15728 : // That might have ended up wrapping us already, due to the wonders
15729 : // of XBL. Check for that, and bail out as needed.
15730 0 : aReflector.set(aCache->GetWrapper());
15731 0 : if (aReflector) {
15732 : #ifdef DEBUG
15733 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
15734 : #endif // DEBUG
15735 0 : return true;
15736 : }
15737 :
15738 0 : JSAutoCompartment ac(aCx, global);
15739 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
15740 0 : if (!canonicalProto) {
15741 0 : return false;
15742 : }
15743 0 : JS::Rooted<JSObject*> proto(aCx);
15744 0 : if (aGivenProto) {
15745 0 : proto = aGivenProto;
15746 : // Unfortunately, while aGivenProto was in the compartment of aCx
15747 : // coming in, we changed compartments to that of "parent" so may need
15748 : // to wrap the proto here.
15749 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
15750 0 : if (!JS_WrapObject(aCx, &proto)) {
15751 0 : return false;
15752 : }
15753 : }
15754 : } else {
15755 0 : proto = canonicalProto;
15756 : }
15757 :
15758 0 : BindingJSObjectCreator<mozilla::WebGLTransformFeedback> creator(aCx);
15759 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
15760 0 : if (!aReflector) {
15761 0 : return false;
15762 : }
15763 :
15764 0 : aCache->SetWrapper(aReflector);
15765 0 : creator.InitializationSucceeded();
15766 :
15767 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
15768 : aCache->GetWrapperPreserveColor() == aReflector);
15769 : // If proto != canonicalProto, we have to preserve our wrapper;
15770 : // otherwise we won't be able to properly recreate it later, since
15771 : // we won't know what proto to use. Note that we don't check
15772 : // aGivenProto here, since it's entirely possible (and even
15773 : // somewhat common) to have a non-null aGivenProto which is the
15774 : // same as canonicalProto.
15775 0 : if (proto != canonicalProto) {
15776 0 : PreserveWrapper(aObject);
15777 : }
15778 :
15779 0 : return true;
15780 : }
15781 :
15782 : const NativePropertyHooks sNativePropertyHooks[] = { {
15783 : nullptr,
15784 : nullptr,
15785 : nullptr,
15786 : { nullptr, nullptr },
15787 : prototypes::id::WebGLTransformFeedback,
15788 : constructors::id::WebGLTransformFeedback,
15789 : nullptr,
15790 : &DefaultXrayExpandoObjectClass
15791 : } };
15792 :
15793 : void
15794 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
15795 : {
15796 0 : JS::Rooted<JSObject*> parentProto(aCx, JS::GetRealmObjectPrototype(aCx));
15797 0 : if (!parentProto) {
15798 0 : return;
15799 : }
15800 :
15801 0 : JS::Rooted<JSObject*> constructorProto(aCx, JS::GetRealmFunctionPrototype(aCx));
15802 0 : if (!constructorProto) {
15803 0 : return;
15804 : }
15805 :
15806 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::WebGLTransformFeedback);
15807 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::WebGLTransformFeedback);
15808 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
15809 : &sPrototypeClass.mBase, protoCache,
15810 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
15811 : interfaceCache,
15812 : nullptr,
15813 : nullptr,
15814 : "WebGLTransformFeedback", aDefineOnGlobal,
15815 : nullptr,
15816 0 : false);
15817 : }
15818 :
15819 : JS::Handle<JSObject*>
15820 0 : GetProtoObjectHandle(JSContext* aCx)
15821 : {
15822 : /* Get the interface prototype object for this class. This will create the
15823 : object as needed. */
15824 0 : bool aDefineOnGlobal = true;
15825 :
15826 : /* Make sure our global is sane. Hopefully we can remove this sometime */
15827 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
15828 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
15829 0 : return nullptr;
15830 : }
15831 :
15832 : /* Check to see whether the interface objects are already installed */
15833 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
15834 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::WebGLTransformFeedback)) {
15835 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
15836 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
15837 : }
15838 :
15839 : /*
15840 : * The object might _still_ be null, but that's OK.
15841 : *
15842 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
15843 : * traced by TraceProtoAndIfaceCache() and its contents are never
15844 : * changed after they have been set.
15845 : *
15846 : * Calling address() avoids the read read barrier that does gray
15847 : * unmarking, but it's not possible for the object to be gray here.
15848 : */
15849 :
15850 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::WebGLTransformFeedback);
15851 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
15852 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
15853 : }
15854 :
15855 : JS::Handle<JSObject*>
15856 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
15857 : {
15858 : /* Get the interface object for this class. This will create the object as
15859 : needed. */
15860 :
15861 : /* Make sure our global is sane. Hopefully we can remove this sometime */
15862 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
15863 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
15864 0 : return nullptr;
15865 : }
15866 :
15867 : /* Check to see whether the interface objects are already installed */
15868 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
15869 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::WebGLTransformFeedback)) {
15870 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
15871 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
15872 : }
15873 :
15874 : /*
15875 : * The object might _still_ be null, but that's OK.
15876 : *
15877 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
15878 : * traced by TraceProtoAndIfaceCache() and its contents are never
15879 : * changed after they have been set.
15880 : *
15881 : * Calling address() avoids the read read barrier that does gray
15882 : * unmarking, but it's not possible for the object to be gray here.
15883 : */
15884 :
15885 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::WebGLTransformFeedback);
15886 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
15887 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
15888 : }
15889 :
15890 : JSObject*
15891 0 : GetConstructorObject(JSContext* aCx)
15892 : {
15893 0 : return GetConstructorObjectHandle(aCx);
15894 : }
15895 :
15896 : } // namespace WebGLTransformFeedbackBinding
15897 :
15898 :
15899 :
15900 : } // namespace dom
15901 : } // namespace mozilla
|