Bug Summary

File:var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h
Warning:line 342, column 5
The left operand of '!=' is a garbage value

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name TestExampleGenBinding.cpp -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=cplusplus -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -analyzer-config-compatibility-mode=true -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -relaxed-aliasing -ffp-contract=off -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dom/bindings/test -fcoverage-compilation-dir=/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dom/bindings/test -resource-dir /usr/lib/llvm-19/lib/clang/19 -include /var/lib/jenkins/workspace/firefox-scan-build/config/gcc_hidden.h -include /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/mozilla-config.h -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/stl_wrappers -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/system_wrappers -U _FORTIFY_SOURCE -D _FORTIFY_SOURCE=2 -D DEBUG=1 -D IMPL_LIBXUL -D MOZILLA_INTERNAL_API -I /var/lib/jenkins/workspace/firefox-scan-build/dom/bindings/test -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dom/bindings/test -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dom/bindings -I /var/lib/jenkins/workspace/firefox-scan-build/dom/bindings -I /var/lib/jenkins/workspace/firefox-scan-build/js/xpconnect/src -I /var/lib/jenkins/workspace/firefox-scan-build/js/xpconnect/wrappers -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/ipc/ipdl/_ipdlheaders -I /var/lib/jenkins/workspace/firefox-scan-build/ipc/chromium/src -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nspr -I /var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nss -D MOZILLA_CLIENT -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O0 -Wno-error=tautological-type-limit-compare -Wno-invalid-offsetof -Wno-range-loop-analysis -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-psabi -Wno-error=builtin-macro-redefined -Wno-vla-cxx-extension -Wno-unknown-warning-option -fdeprecated-macro -ferror-limit 19 -fstrict-flex-arrays=1 -stack-protector 2 -fstack-clash-protection -ftrivial-auto-var-init=pattern -fno-rtti -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fno-sized-deallocation -fno-aligned-allocation -analyzer-checker optin.performance.Padding -analyzer-output=html -analyzer-config stable-report-filename=true -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/scan-build-2024-09-22-115206-3586786-1 -x c++ ../TestExampleGenBinding.cpp

../TestExampleGenBinding.cpp

1/* THIS FILE IS AUTOGENERATED FROM TestExampleGen.webidl BY Codegen.py - DO NOT EDIT */
2
3#include <type_traits>
4#include "CustomEventBinding.h"
5#include "EventBinding.h"
6#include "EventHandlerBinding.h"
7#include "MainThreadUtils.h"
8#include "TestBindingHeader.h"
9#include "TestCodeGenBinding.h"
10#include "TestDictionaryBinding.h"
11#include "TestExampleGenBinding.h"
12#include "TestExampleInterface-example.h"
13#include "TestExampleProxyInterface-example.h"
14#include "TestExampleThrowingConstructorInterface-example.h"
15#include "TestExampleWorkerInterface-example.h"
16#include "WrapperFactory.h"
17#include "XrayWrapper.h"
18#include "js/Array.h"
19#include "js/CallAndConstruct.h"
20#include "js/Exception.h"
21#include "js/ForOfIterator.h"
22#include "js/MapAndSet.h"
23#include "js/Object.h"
24#include "js/PropertyAndElement.h"
25#include "js/PropertyDescriptor.h"
26#include "js/experimental/JitInfo.h"
27#include "js/shadow/Object.h"
28#include "jsfriendapi.h"
29#include "mozilla/Atomics.h"
30#include "mozilla/BasePrincipal.h"
31#include "mozilla/FloatingPoint.h"
32#include "mozilla/OriginTrials.h"
33#include "mozilla/OwningNonNull.h"
34#include "mozilla/ProfilerLabels.h"
35#include "mozilla/dom/BindingCallContext.h"
36#include "mozilla/dom/BindingUtils.h"
37#include "mozilla/dom/CanvasGradient.h"
38#include "mozilla/dom/CanvasPattern.h"
39#include "mozilla/dom/CustomElementRegistry.h"
40#include "mozilla/dom/DOMJSClass.h"
41#include "mozilla/dom/DOMJSProxyHandler.h"
42#include "mozilla/dom/DocGroup.h"
43#include "mozilla/dom/Document.h"
44#include "mozilla/dom/Element.h"
45#include "mozilla/dom/ImageData.h"
46#include "mozilla/dom/NonRefcountedDOMObject.h"
47#include "mozilla/dom/Nullable.h"
48#include "mozilla/dom/ObservableArrayProxyHandler.h"
49#include "mozilla/dom/PrimitiveConversions.h"
50#include "mozilla/dom/Promise.h"
51#include "mozilla/dom/ProxyHandlerUtils.h"
52#include "mozilla/dom/Record.h"
53#include "mozilla/dom/RootedDictionary.h"
54#include "mozilla/dom/ToJSValue.h"
55#include "mozilla/dom/TypedArray.h"
56#include "mozilla/dom/UnionTypes.h"
57#include "mozilla/dom/WebIDLPrefs.h"
58#include "mozilla/dom/XrayExpandoClass.h"
59#include "nsContentUtils.h"
60#include "nsIContent.h"
61#include "nsJSPrincipals.h"
62#include "nsJSUtils.h"
63
64namespace mozilla::dom {
65
66namespace binding_detail {}; // Just to make sure it's known as a namespace
67using namespace mozilla::dom::binding_detail;
68
69
70namespace TestExampleInterface_Binding {
71
72static bool
73_Example(JSContext* cx_, unsigned argc, JS::Value* vp)
74{
75 BindingCallContext cx(cx_, "Example constructor");
76 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject78( cx, "Example", "constructor"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
77 "Example", "constructor", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject78( cx, "Example", "constructor"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
78 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject78( cx, "Example", "constructor"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
79
80 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
81 JS::Rooted<JSObject*> obj(cx, &args.callee());
82 if (!args.isConstructing()) {
83 return ThrowConstructorWithoutNew(cx, "Example");
84 }
85
86 JS::Rooted<JSObject*> desiredProto(cx);
87 if (!GetDesiredProto(cx, args,
88 prototypes::id::TestExampleInterface,
89 CreateInterfaceObjects,
90 &desiredProto)) {
91 return false;
92 }
93
94 unsigned argcount = std::min(args.length(), 1u);
95 switch (argcount) {
96 case 0: {
97 GlobalObject global(cx, obj);
98 if (global.Failed()) {
99 return false;
100 }
101
102 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
103 Maybe<JSAutoRealm> ar;
104 if (objIsXray) {
105 // Since our object is an Xray, we can just CheckedUnwrapStatic:
106 // we know Xrays have no dynamic unwrap behavior.
107 obj = js::CheckedUnwrapStatic(obj);
108 if (!obj) {
109 return false;
110 }
111 ar.emplace(cx, obj);
112 if (!JS_WrapObject(cx, &desiredProto)) {
113 return false;
114 }
115 }
116 FastErrorResult rv;
117 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Example(global, rv)));
118 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "Example constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "Example constructor"
)), 0))
) {
119 return false;
120 }
121 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 121); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 121; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
122 static_assert(!std::is_pointer_v<decltype(result)>,
123 "NewObject implies that we need to keep the object alive with a strong reference.");
124 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
125 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 125); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 125; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
126 return false;
127 }
128 return true;
129 break;
130 }
131 case 1: {
132 GlobalObject global(cx, obj);
133 if (global.Failed()) {
134 return false;
135 }
136
137 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
138 binding_detail::FakeString<char16_t> arg0;
139 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
140 return false;
141 }
142 Maybe<JSAutoRealm> ar;
143 if (objIsXray) {
144 // Since our object is an Xray, we can just CheckedUnwrapStatic:
145 // we know Xrays have no dynamic unwrap behavior.
146 obj = js::CheckedUnwrapStatic(obj);
147 if (!obj) {
148 return false;
149 }
150 ar.emplace(cx, obj);
151 if (!JS_WrapObject(cx, &desiredProto)) {
152 return false;
153 }
154 }
155 FastErrorResult rv;
156 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Example(global, NonNullHelper(Constify(arg0)), rv)));
157 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "Example constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "Example constructor"
)), 0))
) {
158 return false;
159 }
160 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 160); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 160; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
161 static_assert(!std::is_pointer_v<decltype(result)>,
162 "NewObject implies that we need to keep the object alive with a strong reference.");
163 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
164 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 164); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 164; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
165 return false;
166 }
167 return true;
168 break;
169 }
170 default: {
171 // Using nsPrintfCString here would require including that
172 // header. Let's not worry about it.
173 nsAutoCString argCountStr;
174 argCountStr.AppendPrintf("%u", args.length());
175 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
176 }
177 }
178 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 178); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 178; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
179 return false;
180}
181
182static bool
183_Example2(JSContext* cx_, unsigned argc, JS::Value* vp)
184{
185 BindingCallContext cx(cx_, "Example2 constructor");
186 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject188( cx, "Example2", "constructor"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
187 "Example2", "constructor", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject188( cx, "Example2", "constructor"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
188 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject188( cx, "Example2", "constructor"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
189
190 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
191 JS::Rooted<JSObject*> obj(cx, &args.callee());
192 if (!args.isConstructing()) {
193 return ThrowConstructorWithoutNew(cx, "Example2");
194 }
195
196 JS::Rooted<JSObject*> desiredProto(cx);
197 if (!GetDesiredProto(cx, args,
198 prototypes::id::TestExampleInterface,
199 CreateInterfaceObjects,
200 &desiredProto)) {
201 return false;
202 }
203
204 unsigned argcount = std::min(args.length(), 8u);
205 switch (argcount) {
206 case 1: {
207 GlobalObject global(cx, obj);
208 if (global.Failed()) {
209 return false;
210 }
211
212 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
213 LongOrStringAnyRecord arg0;
214 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
215 return false;
216 }
217 Maybe<JSAutoRealm> ar;
218 if (objIsXray) {
219 // Since our object is an Xray, we can just CheckedUnwrapStatic:
220 // we know Xrays have no dynamic unwrap behavior.
221 obj = js::CheckedUnwrapStatic(obj);
222 if (!obj) {
223 return false;
224 }
225 ar.emplace(cx, obj);
226 if (!JS_WrapObject(cx, &desiredProto)) {
227 return false;
228 }
229 if (arg0.IsStringAnyRecord()) {
230 for (auto& mapEntry0 : arg0.GetAsStringAnyRecord().Entries()) {
231 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&mapEntry0.mValue))) {
232 return false;
233 }
234 }
235 }
236 }
237 FastErrorResult rv;
238 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Example2(global, Constify(arg0), rv)));
239 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "Example2 constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "Example2 constructor"
)), 0))
) {
240 return false;
241 }
242 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 242); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 242; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
243 static_assert(!std::is_pointer_v<decltype(result)>,
244 "NewObject implies that we need to keep the object alive with a strong reference.");
245 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
246 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 246); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 246; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
247 return false;
248 }
249 return true;
250 break;
251 }
252 case 5: {
253 [[fallthrough]];
254 }
255 case 6: {
256 [[fallthrough]];
257 }
258 case 7: {
259 [[fallthrough]];
260 }
261 case 8: {
262 GlobalObject global(cx, obj);
263 if (global.Failed()) {
264 return false;
265 }
266
267 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
268 RootedDictionary<binding_detail::FastDictForConstructor> arg0(cx);
269 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
270 return false;
271 }
272 JS::Rooted<JS::Value> arg1(cx);
273 arg1 = args[1];
274 JS::Rooted<JSObject*> arg2(cx);
275 if (args[2].isObject()) {
276 arg2 = &args[2].toObject();
277 } else {
278 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 3");
279 return false;
280 }
281 JS::Rooted<JSObject*> arg3(cx);
282 if (args[3].isObject()) {
283 arg3 = &args[3].toObject();
284 } else if (args[3].isNullOrUndefined()) {
285 arg3 = nullptr;
286 } else {
287 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 4");
288 return false;
289 }
290 binding_detail::AutoSequence<Dict> arg4;
291 SequenceRooter<Dict> arg4_holder(cx, &arg4);
292 if (args[4].isObject()) {
293 JS::ForOfIterator iter(cx);
294 if (!iter.init(args[4], JS::ForOfIterator::AllowNonIterable)) {
295 return false;
296 }
297 if (!iter.valueIsIterable()) {
298 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 5", "sequence");
299 return false;
300 }
301 binding_detail::AutoSequence<Dict> &arr = arg4;
302 JS::Rooted<JS::Value> temp(cx);
303 while (true) {
304 bool done;
305 if (!iter.next(&temp, &done)) {
306 return false;
307 }
308 if (done) {
309 break;
310 }
311 Dict* slotPtr = arr.AppendElement(mozilla::fallible);
312 if (!slotPtr) {
313 JS_ReportOutOfMemory(cx);
314 return false;
315 }
316 Dict& slot = *slotPtr;
317 if (!slot.Init(cx, temp, "Element of argument 5", false)) {
318 return false;
319 }
320 }
321 } else {
322 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 5", "sequence");
323 return false;
324 }
325 JS::Rooted<JS::Value> arg5(cx);
326 if (args.hasDefined(5)) {
327 arg5 = args[5];
328 } else {
329 arg5 = JS::UndefinedValue();
330 }
331 Optional<JS::Handle<JSObject*>> arg6;
332 if (args.hasDefined(6)) {
333 arg6.Construct(cx);
334 if (args[6].isObject()) {
335 arg6.Value() = &args[6].toObject();
336 } else {
337 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 7");
338 return false;
339 }
340 }
341 Optional<JS::Handle<JSObject*>> arg7;
342 if (args.hasDefined(7)) {
343 arg7.Construct(cx);
344 if (args[7].isObject()) {
345 arg7.Value() = &args[7].toObject();
346 } else if (args[7].isNullOrUndefined()) {
347 arg7.Value() = nullptr;
348 } else {
349 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 8");
350 return false;
351 }
352 }
353 Maybe<JSAutoRealm> ar;
354 if (objIsXray) {
355 // Since our object is an Xray, we can just CheckedUnwrapStatic:
356 // we know Xrays have no dynamic unwrap behavior.
357 obj = js::CheckedUnwrapStatic(obj);
358 if (!obj) {
359 return false;
360 }
361 ar.emplace(cx, obj);
362 if (!JS_WrapObject(cx, &desiredProto)) {
363 return false;
364 }
365 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mAny1))) {
366 return false;
367 }
368 if (arg0.mDict.WasPassed()) {
369 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mAnotherAny))) {
370 return false;
371 }
372 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mAnotherObj))) {
373 return false;
374 }
375 if (arg0.mDict.Value().mArrayBuffer.WasPassed()) {
376 if (!arg0.mDict.Value().mArrayBuffer.Value().WrapIntoNewCompartment(cx)) {
377 return false;
378 }
379 }
380 if (arg0.mDict.Value().mCustomEventInit.WasPassed()) {
381 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mCustomEventInit.Value().mDetail))) {
382 return false;
383 }
384 }
385 if (arg0.mDict.Value().mDictionaryTypedef.WasPassed()) {
386 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mDictionaryTypedef.Value().mDetail))) {
387 return false;
388 }
389 }
390 if (arg0.mDict.Value().mEventInitOrLong2.WasPassed()) {
391 if (arg0.mDict.Value().mEventInitOrLong2.Value().IsCustomEventInit()) {
392 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mEventInitOrLong2.Value().GetAsCustomEventInit().mDetail))) {
393 return false;
394 }
395 }
396 }
397 if (arg0.mDict.Value().mEventInitOrLongWithDefaultValue2.IsCustomEventInit()) {
398 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mEventInitOrLongWithDefaultValue2.GetAsCustomEventInit().mDetail))) {
399 return false;
400 }
401 }
402 if (arg0.mDict.Value().mEventInitOrLongWithDefaultValue4.IsCustomEventInit()) {
403 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mEventInitOrLongWithDefaultValue4.GetAsCustomEventInit().mDetail))) {
404 return false;
405 }
406 }
407 if (!arg0.mDict.Value().mFloat64Array.IsNull()) {
408 if (!arg0.mDict.Value().mFloat64Array.Value().WrapIntoNewCompartment(cx)) {
409 return false;
410 }
411 }
412 if (arg0.mDict.Value().mNullableArrayBuffer.WasPassed()) {
413 if (!arg0.mDict.Value().mNullableArrayBuffer.Value().IsNull()) {
414 if (!arg0.mDict.Value().mNullableArrayBuffer.Value().Value().WrapIntoNewCompartment(cx)) {
415 return false;
416 }
417 }
418 }
419 if (arg0.mDict.Value().mNullableEventInitOrLong2.WasPassed()) {
420 if (!arg0.mDict.Value().mNullableEventInitOrLong2.Value().IsNull()) {
421 if (arg0.mDict.Value().mNullableEventInitOrLong2.Value().Value().IsCustomEventInit()) {
422 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mNullableEventInitOrLong2.Value().Value().GetAsCustomEventInit().mDetail))) {
423 return false;
424 }
425 }
426 }
427 }
428 if (!arg0.mDict.Value().mNullableEventInitOrLongWithDefaultValue2.IsNull()) {
429 if (arg0.mDict.Value().mNullableEventInitOrLongWithDefaultValue2.Value().IsCustomEventInit()) {
430 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mNullableEventInitOrLongWithDefaultValue2.Value().GetAsCustomEventInit().mDetail))) {
431 return false;
432 }
433 }
434 }
435 if (!arg0.mDict.Value().mNullableEventInitOrLongWithDefaultValue4.IsNull()) {
436 if (arg0.mDict.Value().mNullableEventInitOrLongWithDefaultValue4.Value().IsCustomEventInit()) {
437 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mNullableEventInitOrLongWithDefaultValue4.Value().GetAsCustomEventInit().mDetail))) {
438 return false;
439 }
440 }
441 }
442 if (arg0.mDict.Value().mNullableObjectSequenceOrLong.WasPassed()) {
443 if (!arg0.mDict.Value().mNullableObjectSequenceOrLong.Value().IsNull()) {
444 if (arg0.mDict.Value().mNullableObjectSequenceOrLong.Value().Value().IsObjectSequence()) {
445 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict.Value().mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence().Length(); ++indexName0) {
446 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence()[indexName0]))) {
447 return false;
448 }
449 }
450 }
451 }
452 }
453 if (!arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.IsNull()) {
454 if (arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.Value().IsObjectSequence()) {
455 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence().Length(); ++indexName0) {
456 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence()[indexName0]))) {
457 return false;
458 }
459 }
460 }
461 }
462 if (!arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.IsNull()) {
463 if (arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.Value().IsObjectSequence()) {
464 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence().Length(); ++indexName0) {
465 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence()[indexName0]))) {
466 return false;
467 }
468 }
469 }
470 }
471 if (arg0.mDict.Value().mObjectOrLong.WasPassed()) {
472 if (arg0.mDict.Value().mObjectOrLong.Value().IsObject()) {
473 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mObjectOrLong.Value().GetAsObject()))) {
474 return false;
475 }
476 }
477 }
478 if (arg0.mDict.Value().mObjectSequenceOrLong.WasPassed()) {
479 if (arg0.mDict.Value().mObjectSequenceOrLong.Value().IsObjectSequence()) {
480 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict.Value().mObjectSequenceOrLong.Value().GetAsObjectSequence().Length(); ++indexName0) {
481 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mObjectSequenceOrLong.Value().GetAsObjectSequence()[indexName0]))) {
482 return false;
483 }
484 }
485 }
486 }
487 if (arg0.mDict.Value().mObjectSequenceOrLongWithDefaultValue1.IsObjectSequence()) {
488 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict.Value().mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence().Length(); ++indexName0) {
489 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence()[indexName0]))) {
490 return false;
491 }
492 }
493 }
494 if (arg0.mDict.Value().mObjectSequenceOrLongWithDefaultValue2.IsObjectSequence()) {
495 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict.Value().mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence().Length(); ++indexName0) {
496 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence()[indexName0]))) {
497 return false;
498 }
499 }
500 }
501 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mRequiredObject))) {
502 return false;
503 }
504 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mSomeAny))) {
505 return false;
506 }
507 if (arg0.mDict.Value().mSomeObj.WasPassed()) {
508 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict.Value().mSomeObj.Value()))) {
509 return false;
510 }
511 }
512 if (arg0.mDict.Value().mUint8Array.WasPassed()) {
513 if (!arg0.mDict.Value().mUint8Array.Value().WrapIntoNewCompartment(cx)) {
514 return false;
515 }
516 }
517 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict.Value().mParentAny))) {
518 return false;
519 }
520 }
521 if (arg0.mDict2.WasPassed()) {
522 if (arg0.mDict2.Value().mMemberDict.WasPassed()) {
523 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mAnotherAny))) {
524 return false;
525 }
526 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mAnotherObj))) {
527 return false;
528 }
529 if (arg0.mDict2.Value().mMemberDict.Value().mArrayBuffer.WasPassed()) {
530 if (!arg0.mDict2.Value().mMemberDict.Value().mArrayBuffer.Value().WrapIntoNewCompartment(cx)) {
531 return false;
532 }
533 }
534 if (arg0.mDict2.Value().mMemberDict.Value().mCustomEventInit.WasPassed()) {
535 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mCustomEventInit.Value().mDetail))) {
536 return false;
537 }
538 }
539 if (arg0.mDict2.Value().mMemberDict.Value().mDictionaryTypedef.WasPassed()) {
540 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mDictionaryTypedef.Value().mDetail))) {
541 return false;
542 }
543 }
544 if (arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLong2.WasPassed()) {
545 if (arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLong2.Value().IsCustomEventInit()) {
546 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLong2.Value().GetAsCustomEventInit().mDetail))) {
547 return false;
548 }
549 }
550 }
551 if (arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLongWithDefaultValue2.IsCustomEventInit()) {
552 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLongWithDefaultValue2.GetAsCustomEventInit().mDetail))) {
553 return false;
554 }
555 }
556 if (arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLongWithDefaultValue4.IsCustomEventInit()) {
557 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mEventInitOrLongWithDefaultValue4.GetAsCustomEventInit().mDetail))) {
558 return false;
559 }
560 }
561 if (!arg0.mDict2.Value().mMemberDict.Value().mFloat64Array.IsNull()) {
562 if (!arg0.mDict2.Value().mMemberDict.Value().mFloat64Array.Value().WrapIntoNewCompartment(cx)) {
563 return false;
564 }
565 }
566 if (arg0.mDict2.Value().mMemberDict.Value().mNullableArrayBuffer.WasPassed()) {
567 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableArrayBuffer.Value().IsNull()) {
568 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableArrayBuffer.Value().Value().WrapIntoNewCompartment(cx)) {
569 return false;
570 }
571 }
572 }
573 if (arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLong2.WasPassed()) {
574 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLong2.Value().IsNull()) {
575 if (arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLong2.Value().Value().IsCustomEventInit()) {
576 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLong2.Value().Value().GetAsCustomEventInit().mDetail))) {
577 return false;
578 }
579 }
580 }
581 }
582 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLongWithDefaultValue2.IsNull()) {
583 if (arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLongWithDefaultValue2.Value().IsCustomEventInit()) {
584 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLongWithDefaultValue2.Value().GetAsCustomEventInit().mDetail))) {
585 return false;
586 }
587 }
588 }
589 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLongWithDefaultValue4.IsNull()) {
590 if (arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLongWithDefaultValue4.Value().IsCustomEventInit()) {
591 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mNullableEventInitOrLongWithDefaultValue4.Value().GetAsCustomEventInit().mDetail))) {
592 return false;
593 }
594 }
595 }
596 if (arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLong.WasPassed()) {
597 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLong.Value().IsNull()) {
598 if (arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLong.Value().Value().IsObjectSequence()) {
599 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence().Length(); ++indexName0) {
600 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence()[indexName0]))) {
601 return false;
602 }
603 }
604 }
605 }
606 }
607 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.IsNull()) {
608 if (arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.Value().IsObjectSequence()) {
609 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence().Length(); ++indexName0) {
610 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence()[indexName0]))) {
611 return false;
612 }
613 }
614 }
615 }
616 if (!arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.IsNull()) {
617 if (arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.Value().IsObjectSequence()) {
618 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence().Length(); ++indexName0) {
619 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence()[indexName0]))) {
620 return false;
621 }
622 }
623 }
624 }
625 if (arg0.mDict2.Value().mMemberDict.Value().mObjectOrLong.WasPassed()) {
626 if (arg0.mDict2.Value().mMemberDict.Value().mObjectOrLong.Value().IsObject()) {
627 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mObjectOrLong.Value().GetAsObject()))) {
628 return false;
629 }
630 }
631 }
632 if (arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLong.WasPassed()) {
633 if (arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLong.Value().IsObjectSequence()) {
634 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLong.Value().GetAsObjectSequence().Length(); ++indexName0) {
635 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLong.Value().GetAsObjectSequence()[indexName0]))) {
636 return false;
637 }
638 }
639 }
640 }
641 if (arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLongWithDefaultValue1.IsObjectSequence()) {
642 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence().Length(); ++indexName0) {
643 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence()[indexName0]))) {
644 return false;
645 }
646 }
647 }
648 if (arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLongWithDefaultValue2.IsObjectSequence()) {
649 for (uint32_t indexName0 = 0; indexName0 < arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence().Length(); ++indexName0) {
650 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence()[indexName0]))) {
651 return false;
652 }
653 }
654 }
655 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mRequiredObject))) {
656 return false;
657 }
658 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mSomeAny))) {
659 return false;
660 }
661 if (arg0.mDict2.Value().mMemberDict.Value().mSomeObj.WasPassed()) {
662 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mSomeObj.Value()))) {
663 return false;
664 }
665 }
666 if (arg0.mDict2.Value().mMemberDict.Value().mUint8Array.WasPassed()) {
667 if (!arg0.mDict2.Value().mMemberDict.Value().mUint8Array.Value().WrapIntoNewCompartment(cx)) {
668 return false;
669 }
670 }
671 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mDict2.Value().mMemberDict.Value().mParentAny))) {
672 return false;
673 }
674 }
675 }
676 if (arg0.mObj1.WasPassed()) {
677 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mObj1.Value()))) {
678 return false;
679 }
680 }
681 if (arg0.mObj2.WasPassed()) {
682 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mObj2.Value()))) {
683 return false;
684 }
685 }
686 if (arg0.mSeq1.WasPassed()) {
687 for (uint32_t indexName0 = 0; indexName0 < arg0.mSeq1.Value().Length(); ++indexName0) {
688 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mAnotherAny))) {
689 return false;
690 }
691 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mAnotherObj))) {
692 return false;
693 }
694 if (arg0.mSeq1.Value()[indexName0].mArrayBuffer.WasPassed()) {
695 if (!arg0.mSeq1.Value()[indexName0].mArrayBuffer.Value().WrapIntoNewCompartment(cx)) {
696 return false;
697 }
698 }
699 if (arg0.mSeq1.Value()[indexName0].mCustomEventInit.WasPassed()) {
700 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mCustomEventInit.Value().mDetail))) {
701 return false;
702 }
703 }
704 if (arg0.mSeq1.Value()[indexName0].mDictionaryTypedef.WasPassed()) {
705 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mDictionaryTypedef.Value().mDetail))) {
706 return false;
707 }
708 }
709 if (arg0.mSeq1.Value()[indexName0].mEventInitOrLong2.WasPassed()) {
710 if (arg0.mSeq1.Value()[indexName0].mEventInitOrLong2.Value().IsCustomEventInit()) {
711 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mEventInitOrLong2.Value().GetAsCustomEventInit().mDetail))) {
712 return false;
713 }
714 }
715 }
716 if (arg0.mSeq1.Value()[indexName0].mEventInitOrLongWithDefaultValue2.IsCustomEventInit()) {
717 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mEventInitOrLongWithDefaultValue2.GetAsCustomEventInit().mDetail))) {
718 return false;
719 }
720 }
721 if (arg0.mSeq1.Value()[indexName0].mEventInitOrLongWithDefaultValue4.IsCustomEventInit()) {
722 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mEventInitOrLongWithDefaultValue4.GetAsCustomEventInit().mDetail))) {
723 return false;
724 }
725 }
726 if (!arg0.mSeq1.Value()[indexName0].mFloat64Array.IsNull()) {
727 if (!arg0.mSeq1.Value()[indexName0].mFloat64Array.Value().WrapIntoNewCompartment(cx)) {
728 return false;
729 }
730 }
731 if (arg0.mSeq1.Value()[indexName0].mNullableArrayBuffer.WasPassed()) {
732 if (!arg0.mSeq1.Value()[indexName0].mNullableArrayBuffer.Value().IsNull()) {
733 if (!arg0.mSeq1.Value()[indexName0].mNullableArrayBuffer.Value().Value().WrapIntoNewCompartment(cx)) {
734 return false;
735 }
736 }
737 }
738 if (arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLong2.WasPassed()) {
739 if (!arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLong2.Value().IsNull()) {
740 if (arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLong2.Value().Value().IsCustomEventInit()) {
741 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLong2.Value().Value().GetAsCustomEventInit().mDetail))) {
742 return false;
743 }
744 }
745 }
746 }
747 if (!arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLongWithDefaultValue2.IsNull()) {
748 if (arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLongWithDefaultValue2.Value().IsCustomEventInit()) {
749 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLongWithDefaultValue2.Value().GetAsCustomEventInit().mDetail))) {
750 return false;
751 }
752 }
753 }
754 if (!arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLongWithDefaultValue4.IsNull()) {
755 if (arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLongWithDefaultValue4.Value().IsCustomEventInit()) {
756 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mNullableEventInitOrLongWithDefaultValue4.Value().GetAsCustomEventInit().mDetail))) {
757 return false;
758 }
759 }
760 }
761 if (arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLong.WasPassed()) {
762 if (!arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLong.Value().IsNull()) {
763 if (arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLong.Value().Value().IsObjectSequence()) {
764 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence().Length(); ++indexName1) {
765 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence()[indexName1]))) {
766 return false;
767 }
768 }
769 }
770 }
771 }
772 if (!arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.IsNull()) {
773 if (arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.Value().IsObjectSequence()) {
774 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence().Length(); ++indexName1) {
775 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence()[indexName1]))) {
776 return false;
777 }
778 }
779 }
780 }
781 if (!arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.IsNull()) {
782 if (arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.Value().IsObjectSequence()) {
783 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence().Length(); ++indexName1) {
784 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence()[indexName1]))) {
785 return false;
786 }
787 }
788 }
789 }
790 if (arg0.mSeq1.Value()[indexName0].mObjectOrLong.WasPassed()) {
791 if (arg0.mSeq1.Value()[indexName0].mObjectOrLong.Value().IsObject()) {
792 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mObjectOrLong.Value().GetAsObject()))) {
793 return false;
794 }
795 }
796 }
797 if (arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLong.WasPassed()) {
798 if (arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLong.Value().IsObjectSequence()) {
799 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLong.Value().GetAsObjectSequence().Length(); ++indexName1) {
800 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLong.Value().GetAsObjectSequence()[indexName1]))) {
801 return false;
802 }
803 }
804 }
805 }
806 if (arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLongWithDefaultValue1.IsObjectSequence()) {
807 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence().Length(); ++indexName1) {
808 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence()[indexName1]))) {
809 return false;
810 }
811 }
812 }
813 if (arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLongWithDefaultValue2.IsObjectSequence()) {
814 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence().Length(); ++indexName1) {
815 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence()[indexName1]))) {
816 return false;
817 }
818 }
819 }
820 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mRequiredObject))) {
821 return false;
822 }
823 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mSomeAny))) {
824 return false;
825 }
826 if (arg0.mSeq1.Value()[indexName0].mSomeObj.WasPassed()) {
827 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mSomeObj.Value()))) {
828 return false;
829 }
830 }
831 if (arg0.mSeq1.Value()[indexName0].mUint8Array.WasPassed()) {
832 if (!arg0.mSeq1.Value()[indexName0].mUint8Array.Value().WrapIntoNewCompartment(cx)) {
833 return false;
834 }
835 }
836 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq1.Value()[indexName0].mParentAny))) {
837 return false;
838 }
839 }
840 }
841 if (arg0.mSeq2.WasPassed()) {
842 if (!arg0.mSeq2.Value().IsNull()) {
843 for (uint32_t indexName0 = 0; indexName0 < arg0.mSeq2.Value().Value().Length(); ++indexName0) {
844 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq2.Value().Value()[indexName0].Length(); ++indexName1) {
845 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mAnotherAny))) {
846 return false;
847 }
848 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mAnotherObj))) {
849 return false;
850 }
851 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mArrayBuffer.WasPassed()) {
852 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mArrayBuffer.Value().WrapIntoNewCompartment(cx)) {
853 return false;
854 }
855 }
856 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mCustomEventInit.WasPassed()) {
857 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mCustomEventInit.Value().mDetail))) {
858 return false;
859 }
860 }
861 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mDictionaryTypedef.WasPassed()) {
862 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mDictionaryTypedef.Value().mDetail))) {
863 return false;
864 }
865 }
866 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLong2.WasPassed()) {
867 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLong2.Value().IsCustomEventInit()) {
868 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLong2.Value().GetAsCustomEventInit().mDetail))) {
869 return false;
870 }
871 }
872 }
873 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLongWithDefaultValue2.IsCustomEventInit()) {
874 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLongWithDefaultValue2.GetAsCustomEventInit().mDetail))) {
875 return false;
876 }
877 }
878 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLongWithDefaultValue4.IsCustomEventInit()) {
879 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mEventInitOrLongWithDefaultValue4.GetAsCustomEventInit().mDetail))) {
880 return false;
881 }
882 }
883 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mFloat64Array.IsNull()) {
884 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mFloat64Array.Value().WrapIntoNewCompartment(cx)) {
885 return false;
886 }
887 }
888 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableArrayBuffer.WasPassed()) {
889 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableArrayBuffer.Value().IsNull()) {
890 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableArrayBuffer.Value().Value().WrapIntoNewCompartment(cx)) {
891 return false;
892 }
893 }
894 }
895 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLong2.WasPassed()) {
896 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLong2.Value().IsNull()) {
897 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLong2.Value().Value().IsCustomEventInit()) {
898 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLong2.Value().Value().GetAsCustomEventInit().mDetail))) {
899 return false;
900 }
901 }
902 }
903 }
904 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLongWithDefaultValue2.IsNull()) {
905 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLongWithDefaultValue2.Value().IsCustomEventInit()) {
906 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLongWithDefaultValue2.Value().GetAsCustomEventInit().mDetail))) {
907 return false;
908 }
909 }
910 }
911 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLongWithDefaultValue4.IsNull()) {
912 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLongWithDefaultValue4.Value().IsCustomEventInit()) {
913 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableEventInitOrLongWithDefaultValue4.Value().GetAsCustomEventInit().mDetail))) {
914 return false;
915 }
916 }
917 }
918 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLong.WasPassed()) {
919 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLong.Value().IsNull()) {
920 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLong.Value().Value().IsObjectSequence()) {
921 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence().Length(); ++indexName2) {
922 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence()[indexName2]))) {
923 return false;
924 }
925 }
926 }
927 }
928 }
929 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.IsNull()) {
930 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.Value().IsObjectSequence()) {
931 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence().Length(); ++indexName2) {
932 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence()[indexName2]))) {
933 return false;
934 }
935 }
936 }
937 }
938 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.IsNull()) {
939 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.Value().IsObjectSequence()) {
940 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence().Length(); ++indexName2) {
941 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence()[indexName2]))) {
942 return false;
943 }
944 }
945 }
946 }
947 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectOrLong.WasPassed()) {
948 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectOrLong.Value().IsObject()) {
949 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectOrLong.Value().GetAsObject()))) {
950 return false;
951 }
952 }
953 }
954 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLong.WasPassed()) {
955 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLong.Value().IsObjectSequence()) {
956 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLong.Value().GetAsObjectSequence().Length(); ++indexName2) {
957 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLong.Value().GetAsObjectSequence()[indexName2]))) {
958 return false;
959 }
960 }
961 }
962 }
963 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLongWithDefaultValue1.IsObjectSequence()) {
964 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence().Length(); ++indexName2) {
965 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence()[indexName2]))) {
966 return false;
967 }
968 }
969 }
970 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLongWithDefaultValue2.IsObjectSequence()) {
971 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence().Length(); ++indexName2) {
972 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence()[indexName2]))) {
973 return false;
974 }
975 }
976 }
977 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mRequiredObject))) {
978 return false;
979 }
980 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mSomeAny))) {
981 return false;
982 }
983 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mSomeObj.WasPassed()) {
984 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mSomeObj.Value()))) {
985 return false;
986 }
987 }
988 if (arg0.mSeq2.Value().Value()[indexName0][indexName1].mUint8Array.WasPassed()) {
989 if (!arg0.mSeq2.Value().Value()[indexName0][indexName1].mUint8Array.Value().WrapIntoNewCompartment(cx)) {
990 return false;
991 }
992 }
993 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq2.Value().Value()[indexName0][indexName1].mParentAny))) {
994 return false;
995 }
996 }
997 }
998 }
999 }
1000 if (arg0.mSeq3.WasPassed()) {
1001 for (uint32_t indexName0 = 0; indexName0 < arg0.mSeq3.Value().Length(); ++indexName0) {
1002 if (!arg0.mSeq3.Value()[indexName0].IsNull()) {
1003 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq3.Value()[indexName0].Value().Length(); ++indexName1) {
1004 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mAnotherAny))) {
1005 return false;
1006 }
1007 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mAnotherObj))) {
1008 return false;
1009 }
1010 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mArrayBuffer.WasPassed()) {
1011 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mArrayBuffer.Value().WrapIntoNewCompartment(cx)) {
1012 return false;
1013 }
1014 }
1015 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mCustomEventInit.WasPassed()) {
1016 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mCustomEventInit.Value().mDetail))) {
1017 return false;
1018 }
1019 }
1020 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mDictionaryTypedef.WasPassed()) {
1021 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mDictionaryTypedef.Value().mDetail))) {
1022 return false;
1023 }
1024 }
1025 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLong2.WasPassed()) {
1026 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLong2.Value().IsCustomEventInit()) {
1027 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLong2.Value().GetAsCustomEventInit().mDetail))) {
1028 return false;
1029 }
1030 }
1031 }
1032 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLongWithDefaultValue2.IsCustomEventInit()) {
1033 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLongWithDefaultValue2.GetAsCustomEventInit().mDetail))) {
1034 return false;
1035 }
1036 }
1037 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLongWithDefaultValue4.IsCustomEventInit()) {
1038 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mEventInitOrLongWithDefaultValue4.GetAsCustomEventInit().mDetail))) {
1039 return false;
1040 }
1041 }
1042 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mFloat64Array.IsNull()) {
1043 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mFloat64Array.Value().WrapIntoNewCompartment(cx)) {
1044 return false;
1045 }
1046 }
1047 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableArrayBuffer.WasPassed()) {
1048 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableArrayBuffer.Value().IsNull()) {
1049 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableArrayBuffer.Value().Value().WrapIntoNewCompartment(cx)) {
1050 return false;
1051 }
1052 }
1053 }
1054 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLong2.WasPassed()) {
1055 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLong2.Value().IsNull()) {
1056 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLong2.Value().Value().IsCustomEventInit()) {
1057 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLong2.Value().Value().GetAsCustomEventInit().mDetail))) {
1058 return false;
1059 }
1060 }
1061 }
1062 }
1063 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLongWithDefaultValue2.IsNull()) {
1064 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLongWithDefaultValue2.Value().IsCustomEventInit()) {
1065 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLongWithDefaultValue2.Value().GetAsCustomEventInit().mDetail))) {
1066 return false;
1067 }
1068 }
1069 }
1070 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLongWithDefaultValue4.IsNull()) {
1071 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLongWithDefaultValue4.Value().IsCustomEventInit()) {
1072 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableEventInitOrLongWithDefaultValue4.Value().GetAsCustomEventInit().mDetail))) {
1073 return false;
1074 }
1075 }
1076 }
1077 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLong.WasPassed()) {
1078 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLong.Value().IsNull()) {
1079 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLong.Value().Value().IsObjectSequence()) {
1080 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence().Length(); ++indexName2) {
1081 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence()[indexName2]))) {
1082 return false;
1083 }
1084 }
1085 }
1086 }
1087 }
1088 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.IsNull()) {
1089 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.Value().IsObjectSequence()) {
1090 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence().Length(); ++indexName2) {
1091 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence()[indexName2]))) {
1092 return false;
1093 }
1094 }
1095 }
1096 }
1097 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.IsNull()) {
1098 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.Value().IsObjectSequence()) {
1099 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence().Length(); ++indexName2) {
1100 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence()[indexName2]))) {
1101 return false;
1102 }
1103 }
1104 }
1105 }
1106 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectOrLong.WasPassed()) {
1107 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectOrLong.Value().IsObject()) {
1108 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectOrLong.Value().GetAsObject()))) {
1109 return false;
1110 }
1111 }
1112 }
1113 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLong.WasPassed()) {
1114 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLong.Value().IsObjectSequence()) {
1115 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLong.Value().GetAsObjectSequence().Length(); ++indexName2) {
1116 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLong.Value().GetAsObjectSequence()[indexName2]))) {
1117 return false;
1118 }
1119 }
1120 }
1121 }
1122 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLongWithDefaultValue1.IsObjectSequence()) {
1123 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence().Length(); ++indexName2) {
1124 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence()[indexName2]))) {
1125 return false;
1126 }
1127 }
1128 }
1129 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLongWithDefaultValue2.IsObjectSequence()) {
1130 for (uint32_t indexName2 = 0; indexName2 < arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence().Length(); ++indexName2) {
1131 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence()[indexName2]))) {
1132 return false;
1133 }
1134 }
1135 }
1136 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mRequiredObject))) {
1137 return false;
1138 }
1139 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mSomeAny))) {
1140 return false;
1141 }
1142 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mSomeObj.WasPassed()) {
1143 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mSomeObj.Value()))) {
1144 return false;
1145 }
1146 }
1147 if (arg0.mSeq3.Value()[indexName0].Value()[indexName1].mUint8Array.WasPassed()) {
1148 if (!arg0.mSeq3.Value()[indexName0].Value()[indexName1].mUint8Array.Value().WrapIntoNewCompartment(cx)) {
1149 return false;
1150 }
1151 }
1152 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq3.Value()[indexName0].Value()[indexName1].mParentAny))) {
1153 return false;
1154 }
1155 }
1156 }
1157 }
1158 }
1159 if (arg0.mSeq4.WasPassed()) {
1160 for (uint32_t indexName0 = 0; indexName0 < arg0.mSeq4.Value().Length(); ++indexName0) {
1161 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq4.Value()[indexName0]))) {
1162 return false;
1163 }
1164 }
1165 }
1166 if (arg0.mSeq5.WasPassed()) {
1167 for (uint32_t indexName0 = 0; indexName0 < arg0.mSeq5.Value().Length(); ++indexName0) {
1168 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq5.Value()[indexName0]))) {
1169 return false;
1170 }
1171 }
1172 }
1173 if (arg0.mSeq6.WasPassed()) {
1174 for (uint32_t indexName0 = 0; indexName0 < arg0.mSeq6.Value().Length(); ++indexName0) {
1175 if (arg0.mSeq6.Value()[indexName0].mOurSequence3.WasPassed()) {
1176 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence3.Value().Length(); ++indexName1) {
1177 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence3.Value()[indexName1]))) {
1178 return false;
1179 }
1180 }
1181 }
1182 if (arg0.mSeq6.Value()[indexName0].mOurSequence4.WasPassed()) {
1183 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence4.Value().Length(); ++indexName1) {
1184 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence4.Value()[indexName1]))) {
1185 return false;
1186 }
1187 }
1188 }
1189 if (arg0.mSeq6.Value()[indexName0].mOurSequence5.WasPassed()) {
1190 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence5.Value().Length(); ++indexName1) {
1191 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence5.Value()[indexName1]))) {
1192 return false;
1193 }
1194 }
1195 }
1196 if (arg0.mSeq6.Value()[indexName0].mOurSequence6.WasPassed()) {
1197 if (!arg0.mSeq6.Value()[indexName0].mOurSequence6.Value().IsNull()) {
1198 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence6.Value().Value().Length(); ++indexName1) {
1199 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence6.Value().Value()[indexName1]))) {
1200 return false;
1201 }
1202 }
1203 }
1204 }
1205 if (arg0.mSeq6.Value()[indexName0].mOurSequence7.WasPassed()) {
1206 if (!arg0.mSeq6.Value()[indexName0].mOurSequence7.Value().IsNull()) {
1207 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence7.Value().Value().Length(); ++indexName1) {
1208 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence7.Value().Value()[indexName1]))) {
1209 return false;
1210 }
1211 }
1212 }
1213 }
1214 if (!arg0.mSeq6.Value()[indexName0].mOurSequence8.IsNull()) {
1215 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence8.Value().Length(); ++indexName1) {
1216 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence8.Value()[indexName1]))) {
1217 return false;
1218 }
1219 }
1220 }
1221 if (!arg0.mSeq6.Value()[indexName0].mOurSequence9.IsNull()) {
1222 for (uint32_t indexName1 = 0; indexName1 < arg0.mSeq6.Value()[indexName0].mOurSequence9.Value().Length(); ++indexName1) {
1223 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg0.mSeq6.Value()[indexName0].mOurSequence9.Value()[indexName1]))) {
1224 return false;
1225 }
1226 }
1227 }
1228 }
1229 }
1230 if (!JS_WrapValue(cx, &arg1)) {
1231 return false;
1232 }
1233 if (!JS_WrapObject(cx, &arg2)) {
1234 return false;
1235 }
1236 if (!JS_WrapObject(cx, &arg3)) {
1237 return false;
1238 }
1239 for (uint32_t indexName0 = 0; indexName0 < arg4.Length(); ++indexName0) {
1240 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mAnotherAny))) {
1241 return false;
1242 }
1243 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mAnotherObj))) {
1244 return false;
1245 }
1246 if (arg4[indexName0].mArrayBuffer.WasPassed()) {
1247 if (!arg4[indexName0].mArrayBuffer.Value().WrapIntoNewCompartment(cx)) {
1248 return false;
1249 }
1250 }
1251 if (arg4[indexName0].mCustomEventInit.WasPassed()) {
1252 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mCustomEventInit.Value().mDetail))) {
1253 return false;
1254 }
1255 }
1256 if (arg4[indexName0].mDictionaryTypedef.WasPassed()) {
1257 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mDictionaryTypedef.Value().mDetail))) {
1258 return false;
1259 }
1260 }
1261 if (arg4[indexName0].mEventInitOrLong2.WasPassed()) {
1262 if (arg4[indexName0].mEventInitOrLong2.Value().IsCustomEventInit()) {
1263 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mEventInitOrLong2.Value().GetAsCustomEventInit().mDetail))) {
1264 return false;
1265 }
1266 }
1267 }
1268 if (arg4[indexName0].mEventInitOrLongWithDefaultValue2.IsCustomEventInit()) {
1269 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mEventInitOrLongWithDefaultValue2.GetAsCustomEventInit().mDetail))) {
1270 return false;
1271 }
1272 }
1273 if (arg4[indexName0].mEventInitOrLongWithDefaultValue4.IsCustomEventInit()) {
1274 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mEventInitOrLongWithDefaultValue4.GetAsCustomEventInit().mDetail))) {
1275 return false;
1276 }
1277 }
1278 if (!arg4[indexName0].mFloat64Array.IsNull()) {
1279 if (!arg4[indexName0].mFloat64Array.Value().WrapIntoNewCompartment(cx)) {
1280 return false;
1281 }
1282 }
1283 if (arg4[indexName0].mNullableArrayBuffer.WasPassed()) {
1284 if (!arg4[indexName0].mNullableArrayBuffer.Value().IsNull()) {
1285 if (!arg4[indexName0].mNullableArrayBuffer.Value().Value().WrapIntoNewCompartment(cx)) {
1286 return false;
1287 }
1288 }
1289 }
1290 if (arg4[indexName0].mNullableEventInitOrLong2.WasPassed()) {
1291 if (!arg4[indexName0].mNullableEventInitOrLong2.Value().IsNull()) {
1292 if (arg4[indexName0].mNullableEventInitOrLong2.Value().Value().IsCustomEventInit()) {
1293 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mNullableEventInitOrLong2.Value().Value().GetAsCustomEventInit().mDetail))) {
1294 return false;
1295 }
1296 }
1297 }
1298 }
1299 if (!arg4[indexName0].mNullableEventInitOrLongWithDefaultValue2.IsNull()) {
1300 if (arg4[indexName0].mNullableEventInitOrLongWithDefaultValue2.Value().IsCustomEventInit()) {
1301 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mNullableEventInitOrLongWithDefaultValue2.Value().GetAsCustomEventInit().mDetail))) {
1302 return false;
1303 }
1304 }
1305 }
1306 if (!arg4[indexName0].mNullableEventInitOrLongWithDefaultValue4.IsNull()) {
1307 if (arg4[indexName0].mNullableEventInitOrLongWithDefaultValue4.Value().IsCustomEventInit()) {
1308 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mNullableEventInitOrLongWithDefaultValue4.Value().GetAsCustomEventInit().mDetail))) {
1309 return false;
1310 }
1311 }
1312 }
1313 if (arg4[indexName0].mNullableObjectSequenceOrLong.WasPassed()) {
1314 if (!arg4[indexName0].mNullableObjectSequenceOrLong.Value().IsNull()) {
1315 if (arg4[indexName0].mNullableObjectSequenceOrLong.Value().Value().IsObjectSequence()) {
1316 for (uint32_t indexName1 = 0; indexName1 < arg4[indexName0].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence().Length(); ++indexName1) {
1317 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mNullableObjectSequenceOrLong.Value().Value().GetAsObjectSequence()[indexName1]))) {
1318 return false;
1319 }
1320 }
1321 }
1322 }
1323 }
1324 if (!arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.IsNull()) {
1325 if (arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.Value().IsObjectSequence()) {
1326 for (uint32_t indexName1 = 0; indexName1 < arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence().Length(); ++indexName1) {
1327 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue1.Value().GetAsObjectSequence()[indexName1]))) {
1328 return false;
1329 }
1330 }
1331 }
1332 }
1333 if (!arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.IsNull()) {
1334 if (arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.Value().IsObjectSequence()) {
1335 for (uint32_t indexName1 = 0; indexName1 < arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence().Length(); ++indexName1) {
1336 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mNullableObjectSequenceOrLongWithDefaultValue2.Value().GetAsObjectSequence()[indexName1]))) {
1337 return false;
1338 }
1339 }
1340 }
1341 }
1342 if (arg4[indexName0].mObjectOrLong.WasPassed()) {
1343 if (arg4[indexName0].mObjectOrLong.Value().IsObject()) {
1344 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mObjectOrLong.Value().GetAsObject()))) {
1345 return false;
1346 }
1347 }
1348 }
1349 if (arg4[indexName0].mObjectSequenceOrLong.WasPassed()) {
1350 if (arg4[indexName0].mObjectSequenceOrLong.Value().IsObjectSequence()) {
1351 for (uint32_t indexName1 = 0; indexName1 < arg4[indexName0].mObjectSequenceOrLong.Value().GetAsObjectSequence().Length(); ++indexName1) {
1352 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mObjectSequenceOrLong.Value().GetAsObjectSequence()[indexName1]))) {
1353 return false;
1354 }
1355 }
1356 }
1357 }
1358 if (arg4[indexName0].mObjectSequenceOrLongWithDefaultValue1.IsObjectSequence()) {
1359 for (uint32_t indexName1 = 0; indexName1 < arg4[indexName0].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence().Length(); ++indexName1) {
1360 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mObjectSequenceOrLongWithDefaultValue1.GetAsObjectSequence()[indexName1]))) {
1361 return false;
1362 }
1363 }
1364 }
1365 if (arg4[indexName0].mObjectSequenceOrLongWithDefaultValue2.IsObjectSequence()) {
1366 for (uint32_t indexName1 = 0; indexName1 < arg4[indexName0].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence().Length(); ++indexName1) {
1367 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mObjectSequenceOrLongWithDefaultValue2.GetAsObjectSequence()[indexName1]))) {
1368 return false;
1369 }
1370 }
1371 }
1372 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mRequiredObject))) {
1373 return false;
1374 }
1375 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mSomeAny))) {
1376 return false;
1377 }
1378 if (arg4[indexName0].mSomeObj.WasPassed()) {
1379 if (!JS_WrapObject(cx, JS::MutableHandle<JSObject*>::fromMarkedLocation(&arg4[indexName0].mSomeObj.Value()))) {
1380 return false;
1381 }
1382 }
1383 if (arg4[indexName0].mUint8Array.WasPassed()) {
1384 if (!arg4[indexName0].mUint8Array.Value().WrapIntoNewCompartment(cx)) {
1385 return false;
1386 }
1387 }
1388 if (!JS_WrapValue(cx, JS::MutableHandle<JS::Value>::fromMarkedLocation(&arg4[indexName0].mParentAny))) {
1389 return false;
1390 }
1391 }
1392 if (!JS_WrapValue(cx, &arg5)) {
1393 return false;
1394 }
1395 if (arg6.WasPassed()) {
1396 if (!JS_WrapObject(cx, &arg6.Value())) {
1397 return false;
1398 }
1399 }
1400 if (arg7.WasPassed()) {
1401 if (!JS_WrapObject(cx, &arg7.Value())) {
1402 return false;
1403 }
1404 }
1405 }
1406 FastErrorResult rv;
1407 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Example2(global, Constify(arg0), arg1, arg2, arg3, Constify(arg4), arg5, Constify(arg6), Constify(arg7), rv)));
1408 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "Example2 constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "Example2 constructor"
)), 0))
) {
1409 return false;
1410 }
1411 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1411); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1411; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1412 static_assert(!std::is_pointer_v<decltype(result)>,
1413 "NewObject implies that we need to keep the object alive with a strong reference.");
1414 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
1415 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1415); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 1415; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
1416 return false;
1417 }
1418 return true;
1419 break;
1420 }
1421 default: {
1422 // Using nsPrintfCString here would require including that
1423 // header. Let's not worry about it.
1424 nsAutoCString argCountStr;
1425 argCountStr.AppendPrintf("%u", args.length());
1426 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
1427 }
1428 }
1429 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 1429); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 1429; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
1430 return false;
1431}
1432
1433MOZ_CAN_RUN_SCRIPT static bool
1434get_readonlyByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
1435{
1436 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1439( cx, "TestExampleInterface"
, "readonlyByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1437 "TestExampleInterface", "readonlyByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1439( cx, "TestExampleInterface"
, "readonlyByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1438 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject1439( cx, "TestExampleInterface"
, "readonlyByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1439 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1439( cx, "TestExampleInterface"
, "readonlyByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1440
1441 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1442 int8_t result(MOZ_KnownLive(self)(self)->ReadonlyByte());
1443 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1443); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1443; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1444 args.rval().setInt32(int32_t(result));
1445 return true;
1446}
1447
1448static const JSJitInfo readonlyByte_getterinfo = {
1449 { get_readonlyByte },
1450 { prototypes::id::TestExampleInterface },
1451 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1452 JSJitInfo::Getter,
1453 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1454 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1455 true, /* isInfallible. False in setters. */
1456 false, /* isMovable. Not relevant for setters. */
1457 false, /* isEliminatable. Not relevant for setters. */
1458 false, /* isAlwaysInSlot. Only relevant for getters. */
1459 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1460 false, /* isTypedMethod. Only relevant for methods. */
1461 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1462};
1463
1464MOZ_CAN_RUN_SCRIPT static bool
1465get_writableByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
1466{
1467 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1470( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1468 "TestExampleInterface", "writableByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1470( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1469 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject1470( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1470 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1470( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1471
1472 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1473 int8_t result(MOZ_KnownLive(self)(self)->WritableByte());
1474 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1474); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1474; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1475 args.rval().setInt32(int32_t(result));
1476 return true;
1477}
1478
1479MOZ_CAN_RUN_SCRIPT static bool
1480set_writableByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
1481{
1482 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1485( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1483 "TestExampleInterface", "writableByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1485( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1484 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject1485( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1485 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1485( cx, "TestExampleInterface"
, "writableByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1486
1487 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1488 int8_t arg0;
1489 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
1490 return false;
1491 }
1492 // NOTE: This assert does NOT call the function.
1493 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableByte(arg0))>, "Should be returning void here");
1494 MOZ_KnownLive(self)(self)->SetWritableByte(arg0);
1495 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1495); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1495; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1496
1497 return true;
1498}
1499
1500static const JSJitInfo writableByte_getterinfo = {
1501 { get_writableByte },
1502 { prototypes::id::TestExampleInterface },
1503 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1504 JSJitInfo::Getter,
1505 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1506 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1507 true, /* isInfallible. False in setters. */
1508 false, /* isMovable. Not relevant for setters. */
1509 false, /* isEliminatable. Not relevant for setters. */
1510 false, /* isAlwaysInSlot. Only relevant for getters. */
1511 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1512 false, /* isTypedMethod. Only relevant for methods. */
1513 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1514};
1515static const JSJitInfo writableByte_setterinfo = {
1516 { (JSJitGetterOp)set_writableByte },
1517 { prototypes::id::TestExampleInterface },
1518 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1519 JSJitInfo::Setter,
1520 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1521 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1522 false, /* isInfallible. False in setters. */
1523 false, /* isMovable. Not relevant for setters. */
1524 false, /* isEliminatable. Not relevant for setters. */
1525 false, /* isAlwaysInSlot. Only relevant for getters. */
1526 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1527 false, /* isTypedMethod. Only relevant for methods. */
1528 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1529};
1530
1531MOZ_CAN_RUN_SCRIPT static bool
1532passByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1533{
1534 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1537( cx, "TestExampleInterface"
, "passByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
1535 "TestExampleInterface", "passByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1537( cx, "TestExampleInterface"
, "passByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
1536 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1537( cx, "TestExampleInterface"
, "passByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
1537 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1537( cx, "TestExampleInterface"
, "passByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
1538
1539 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1540 if (!args.requireAtLeast(cx, "TestExampleInterface.passByte", 1)) {
1541 return false;
1542 }
1543 int8_t arg0;
1544 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
1545 return false;
1546 }
1547 // NOTE: This assert does NOT call the function.
1548 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassByte(arg0))>, "Should be returning void here");
1549 MOZ_KnownLive(self)(self)->PassByte(arg0);
1550 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1550); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1550; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1551 args.rval().setUndefined();
1552 return true;
1553}
1554
1555static const JSJitInfo passByte_methodinfo = {
1556 { (JSJitGetterOp)passByte },
1557 { prototypes::id::TestExampleInterface },
1558 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1559 JSJitInfo::Method,
1560 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1561 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1562 false, /* isInfallible. False in setters. */
1563 false, /* isMovable. Not relevant for setters. */
1564 false, /* isEliminatable. Not relevant for setters. */
1565 false, /* isAlwaysInSlot. Only relevant for getters. */
1566 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1567 false, /* isTypedMethod. Only relevant for methods. */
1568 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1569};
1570
1571MOZ_CAN_RUN_SCRIPT static bool
1572receiveByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1573{
1574 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1577( cx, "TestExampleInterface"
, "receiveByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1575 "TestExampleInterface", "receiveByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1577( cx, "TestExampleInterface"
, "receiveByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1576 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1577( cx, "TestExampleInterface"
, "receiveByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1577 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1577( cx, "TestExampleInterface"
, "receiveByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1578
1579 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1580 int8_t result(MOZ_KnownLive(self)(self)->ReceiveByte());
1581 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1581); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1581; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1582 args.rval().setInt32(int32_t(result));
1583 return true;
1584}
1585
1586static const JSJitInfo receiveByte_methodinfo = {
1587 { (JSJitGetterOp)receiveByte },
1588 { prototypes::id::TestExampleInterface },
1589 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1590 JSJitInfo::Method,
1591 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1592 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1593 true, /* isInfallible. False in setters. */
1594 false, /* isMovable. Not relevant for setters. */
1595 false, /* isEliminatable. Not relevant for setters. */
1596 false, /* isAlwaysInSlot. Only relevant for getters. */
1597 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1598 false, /* isTypedMethod. Only relevant for methods. */
1599 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1600};
1601
1602MOZ_CAN_RUN_SCRIPT static bool
1603passOptionalByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1604{
1605 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1608( cx, "TestExampleInterface"
, "passOptionalByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1606 "TestExampleInterface", "passOptionalByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1608( cx, "TestExampleInterface"
, "passOptionalByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1607 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1608( cx, "TestExampleInterface"
, "passOptionalByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1608 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1608( cx, "TestExampleInterface"
, "passOptionalByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1609
1610 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1611 Optional<int8_t> arg0;
1612 if (args.hasDefined(0)) {
1613 arg0.Construct();
1614 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
1615 return false;
1616 }
1617 }
1618 // NOTE: This assert does NOT call the function.
1619 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalByte(Constify(arg0)))>, "Should be returning void here");
1620 MOZ_KnownLive(self)(self)->PassOptionalByte(Constify(arg0));
1621 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1621); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1621; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1622 args.rval().setUndefined();
1623 return true;
1624}
1625
1626static const JSJitInfo passOptionalByte_methodinfo = {
1627 { (JSJitGetterOp)passOptionalByte },
1628 { prototypes::id::TestExampleInterface },
1629 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1630 JSJitInfo::Method,
1631 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1632 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1633 false, /* isInfallible. False in setters. */
1634 false, /* isMovable. Not relevant for setters. */
1635 false, /* isEliminatable. Not relevant for setters. */
1636 false, /* isAlwaysInSlot. Only relevant for getters. */
1637 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1638 false, /* isTypedMethod. Only relevant for methods. */
1639 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1640};
1641
1642MOZ_CAN_RUN_SCRIPT static bool
1643passOptionalByteBeforeRequired(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1644{
1645 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1648( cx, "TestExampleInterface"
, "passOptionalByteBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1646 "TestExampleInterface", "passOptionalByteBeforeRequired", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1648( cx, "TestExampleInterface"
, "passOptionalByteBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1647 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1648( cx, "TestExampleInterface"
, "passOptionalByteBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1648 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1648( cx, "TestExampleInterface"
, "passOptionalByteBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
1649
1650 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1651 if (!args.requireAtLeast(cx, "TestExampleInterface.passOptionalByteBeforeRequired", 2)) {
1652 return false;
1653 }
1654 Optional<int8_t> arg0;
1655 if (args.hasDefined(0)) {
1656 arg0.Construct();
1657 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
1658 return false;
1659 }
1660 }
1661 int8_t arg1;
1662 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[1], "Argument 2", &arg1)) {
1663 return false;
1664 }
1665 // NOTE: This assert does NOT call the function.
1666 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalByteBeforeRequired(Constify(arg0), arg1))>, "Should be returning void here");
1667 MOZ_KnownLive(self)(self)->PassOptionalByteBeforeRequired(Constify(arg0), arg1);
1668 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1668); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1668; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1669 args.rval().setUndefined();
1670 return true;
1671}
1672
1673static const JSJitInfo passOptionalByteBeforeRequired_methodinfo = {
1674 { (JSJitGetterOp)passOptionalByteBeforeRequired },
1675 { prototypes::id::TestExampleInterface },
1676 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1677 JSJitInfo::Method,
1678 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1679 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1680 false, /* isInfallible. False in setters. */
1681 false, /* isMovable. Not relevant for setters. */
1682 false, /* isEliminatable. Not relevant for setters. */
1683 false, /* isAlwaysInSlot. Only relevant for getters. */
1684 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1685 false, /* isTypedMethod. Only relevant for methods. */
1686 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1687};
1688
1689MOZ_CAN_RUN_SCRIPT static bool
1690passOptionalByteWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1691{
1692 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1695( cx, "TestExampleInterface"
, "passOptionalByteWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1693 "TestExampleInterface", "passOptionalByteWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1695( cx, "TestExampleInterface"
, "passOptionalByteWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1694 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1695( cx, "TestExampleInterface"
, "passOptionalByteWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1695 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1695( cx, "TestExampleInterface"
, "passOptionalByteWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
1696
1697 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1698 int8_t arg0;
1699 if (args.hasDefined(0)) {
1700 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
1701 return false;
1702 }
1703 } else {
1704 arg0 = 0;
1705 }
1706 // NOTE: This assert does NOT call the function.
1707 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalByteWithDefault(arg0))>, "Should be returning void here");
1708 MOZ_KnownLive(self)(self)->PassOptionalByteWithDefault(arg0);
1709 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1709); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1709; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1710 args.rval().setUndefined();
1711 return true;
1712}
1713
1714static const JSJitInfo passOptionalByteWithDefault_methodinfo = {
1715 { (JSJitGetterOp)passOptionalByteWithDefault },
1716 { prototypes::id::TestExampleInterface },
1717 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1718 JSJitInfo::Method,
1719 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1720 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1721 false, /* isInfallible. False in setters. */
1722 false, /* isMovable. Not relevant for setters. */
1723 false, /* isEliminatable. Not relevant for setters. */
1724 false, /* isAlwaysInSlot. Only relevant for getters. */
1725 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1726 false, /* isTypedMethod. Only relevant for methods. */
1727 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1728};
1729
1730MOZ_CAN_RUN_SCRIPT static bool
1731passOptionalByteWithDefaultBeforeRequired(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1732{
1733 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1736( cx, "TestExampleInterface"
, "passOptionalByteWithDefaultBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1734 "TestExampleInterface", "passOptionalByteWithDefaultBeforeRequired", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1736( cx, "TestExampleInterface"
, "passOptionalByteWithDefaultBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1735 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1736( cx, "TestExampleInterface"
, "passOptionalByteWithDefaultBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1736 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1736( cx, "TestExampleInterface"
, "passOptionalByteWithDefaultBeforeRequired", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
1737
1738 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1739 if (!args.requireAtLeast(cx, "TestExampleInterface.passOptionalByteWithDefaultBeforeRequired", 2)) {
1740 return false;
1741 }
1742 int8_t arg0;
1743 if (args.hasDefined(0)) {
1744 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
1745 return false;
1746 }
1747 } else {
1748 arg0 = 0;
1749 }
1750 int8_t arg1;
1751 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[1], "Argument 2", &arg1)) {
1752 return false;
1753 }
1754 // NOTE: This assert does NOT call the function.
1755 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalByteWithDefaultBeforeRequired(arg0, arg1))>, "Should be returning void here");
1756 MOZ_KnownLive(self)(self)->PassOptionalByteWithDefaultBeforeRequired(arg0, arg1);
1757 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1757); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1757; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1758 args.rval().setUndefined();
1759 return true;
1760}
1761
1762static const JSJitInfo passOptionalByteWithDefaultBeforeRequired_methodinfo = {
1763 { (JSJitGetterOp)passOptionalByteWithDefaultBeforeRequired },
1764 { prototypes::id::TestExampleInterface },
1765 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1766 JSJitInfo::Method,
1767 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1768 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1769 false, /* isInfallible. False in setters. */
1770 false, /* isMovable. Not relevant for setters. */
1771 false, /* isEliminatable. Not relevant for setters. */
1772 false, /* isAlwaysInSlot. Only relevant for getters. */
1773 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1774 false, /* isTypedMethod. Only relevant for methods. */
1775 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1776};
1777
1778MOZ_CAN_RUN_SCRIPT static bool
1779passNullableByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1780{
1781 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1784( cx, "TestExampleInterface"
, "passNullableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1782 "TestExampleInterface", "passNullableByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1784( cx, "TestExampleInterface"
, "passNullableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1783 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1784( cx, "TestExampleInterface"
, "passNullableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1784 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1784( cx, "TestExampleInterface"
, "passNullableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1785
1786 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1787 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableByte", 1)) {
1788 return false;
1789 }
1790 Nullable<int8_t> arg0;
1791 if (args[0].isNullOrUndefined()) {
1792 arg0.SetNull();
1793 } else if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
1794 return false;
1795 }
1796 // NOTE: This assert does NOT call the function.
1797 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableByte(Constify(arg0)))>, "Should be returning void here");
1798 MOZ_KnownLive(self)(self)->PassNullableByte(Constify(arg0));
1799 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1799); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1799; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1800 args.rval().setUndefined();
1801 return true;
1802}
1803
1804static const JSJitInfo passNullableByte_methodinfo = {
1805 { (JSJitGetterOp)passNullableByte },
1806 { prototypes::id::TestExampleInterface },
1807 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1808 JSJitInfo::Method,
1809 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1810 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1811 false, /* isInfallible. False in setters. */
1812 false, /* isMovable. Not relevant for setters. */
1813 false, /* isEliminatable. Not relevant for setters. */
1814 false, /* isAlwaysInSlot. Only relevant for getters. */
1815 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1816 false, /* isTypedMethod. Only relevant for methods. */
1817 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1818};
1819
1820MOZ_CAN_RUN_SCRIPT static bool
1821passOptionalNullableByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1822{
1823 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1826( cx, "TestExampleInterface"
, "passOptionalNullableByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1824 "TestExampleInterface", "passOptionalNullableByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1826( cx, "TestExampleInterface"
, "passOptionalNullableByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1825 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1826( cx, "TestExampleInterface"
, "passOptionalNullableByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
1826 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1826( cx, "TestExampleInterface"
, "passOptionalNullableByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
1827
1828 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1829 Optional<Nullable<int8_t>> arg0;
1830 if (args.hasDefined(0)) {
1831 arg0.Construct();
1832 if (args[0].isNullOrUndefined()) {
1833 arg0.Value().SetNull();
1834 } else if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value().SetValue())) {
1835 return false;
1836 }
1837 }
1838 // NOTE: This assert does NOT call the function.
1839 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableByte(Constify(arg0)))>, "Should be returning void here");
1840 MOZ_KnownLive(self)(self)->PassOptionalNullableByte(Constify(arg0));
1841 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1841); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1841; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1842 args.rval().setUndefined();
1843 return true;
1844}
1845
1846static const JSJitInfo passOptionalNullableByte_methodinfo = {
1847 { (JSJitGetterOp)passOptionalNullableByte },
1848 { prototypes::id::TestExampleInterface },
1849 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1850 JSJitInfo::Method,
1851 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1852 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1853 false, /* isInfallible. False in setters. */
1854 false, /* isMovable. Not relevant for setters. */
1855 false, /* isEliminatable. Not relevant for setters. */
1856 false, /* isAlwaysInSlot. Only relevant for getters. */
1857 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1858 false, /* isTypedMethod. Only relevant for methods. */
1859 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1860};
1861
1862MOZ_CAN_RUN_SCRIPT static bool
1863passVariadicByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
1864{
1865 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1868( cx, "TestExampleInterface"
, "passVariadicByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1866 "TestExampleInterface", "passVariadicByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1868( cx, "TestExampleInterface"
, "passVariadicByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1867 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject1868( cx, "TestExampleInterface"
, "passVariadicByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1868 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1868( cx, "TestExampleInterface"
, "passVariadicByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1869
1870 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1871 AutoSequence<int8_t> arg0;
1872 if (args.length() > 0) {
1873 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
1874 JS_ReportOutOfMemory(cx);
1875 return false;
1876 }
1877 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
1878 // OK to do infallible append here, since we ensured capacity already.
1879 int8_t& slot = *arg0.AppendElement();
1880 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[variadicArg], "Argument 1", &slot)) {
1881 return false;
1882 }
1883 }
1884 }
1885 // NOTE: This assert does NOT call the function.
1886 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicByte(Constify(arg0)))>, "Should be returning void here");
1887 MOZ_KnownLive(self)(self)->PassVariadicByte(Constify(arg0));
1888 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1888); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1888; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1889 args.rval().setUndefined();
1890 return true;
1891}
1892
1893static const JSJitInfo passVariadicByte_methodinfo = {
1894 { (JSJitGetterOp)passVariadicByte },
1895 { prototypes::id::TestExampleInterface },
1896 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1897 JSJitInfo::Method,
1898 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1899 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1900 false, /* isInfallible. False in setters. */
1901 false, /* isMovable. Not relevant for setters. */
1902 false, /* isEliminatable. Not relevant for setters. */
1903 false, /* isAlwaysInSlot. Only relevant for getters. */
1904 false, /* isLazilyCachedInSlot. Only relevant for getters. */
1905 false, /* isTypedMethod. Only relevant for methods. */
1906 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1907};
1908
1909MOZ_CAN_RUN_SCRIPT static bool
1910get_cachedByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
1911{
1912 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1915( cx, "TestExampleInterface"
, "cachedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1913 "TestExampleInterface", "cachedByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1915( cx, "TestExampleInterface"
, "cachedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1914 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject1915( cx, "TestExampleInterface"
, "cachedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1915 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1915( cx, "TestExampleInterface"
, "cachedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1916
1917 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1918 // Have to either root across the getter call or reget after.
1919 bool isXray;
1920 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
1921 if (!slotStorage) {
1922 return false;
1923 }
1924 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 0) : (DOM_INSTANCE_RESERVED_SLOTS1 + 0);
1925 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 1925); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 1925; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
1926 {
1927 // Scope for cachedVal
1928 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
1929 if (!cachedVal.isUndefined()) {
1930 args.rval().set(cachedVal);
1931 // The cached value is in the compartment of slotStorage,
1932 // so wrap into the caller compartment as needed.
1933 return MaybeWrapValue(cx, args.rval());
1934 }
1935 }
1936
1937 int8_t result(MOZ_KnownLive(self)(self)->CachedByte());
1938 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 1938); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 1938; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
1939 {
1940 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
1941 JSAutoRealm ar(cx, conversionScope);
1942 do { // block we break out of when done wrapping
1943 args.rval().setInt32(int32_t(result));
1944 break;
1945 } while (false);
1946 }
1947 { // And now store things in the realm of our slotStorage.
1948 JSAutoRealm ar(cx, slotStorage);
1949 // Make a copy so that we don't do unnecessary wrapping on args.rval().
1950 JS::Rooted<JS::Value> storedVal(cx, args.rval());
1951 if (!MaybeWrapValue(cx, &storedVal)) {
1952 return false;
1953 }
1954 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
1955 if (!isXray) {
1956 // In the Xray case we don't need to do this, because getting the
1957 // expando object already preserved our wrapper.
1958 PreserveWrapper(self);
1959 }
1960 }
1961 // And now make sure args.rval() is in the caller realm.
1962 return MaybeWrapValue(cx, args.rval());
1963}
1964
1965static const JSJitInfo cachedByte_getterinfo = {
1966 { get_cachedByte },
1967 { prototypes::id::TestExampleInterface },
1968 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
1969 JSJitInfo::Getter,
1970 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
1971 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1972 true, /* isInfallible. False in setters. */
1973 true, /* isMovable. Not relevant for setters. */
1974 true, /* isEliminatable. Not relevant for setters. */
1975 false, /* isAlwaysInSlot. Only relevant for getters. */
1976 true, /* isLazilyCachedInSlot. Only relevant for getters. */
1977 false, /* isTypedMethod. Only relevant for methods. */
1978 (DOM_INSTANCE_RESERVED_SLOTS1 + 0) /* Reserved slot index, if we're stored in a slot, else 0. */
1979};
1980static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 0) <= JSJitInfo::maxSlotIndex, "We won't fit");
1981static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 0) < 22, "There is no slot for us");
1982
1983static bool
1984get_cachedConstantByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
1985{
1986 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject1989( cx, "TestExampleInterface"
, "cachedConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1987 "TestExampleInterface", "cachedConstantByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject1989( cx, "TestExampleInterface"
, "cachedConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1988 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject1989( cx, "TestExampleInterface"
, "cachedConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
1989 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject1989( cx, "TestExampleInterface"
, "cachedConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
1990
1991 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
1992 // Have to either root across the getter call or reget after.
1993 bool isXray;
1994 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
1995 if (!slotStorage) {
1996 return false;
1997 }
1998 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 1) : (DOM_INSTANCE_RESERVED_SLOTS1 + 1);
1999 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 1999); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 1999; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
2000 {
2001 // Scope for cachedVal
2002 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
2003 if (!cachedVal.isUndefined()) {
2004 args.rval().set(cachedVal);
2005 // The cached value is in the compartment of slotStorage,
2006 // so wrap into the caller compartment as needed.
2007 return MaybeWrapValue(cx, args.rval());
2008 }
2009 }
2010
2011 int8_t result(MOZ_KnownLive(self)(self)->CachedConstantByte());
2012 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2012); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2012; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2013 {
2014 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
2015 JSAutoRealm ar(cx, conversionScope);
2016 do { // block we break out of when done wrapping
2017 args.rval().setInt32(int32_t(result));
2018 break;
2019 } while (false);
2020 }
2021 { // And now store things in the realm of our slotStorage.
2022 JSAutoRealm ar(cx, slotStorage);
2023 // Make a copy so that we don't do unnecessary wrapping on args.rval().
2024 JS::Rooted<JS::Value> storedVal(cx, args.rval());
2025 if (!MaybeWrapValue(cx, &storedVal)) {
2026 return false;
2027 }
2028 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
2029 }
2030 // And now make sure args.rval() is in the caller realm.
2031 return MaybeWrapValue(cx, args.rval());
2032}
2033
2034static const JSJitInfo cachedConstantByte_getterinfo = {
2035 { get_cachedConstantByte },
2036 { prototypes::id::TestExampleInterface },
2037 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2038 JSJitInfo::Getter,
2039 JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
2040 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2041 true, /* isInfallible. False in setters. */
2042 true, /* isMovable. Not relevant for setters. */
2043 true, /* isEliminatable. Not relevant for setters. */
2044 true, /* isAlwaysInSlot. Only relevant for getters. */
2045 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2046 false, /* isTypedMethod. Only relevant for methods. */
2047 (DOM_INSTANCE_RESERVED_SLOTS1 + 1) /* Reserved slot index, if we're stored in a slot, else 0. */
2048};
2049static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 1) <= JSJitInfo::maxSlotIndex, "We won't fit");
2050static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 1) < 22, "There is no slot for us");
2051
2052MOZ_CAN_RUN_SCRIPT static bool
2053get_cachedWritableByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2054{
2055 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2058( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2056 "TestExampleInterface", "cachedWritableByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2058( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2057 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2058( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2058 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2058( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2059
2060 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2061 // Have to either root across the getter call or reget after.
2062 bool isXray;
2063 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
2064 if (!slotStorage) {
2065 return false;
2066 }
2067 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 2) : (DOM_INSTANCE_RESERVED_SLOTS1 + 2);
2068 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 2068); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 2068; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
2069 {
2070 // Scope for cachedVal
2071 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
2072 if (!cachedVal.isUndefined()) {
2073 args.rval().set(cachedVal);
2074 // The cached value is in the compartment of slotStorage,
2075 // so wrap into the caller compartment as needed.
2076 return MaybeWrapValue(cx, args.rval());
2077 }
2078 }
2079
2080 int8_t result(MOZ_KnownLive(self)(self)->CachedWritableByte());
2081 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2081); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2081; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2082 {
2083 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
2084 JSAutoRealm ar(cx, conversionScope);
2085 do { // block we break out of when done wrapping
2086 args.rval().setInt32(int32_t(result));
2087 break;
2088 } while (false);
2089 }
2090 { // And now store things in the realm of our slotStorage.
2091 JSAutoRealm ar(cx, slotStorage);
2092 // Make a copy so that we don't do unnecessary wrapping on args.rval().
2093 JS::Rooted<JS::Value> storedVal(cx, args.rval());
2094 if (!MaybeWrapValue(cx, &storedVal)) {
2095 return false;
2096 }
2097 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
2098 if (!isXray) {
2099 // In the Xray case we don't need to do this, because getting the
2100 // expando object already preserved our wrapper.
2101 PreserveWrapper(self);
2102 }
2103 }
2104 // And now make sure args.rval() is in the caller realm.
2105 return MaybeWrapValue(cx, args.rval());
2106}
2107
2108MOZ_CAN_RUN_SCRIPT static bool
2109set_cachedWritableByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
2110{
2111 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2114( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2112 "TestExampleInterface", "cachedWritableByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2114( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2113 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject2114( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2114 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2114( cx, "TestExampleInterface"
, "cachedWritableByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2115
2116 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2117 int8_t arg0;
2118 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
2119 return false;
2120 }
2121 // NOTE: This assert does NOT call the function.
2122 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetCachedWritableByte(arg0))>, "Should be returning void here");
2123 MOZ_KnownLive(self)(self)->SetCachedWritableByte(arg0);
2124 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2124); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2124; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2125
2126 ClearCachedCachedWritableByteValue(self);
2127 return true;
2128}
2129
2130static const JSJitInfo cachedWritableByte_getterinfo = {
2131 { get_cachedWritableByte },
2132 { prototypes::id::TestExampleInterface },
2133 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2134 JSJitInfo::Getter,
2135 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2136 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2137 true, /* isInfallible. False in setters. */
2138 true, /* isMovable. Not relevant for setters. */
2139 true, /* isEliminatable. Not relevant for setters. */
2140 false, /* isAlwaysInSlot. Only relevant for getters. */
2141 true, /* isLazilyCachedInSlot. Only relevant for getters. */
2142 false, /* isTypedMethod. Only relevant for methods. */
2143 (DOM_INSTANCE_RESERVED_SLOTS1 + 2) /* Reserved slot index, if we're stored in a slot, else 0. */
2144};
2145static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 2) <= JSJitInfo::maxSlotIndex, "We won't fit");
2146static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 2) < 22, "There is no slot for us");
2147static const JSJitInfo cachedWritableByte_setterinfo = {
2148 { (JSJitGetterOp)set_cachedWritableByte },
2149 { prototypes::id::TestExampleInterface },
2150 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2151 JSJitInfo::Setter,
2152 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2153 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2154 false, /* isInfallible. False in setters. */
2155 false, /* isMovable. Not relevant for setters. */
2156 false, /* isEliminatable. Not relevant for setters. */
2157 false, /* isAlwaysInSlot. Only relevant for getters. */
2158 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2159 false, /* isTypedMethod. Only relevant for methods. */
2160 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2161};
2162
2163MOZ_CAN_RUN_SCRIPT static bool
2164get_sideEffectFreeByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2165{
2166 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2169( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2167 "TestExampleInterface", "sideEffectFreeByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2169( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2168 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2169( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2169 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2169( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2170
2171 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2172 int8_t result(MOZ_KnownLive(self)(self)->SideEffectFreeByte());
2173 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2173); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2173; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2174 args.rval().setInt32(int32_t(result));
2175 return true;
2176}
2177
2178MOZ_CAN_RUN_SCRIPT static bool
2179set_sideEffectFreeByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
2180{
2181 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2184( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2182 "TestExampleInterface", "sideEffectFreeByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2184( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2183 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject2184( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2184 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2184( cx, "TestExampleInterface"
, "sideEffectFreeByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2185
2186 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2187 int8_t arg0;
2188 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
2189 return false;
2190 }
2191 // NOTE: This assert does NOT call the function.
2192 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetSideEffectFreeByte(arg0))>, "Should be returning void here");
2193 MOZ_KnownLive(self)(self)->SetSideEffectFreeByte(arg0);
2194 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2194); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2194; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2195
2196 return true;
2197}
2198
2199static const JSJitInfo sideEffectFreeByte_getterinfo = {
2200 { get_sideEffectFreeByte },
2201 { prototypes::id::TestExampleInterface },
2202 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2203 JSJitInfo::Getter,
2204 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2205 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2206 true, /* isInfallible. False in setters. */
2207 false, /* isMovable. Not relevant for setters. */
2208 false, /* isEliminatable. Not relevant for setters. */
2209 false, /* isAlwaysInSlot. Only relevant for getters. */
2210 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2211 false, /* isTypedMethod. Only relevant for methods. */
2212 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2213};
2214static const JSJitInfo sideEffectFreeByte_setterinfo = {
2215 { (JSJitGetterOp)set_sideEffectFreeByte },
2216 { prototypes::id::TestExampleInterface },
2217 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2218 JSJitInfo::Setter,
2219 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2220 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2221 false, /* isInfallible. False in setters. */
2222 false, /* isMovable. Not relevant for setters. */
2223 false, /* isEliminatable. Not relevant for setters. */
2224 false, /* isAlwaysInSlot. Only relevant for getters. */
2225 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2226 false, /* isTypedMethod. Only relevant for methods. */
2227 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2228};
2229
2230MOZ_CAN_RUN_SCRIPT static bool
2231get_domDependentByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2232{
2233 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2236( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2234 "TestExampleInterface", "domDependentByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2236( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2235 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2236( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2236 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2236( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2237
2238 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2239 int8_t result(MOZ_KnownLive(self)(self)->DomDependentByte());
2240 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2240); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2240; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2241 args.rval().setInt32(int32_t(result));
2242 return true;
2243}
2244
2245MOZ_CAN_RUN_SCRIPT static bool
2246set_domDependentByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
2247{
2248 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2251( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2249 "TestExampleInterface", "domDependentByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2251( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2250 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject2251( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2251 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2251( cx, "TestExampleInterface"
, "domDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2252
2253 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2254 int8_t arg0;
2255 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
2256 return false;
2257 }
2258 // NOTE: This assert does NOT call the function.
2259 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetDomDependentByte(arg0))>, "Should be returning void here");
2260 MOZ_KnownLive(self)(self)->SetDomDependentByte(arg0);
2261 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2261); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2261; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2262
2263 return true;
2264}
2265
2266static const JSJitInfo domDependentByte_getterinfo = {
2267 { get_domDependentByte },
2268 { prototypes::id::TestExampleInterface },
2269 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2270 JSJitInfo::Getter,
2271 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2272 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2273 true, /* isInfallible. False in setters. */
2274 true, /* isMovable. Not relevant for setters. */
2275 true, /* isEliminatable. Not relevant for setters. */
2276 false, /* isAlwaysInSlot. Only relevant for getters. */
2277 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2278 false, /* isTypedMethod. Only relevant for methods. */
2279 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2280};
2281static const JSJitInfo domDependentByte_setterinfo = {
2282 { (JSJitGetterOp)set_domDependentByte },
2283 { prototypes::id::TestExampleInterface },
2284 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2285 JSJitInfo::Setter,
2286 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2287 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2288 false, /* isInfallible. False in setters. */
2289 false, /* isMovable. Not relevant for setters. */
2290 false, /* isEliminatable. Not relevant for setters. */
2291 false, /* isAlwaysInSlot. Only relevant for getters. */
2292 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2293 false, /* isTypedMethod. Only relevant for methods. */
2294 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2295};
2296
2297MOZ_CAN_RUN_SCRIPT static bool
2298get_constantByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2299{
2300 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2303( cx, "TestExampleInterface"
, "constantByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2301 "TestExampleInterface", "constantByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2303( cx, "TestExampleInterface"
, "constantByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2302 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2303( cx, "TestExampleInterface"
, "constantByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2303 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2303( cx, "TestExampleInterface"
, "constantByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2304
2305 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2306 int8_t result(MOZ_KnownLive(self)(self)->ConstantByte());
2307 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2307); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2307; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2308 args.rval().setInt32(int32_t(result));
2309 return true;
2310}
2311
2312static const JSJitInfo constantByte_getterinfo = {
2313 { get_constantByte },
2314 { prototypes::id::TestExampleInterface },
2315 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2316 JSJitInfo::Getter,
2317 JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
2318 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2319 true, /* isInfallible. False in setters. */
2320 true, /* isMovable. Not relevant for setters. */
2321 true, /* isEliminatable. Not relevant for setters. */
2322 false, /* isAlwaysInSlot. Only relevant for getters. */
2323 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2324 false, /* isTypedMethod. Only relevant for methods. */
2325 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2326};
2327
2328MOZ_CAN_RUN_SCRIPT static bool
2329get_deviceStateDependentByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2330{
2331 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2334( cx, "TestExampleInterface"
, "deviceStateDependentByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2332 "TestExampleInterface", "deviceStateDependentByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2334( cx, "TestExampleInterface"
, "deviceStateDependentByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2333 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2334( cx, "TestExampleInterface"
, "deviceStateDependentByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2334 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2334( cx, "TestExampleInterface"
, "deviceStateDependentByte", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
2335
2336 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2337 int8_t result(MOZ_KnownLive(self)(self)->DeviceStateDependentByte());
2338 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2338); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2338; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2339 args.rval().setInt32(int32_t(result));
2340 return true;
2341}
2342
2343static const JSJitInfo deviceStateDependentByte_getterinfo = {
2344 { get_deviceStateDependentByte },
2345 { prototypes::id::TestExampleInterface },
2346 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2347 JSJitInfo::Getter,
2348 JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
2349 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2350 true, /* isInfallible. False in setters. */
2351 false, /* isMovable. Not relevant for setters. */
2352 true, /* isEliminatable. Not relevant for setters. */
2353 false, /* isAlwaysInSlot. Only relevant for getters. */
2354 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2355 false, /* isTypedMethod. Only relevant for methods. */
2356 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2357};
2358
2359MOZ_CAN_RUN_SCRIPT static bool
2360returnByteSideEffectFree(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2361{
2362 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2365( cx, "TestExampleInterface"
, "returnByteSideEffectFree", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2363 "TestExampleInterface", "returnByteSideEffectFree", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2365( cx, "TestExampleInterface"
, "returnByteSideEffectFree", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2364 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2365( cx, "TestExampleInterface"
, "returnByteSideEffectFree", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2365 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2365( cx, "TestExampleInterface"
, "returnByteSideEffectFree", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
2366
2367 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2368 int8_t result(MOZ_KnownLive(self)(self)->ReturnByteSideEffectFree());
2369 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2369); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2369; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2370 args.rval().setInt32(int32_t(result));
2371 return true;
2372}
2373
2374static const JSJitInfo::ArgType returnByteSideEffectFree_methodinfo_argTypes[] = { JSJitInfo::ArgTypeListEnd };
2375static const JSTypedMethodJitInfo returnByteSideEffectFree_methodinfo = {
2376 {
2377 { (JSJitGetterOp)returnByteSideEffectFree },
2378 { prototypes::id::TestExampleInterface },
2379 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2380 JSJitInfo::Method,
2381 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2382 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2383 true, /* isInfallible. False in setters. */
2384 false, /* isMovable. Not relevant for setters. */
2385 false, /* isEliminatable. Not relevant for setters. */
2386 false, /* isAlwaysInSlot. Only relevant for getters. */
2387 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2388 true, /* isTypedMethod. Only relevant for methods. */
2389 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2390 },
2391 returnByteSideEffectFree_methodinfo_argTypes
2392};
2393
2394MOZ_CAN_RUN_SCRIPT static bool
2395returnDOMDependentByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2396{
2397 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2400( cx, "TestExampleInterface"
, "returnDOMDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2398 "TestExampleInterface", "returnDOMDependentByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2400( cx, "TestExampleInterface"
, "returnDOMDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2399 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2400( cx, "TestExampleInterface"
, "returnDOMDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2400 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2400( cx, "TestExampleInterface"
, "returnDOMDependentByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2401
2402 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2403 int8_t result(MOZ_KnownLive(self)(self)->ReturnDOMDependentByte());
2404 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2404); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2404; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2405 args.rval().setInt32(int32_t(result));
2406 return true;
2407}
2408
2409static const JSJitInfo::ArgType returnDOMDependentByte_methodinfo_argTypes[] = { JSJitInfo::ArgTypeListEnd };
2410static const JSTypedMethodJitInfo returnDOMDependentByte_methodinfo = {
2411 {
2412 { (JSJitGetterOp)returnDOMDependentByte },
2413 { prototypes::id::TestExampleInterface },
2414 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2415 JSJitInfo::Method,
2416 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2417 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2418 true, /* isInfallible. False in setters. */
2419 true, /* isMovable. Not relevant for setters. */
2420 true, /* isEliminatable. Not relevant for setters. */
2421 false, /* isAlwaysInSlot. Only relevant for getters. */
2422 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2423 true, /* isTypedMethod. Only relevant for methods. */
2424 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2425 },
2426 returnDOMDependentByte_methodinfo_argTypes
2427};
2428
2429MOZ_CAN_RUN_SCRIPT static bool
2430returnConstantByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2431{
2432 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2435( cx, "TestExampleInterface"
, "returnConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2433 "TestExampleInterface", "returnConstantByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2435( cx, "TestExampleInterface"
, "returnConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2434 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2435( cx, "TestExampleInterface"
, "returnConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2435 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2435( cx, "TestExampleInterface"
, "returnConstantByte", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2436
2437 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2438 int8_t result(MOZ_KnownLive(self)(self)->ReturnConstantByte());
2439 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2439); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2439; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2440 args.rval().setInt32(int32_t(result));
2441 return true;
2442}
2443
2444static const JSJitInfo::ArgType returnConstantByte_methodinfo_argTypes[] = { JSJitInfo::ArgTypeListEnd };
2445static const JSTypedMethodJitInfo returnConstantByte_methodinfo = {
2446 {
2447 { (JSJitGetterOp)returnConstantByte },
2448 { prototypes::id::TestExampleInterface },
2449 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2450 JSJitInfo::Method,
2451 JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
2452 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2453 true, /* isInfallible. False in setters. */
2454 true, /* isMovable. Not relevant for setters. */
2455 true, /* isEliminatable. Not relevant for setters. */
2456 false, /* isAlwaysInSlot. Only relevant for getters. */
2457 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2458 true, /* isTypedMethod. Only relevant for methods. */
2459 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2460 },
2461 returnConstantByte_methodinfo_argTypes
2462};
2463
2464MOZ_CAN_RUN_SCRIPT static bool
2465returnDeviceStateDependentByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2466{
2467 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2470( cx, "TestExampleInterface"
, "returnDeviceStateDependentByte", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2468 "TestExampleInterface", "returnDeviceStateDependentByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2470( cx, "TestExampleInterface"
, "returnDeviceStateDependentByte", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2469 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2470( cx, "TestExampleInterface"
, "returnDeviceStateDependentByte", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2470 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2470( cx, "TestExampleInterface"
, "returnDeviceStateDependentByte", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
2471
2472 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2473 int8_t result(MOZ_KnownLive(self)(self)->ReturnDeviceStateDependentByte());
2474 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2474); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2474; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2475 args.rval().setInt32(int32_t(result));
2476 return true;
2477}
2478
2479static const JSJitInfo::ArgType returnDeviceStateDependentByte_methodinfo_argTypes[] = { JSJitInfo::ArgTypeListEnd };
2480static const JSTypedMethodJitInfo returnDeviceStateDependentByte_methodinfo = {
2481 {
2482 { (JSJitGetterOp)returnDeviceStateDependentByte },
2483 { prototypes::id::TestExampleInterface },
2484 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2485 JSJitInfo::Method,
2486 JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
2487 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2488 true, /* isInfallible. False in setters. */
2489 false, /* isMovable. Not relevant for setters. */
2490 true, /* isEliminatable. Not relevant for setters. */
2491 false, /* isAlwaysInSlot. Only relevant for getters. */
2492 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2493 true, /* isTypedMethod. Only relevant for methods. */
2494 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2495 },
2496 returnDeviceStateDependentByte_methodinfo_argTypes
2497};
2498
2499MOZ_CAN_RUN_SCRIPT static bool
2500get_readonlyShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2501{
2502 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2505( cx, "TestExampleInterface"
, "readonlyShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2503 "TestExampleInterface", "readonlyShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2505( cx, "TestExampleInterface"
, "readonlyShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2504 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2505( cx, "TestExampleInterface"
, "readonlyShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2505 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2505( cx, "TestExampleInterface"
, "readonlyShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2506
2507 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2508 int16_t result(MOZ_KnownLive(self)(self)->ReadonlyShort());
2509 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2509); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2509; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2510 args.rval().setInt32(int32_t(result));
2511 return true;
2512}
2513
2514static const JSJitInfo readonlyShort_getterinfo = {
2515 { get_readonlyShort },
2516 { prototypes::id::TestExampleInterface },
2517 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2518 JSJitInfo::Getter,
2519 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2520 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2521 true, /* isInfallible. False in setters. */
2522 false, /* isMovable. Not relevant for setters. */
2523 false, /* isEliminatable. Not relevant for setters. */
2524 false, /* isAlwaysInSlot. Only relevant for getters. */
2525 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2526 false, /* isTypedMethod. Only relevant for methods. */
2527 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2528};
2529
2530MOZ_CAN_RUN_SCRIPT static bool
2531get_writableShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2532{
2533 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2536( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2534 "TestExampleInterface", "writableShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2536( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2535 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2536( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2536 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2536( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2537
2538 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2539 int16_t result(MOZ_KnownLive(self)(self)->WritableShort());
2540 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2540); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2540; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2541 args.rval().setInt32(int32_t(result));
2542 return true;
2543}
2544
2545MOZ_CAN_RUN_SCRIPT static bool
2546set_writableShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
2547{
2548 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2551( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2549 "TestExampleInterface", "writableShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2551( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2550 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject2551( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2551 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2551( cx, "TestExampleInterface"
, "writableShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2552
2553 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2554 int16_t arg0;
2555 if (!ValueToPrimitive<int16_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
2556 return false;
2557 }
2558 // NOTE: This assert does NOT call the function.
2559 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableShort(arg0))>, "Should be returning void here");
2560 MOZ_KnownLive(self)(self)->SetWritableShort(arg0);
2561 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2561); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2561; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2562
2563 return true;
2564}
2565
2566static const JSJitInfo writableShort_getterinfo = {
2567 { get_writableShort },
2568 { prototypes::id::TestExampleInterface },
2569 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2570 JSJitInfo::Getter,
2571 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2572 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2573 true, /* isInfallible. False in setters. */
2574 false, /* isMovable. Not relevant for setters. */
2575 false, /* isEliminatable. Not relevant for setters. */
2576 false, /* isAlwaysInSlot. Only relevant for getters. */
2577 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2578 false, /* isTypedMethod. Only relevant for methods. */
2579 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2580};
2581static const JSJitInfo writableShort_setterinfo = {
2582 { (JSJitGetterOp)set_writableShort },
2583 { prototypes::id::TestExampleInterface },
2584 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2585 JSJitInfo::Setter,
2586 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2587 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2588 false, /* isInfallible. False in setters. */
2589 false, /* isMovable. Not relevant for setters. */
2590 false, /* isEliminatable. Not relevant for setters. */
2591 false, /* isAlwaysInSlot. Only relevant for getters. */
2592 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2593 false, /* isTypedMethod. Only relevant for methods. */
2594 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2595};
2596
2597MOZ_CAN_RUN_SCRIPT static bool
2598passShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2599{
2600 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2603( cx, "TestExampleInterface"
, "passShort", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
2601 "TestExampleInterface", "passShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2603( cx, "TestExampleInterface"
, "passShort", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
2602 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2603( cx, "TestExampleInterface"
, "passShort", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
2603 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2603( cx, "TestExampleInterface"
, "passShort", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
2604
2605 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2606 if (!args.requireAtLeast(cx, "TestExampleInterface.passShort", 1)) {
2607 return false;
2608 }
2609 int16_t arg0;
2610 if (!ValueToPrimitive<int16_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
2611 return false;
2612 }
2613 // NOTE: This assert does NOT call the function.
2614 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassShort(arg0))>, "Should be returning void here");
2615 MOZ_KnownLive(self)(self)->PassShort(arg0);
2616 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2616); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2616; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2617 args.rval().setUndefined();
2618 return true;
2619}
2620
2621static const JSJitInfo passShort_methodinfo = {
2622 { (JSJitGetterOp)passShort },
2623 { prototypes::id::TestExampleInterface },
2624 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2625 JSJitInfo::Method,
2626 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2627 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2628 false, /* isInfallible. False in setters. */
2629 false, /* isMovable. Not relevant for setters. */
2630 false, /* isEliminatable. Not relevant for setters. */
2631 false, /* isAlwaysInSlot. Only relevant for getters. */
2632 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2633 false, /* isTypedMethod. Only relevant for methods. */
2634 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2635};
2636
2637MOZ_CAN_RUN_SCRIPT static bool
2638receiveShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2639{
2640 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2643( cx, "TestExampleInterface"
, "receiveShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2641 "TestExampleInterface", "receiveShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2643( cx, "TestExampleInterface"
, "receiveShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2642 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2643( cx, "TestExampleInterface"
, "receiveShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2643 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2643( cx, "TestExampleInterface"
, "receiveShort", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2644
2645 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2646 int16_t result(MOZ_KnownLive(self)(self)->ReceiveShort());
2647 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2647); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2647; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2648 args.rval().setInt32(int32_t(result));
2649 return true;
2650}
2651
2652static const JSJitInfo receiveShort_methodinfo = {
2653 { (JSJitGetterOp)receiveShort },
2654 { prototypes::id::TestExampleInterface },
2655 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2656 JSJitInfo::Method,
2657 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2658 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2659 true, /* isInfallible. False in setters. */
2660 false, /* isMovable. Not relevant for setters. */
2661 false, /* isEliminatable. Not relevant for setters. */
2662 false, /* isAlwaysInSlot. Only relevant for getters. */
2663 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2664 false, /* isTypedMethod. Only relevant for methods. */
2665 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2666};
2667
2668MOZ_CAN_RUN_SCRIPT static bool
2669passOptionalShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2670{
2671 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2674( cx, "TestExampleInterface"
, "passOptionalShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2672 "TestExampleInterface", "passOptionalShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2674( cx, "TestExampleInterface"
, "passOptionalShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2673 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2674( cx, "TestExampleInterface"
, "passOptionalShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2674 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2674( cx, "TestExampleInterface"
, "passOptionalShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2675
2676 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2677 Optional<int16_t> arg0;
2678 if (args.hasDefined(0)) {
2679 arg0.Construct();
2680 if (!ValueToPrimitive<int16_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
2681 return false;
2682 }
2683 }
2684 // NOTE: This assert does NOT call the function.
2685 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalShort(Constify(arg0)))>, "Should be returning void here");
2686 MOZ_KnownLive(self)(self)->PassOptionalShort(Constify(arg0));
2687 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2687); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2687; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2688 args.rval().setUndefined();
2689 return true;
2690}
2691
2692static const JSJitInfo passOptionalShort_methodinfo = {
2693 { (JSJitGetterOp)passOptionalShort },
2694 { prototypes::id::TestExampleInterface },
2695 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2696 JSJitInfo::Method,
2697 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2698 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2699 false, /* isInfallible. False in setters. */
2700 false, /* isMovable. Not relevant for setters. */
2701 false, /* isEliminatable. Not relevant for setters. */
2702 false, /* isAlwaysInSlot. Only relevant for getters. */
2703 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2704 false, /* isTypedMethod. Only relevant for methods. */
2705 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2706};
2707
2708MOZ_CAN_RUN_SCRIPT static bool
2709passOptionalShortWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2710{
2711 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2714( cx, "TestExampleInterface"
, "passOptionalShortWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2712 "TestExampleInterface", "passOptionalShortWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2714( cx, "TestExampleInterface"
, "passOptionalShortWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2713 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2714( cx, "TestExampleInterface"
, "passOptionalShortWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2714 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2714( cx, "TestExampleInterface"
, "passOptionalShortWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
2715
2716 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2717 int16_t arg0;
2718 if (args.hasDefined(0)) {
2719 if (!ValueToPrimitive<int16_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
2720 return false;
2721 }
2722 } else {
2723 arg0 = 5;
2724 }
2725 // NOTE: This assert does NOT call the function.
2726 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalShortWithDefault(arg0))>, "Should be returning void here");
2727 MOZ_KnownLive(self)(self)->PassOptionalShortWithDefault(arg0);
2728 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2728); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2728; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2729 args.rval().setUndefined();
2730 return true;
2731}
2732
2733static const JSJitInfo passOptionalShortWithDefault_methodinfo = {
2734 { (JSJitGetterOp)passOptionalShortWithDefault },
2735 { prototypes::id::TestExampleInterface },
2736 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2737 JSJitInfo::Method,
2738 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2739 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2740 false, /* isInfallible. False in setters. */
2741 false, /* isMovable. Not relevant for setters. */
2742 false, /* isEliminatable. Not relevant for setters. */
2743 false, /* isAlwaysInSlot. Only relevant for getters. */
2744 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2745 false, /* isTypedMethod. Only relevant for methods. */
2746 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2747};
2748
2749MOZ_CAN_RUN_SCRIPT static bool
2750get_readonlyLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2751{
2752 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2755( cx, "TestExampleInterface"
, "readonlyLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2753 "TestExampleInterface", "readonlyLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2755( cx, "TestExampleInterface"
, "readonlyLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2754 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2755( cx, "TestExampleInterface"
, "readonlyLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2755 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2755( cx, "TestExampleInterface"
, "readonlyLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2756
2757 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2758 int32_t result(MOZ_KnownLive(self)(self)->ReadonlyLong());
2759 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2759); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2759; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2760 args.rval().setInt32(int32_t(result));
2761 return true;
2762}
2763
2764static const JSJitInfo readonlyLong_getterinfo = {
2765 { get_readonlyLong },
2766 { prototypes::id::TestExampleInterface },
2767 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2768 JSJitInfo::Getter,
2769 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2770 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2771 true, /* isInfallible. False in setters. */
2772 false, /* isMovable. Not relevant for setters. */
2773 false, /* isEliminatable. Not relevant for setters. */
2774 false, /* isAlwaysInSlot. Only relevant for getters. */
2775 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2776 false, /* isTypedMethod. Only relevant for methods. */
2777 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2778};
2779
2780MOZ_CAN_RUN_SCRIPT static bool
2781get_writableLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
2782{
2783 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2786( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2784 "TestExampleInterface", "writableLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2786( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2785 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject2786( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2786 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2786( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2787
2788 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2789 int32_t result(MOZ_KnownLive(self)(self)->WritableLong());
2790 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2790); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2790; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2791 args.rval().setInt32(int32_t(result));
2792 return true;
2793}
2794
2795MOZ_CAN_RUN_SCRIPT static bool
2796set_writableLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
2797{
2798 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2801( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2799 "TestExampleInterface", "writableLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2801( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2800 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject2801( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2801 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2801( cx, "TestExampleInterface"
, "writableLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2802
2803 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2804 int32_t arg0;
2805 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
2806 return false;
2807 }
2808 // NOTE: This assert does NOT call the function.
2809 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableLong(arg0))>, "Should be returning void here");
2810 MOZ_KnownLive(self)(self)->SetWritableLong(arg0);
2811 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2811); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2811; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2812
2813 return true;
2814}
2815
2816static const JSJitInfo writableLong_getterinfo = {
2817 { get_writableLong },
2818 { prototypes::id::TestExampleInterface },
2819 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2820 JSJitInfo::Getter,
2821 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2822 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2823 true, /* isInfallible. False in setters. */
2824 false, /* isMovable. Not relevant for setters. */
2825 false, /* isEliminatable. Not relevant for setters. */
2826 false, /* isAlwaysInSlot. Only relevant for getters. */
2827 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2828 false, /* isTypedMethod. Only relevant for methods. */
2829 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2830};
2831static const JSJitInfo writableLong_setterinfo = {
2832 { (JSJitGetterOp)set_writableLong },
2833 { prototypes::id::TestExampleInterface },
2834 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2835 JSJitInfo::Setter,
2836 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2837 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2838 false, /* isInfallible. False in setters. */
2839 false, /* isMovable. Not relevant for setters. */
2840 false, /* isEliminatable. Not relevant for setters. */
2841 false, /* isAlwaysInSlot. Only relevant for getters. */
2842 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2843 false, /* isTypedMethod. Only relevant for methods. */
2844 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2845};
2846
2847MOZ_CAN_RUN_SCRIPT static bool
2848passLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2849{
2850 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2853( cx, "TestExampleInterface"
, "passLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
2851 "TestExampleInterface", "passLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2853( cx, "TestExampleInterface"
, "passLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
2852 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2853( cx, "TestExampleInterface"
, "passLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
2853 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2853( cx, "TestExampleInterface"
, "passLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
2854
2855 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2856 if (!args.requireAtLeast(cx, "TestExampleInterface.passLong", 1)) {
2857 return false;
2858 }
2859 int32_t arg0;
2860 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
2861 return false;
2862 }
2863 // NOTE: This assert does NOT call the function.
2864 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassLong(arg0))>, "Should be returning void here");
2865 MOZ_KnownLive(self)(self)->PassLong(arg0);
2866 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2866); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2866; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2867 args.rval().setUndefined();
2868 return true;
2869}
2870
2871static const JSJitInfo passLong_methodinfo = {
2872 { (JSJitGetterOp)passLong },
2873 { prototypes::id::TestExampleInterface },
2874 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2875 JSJitInfo::Method,
2876 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2877 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2878 false, /* isInfallible. False in setters. */
2879 false, /* isMovable. Not relevant for setters. */
2880 false, /* isEliminatable. Not relevant for setters. */
2881 false, /* isAlwaysInSlot. Only relevant for getters. */
2882 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2883 false, /* isTypedMethod. Only relevant for methods. */
2884 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2885};
2886
2887MOZ_CAN_RUN_SCRIPT static bool
2888receiveLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2889{
2890 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2893( cx, "TestExampleInterface"
, "receiveLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2891 "TestExampleInterface", "receiveLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2893( cx, "TestExampleInterface"
, "receiveLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2892 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2893( cx, "TestExampleInterface"
, "receiveLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2893 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2893( cx, "TestExampleInterface"
, "receiveLong", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2894
2895 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2896 int32_t result(MOZ_KnownLive(self)(self)->ReceiveLong());
2897 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2897); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2897; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2898 args.rval().setInt32(int32_t(result));
2899 return true;
2900}
2901
2902static const JSJitInfo receiveLong_methodinfo = {
2903 { (JSJitGetterOp)receiveLong },
2904 { prototypes::id::TestExampleInterface },
2905 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2906 JSJitInfo::Method,
2907 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2908 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
2909 true, /* isInfallible. False in setters. */
2910 false, /* isMovable. Not relevant for setters. */
2911 false, /* isEliminatable. Not relevant for setters. */
2912 false, /* isAlwaysInSlot. Only relevant for getters. */
2913 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2914 false, /* isTypedMethod. Only relevant for methods. */
2915 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2916};
2917
2918MOZ_CAN_RUN_SCRIPT static bool
2919passOptionalLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2920{
2921 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2924( cx, "TestExampleInterface"
, "passOptionalLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2922 "TestExampleInterface", "passOptionalLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2924( cx, "TestExampleInterface"
, "passOptionalLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2923 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2924( cx, "TestExampleInterface"
, "passOptionalLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
2924 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2924( cx, "TestExampleInterface"
, "passOptionalLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
2925
2926 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2927 Optional<int32_t> arg0;
2928 if (args.hasDefined(0)) {
2929 arg0.Construct();
2930 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
2931 return false;
2932 }
2933 }
2934 // NOTE: This assert does NOT call the function.
2935 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalLong(Constify(arg0)))>, "Should be returning void here");
2936 MOZ_KnownLive(self)(self)->PassOptionalLong(Constify(arg0));
2937 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2937); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2937; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2938 args.rval().setUndefined();
2939 return true;
2940}
2941
2942static const JSJitInfo passOptionalLong_methodinfo = {
2943 { (JSJitGetterOp)passOptionalLong },
2944 { prototypes::id::TestExampleInterface },
2945 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2946 JSJitInfo::Method,
2947 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2948 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2949 false, /* isInfallible. False in setters. */
2950 false, /* isMovable. Not relevant for setters. */
2951 false, /* isEliminatable. Not relevant for setters. */
2952 false, /* isAlwaysInSlot. Only relevant for getters. */
2953 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2954 false, /* isTypedMethod. Only relevant for methods. */
2955 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2956};
2957
2958MOZ_CAN_RUN_SCRIPT static bool
2959passOptionalLongWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
2960{
2961 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject2964( cx, "TestExampleInterface"
, "passOptionalLongWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2962 "TestExampleInterface", "passOptionalLongWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject2964( cx, "TestExampleInterface"
, "passOptionalLongWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2963 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject2964( cx, "TestExampleInterface"
, "passOptionalLongWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
2964 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject2964( cx, "TestExampleInterface"
, "passOptionalLongWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
2965
2966 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
2967 int32_t arg0;
2968 if (args.hasDefined(0)) {
2969 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
2970 return false;
2971 }
2972 } else {
2973 arg0 = 7;
2974 }
2975 // NOTE: This assert does NOT call the function.
2976 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalLongWithDefault(arg0))>, "Should be returning void here");
2977 MOZ_KnownLive(self)(self)->PassOptionalLongWithDefault(arg0);
2978 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 2978); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 2978; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
2979 args.rval().setUndefined();
2980 return true;
2981}
2982
2983static const JSJitInfo passOptionalLongWithDefault_methodinfo = {
2984 { (JSJitGetterOp)passOptionalLongWithDefault },
2985 { prototypes::id::TestExampleInterface },
2986 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
2987 JSJitInfo::Method,
2988 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2989 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2990 false, /* isInfallible. False in setters. */
2991 false, /* isMovable. Not relevant for setters. */
2992 false, /* isEliminatable. Not relevant for setters. */
2993 false, /* isAlwaysInSlot. Only relevant for getters. */
2994 false, /* isLazilyCachedInSlot. Only relevant for getters. */
2995 false, /* isTypedMethod. Only relevant for methods. */
2996 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2997};
2998
2999MOZ_CAN_RUN_SCRIPT static bool
3000get_readonlyLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3001{
3002 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3005( cx, "TestExampleInterface"
, "readonlyLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3003 "TestExampleInterface", "readonlyLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3005( cx, "TestExampleInterface"
, "readonlyLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3004 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3005( cx, "TestExampleInterface"
, "readonlyLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3005 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3005( cx, "TestExampleInterface"
, "readonlyLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3006
3007 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3008 int64_t result(MOZ_KnownLive(self)(self)->ReadonlyLongLong());
3009 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3009); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3009; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3010 args.rval().set(JS_NumberValue(double(result)));
3011 return true;
3012}
3013
3014static const JSJitInfo readonlyLongLong_getterinfo = {
3015 { get_readonlyLongLong },
3016 { prototypes::id::TestExampleInterface },
3017 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3018 JSJitInfo::Getter,
3019 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3020 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3021 true, /* isInfallible. False in setters. */
3022 false, /* isMovable. Not relevant for setters. */
3023 false, /* isEliminatable. Not relevant for setters. */
3024 false, /* isAlwaysInSlot. Only relevant for getters. */
3025 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3026 false, /* isTypedMethod. Only relevant for methods. */
3027 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3028};
3029
3030MOZ_CAN_RUN_SCRIPT static bool
3031get_writableLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3032{
3033 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3036( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3034 "TestExampleInterface", "writableLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3036( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3035 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3036( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3036 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3036( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3037
3038 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3039 int64_t result(MOZ_KnownLive(self)(self)->WritableLongLong());
3040 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3040); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3040; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3041 args.rval().set(JS_NumberValue(double(result)));
3042 return true;
3043}
3044
3045MOZ_CAN_RUN_SCRIPT static bool
3046set_writableLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
3047{
3048 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3051( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3049 "TestExampleInterface", "writableLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3051( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3050 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject3051( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3051 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3051( cx, "TestExampleInterface"
, "writableLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3052
3053 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3054 int64_t arg0;
3055 if (!ValueToPrimitive<int64_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
3056 return false;
3057 }
3058 // NOTE: This assert does NOT call the function.
3059 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableLongLong(arg0))>, "Should be returning void here");
3060 MOZ_KnownLive(self)(self)->SetWritableLongLong(arg0);
3061 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3061); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3061; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3062
3063 return true;
3064}
3065
3066static const JSJitInfo writableLongLong_getterinfo = {
3067 { get_writableLongLong },
3068 { prototypes::id::TestExampleInterface },
3069 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3070 JSJitInfo::Getter,
3071 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3072 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3073 true, /* 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};
3081static const JSJitInfo writableLongLong_setterinfo = {
3082 { (JSJitGetterOp)set_writableLongLong },
3083 { prototypes::id::TestExampleInterface },
3084 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3085 JSJitInfo::Setter,
3086 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3087 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3088 false, /* isInfallible. False in setters. */
3089 false, /* isMovable. Not relevant for setters. */
3090 false, /* isEliminatable. Not relevant for setters. */
3091 false, /* isAlwaysInSlot. Only relevant for getters. */
3092 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3093 false, /* isTypedMethod. Only relevant for methods. */
3094 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3095};
3096
3097MOZ_CAN_RUN_SCRIPT static bool
3098passLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3099{
3100 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3103( cx, "TestExampleInterface"
, "passLongLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3101 "TestExampleInterface", "passLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3103( cx, "TestExampleInterface"
, "passLongLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3102 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3103( cx, "TestExampleInterface"
, "passLongLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3103 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3103( cx, "TestExampleInterface"
, "passLongLong", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3104
3105 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3106 if (!args.requireAtLeast(cx, "TestExampleInterface.passLongLong", 1)) {
3107 return false;
3108 }
3109 int64_t arg0;
3110 if (!ValueToPrimitive<int64_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3111 return false;
3112 }
3113 // NOTE: This assert does NOT call the function.
3114 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassLongLong(arg0))>, "Should be returning void here");
3115 MOZ_KnownLive(self)(self)->PassLongLong(arg0);
3116 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3116); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3116; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3117 args.rval().setUndefined();
3118 return true;
3119}
3120
3121static const JSJitInfo passLongLong_methodinfo = {
3122 { (JSJitGetterOp)passLongLong },
3123 { prototypes::id::TestExampleInterface },
3124 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3125 JSJitInfo::Method,
3126 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3127 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3128 false, /* isInfallible. False in setters. */
3129 false, /* isMovable. Not relevant for setters. */
3130 false, /* isEliminatable. Not relevant for setters. */
3131 false, /* isAlwaysInSlot. Only relevant for getters. */
3132 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3133 false, /* isTypedMethod. Only relevant for methods. */
3134 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3135};
3136
3137MOZ_CAN_RUN_SCRIPT static bool
3138receiveLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3139{
3140 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3143( cx, "TestExampleInterface"
, "receiveLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3141 "TestExampleInterface", "receiveLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3143( cx, "TestExampleInterface"
, "receiveLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3142 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3143( cx, "TestExampleInterface"
, "receiveLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3143 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3143( cx, "TestExampleInterface"
, "receiveLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3144
3145 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3146 int64_t result(MOZ_KnownLive(self)(self)->ReceiveLongLong());
3147 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3147); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3147; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3148 args.rval().set(JS_NumberValue(double(result)));
3149 return true;
3150}
3151
3152static const JSJitInfo receiveLongLong_methodinfo = {
3153 { (JSJitGetterOp)receiveLongLong },
3154 { prototypes::id::TestExampleInterface },
3155 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3156 JSJitInfo::Method,
3157 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3158 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3159 true, /* isInfallible. False in setters. */
3160 false, /* isMovable. Not relevant for setters. */
3161 false, /* isEliminatable. Not relevant for setters. */
3162 false, /* isAlwaysInSlot. Only relevant for getters. */
3163 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3164 false, /* isTypedMethod. Only relevant for methods. */
3165 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3166};
3167
3168MOZ_CAN_RUN_SCRIPT static bool
3169passOptionalLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3170{
3171 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3174( cx, "TestExampleInterface"
, "passOptionalLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3172 "TestExampleInterface", "passOptionalLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3174( cx, "TestExampleInterface"
, "passOptionalLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3173 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3174( cx, "TestExampleInterface"
, "passOptionalLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3174 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3174( cx, "TestExampleInterface"
, "passOptionalLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3175
3176 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3177 Optional<int64_t> arg0;
3178 if (args.hasDefined(0)) {
3179 arg0.Construct();
3180 if (!ValueToPrimitive<int64_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
3181 return false;
3182 }
3183 }
3184 // NOTE: This assert does NOT call the function.
3185 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalLongLong(Constify(arg0)))>, "Should be returning void here");
3186 MOZ_KnownLive(self)(self)->PassOptionalLongLong(Constify(arg0));
3187 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3187); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3187; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3188 args.rval().setUndefined();
3189 return true;
3190}
3191
3192static const JSJitInfo passOptionalLongLong_methodinfo = {
3193 { (JSJitGetterOp)passOptionalLongLong },
3194 { prototypes::id::TestExampleInterface },
3195 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3196 JSJitInfo::Method,
3197 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3198 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3199 false, /* isInfallible. False in setters. */
3200 false, /* isMovable. Not relevant for setters. */
3201 false, /* isEliminatable. Not relevant for setters. */
3202 false, /* isAlwaysInSlot. Only relevant for getters. */
3203 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3204 false, /* isTypedMethod. Only relevant for methods. */
3205 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3206};
3207
3208MOZ_CAN_RUN_SCRIPT static bool
3209passOptionalLongLongWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3210{
3211 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3214( cx, "TestExampleInterface"
, "passOptionalLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3212 "TestExampleInterface", "passOptionalLongLongWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3214( cx, "TestExampleInterface"
, "passOptionalLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3213 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3214( cx, "TestExampleInterface"
, "passOptionalLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3214 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3214( cx, "TestExampleInterface"
, "passOptionalLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
3215
3216 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3217 int64_t arg0;
3218 if (args.hasDefined(0)) {
3219 if (!ValueToPrimitive<int64_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3220 return false;
3221 }
3222 } else {
3223 arg0 = -12LL;
3224 }
3225 // NOTE: This assert does NOT call the function.
3226 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalLongLongWithDefault(arg0))>, "Should be returning void here");
3227 MOZ_KnownLive(self)(self)->PassOptionalLongLongWithDefault(arg0);
3228 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3228); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3228; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3229 args.rval().setUndefined();
3230 return true;
3231}
3232
3233static const JSJitInfo passOptionalLongLongWithDefault_methodinfo = {
3234 { (JSJitGetterOp)passOptionalLongLongWithDefault },
3235 { prototypes::id::TestExampleInterface },
3236 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3237 JSJitInfo::Method,
3238 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3239 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3240 false, /* isInfallible. False in setters. */
3241 false, /* isMovable. Not relevant for setters. */
3242 false, /* isEliminatable. Not relevant for setters. */
3243 false, /* isAlwaysInSlot. Only relevant for getters. */
3244 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3245 false, /* isTypedMethod. Only relevant for methods. */
3246 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3247};
3248
3249MOZ_CAN_RUN_SCRIPT static bool
3250get_readonlyOctet(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3251{
3252 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3255( cx, "TestExampleInterface"
, "readonlyOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3253 "TestExampleInterface", "readonlyOctet", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3255( cx, "TestExampleInterface"
, "readonlyOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3254 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3255( cx, "TestExampleInterface"
, "readonlyOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3255 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3255( cx, "TestExampleInterface"
, "readonlyOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3256
3257 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3258 uint8_t result(MOZ_KnownLive(self)(self)->ReadonlyOctet());
3259 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3259); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3259; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3260 args.rval().setInt32(int32_t(result));
3261 return true;
3262}
3263
3264static const JSJitInfo readonlyOctet_getterinfo = {
3265 { get_readonlyOctet },
3266 { prototypes::id::TestExampleInterface },
3267 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3268 JSJitInfo::Getter,
3269 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3270 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3271 true, /* isInfallible. False in setters. */
3272 false, /* isMovable. Not relevant for setters. */
3273 false, /* isEliminatable. Not relevant for setters. */
3274 false, /* isAlwaysInSlot. Only relevant for getters. */
3275 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3276 false, /* isTypedMethod. Only relevant for methods. */
3277 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3278};
3279
3280MOZ_CAN_RUN_SCRIPT static bool
3281get_writableOctet(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3282{
3283 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3286( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3284 "TestExampleInterface", "writableOctet", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3286( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3285 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3286( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3286 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3286( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3287
3288 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3289 uint8_t result(MOZ_KnownLive(self)(self)->WritableOctet());
3290 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3290); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3290; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3291 args.rval().setInt32(int32_t(result));
3292 return true;
3293}
3294
3295MOZ_CAN_RUN_SCRIPT static bool
3296set_writableOctet(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
3297{
3298 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3301( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3299 "TestExampleInterface", "writableOctet", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3301( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3300 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject3301( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3301 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3301( cx, "TestExampleInterface"
, "writableOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3302
3303 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3304 uint8_t arg0;
3305 if (!ValueToPrimitive<uint8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
3306 return false;
3307 }
3308 // NOTE: This assert does NOT call the function.
3309 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableOctet(arg0))>, "Should be returning void here");
3310 MOZ_KnownLive(self)(self)->SetWritableOctet(arg0);
3311 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3311); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3311; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3312
3313 return true;
3314}
3315
3316static const JSJitInfo writableOctet_getterinfo = {
3317 { get_writableOctet },
3318 { prototypes::id::TestExampleInterface },
3319 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3320 JSJitInfo::Getter,
3321 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3322 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3323 true, /* isInfallible. False in setters. */
3324 false, /* isMovable. Not relevant for setters. */
3325 false, /* isEliminatable. Not relevant for setters. */
3326 false, /* isAlwaysInSlot. Only relevant for getters. */
3327 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3328 false, /* isTypedMethod. Only relevant for methods. */
3329 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3330};
3331static const JSJitInfo writableOctet_setterinfo = {
3332 { (JSJitGetterOp)set_writableOctet },
3333 { prototypes::id::TestExampleInterface },
3334 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3335 JSJitInfo::Setter,
3336 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3337 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3338 false, /* isInfallible. False in setters. */
3339 false, /* isMovable. Not relevant for setters. */
3340 false, /* isEliminatable. Not relevant for setters. */
3341 false, /* isAlwaysInSlot. Only relevant for getters. */
3342 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3343 false, /* isTypedMethod. Only relevant for methods. */
3344 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3345};
3346
3347MOZ_CAN_RUN_SCRIPT static bool
3348passOctet(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3349{
3350 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3353( cx, "TestExampleInterface"
, "passOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
3351 "TestExampleInterface", "passOctet", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3353( cx, "TestExampleInterface"
, "passOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
3352 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3353( cx, "TestExampleInterface"
, "passOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
3353 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3353( cx, "TestExampleInterface"
, "passOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
3354
3355 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3356 if (!args.requireAtLeast(cx, "TestExampleInterface.passOctet", 1)) {
3357 return false;
3358 }
3359 uint8_t arg0;
3360 if (!ValueToPrimitive<uint8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3361 return false;
3362 }
3363 // NOTE: This assert does NOT call the function.
3364 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOctet(arg0))>, "Should be returning void here");
3365 MOZ_KnownLive(self)(self)->PassOctet(arg0);
3366 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3366); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3366; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3367 args.rval().setUndefined();
3368 return true;
3369}
3370
3371static const JSJitInfo passOctet_methodinfo = {
3372 { (JSJitGetterOp)passOctet },
3373 { prototypes::id::TestExampleInterface },
3374 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3375 JSJitInfo::Method,
3376 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3377 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3378 false, /* isInfallible. False in setters. */
3379 false, /* isMovable. Not relevant for setters. */
3380 false, /* isEliminatable. Not relevant for setters. */
3381 false, /* isAlwaysInSlot. Only relevant for getters. */
3382 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3383 false, /* isTypedMethod. Only relevant for methods. */
3384 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3385};
3386
3387MOZ_CAN_RUN_SCRIPT static bool
3388receiveOctet(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3389{
3390 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3393( cx, "TestExampleInterface"
, "receiveOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3391 "TestExampleInterface", "receiveOctet", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3393( cx, "TestExampleInterface"
, "receiveOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3392 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3393( cx, "TestExampleInterface"
, "receiveOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3393 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3393( cx, "TestExampleInterface"
, "receiveOctet", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3394
3395 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3396 uint8_t result(MOZ_KnownLive(self)(self)->ReceiveOctet());
3397 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3397); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3397; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3398 args.rval().setInt32(int32_t(result));
3399 return true;
3400}
3401
3402static const JSJitInfo receiveOctet_methodinfo = {
3403 { (JSJitGetterOp)receiveOctet },
3404 { prototypes::id::TestExampleInterface },
3405 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3406 JSJitInfo::Method,
3407 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3408 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3409 true, /* isInfallible. False in setters. */
3410 false, /* isMovable. Not relevant for setters. */
3411 false, /* isEliminatable. Not relevant for setters. */
3412 false, /* isAlwaysInSlot. Only relevant for getters. */
3413 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3414 false, /* isTypedMethod. Only relevant for methods. */
3415 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3416};
3417
3418MOZ_CAN_RUN_SCRIPT static bool
3419passOptionalOctet(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3420{
3421 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3424( cx, "TestExampleInterface"
, "passOptionalOctet", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3422 "TestExampleInterface", "passOptionalOctet", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3424( cx, "TestExampleInterface"
, "passOptionalOctet", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3423 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3424( cx, "TestExampleInterface"
, "passOptionalOctet", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3424 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3424( cx, "TestExampleInterface"
, "passOptionalOctet", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3425
3426 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3427 Optional<uint8_t> arg0;
3428 if (args.hasDefined(0)) {
3429 arg0.Construct();
3430 if (!ValueToPrimitive<uint8_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
3431 return false;
3432 }
3433 }
3434 // NOTE: This assert does NOT call the function.
3435 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalOctet(Constify(arg0)))>, "Should be returning void here");
3436 MOZ_KnownLive(self)(self)->PassOptionalOctet(Constify(arg0));
3437 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3437); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3437; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3438 args.rval().setUndefined();
3439 return true;
3440}
3441
3442static const JSJitInfo passOptionalOctet_methodinfo = {
3443 { (JSJitGetterOp)passOptionalOctet },
3444 { prototypes::id::TestExampleInterface },
3445 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3446 JSJitInfo::Method,
3447 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3448 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3449 false, /* isInfallible. False in setters. */
3450 false, /* isMovable. Not relevant for setters. */
3451 false, /* isEliminatable. Not relevant for setters. */
3452 false, /* isAlwaysInSlot. Only relevant for getters. */
3453 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3454 false, /* isTypedMethod. Only relevant for methods. */
3455 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3456};
3457
3458MOZ_CAN_RUN_SCRIPT static bool
3459passOptionalOctetWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3460{
3461 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3464( cx, "TestExampleInterface"
, "passOptionalOctetWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3462 "TestExampleInterface", "passOptionalOctetWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3464( cx, "TestExampleInterface"
, "passOptionalOctetWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3463 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3464( cx, "TestExampleInterface"
, "passOptionalOctetWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3464 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3464( cx, "TestExampleInterface"
, "passOptionalOctetWithDefault", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
3465
3466 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3467 uint8_t arg0;
3468 if (args.hasDefined(0)) {
3469 if (!ValueToPrimitive<uint8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3470 return false;
3471 }
3472 } else {
3473 arg0 = 19;
3474 }
3475 // NOTE: This assert does NOT call the function.
3476 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalOctetWithDefault(arg0))>, "Should be returning void here");
3477 MOZ_KnownLive(self)(self)->PassOptionalOctetWithDefault(arg0);
3478 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3478); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3478; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3479 args.rval().setUndefined();
3480 return true;
3481}
3482
3483static const JSJitInfo passOptionalOctetWithDefault_methodinfo = {
3484 { (JSJitGetterOp)passOptionalOctetWithDefault },
3485 { prototypes::id::TestExampleInterface },
3486 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3487 JSJitInfo::Method,
3488 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3489 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3490 false, /* isInfallible. False in setters. */
3491 false, /* isMovable. Not relevant for setters. */
3492 false, /* isEliminatable. Not relevant for setters. */
3493 false, /* isAlwaysInSlot. Only relevant for getters. */
3494 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3495 false, /* isTypedMethod. Only relevant for methods. */
3496 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3497};
3498
3499MOZ_CAN_RUN_SCRIPT static bool
3500get_readonlyUnsignedShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3501{
3502 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3505( cx, "TestExampleInterface"
, "readonlyUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3503 "TestExampleInterface", "readonlyUnsignedShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3505( cx, "TestExampleInterface"
, "readonlyUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3504 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3505( cx, "TestExampleInterface"
, "readonlyUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3505 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3505( cx, "TestExampleInterface"
, "readonlyUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3506
3507 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3508 uint16_t result(MOZ_KnownLive(self)(self)->ReadonlyUnsignedShort());
3509 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3509); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3509; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3510 args.rval().setInt32(int32_t(result));
3511 return true;
3512}
3513
3514static const JSJitInfo readonlyUnsignedShort_getterinfo = {
3515 { get_readonlyUnsignedShort },
3516 { prototypes::id::TestExampleInterface },
3517 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3518 JSJitInfo::Getter,
3519 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3520 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3521 true, /* isInfallible. False in setters. */
3522 false, /* isMovable. Not relevant for setters. */
3523 false, /* isEliminatable. Not relevant for setters. */
3524 false, /* isAlwaysInSlot. Only relevant for getters. */
3525 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3526 false, /* isTypedMethod. Only relevant for methods. */
3527 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3528};
3529
3530MOZ_CAN_RUN_SCRIPT static bool
3531get_writableUnsignedShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3532{
3533 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3536( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3534 "TestExampleInterface", "writableUnsignedShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3536( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3535 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3536( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3536 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3536( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3537
3538 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3539 uint16_t result(MOZ_KnownLive(self)(self)->WritableUnsignedShort());
3540 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3540); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3540; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3541 args.rval().setInt32(int32_t(result));
3542 return true;
3543}
3544
3545MOZ_CAN_RUN_SCRIPT static bool
3546set_writableUnsignedShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
3547{
3548 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3551( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3549 "TestExampleInterface", "writableUnsignedShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3551( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3550 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject3551( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3551 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3551( cx, "TestExampleInterface"
, "writableUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3552
3553 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3554 uint16_t arg0;
3555 if (!ValueToPrimitive<uint16_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
3556 return false;
3557 }
3558 // NOTE: This assert does NOT call the function.
3559 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnsignedShort(arg0))>, "Should be returning void here");
3560 MOZ_KnownLive(self)(self)->SetWritableUnsignedShort(arg0);
3561 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3561); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3561; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3562
3563 return true;
3564}
3565
3566static const JSJitInfo writableUnsignedShort_getterinfo = {
3567 { get_writableUnsignedShort },
3568 { prototypes::id::TestExampleInterface },
3569 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3570 JSJitInfo::Getter,
3571 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3572 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3573 true, /* isInfallible. False in setters. */
3574 false, /* isMovable. Not relevant for setters. */
3575 false, /* isEliminatable. Not relevant for setters. */
3576 false, /* isAlwaysInSlot. Only relevant for getters. */
3577 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3578 false, /* isTypedMethod. Only relevant for methods. */
3579 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3580};
3581static const JSJitInfo writableUnsignedShort_setterinfo = {
3582 { (JSJitGetterOp)set_writableUnsignedShort },
3583 { prototypes::id::TestExampleInterface },
3584 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3585 JSJitInfo::Setter,
3586 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3587 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3588 false, /* isInfallible. False in setters. */
3589 false, /* isMovable. Not relevant for setters. */
3590 false, /* isEliminatable. Not relevant for setters. */
3591 false, /* isAlwaysInSlot. Only relevant for getters. */
3592 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3593 false, /* isTypedMethod. Only relevant for methods. */
3594 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3595};
3596
3597MOZ_CAN_RUN_SCRIPT static bool
3598passUnsignedShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3599{
3600 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3603( cx, "TestExampleInterface"
, "passUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3601 "TestExampleInterface", "passUnsignedShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3603( cx, "TestExampleInterface"
, "passUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3602 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3603( cx, "TestExampleInterface"
, "passUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3603 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3603( cx, "TestExampleInterface"
, "passUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3604
3605 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3606 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnsignedShort", 1)) {
3607 return false;
3608 }
3609 uint16_t arg0;
3610 if (!ValueToPrimitive<uint16_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3611 return false;
3612 }
3613 // NOTE: This assert does NOT call the function.
3614 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnsignedShort(arg0))>, "Should be returning void here");
3615 MOZ_KnownLive(self)(self)->PassUnsignedShort(arg0);
3616 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3616); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3616; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3617 args.rval().setUndefined();
3618 return true;
3619}
3620
3621static const JSJitInfo passUnsignedShort_methodinfo = {
3622 { (JSJitGetterOp)passUnsignedShort },
3623 { prototypes::id::TestExampleInterface },
3624 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3625 JSJitInfo::Method,
3626 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3627 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3628 false, /* isInfallible. False in setters. */
3629 false, /* isMovable. Not relevant for setters. */
3630 false, /* isEliminatable. Not relevant for setters. */
3631 false, /* isAlwaysInSlot. Only relevant for getters. */
3632 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3633 false, /* isTypedMethod. Only relevant for methods. */
3634 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3635};
3636
3637MOZ_CAN_RUN_SCRIPT static bool
3638receiveUnsignedShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3639{
3640 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3643( cx, "TestExampleInterface"
, "receiveUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3641 "TestExampleInterface", "receiveUnsignedShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3643( cx, "TestExampleInterface"
, "receiveUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3642 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3643( cx, "TestExampleInterface"
, "receiveUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3643 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3643( cx, "TestExampleInterface"
, "receiveUnsignedShort", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3644
3645 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3646 uint16_t result(MOZ_KnownLive(self)(self)->ReceiveUnsignedShort());
3647 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3647); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3647; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3648 args.rval().setInt32(int32_t(result));
3649 return true;
3650}
3651
3652static const JSJitInfo receiveUnsignedShort_methodinfo = {
3653 { (JSJitGetterOp)receiveUnsignedShort },
3654 { prototypes::id::TestExampleInterface },
3655 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3656 JSJitInfo::Method,
3657 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3658 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
3659 true, /* isInfallible. False in setters. */
3660 false, /* isMovable. Not relevant for setters. */
3661 false, /* isEliminatable. Not relevant for setters. */
3662 false, /* isAlwaysInSlot. Only relevant for getters. */
3663 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3664 false, /* isTypedMethod. Only relevant for methods. */
3665 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3666};
3667
3668MOZ_CAN_RUN_SCRIPT static bool
3669passOptionalUnsignedShort(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3670{
3671 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3674( cx, "TestExampleInterface"
, "passOptionalUnsignedShort", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3672 "TestExampleInterface", "passOptionalUnsignedShort", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3674( cx, "TestExampleInterface"
, "passOptionalUnsignedShort", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3673 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3674( cx, "TestExampleInterface"
, "passOptionalUnsignedShort", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3674 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3674( cx, "TestExampleInterface"
, "passOptionalUnsignedShort", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
3675
3676 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3677 Optional<uint16_t> arg0;
3678 if (args.hasDefined(0)) {
3679 arg0.Construct();
3680 if (!ValueToPrimitive<uint16_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
3681 return false;
3682 }
3683 }
3684 // NOTE: This assert does NOT call the function.
3685 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnsignedShort(Constify(arg0)))>, "Should be returning void here");
3686 MOZ_KnownLive(self)(self)->PassOptionalUnsignedShort(Constify(arg0));
3687 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3687); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3687; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3688 args.rval().setUndefined();
3689 return true;
3690}
3691
3692static const JSJitInfo passOptionalUnsignedShort_methodinfo = {
3693 { (JSJitGetterOp)passOptionalUnsignedShort },
3694 { prototypes::id::TestExampleInterface },
3695 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3696 JSJitInfo::Method,
3697 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3698 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3699 false, /* isInfallible. False in setters. */
3700 false, /* isMovable. Not relevant for setters. */
3701 false, /* isEliminatable. Not relevant for setters. */
3702 false, /* isAlwaysInSlot. Only relevant for getters. */
3703 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3704 false, /* isTypedMethod. Only relevant for methods. */
3705 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3706};
3707
3708MOZ_CAN_RUN_SCRIPT static bool
3709passOptionalUnsignedShortWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3710{
3711 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3714( cx, "TestExampleInterface"
, "passOptionalUnsignedShortWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3712 "TestExampleInterface", "passOptionalUnsignedShortWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3714( cx, "TestExampleInterface"
, "passOptionalUnsignedShortWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3713 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3714( cx, "TestExampleInterface"
, "passOptionalUnsignedShortWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3714 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3714( cx, "TestExampleInterface"
, "passOptionalUnsignedShortWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
3715
3716 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3717 uint16_t arg0;
3718 if (args.hasDefined(0)) {
3719 if (!ValueToPrimitive<uint16_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3720 return false;
3721 }
3722 } else {
3723 arg0 = 2;
3724 }
3725 // NOTE: This assert does NOT call the function.
3726 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnsignedShortWithDefault(arg0))>, "Should be returning void here");
3727 MOZ_KnownLive(self)(self)->PassOptionalUnsignedShortWithDefault(arg0);
3728 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3728); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3728; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3729 args.rval().setUndefined();
3730 return true;
3731}
3732
3733static const JSJitInfo passOptionalUnsignedShortWithDefault_methodinfo = {
3734 { (JSJitGetterOp)passOptionalUnsignedShortWithDefault },
3735 { prototypes::id::TestExampleInterface },
3736 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3737 JSJitInfo::Method,
3738 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3739 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3740 false, /* isInfallible. False in setters. */
3741 false, /* isMovable. Not relevant for setters. */
3742 false, /* isEliminatable. Not relevant for setters. */
3743 false, /* isAlwaysInSlot. Only relevant for getters. */
3744 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3745 false, /* isTypedMethod. Only relevant for methods. */
3746 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3747};
3748
3749MOZ_CAN_RUN_SCRIPT static bool
3750get_readonlyUnsignedLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3751{
3752 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3755( cx, "TestExampleInterface"
, "readonlyUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3753 "TestExampleInterface", "readonlyUnsignedLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3755( cx, "TestExampleInterface"
, "readonlyUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3754 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3755( cx, "TestExampleInterface"
, "readonlyUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3755 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3755( cx, "TestExampleInterface"
, "readonlyUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3756
3757 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3758 uint32_t result(MOZ_KnownLive(self)(self)->ReadonlyUnsignedLong());
3759 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3759); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3759; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3760 args.rval().setNumber(result);
3761 return true;
3762}
3763
3764static const JSJitInfo readonlyUnsignedLong_getterinfo = {
3765 { get_readonlyUnsignedLong },
3766 { prototypes::id::TestExampleInterface },
3767 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3768 JSJitInfo::Getter,
3769 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3770 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3771 true, /* isInfallible. False in setters. */
3772 false, /* isMovable. Not relevant for setters. */
3773 false, /* isEliminatable. Not relevant for setters. */
3774 false, /* isAlwaysInSlot. Only relevant for getters. */
3775 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3776 false, /* isTypedMethod. Only relevant for methods. */
3777 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3778};
3779
3780MOZ_CAN_RUN_SCRIPT static bool
3781get_writableUnsignedLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
3782{
3783 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3786( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3784 "TestExampleInterface", "writableUnsignedLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3786( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3785 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject3786( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3786 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3786( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3787
3788 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3789 uint32_t result(MOZ_KnownLive(self)(self)->WritableUnsignedLong());
3790 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3790); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3790; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3791 args.rval().setNumber(result);
3792 return true;
3793}
3794
3795MOZ_CAN_RUN_SCRIPT static bool
3796set_writableUnsignedLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
3797{
3798 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3801( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3799 "TestExampleInterface", "writableUnsignedLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3801( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3800 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject3801( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3801 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3801( cx, "TestExampleInterface"
, "writableUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3802
3803 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3804 uint32_t arg0;
3805 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
3806 return false;
3807 }
3808 // NOTE: This assert does NOT call the function.
3809 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnsignedLong(arg0))>, "Should be returning void here");
3810 MOZ_KnownLive(self)(self)->SetWritableUnsignedLong(arg0);
3811 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3811); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3811; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3812
3813 return true;
3814}
3815
3816static const JSJitInfo writableUnsignedLong_getterinfo = {
3817 { get_writableUnsignedLong },
3818 { prototypes::id::TestExampleInterface },
3819 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3820 JSJitInfo::Getter,
3821 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3822 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3823 true, /* isInfallible. False in setters. */
3824 false, /* isMovable. Not relevant for setters. */
3825 false, /* isEliminatable. Not relevant for setters. */
3826 false, /* isAlwaysInSlot. Only relevant for getters. */
3827 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3828 false, /* isTypedMethod. Only relevant for methods. */
3829 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3830};
3831static const JSJitInfo writableUnsignedLong_setterinfo = {
3832 { (JSJitGetterOp)set_writableUnsignedLong },
3833 { prototypes::id::TestExampleInterface },
3834 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3835 JSJitInfo::Setter,
3836 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3837 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3838 false, /* isInfallible. False in setters. */
3839 false, /* isMovable. Not relevant for setters. */
3840 false, /* isEliminatable. Not relevant for setters. */
3841 false, /* isAlwaysInSlot. Only relevant for getters. */
3842 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3843 false, /* isTypedMethod. Only relevant for methods. */
3844 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3845};
3846
3847MOZ_CAN_RUN_SCRIPT static bool
3848passUnsignedLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3849{
3850 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3853( cx, "TestExampleInterface"
, "passUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3851 "TestExampleInterface", "passUnsignedLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3853( cx, "TestExampleInterface"
, "passUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3852 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3853( cx, "TestExampleInterface"
, "passUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3853 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3853( cx, "TestExampleInterface"
, "passUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3854
3855 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3856 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnsignedLong", 1)) {
3857 return false;
3858 }
3859 uint32_t arg0;
3860 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3861 return false;
3862 }
3863 // NOTE: This assert does NOT call the function.
3864 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnsignedLong(arg0))>, "Should be returning void here");
3865 MOZ_KnownLive(self)(self)->PassUnsignedLong(arg0);
3866 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3866); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3866; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3867 args.rval().setUndefined();
3868 return true;
3869}
3870
3871static const JSJitInfo passUnsignedLong_methodinfo = {
3872 { (JSJitGetterOp)passUnsignedLong },
3873 { prototypes::id::TestExampleInterface },
3874 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3875 JSJitInfo::Method,
3876 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3877 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3878 false, /* isInfallible. False in setters. */
3879 false, /* isMovable. Not relevant for setters. */
3880 false, /* isEliminatable. Not relevant for setters. */
3881 false, /* isAlwaysInSlot. Only relevant for getters. */
3882 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3883 false, /* isTypedMethod. Only relevant for methods. */
3884 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3885};
3886
3887MOZ_CAN_RUN_SCRIPT static bool
3888receiveUnsignedLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3889{
3890 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3893( cx, "TestExampleInterface"
, "receiveUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3891 "TestExampleInterface", "receiveUnsignedLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3893( cx, "TestExampleInterface"
, "receiveUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3892 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3893( cx, "TestExampleInterface"
, "receiveUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
3893 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3893( cx, "TestExampleInterface"
, "receiveUnsignedLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
3894
3895 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3896 uint32_t result(MOZ_KnownLive(self)(self)->ReceiveUnsignedLong());
3897 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3897); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3897; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3898 args.rval().setNumber(result);
3899 return true;
3900}
3901
3902static const JSJitInfo receiveUnsignedLong_methodinfo = {
3903 { (JSJitGetterOp)receiveUnsignedLong },
3904 { prototypes::id::TestExampleInterface },
3905 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3906 JSJitInfo::Method,
3907 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3908 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
3909 true, /* isInfallible. False in setters. */
3910 false, /* isMovable. Not relevant for setters. */
3911 false, /* isEliminatable. Not relevant for setters. */
3912 false, /* isAlwaysInSlot. Only relevant for getters. */
3913 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3914 false, /* isTypedMethod. Only relevant for methods. */
3915 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3916};
3917
3918MOZ_CAN_RUN_SCRIPT static bool
3919passOptionalUnsignedLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3920{
3921 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3924( cx, "TestExampleInterface"
, "passOptionalUnsignedLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3922 "TestExampleInterface", "passOptionalUnsignedLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3924( cx, "TestExampleInterface"
, "passOptionalUnsignedLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3923 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3924( cx, "TestExampleInterface"
, "passOptionalUnsignedLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3924 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3924( cx, "TestExampleInterface"
, "passOptionalUnsignedLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
3925
3926 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3927 Optional<uint32_t> arg0;
3928 if (args.hasDefined(0)) {
3929 arg0.Construct();
3930 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
3931 return false;
3932 }
3933 }
3934 // NOTE: This assert does NOT call the function.
3935 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnsignedLong(Constify(arg0)))>, "Should be returning void here");
3936 MOZ_KnownLive(self)(self)->PassOptionalUnsignedLong(Constify(arg0));
3937 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3937); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3937; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3938 args.rval().setUndefined();
3939 return true;
3940}
3941
3942static const JSJitInfo passOptionalUnsignedLong_methodinfo = {
3943 { (JSJitGetterOp)passOptionalUnsignedLong },
3944 { prototypes::id::TestExampleInterface },
3945 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3946 JSJitInfo::Method,
3947 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3948 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3949 false, /* isInfallible. False in setters. */
3950 false, /* isMovable. Not relevant for setters. */
3951 false, /* isEliminatable. Not relevant for setters. */
3952 false, /* isAlwaysInSlot. Only relevant for getters. */
3953 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3954 false, /* isTypedMethod. Only relevant for methods. */
3955 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3956};
3957
3958MOZ_CAN_RUN_SCRIPT static bool
3959passOptionalUnsignedLongWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
3960{
3961 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject3964( cx, "TestExampleInterface"
, "passOptionalUnsignedLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3962 "TestExampleInterface", "passOptionalUnsignedLongWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject3964( cx, "TestExampleInterface"
, "passOptionalUnsignedLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3963 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject3964( cx, "TestExampleInterface"
, "passOptionalUnsignedLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
3964 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject3964( cx, "TestExampleInterface"
, "passOptionalUnsignedLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
3965
3966 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
3967 uint32_t arg0;
3968 if (args.hasDefined(0)) {
3969 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
3970 return false;
3971 }
3972 } else {
3973 arg0 = 6U;
3974 }
3975 // NOTE: This assert does NOT call the function.
3976 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnsignedLongWithDefault(arg0))>, "Should be returning void here");
3977 MOZ_KnownLive(self)(self)->PassOptionalUnsignedLongWithDefault(arg0);
3978 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 3978); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 3978; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
3979 args.rval().setUndefined();
3980 return true;
3981}
3982
3983static const JSJitInfo passOptionalUnsignedLongWithDefault_methodinfo = {
3984 { (JSJitGetterOp)passOptionalUnsignedLongWithDefault },
3985 { prototypes::id::TestExampleInterface },
3986 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
3987 JSJitInfo::Method,
3988 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3989 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3990 false, /* isInfallible. False in setters. */
3991 false, /* isMovable. Not relevant for setters. */
3992 false, /* isEliminatable. Not relevant for setters. */
3993 false, /* isAlwaysInSlot. Only relevant for getters. */
3994 false, /* isLazilyCachedInSlot. Only relevant for getters. */
3995 false, /* isTypedMethod. Only relevant for methods. */
3996 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3997};
3998
3999MOZ_CAN_RUN_SCRIPT static bool
4000get_readonlyUnsignedLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4001{
4002 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4005( cx, "TestExampleInterface"
, "readonlyUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4003 "TestExampleInterface", "readonlyUnsignedLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4005( cx, "TestExampleInterface"
, "readonlyUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4004 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4005( cx, "TestExampleInterface"
, "readonlyUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4005 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4005( cx, "TestExampleInterface"
, "readonlyUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4006
4007 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4008 uint64_t result(MOZ_KnownLive(self)(self)->ReadonlyUnsignedLongLong());
4009 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4009); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4009; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4010 args.rval().set(JS_NumberValue(double(result)));
4011 return true;
4012}
4013
4014static const JSJitInfo readonlyUnsignedLongLong_getterinfo = {
4015 { get_readonlyUnsignedLongLong },
4016 { prototypes::id::TestExampleInterface },
4017 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4018 JSJitInfo::Getter,
4019 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4020 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4021 true, /* isInfallible. False in setters. */
4022 false, /* isMovable. Not relevant for setters. */
4023 false, /* isEliminatable. Not relevant for setters. */
4024 false, /* isAlwaysInSlot. Only relevant for getters. */
4025 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4026 false, /* isTypedMethod. Only relevant for methods. */
4027 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4028};
4029
4030MOZ_CAN_RUN_SCRIPT static bool
4031get_writableUnsignedLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4032{
4033 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4036( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4034 "TestExampleInterface", "writableUnsignedLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4036( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4035 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4036( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4036 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4036( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4037
4038 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4039 uint64_t result(MOZ_KnownLive(self)(self)->WritableUnsignedLongLong());
4040 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4040); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4040; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4041 args.rval().set(JS_NumberValue(double(result)));
4042 return true;
4043}
4044
4045MOZ_CAN_RUN_SCRIPT static bool
4046set_writableUnsignedLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4047{
4048 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4051( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4049 "TestExampleInterface", "writableUnsignedLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4051( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4050 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4051( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4051 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4051( cx, "TestExampleInterface"
, "writableUnsignedLongLong", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4052
4053 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4054 uint64_t arg0;
4055 if (!ValueToPrimitive<uint64_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
4056 return false;
4057 }
4058 // NOTE: This assert does NOT call the function.
4059 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnsignedLongLong(arg0))>, "Should be returning void here");
4060 MOZ_KnownLive(self)(self)->SetWritableUnsignedLongLong(arg0);
4061 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4061); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4061; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4062
4063 return true;
4064}
4065
4066static const JSJitInfo writableUnsignedLongLong_getterinfo = {
4067 { get_writableUnsignedLongLong },
4068 { prototypes::id::TestExampleInterface },
4069 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4070 JSJitInfo::Getter,
4071 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4072 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4073 true, /* isInfallible. False in setters. */
4074 false, /* isMovable. Not relevant for setters. */
4075 false, /* isEliminatable. Not relevant for setters. */
4076 false, /* isAlwaysInSlot. Only relevant for getters. */
4077 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4078 false, /* isTypedMethod. Only relevant for methods. */
4079 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4080};
4081static const JSJitInfo writableUnsignedLongLong_setterinfo = {
4082 { (JSJitGetterOp)set_writableUnsignedLongLong },
4083 { prototypes::id::TestExampleInterface },
4084 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4085 JSJitInfo::Setter,
4086 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4087 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4088 false, /* isInfallible. False in setters. */
4089 false, /* isMovable. Not relevant for setters. */
4090 false, /* isEliminatable. Not relevant for setters. */
4091 false, /* isAlwaysInSlot. Only relevant for getters. */
4092 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4093 false, /* isTypedMethod. Only relevant for methods. */
4094 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4095};
4096
4097MOZ_CAN_RUN_SCRIPT static bool
4098passUnsignedLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
4099{
4100 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4103( cx, "TestExampleInterface"
, "passUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4101 "TestExampleInterface", "passUnsignedLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4103( cx, "TestExampleInterface"
, "passUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4102 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject4103( cx, "TestExampleInterface"
, "passUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4103 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4103( cx, "TestExampleInterface"
, "passUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4104
4105 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4106 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnsignedLongLong", 1)) {
4107 return false;
4108 }
4109 uint64_t arg0;
4110 if (!ValueToPrimitive<uint64_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
4111 return false;
4112 }
4113 // NOTE: This assert does NOT call the function.
4114 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnsignedLongLong(arg0))>, "Should be returning void here");
4115 MOZ_KnownLive(self)(self)->PassUnsignedLongLong(arg0);
4116 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4116); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4116; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4117 args.rval().setUndefined();
4118 return true;
4119}
4120
4121static const JSJitInfo passUnsignedLongLong_methodinfo = {
4122 { (JSJitGetterOp)passUnsignedLongLong },
4123 { prototypes::id::TestExampleInterface },
4124 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4125 JSJitInfo::Method,
4126 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4127 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4128 false, /* isInfallible. False in setters. */
4129 false, /* isMovable. Not relevant for setters. */
4130 false, /* isEliminatable. Not relevant for setters. */
4131 false, /* isAlwaysInSlot. Only relevant for getters. */
4132 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4133 false, /* isTypedMethod. Only relevant for methods. */
4134 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4135};
4136
4137MOZ_CAN_RUN_SCRIPT static bool
4138receiveUnsignedLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
4139{
4140 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4143( cx, "TestExampleInterface"
, "receiveUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4141 "TestExampleInterface", "receiveUnsignedLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4143( cx, "TestExampleInterface"
, "receiveUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4142 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject4143( cx, "TestExampleInterface"
, "receiveUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4143 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4143( cx, "TestExampleInterface"
, "receiveUnsignedLongLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4144
4145 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4146 uint64_t result(MOZ_KnownLive(self)(self)->ReceiveUnsignedLongLong());
4147 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4147); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4147; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4148 args.rval().set(JS_NumberValue(double(result)));
4149 return true;
4150}
4151
4152static const JSJitInfo receiveUnsignedLongLong_methodinfo = {
4153 { (JSJitGetterOp)receiveUnsignedLongLong },
4154 { prototypes::id::TestExampleInterface },
4155 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4156 JSJitInfo::Method,
4157 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4158 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4159 true, /* isInfallible. False in setters. */
4160 false, /* isMovable. Not relevant for setters. */
4161 false, /* isEliminatable. Not relevant for setters. */
4162 false, /* isAlwaysInSlot. Only relevant for getters. */
4163 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4164 false, /* isTypedMethod. Only relevant for methods. */
4165 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4166};
4167
4168MOZ_CAN_RUN_SCRIPT static bool
4169passOptionalUnsignedLongLong(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
4170{
4171 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4174( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLong", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4172 "TestExampleInterface", "passOptionalUnsignedLongLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4174( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLong", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4173 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject4174( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLong", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4174 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4174( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLong", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4175
4176 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4177 Optional<uint64_t> arg0;
4178 if (args.hasDefined(0)) {
4179 arg0.Construct();
4180 if (!ValueToPrimitive<uint64_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
4181 return false;
4182 }
4183 }
4184 // NOTE: This assert does NOT call the function.
4185 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnsignedLongLong(Constify(arg0)))>, "Should be returning void here");
4186 MOZ_KnownLive(self)(self)->PassOptionalUnsignedLongLong(Constify(arg0));
4187 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4187); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4187; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4188 args.rval().setUndefined();
4189 return true;
4190}
4191
4192static const JSJitInfo passOptionalUnsignedLongLong_methodinfo = {
4193 { (JSJitGetterOp)passOptionalUnsignedLongLong },
4194 { prototypes::id::TestExampleInterface },
4195 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4196 JSJitInfo::Method,
4197 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4198 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4199 false, /* isInfallible. False in setters. */
4200 false, /* isMovable. Not relevant for setters. */
4201 false, /* isEliminatable. Not relevant for setters. */
4202 false, /* isAlwaysInSlot. Only relevant for getters. */
4203 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4204 false, /* isTypedMethod. Only relevant for methods. */
4205 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4206};
4207
4208MOZ_CAN_RUN_SCRIPT static bool
4209passOptionalUnsignedLongLongWithDefault(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
4210{
4211 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4214( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4212 "TestExampleInterface", "passOptionalUnsignedLongLongWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4214( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4213 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject4214( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4214 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4214( cx, "TestExampleInterface"
, "passOptionalUnsignedLongLongWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4215
4216 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4217 uint64_t arg0;
4218 if (args.hasDefined(0)) {
4219 if (!ValueToPrimitive<uint64_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
4220 return false;
4221 }
4222 } else {
4223 arg0 = 17ULL;
4224 }
4225 // NOTE: This assert does NOT call the function.
4226 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnsignedLongLongWithDefault(arg0))>, "Should be returning void here");
4227 MOZ_KnownLive(self)(self)->PassOptionalUnsignedLongLongWithDefault(arg0);
4228 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4228); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4228; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4229 args.rval().setUndefined();
4230 return true;
4231}
4232
4233static const JSJitInfo passOptionalUnsignedLongLongWithDefault_methodinfo = {
4234 { (JSJitGetterOp)passOptionalUnsignedLongLongWithDefault },
4235 { prototypes::id::TestExampleInterface },
4236 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4237 JSJitInfo::Method,
4238 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4239 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4240 false, /* isInfallible. False in setters. */
4241 false, /* isMovable. Not relevant for setters. */
4242 false, /* isEliminatable. Not relevant for setters. */
4243 false, /* isAlwaysInSlot. Only relevant for getters. */
4244 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4245 false, /* isTypedMethod. Only relevant for methods. */
4246 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4247};
4248
4249MOZ_CAN_RUN_SCRIPT static bool
4250get_writableFloat(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4251{
4252 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4255( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4253 "TestExampleInterface", "writableFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4255( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4254 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4255( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4255 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4255( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4256
4257 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4258 float result(MOZ_KnownLive(self)(self)->WritableFloat());
4259 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4259); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4259; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4260 args.rval().set(JS_NumberValue(double(result)));
4261 return true;
4262}
4263
4264MOZ_CAN_RUN_SCRIPT static bool
4265set_writableFloat(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4266{
4267 BindingCallContext cx(cx_, "TestExampleInterface.writableFloat setter");
4268 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4271( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4269 "TestExampleInterface", "writableFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4271( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4270 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4271( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4271 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4271( cx, "TestExampleInterface"
, "writableFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4272
4273 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4274 float arg0;
4275 if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
4276 return false;
4277 } else if (!std::isfinite(arg0)) {
4278 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Value being assigned");
4279 return false;
4280 }
4281 // NOTE: This assert does NOT call the function.
4282 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableFloat(arg0))>, "Should be returning void here");
4283 MOZ_KnownLive(self)(self)->SetWritableFloat(arg0);
4284 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4284); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4284; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4285
4286 return true;
4287}
4288
4289static const JSJitInfo writableFloat_getterinfo = {
4290 { get_writableFloat },
4291 { prototypes::id::TestExampleInterface },
4292 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4293 JSJitInfo::Getter,
4294 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4295 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4296 true, /* isInfallible. False in setters. */
4297 false, /* isMovable. Not relevant for setters. */
4298 false, /* isEliminatable. Not relevant for setters. */
4299 false, /* isAlwaysInSlot. Only relevant for getters. */
4300 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4301 false, /* isTypedMethod. Only relevant for methods. */
4302 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4303};
4304static const JSJitInfo writableFloat_setterinfo = {
4305 { (JSJitGetterOp)set_writableFloat },
4306 { prototypes::id::TestExampleInterface },
4307 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4308 JSJitInfo::Setter,
4309 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4310 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4311 false, /* isInfallible. False in setters. */
4312 false, /* isMovable. Not relevant for setters. */
4313 false, /* isEliminatable. Not relevant for setters. */
4314 false, /* isAlwaysInSlot. Only relevant for getters. */
4315 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4316 false, /* isTypedMethod. Only relevant for methods. */
4317 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4318};
4319
4320MOZ_CAN_RUN_SCRIPT static bool
4321get_writableUnrestrictedFloat(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4322{
4323 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4326( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4324 "TestExampleInterface", "writableUnrestrictedFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4326( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4325 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4326( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4326 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4326( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4327
4328 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4329 float result(MOZ_KnownLive(self)(self)->WritableUnrestrictedFloat());
4330 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4330); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4330; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4331 args.rval().set(JS_NumberValue(double(result)));
4332 return true;
4333}
4334
4335MOZ_CAN_RUN_SCRIPT static bool
4336set_writableUnrestrictedFloat(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4337{
4338 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4341( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4339 "TestExampleInterface", "writableUnrestrictedFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4341( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4340 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4341( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4341 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4341( cx, "TestExampleInterface"
, "writableUnrestrictedFloat", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4342
4343 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4344 float arg0;
4345 if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
4346 return false;
4347 }
4348 // NOTE: This assert does NOT call the function.
4349 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnrestrictedFloat(arg0))>, "Should be returning void here");
4350 MOZ_KnownLive(self)(self)->SetWritableUnrestrictedFloat(arg0);
4351 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4351); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4351; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4352
4353 return true;
4354}
4355
4356static const JSJitInfo writableUnrestrictedFloat_getterinfo = {
4357 { get_writableUnrestrictedFloat },
4358 { prototypes::id::TestExampleInterface },
4359 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4360 JSJitInfo::Getter,
4361 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4362 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4363 true, /* isInfallible. False in setters. */
4364 false, /* isMovable. Not relevant for setters. */
4365 false, /* isEliminatable. Not relevant for setters. */
4366 false, /* isAlwaysInSlot. Only relevant for getters. */
4367 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4368 false, /* isTypedMethod. Only relevant for methods. */
4369 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4370};
4371static const JSJitInfo writableUnrestrictedFloat_setterinfo = {
4372 { (JSJitGetterOp)set_writableUnrestrictedFloat },
4373 { prototypes::id::TestExampleInterface },
4374 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4375 JSJitInfo::Setter,
4376 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4377 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4378 false, /* isInfallible. False in setters. */
4379 false, /* isMovable. Not relevant for setters. */
4380 false, /* isEliminatable. Not relevant for setters. */
4381 false, /* isAlwaysInSlot. Only relevant for getters. */
4382 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4383 false, /* isTypedMethod. Only relevant for methods. */
4384 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4385};
4386
4387MOZ_CAN_RUN_SCRIPT static bool
4388get_writableNullableFloat(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4389{
4390 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4393( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4391 "TestExampleInterface", "writableNullableFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4393( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4392 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4393( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4393 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4393( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4394
4395 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4396 Nullable<float> result(MOZ_KnownLive(self)(self)->GetWritableNullableFloat());
4397 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4397); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4397; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4398 if (result.IsNull()) {
4399 args.rval().setNull();
4400 return true;
4401 }
4402 args.rval().set(JS_NumberValue(double(result.Value())));
4403 return true;
4404}
4405
4406MOZ_CAN_RUN_SCRIPT static bool
4407set_writableNullableFloat(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4408{
4409 BindingCallContext cx(cx_, "TestExampleInterface.writableNullableFloat setter");
4410 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4413( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4411 "TestExampleInterface", "writableNullableFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4413( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4412 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4413( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4413 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4413( cx, "TestExampleInterface"
, "writableNullableFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4414
4415 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4416 Nullable<float> arg0;
4417 if (args[0].isNullOrUndefined()) {
4418 arg0.SetNull();
4419 } else if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Value being assigned", &arg0.SetValue())) {
4420 return false;
4421 } else if (!std::isfinite(arg0.Value())) {
4422 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Value being assigned");
4423 return false;
4424 }
4425 // NOTE: This assert does NOT call the function.
4426 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableNullableFloat(Constify(arg0)))>, "Should be returning void here");
4427 MOZ_KnownLive(self)(self)->SetWritableNullableFloat(Constify(arg0));
4428 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4428); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4428; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4429
4430 return true;
4431}
4432
4433static const JSJitInfo writableNullableFloat_getterinfo = {
4434 { get_writableNullableFloat },
4435 { prototypes::id::TestExampleInterface },
4436 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4437 JSJitInfo::Getter,
4438 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4439 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4440 true, /* isInfallible. False in setters. */
4441 false, /* isMovable. Not relevant for setters. */
4442 false, /* isEliminatable. Not relevant for setters. */
4443 false, /* isAlwaysInSlot. Only relevant for getters. */
4444 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4445 false, /* isTypedMethod. Only relevant for methods. */
4446 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4447};
4448static const JSJitInfo writableNullableFloat_setterinfo = {
4449 { (JSJitGetterOp)set_writableNullableFloat },
4450 { prototypes::id::TestExampleInterface },
4451 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4452 JSJitInfo::Setter,
4453 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4454 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4455 false, /* isInfallible. False in setters. */
4456 false, /* isMovable. Not relevant for setters. */
4457 false, /* isEliminatable. Not relevant for setters. */
4458 false, /* isAlwaysInSlot. Only relevant for getters. */
4459 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4460 false, /* isTypedMethod. Only relevant for methods. */
4461 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4462};
4463
4464MOZ_CAN_RUN_SCRIPT static bool
4465get_writableNullableUnrestrictedFloat(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4466{
4467 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4470( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4468 "TestExampleInterface", "writableNullableUnrestrictedFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4470( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4469 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4470( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4470 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4470( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4471
4472 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4473 Nullable<float> result(MOZ_KnownLive(self)(self)->GetWritableNullableUnrestrictedFloat());
4474 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4474); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4474; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4475 if (result.IsNull()) {
4476 args.rval().setNull();
4477 return true;
4478 }
4479 args.rval().set(JS_NumberValue(double(result.Value())));
4480 return true;
4481}
4482
4483MOZ_CAN_RUN_SCRIPT static bool
4484set_writableNullableUnrestrictedFloat(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4485{
4486 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4489( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4487 "TestExampleInterface", "writableNullableUnrestrictedFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4489( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4488 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4489( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4489 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4489( cx, "TestExampleInterface"
, "writableNullableUnrestrictedFloat", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4490
4491 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4492 Nullable<float> arg0;
4493 if (args[0].isNullOrUndefined()) {
4494 arg0.SetNull();
4495 } else if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Value being assigned", &arg0.SetValue())) {
4496 return false;
4497 }
4498 // NOTE: This assert does NOT call the function.
4499 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableNullableUnrestrictedFloat(Constify(arg0)))>, "Should be returning void here");
4500 MOZ_KnownLive(self)(self)->SetWritableNullableUnrestrictedFloat(Constify(arg0));
4501 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4501); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4501; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4502
4503 return true;
4504}
4505
4506static const JSJitInfo writableNullableUnrestrictedFloat_getterinfo = {
4507 { get_writableNullableUnrestrictedFloat },
4508 { prototypes::id::TestExampleInterface },
4509 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4510 JSJitInfo::Getter,
4511 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4512 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4513 true, /* isInfallible. False in setters. */
4514 false, /* isMovable. Not relevant for setters. */
4515 false, /* isEliminatable. Not relevant for setters. */
4516 false, /* isAlwaysInSlot. Only relevant for getters. */
4517 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4518 false, /* isTypedMethod. Only relevant for methods. */
4519 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4520};
4521static const JSJitInfo writableNullableUnrestrictedFloat_setterinfo = {
4522 { (JSJitGetterOp)set_writableNullableUnrestrictedFloat },
4523 { prototypes::id::TestExampleInterface },
4524 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4525 JSJitInfo::Setter,
4526 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4527 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4528 false, /* isInfallible. False in setters. */
4529 false, /* isMovable. Not relevant for setters. */
4530 false, /* isEliminatable. Not relevant for setters. */
4531 false, /* isAlwaysInSlot. Only relevant for getters. */
4532 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4533 false, /* isTypedMethod. Only relevant for methods. */
4534 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4535};
4536
4537MOZ_CAN_RUN_SCRIPT static bool
4538get_writableDouble(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4539{
4540 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4543( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4541 "TestExampleInterface", "writableDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4543( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4542 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4543( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4543 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4543( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4544
4545 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4546 double result(MOZ_KnownLive(self)(self)->WritableDouble());
4547 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4547); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4547; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4548 args.rval().set(JS_NumberValue(double(result)));
4549 return true;
4550}
4551
4552MOZ_CAN_RUN_SCRIPT static bool
4553set_writableDouble(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4554{
4555 BindingCallContext cx(cx_, "TestExampleInterface.writableDouble setter");
4556 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4559( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4557 "TestExampleInterface", "writableDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4559( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4558 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4559( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4559 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4559( cx, "TestExampleInterface"
, "writableDouble", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4560
4561 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4562 double arg0;
4563 if (!ValueToPrimitive<double, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
4564 return false;
4565 } else if (!std::isfinite(arg0)) {
4566 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Value being assigned");
4567 return false;
4568 }
4569 // NOTE: This assert does NOT call the function.
4570 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableDouble(arg0))>, "Should be returning void here");
4571 MOZ_KnownLive(self)(self)->SetWritableDouble(arg0);
4572 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4572); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4572; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4573
4574 return true;
4575}
4576
4577static const JSJitInfo writableDouble_getterinfo = {
4578 { get_writableDouble },
4579 { prototypes::id::TestExampleInterface },
4580 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4581 JSJitInfo::Getter,
4582 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4583 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4584 true, /* isInfallible. False in setters. */
4585 false, /* isMovable. Not relevant for setters. */
4586 false, /* isEliminatable. Not relevant for setters. */
4587 false, /* isAlwaysInSlot. Only relevant for getters. */
4588 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4589 false, /* isTypedMethod. Only relevant for methods. */
4590 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4591};
4592static const JSJitInfo writableDouble_setterinfo = {
4593 { (JSJitGetterOp)set_writableDouble },
4594 { prototypes::id::TestExampleInterface },
4595 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4596 JSJitInfo::Setter,
4597 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4598 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4599 false, /* isInfallible. False in setters. */
4600 false, /* isMovable. Not relevant for setters. */
4601 false, /* isEliminatable. Not relevant for setters. */
4602 false, /* isAlwaysInSlot. Only relevant for getters. */
4603 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4604 false, /* isTypedMethod. Only relevant for methods. */
4605 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4606};
4607
4608MOZ_CAN_RUN_SCRIPT static bool
4609get_writableUnrestrictedDouble(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4610{
4611 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4614( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4612 "TestExampleInterface", "writableUnrestrictedDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4614( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4613 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4614( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4614 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4614( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4615
4616 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4617 double result(MOZ_KnownLive(self)(self)->WritableUnrestrictedDouble());
4618 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4618); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4618; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4619 args.rval().set(JS_NumberValue(double(result)));
4620 return true;
4621}
4622
4623MOZ_CAN_RUN_SCRIPT static bool
4624set_writableUnrestrictedDouble(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4625{
4626 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4629( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4627 "TestExampleInterface", "writableUnrestrictedDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4629( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4628 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4629( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4629 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4629( cx, "TestExampleInterface"
, "writableUnrestrictedDouble", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4630
4631 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4632 double arg0;
4633 if (!ValueToPrimitive<double, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
4634 return false;
4635 }
4636 // NOTE: This assert does NOT call the function.
4637 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnrestrictedDouble(arg0))>, "Should be returning void here");
4638 MOZ_KnownLive(self)(self)->SetWritableUnrestrictedDouble(arg0);
4639 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4639); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4639; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4640
4641 return true;
4642}
4643
4644static const JSJitInfo writableUnrestrictedDouble_getterinfo = {
4645 { get_writableUnrestrictedDouble },
4646 { prototypes::id::TestExampleInterface },
4647 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4648 JSJitInfo::Getter,
4649 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4650 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
4651 true, /* isInfallible. False in setters. */
4652 false, /* isMovable. Not relevant for setters. */
4653 false, /* isEliminatable. Not relevant for setters. */
4654 false, /* isAlwaysInSlot. Only relevant for getters. */
4655 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4656 false, /* isTypedMethod. Only relevant for methods. */
4657 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4658};
4659static const JSJitInfo writableUnrestrictedDouble_setterinfo = {
4660 { (JSJitGetterOp)set_writableUnrestrictedDouble },
4661 { prototypes::id::TestExampleInterface },
4662 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4663 JSJitInfo::Setter,
4664 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4665 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4666 false, /* isInfallible. False in setters. */
4667 false, /* isMovable. Not relevant for setters. */
4668 false, /* isEliminatable. Not relevant for setters. */
4669 false, /* isAlwaysInSlot. Only relevant for getters. */
4670 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4671 false, /* isTypedMethod. Only relevant for methods. */
4672 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4673};
4674
4675MOZ_CAN_RUN_SCRIPT static bool
4676get_writableNullableDouble(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4677{
4678 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4681( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4679 "TestExampleInterface", "writableNullableDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4681( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4680 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4681( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4681 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4681( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4682
4683 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4684 Nullable<double> result(MOZ_KnownLive(self)(self)->GetWritableNullableDouble());
4685 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4685); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4685; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4686 if (result.IsNull()) {
4687 args.rval().setNull();
4688 return true;
4689 }
4690 args.rval().set(JS_NumberValue(double(result.Value())));
4691 return true;
4692}
4693
4694MOZ_CAN_RUN_SCRIPT static bool
4695set_writableNullableDouble(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4696{
4697 BindingCallContext cx(cx_, "TestExampleInterface.writableNullableDouble setter");
4698 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4701( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4699 "TestExampleInterface", "writableNullableDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4701( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4700 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4701( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
4701 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4701( cx, "TestExampleInterface"
, "writableNullableDouble", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
4702
4703 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4704 Nullable<double> arg0;
4705 if (args[0].isNullOrUndefined()) {
4706 arg0.SetNull();
4707 } else if (!ValueToPrimitive<double, eDefault>(cx, args[0], "Value being assigned", &arg0.SetValue())) {
4708 return false;
4709 } else if (!std::isfinite(arg0.Value())) {
4710 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Value being assigned");
4711 return false;
4712 }
4713 // NOTE: This assert does NOT call the function.
4714 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableNullableDouble(Constify(arg0)))>, "Should be returning void here");
4715 MOZ_KnownLive(self)(self)->SetWritableNullableDouble(Constify(arg0));
4716 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4716); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4716; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4717
4718 return true;
4719}
4720
4721static const JSJitInfo writableNullableDouble_getterinfo = {
4722 { get_writableNullableDouble },
4723 { prototypes::id::TestExampleInterface },
4724 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4725 JSJitInfo::Getter,
4726 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4727 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4728 true, /* isInfallible. False in setters. */
4729 false, /* isMovable. Not relevant for setters. */
4730 false, /* isEliminatable. Not relevant for setters. */
4731 false, /* isAlwaysInSlot. Only relevant for getters. */
4732 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4733 false, /* isTypedMethod. Only relevant for methods. */
4734 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4735};
4736static const JSJitInfo writableNullableDouble_setterinfo = {
4737 { (JSJitGetterOp)set_writableNullableDouble },
4738 { prototypes::id::TestExampleInterface },
4739 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4740 JSJitInfo::Setter,
4741 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4742 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4743 false, /* isInfallible. False in setters. */
4744 false, /* isMovable. Not relevant for setters. */
4745 false, /* isEliminatable. Not relevant for setters. */
4746 false, /* isAlwaysInSlot. Only relevant for getters. */
4747 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4748 false, /* isTypedMethod. Only relevant for methods. */
4749 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4750};
4751
4752MOZ_CAN_RUN_SCRIPT static bool
4753get_writableNullableUnrestrictedDouble(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
4754{
4755 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4758( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4756 "TestExampleInterface", "writableNullableUnrestrictedDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4758( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4757 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject4758( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4758 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4758( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4759
4760 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4761 Nullable<double> result(MOZ_KnownLive(self)(self)->GetWritableNullableUnrestrictedDouble());
4762 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4762); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4762; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4763 if (result.IsNull()) {
4764 args.rval().setNull();
4765 return true;
4766 }
4767 args.rval().set(JS_NumberValue(double(result.Value())));
4768 return true;
4769}
4770
4771MOZ_CAN_RUN_SCRIPT static bool
4772set_writableNullableUnrestrictedDouble(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
4773{
4774 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4777( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4775 "TestExampleInterface", "writableNullableUnrestrictedDouble", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4777( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4776 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject4777( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
4777 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4777( cx, "TestExampleInterface"
, "writableNullableUnrestrictedDouble", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
4778
4779 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4780 Nullable<double> arg0;
4781 if (args[0].isNullOrUndefined()) {
4782 arg0.SetNull();
4783 } else if (!ValueToPrimitive<double, eDefault>(cx, args[0], "Value being assigned", &arg0.SetValue())) {
4784 return false;
4785 }
4786 // NOTE: This assert does NOT call the function.
4787 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableNullableUnrestrictedDouble(Constify(arg0)))>, "Should be returning void here");
4788 MOZ_KnownLive(self)(self)->SetWritableNullableUnrestrictedDouble(Constify(arg0));
4789 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 4789); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 4789; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
4790
4791 return true;
4792}
4793
4794static const JSJitInfo writableNullableUnrestrictedDouble_getterinfo = {
4795 { get_writableNullableUnrestrictedDouble },
4796 { prototypes::id::TestExampleInterface },
4797 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4798 JSJitInfo::Getter,
4799 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4800 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4801 true, /* isInfallible. False in setters. */
4802 false, /* isMovable. Not relevant for setters. */
4803 false, /* isEliminatable. Not relevant for setters. */
4804 false, /* isAlwaysInSlot. Only relevant for getters. */
4805 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4806 false, /* isTypedMethod. Only relevant for methods. */
4807 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4808};
4809static const JSJitInfo writableNullableUnrestrictedDouble_setterinfo = {
4810 { (JSJitGetterOp)set_writableNullableUnrestrictedDouble },
4811 { prototypes::id::TestExampleInterface },
4812 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
4813 JSJitInfo::Setter,
4814 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4815 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4816 false, /* isInfallible. False in setters. */
4817 false, /* isMovable. Not relevant for setters. */
4818 false, /* isEliminatable. Not relevant for setters. */
4819 false, /* isAlwaysInSlot. Only relevant for getters. */
4820 false, /* isLazilyCachedInSlot. Only relevant for getters. */
4821 false, /* isTypedMethod. Only relevant for methods. */
4822 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4823};
4824
4825MOZ_CAN_RUN_SCRIPT static bool
4826passFloat(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
4827{
4828 BindingCallContext cx(cx_, "TestExampleInterface.passFloat");
4829 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject4832( cx, "TestExampleInterface"
, "passFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
4830 "TestExampleInterface", "passFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject4832( cx, "TestExampleInterface"
, "passFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
4831 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject4832( cx, "TestExampleInterface"
, "passFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
4832 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject4832( cx, "TestExampleInterface"
, "passFloat", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
4833
4834 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
4835 if (!args.requireAtLeast(cx, "TestExampleInterface.passFloat", 16)) {
4836 return false;
4837 }
4838 float arg0;
4839 if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Argument 1", &arg0)) {
4840 return false;
4841 } else if (!std::isfinite(arg0)) {
4842 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Argument 1");
4843 return false;
4844 }
4845 float arg1;
4846 if (!ValueToPrimitive<float, eDefault>(cx, args[1], "Argument 2", &arg1)) {
4847 return false;
4848 }
4849 Nullable<float> arg2;
4850 if (args[2].isNullOrUndefined()) {
4851 arg2.SetNull();
4852 } else if (!ValueToPrimitive<float, eDefault>(cx, args[2], "Argument 3", &arg2.SetValue())) {
4853 return false;
4854 } else if (!std::isfinite(arg2.Value())) {
4855 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Argument 3");
4856 return false;
4857 }
4858 Nullable<float> arg3;
4859 if (args[3].isNullOrUndefined()) {
4860 arg3.SetNull();
4861 } else if (!ValueToPrimitive<float, eDefault>(cx, args[3], "Argument 4", &arg3.SetValue())) {
4862 return false;
4863 }
4864 double arg4;
4865 if (!ValueToPrimitive<double, eDefault>(cx, args[4], "Argument 5", &arg4)) {
4866 return false;
4867 } else if (!std::isfinite(arg4)) {
4868 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Argument 5");
4869 return false;
4870 }
4871 double arg5;
4872 if (!ValueToPrimitive<double, eDefault>(cx, args[5], "Argument 6", &arg5)) {
4873 return false;
4874 }
4875 Nullable<double> arg6;
4876 if (args[6].isNullOrUndefined()) {
4877 arg6.SetNull();
4878 } else if (!ValueToPrimitive<double, eDefault>(cx, args[6], "Argument 7", &arg6.SetValue())) {
4879 return false;
4880 } else if (!std::isfinite(arg6.Value())) {
4881 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Argument 7");
4882 return false;
4883 }
4884 Nullable<double> arg7;
4885 if (args[7].isNullOrUndefined()) {
4886 arg7.SetNull();
4887 } else if (!ValueToPrimitive<double, eDefault>(cx, args[7], "Argument 8", &arg7.SetValue())) {
4888 return false;
4889 }
4890 binding_detail::AutoSequence<float> arg8;
4891 if (args[8].isObject()) {
4892 JS::ForOfIterator iter(cx);
4893 if (!iter.init(args[8], JS::ForOfIterator::AllowNonIterable)) {
4894 return false;
4895 }
4896 if (!iter.valueIsIterable()) {
4897 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 9", "sequence");
4898 return false;
4899 }
4900 binding_detail::AutoSequence<float> &arr = arg8;
4901 JS::Rooted<JS::Value> temp(cx);
4902 while (true) {
4903 bool done;
4904 if (!iter.next(&temp, &done)) {
4905 return false;
4906 }
4907 if (done) {
4908 break;
4909 }
4910 float* slotPtr = arr.AppendElement(mozilla::fallible);
4911 if (!slotPtr) {
4912 JS_ReportOutOfMemory(cx);
4913 return false;
4914 }
4915 float& slot = *slotPtr;
4916 if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 9", &slot)) {
4917 return false;
4918 } else if (!std::isfinite(slot)) {
4919 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Element of argument 9");
4920 return false;
4921 }
4922 }
4923 } else {
4924 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 9", "sequence");
4925 return false;
4926 }
4927 binding_detail::AutoSequence<float> arg9;
4928 if (args[9].isObject()) {
4929 JS::ForOfIterator iter(cx);
4930 if (!iter.init(args[9], JS::ForOfIterator::AllowNonIterable)) {
4931 return false;
4932 }
4933 if (!iter.valueIsIterable()) {
4934 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 10", "sequence");
4935 return false;
4936 }
4937 binding_detail::AutoSequence<float> &arr = arg9;
4938 JS::Rooted<JS::Value> temp(cx);
4939 while (true) {
4940 bool done;
4941 if (!iter.next(&temp, &done)) {
4942 return false;
4943 }
4944 if (done) {
4945 break;
4946 }
4947 float* slotPtr = arr.AppendElement(mozilla::fallible);
4948 if (!slotPtr) {
4949 JS_ReportOutOfMemory(cx);
4950 return false;
4951 }
4952 float& slot = *slotPtr;
4953 if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 10", &slot)) {
4954 return false;
4955 }
4956 }
4957 } else {
4958 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 10", "sequence");
4959 return false;
4960 }
4961 binding_detail::AutoSequence<Nullable<float>> arg10;
4962 if (args[10].isObject()) {
4963 JS::ForOfIterator iter(cx);
4964 if (!iter.init(args[10], JS::ForOfIterator::AllowNonIterable)) {
4965 return false;
4966 }
4967 if (!iter.valueIsIterable()) {
4968 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 11", "sequence");
4969 return false;
4970 }
4971 binding_detail::AutoSequence<Nullable<float>> &arr = arg10;
4972 JS::Rooted<JS::Value> temp(cx);
4973 while (true) {
4974 bool done;
4975 if (!iter.next(&temp, &done)) {
4976 return false;
4977 }
4978 if (done) {
4979 break;
4980 }
4981 Nullable<float>* slotPtr = arr.AppendElement(mozilla::fallible);
4982 if (!slotPtr) {
4983 JS_ReportOutOfMemory(cx);
4984 return false;
4985 }
4986 Nullable<float>& slot = *slotPtr;
4987 if (temp.isNullOrUndefined()) {
4988 slot.SetNull();
4989 } else if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 11", &slot.SetValue())) {
4990 return false;
4991 } else if (!std::isfinite(slot.Value())) {
4992 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Element of argument 11");
4993 return false;
4994 }
4995 }
4996 } else {
4997 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 11", "sequence");
4998 return false;
4999 }
5000 binding_detail::AutoSequence<Nullable<float>> arg11;
5001 if (args[11].isObject()) {
5002 JS::ForOfIterator iter(cx);
5003 if (!iter.init(args[11], JS::ForOfIterator::AllowNonIterable)) {
5004 return false;
5005 }
5006 if (!iter.valueIsIterable()) {
5007 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 12", "sequence");
5008 return false;
5009 }
5010 binding_detail::AutoSequence<Nullable<float>> &arr = arg11;
5011 JS::Rooted<JS::Value> temp(cx);
5012 while (true) {
5013 bool done;
5014 if (!iter.next(&temp, &done)) {
5015 return false;
5016 }
5017 if (done) {
5018 break;
5019 }
5020 Nullable<float>* slotPtr = arr.AppendElement(mozilla::fallible);
5021 if (!slotPtr) {
5022 JS_ReportOutOfMemory(cx);
5023 return false;
5024 }
5025 Nullable<float>& slot = *slotPtr;
5026 if (temp.isNullOrUndefined()) {
5027 slot.SetNull();
5028 } else if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 12", &slot.SetValue())) {
5029 return false;
5030 }
5031 }
5032 } else {
5033 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 12", "sequence");
5034 return false;
5035 }
5036 binding_detail::AutoSequence<double> arg12;
5037 if (args[12].isObject()) {
5038 JS::ForOfIterator iter(cx);
5039 if (!iter.init(args[12], JS::ForOfIterator::AllowNonIterable)) {
5040 return false;
5041 }
5042 if (!iter.valueIsIterable()) {
5043 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 13", "sequence");
5044 return false;
5045 }
5046 binding_detail::AutoSequence<double> &arr = arg12;
5047 JS::Rooted<JS::Value> temp(cx);
5048 while (true) {
5049 bool done;
5050 if (!iter.next(&temp, &done)) {
5051 return false;
5052 }
5053 if (done) {
5054 break;
5055 }
5056 double* slotPtr = arr.AppendElement(mozilla::fallible);
5057 if (!slotPtr) {
5058 JS_ReportOutOfMemory(cx);
5059 return false;
5060 }
5061 double& slot = *slotPtr;
5062 if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 13", &slot)) {
5063 return false;
5064 } else if (!std::isfinite(slot)) {
5065 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Element of argument 13");
5066 return false;
5067 }
5068 }
5069 } else {
5070 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 13", "sequence");
5071 return false;
5072 }
5073 binding_detail::AutoSequence<double> arg13;
5074 if (args[13].isObject()) {
5075 JS::ForOfIterator iter(cx);
5076 if (!iter.init(args[13], JS::ForOfIterator::AllowNonIterable)) {
5077 return false;
5078 }
5079 if (!iter.valueIsIterable()) {
5080 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 14", "sequence");
5081 return false;
5082 }
5083 binding_detail::AutoSequence<double> &arr = arg13;
5084 JS::Rooted<JS::Value> temp(cx);
5085 while (true) {
5086 bool done;
5087 if (!iter.next(&temp, &done)) {
5088 return false;
5089 }
5090 if (done) {
5091 break;
5092 }
5093 double* slotPtr = arr.AppendElement(mozilla::fallible);
5094 if (!slotPtr) {
5095 JS_ReportOutOfMemory(cx);
5096 return false;
5097 }
5098 double& slot = *slotPtr;
5099 if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 14", &slot)) {
5100 return false;
5101 }
5102 }
5103 } else {
5104 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 14", "sequence");
5105 return false;
5106 }
5107 binding_detail::AutoSequence<Nullable<double>> arg14;
5108 if (args[14].isObject()) {
5109 JS::ForOfIterator iter(cx);
5110 if (!iter.init(args[14], JS::ForOfIterator::AllowNonIterable)) {
5111 return false;
5112 }
5113 if (!iter.valueIsIterable()) {
5114 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 15", "sequence");
5115 return false;
5116 }
5117 binding_detail::AutoSequence<Nullable<double>> &arr = arg14;
5118 JS::Rooted<JS::Value> temp(cx);
5119 while (true) {
5120 bool done;
5121 if (!iter.next(&temp, &done)) {
5122 return false;
5123 }
5124 if (done) {
5125 break;
5126 }
5127 Nullable<double>* slotPtr = arr.AppendElement(mozilla::fallible);
5128 if (!slotPtr) {
5129 JS_ReportOutOfMemory(cx);
5130 return false;
5131 }
5132 Nullable<double>& slot = *slotPtr;
5133 if (temp.isNullOrUndefined()) {
5134 slot.SetNull();
5135 } else if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 15", &slot.SetValue())) {
5136 return false;
5137 } else if (!std::isfinite(slot.Value())) {
5138 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Element of argument 15");
5139 return false;
5140 }
5141 }
5142 } else {
5143 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 15", "sequence");
5144 return false;
5145 }
5146 binding_detail::AutoSequence<Nullable<double>> arg15;
5147 if (args[15].isObject()) {
5148 JS::ForOfIterator iter(cx);
5149 if (!iter.init(args[15], JS::ForOfIterator::AllowNonIterable)) {
5150 return false;
5151 }
5152 if (!iter.valueIsIterable()) {
5153 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 16", "sequence");
5154 return false;
5155 }
5156 binding_detail::AutoSequence<Nullable<double>> &arr = arg15;
5157 JS::Rooted<JS::Value> temp(cx);
5158 while (true) {
5159 bool done;
5160 if (!iter.next(&temp, &done)) {
5161 return false;
5162 }
5163 if (done) {
5164 break;
5165 }
5166 Nullable<double>* slotPtr = arr.AppendElement(mozilla::fallible);
5167 if (!slotPtr) {
5168 JS_ReportOutOfMemory(cx);
5169 return false;
5170 }
5171 Nullable<double>& slot = *slotPtr;
5172 if (temp.isNullOrUndefined()) {
5173 slot.SetNull();
5174 } else if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 16", &slot.SetValue())) {
5175 return false;
5176 }
5177 }
5178 } else {
5179 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 16", "sequence");
5180 return false;
5181 }
5182 // NOTE: This assert does NOT call the function.
5183 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassFloat(arg0, arg1, Constify(arg2), Constify(arg3), arg4, arg5, Constify(arg6), Constify(arg7), Constify(arg8), Constify(arg9), Constify(arg10), Constify(arg11), Constify(arg12), Constify(arg13), Constify(arg14), Constify(arg15)))>, "Should be returning void here");
5184 MOZ_KnownLive(self)(self)->PassFloat(arg0, arg1, Constify(arg2), Constify(arg3), arg4, arg5, Constify(arg6), Constify(arg7), Constify(arg8), Constify(arg9), Constify(arg10), Constify(arg11), Constify(arg12), Constify(arg13), Constify(arg14), Constify(arg15));
5185 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5185); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5185; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5186 args.rval().setUndefined();
5187 return true;
5188}
5189
5190static const JSJitInfo passFloat_methodinfo = {
5191 { (JSJitGetterOp)passFloat },
5192 { prototypes::id::TestExampleInterface },
5193 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5194 JSJitInfo::Method,
5195 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5196 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5197 false, /* isInfallible. False in setters. */
5198 false, /* isMovable. Not relevant for setters. */
5199 false, /* isEliminatable. Not relevant for setters. */
5200 false, /* isAlwaysInSlot. Only relevant for getters. */
5201 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5202 false, /* isTypedMethod. Only relevant for methods. */
5203 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5204};
5205
5206MOZ_CAN_RUN_SCRIPT static bool
5207passLenientFloat(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5208{
5209 BindingCallContext cx(cx_, "TestExampleInterface.passLenientFloat");
5210 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5213( cx, "TestExampleInterface"
, "passLenientFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5211 "TestExampleInterface", "passLenientFloat", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5213( cx, "TestExampleInterface"
, "passLenientFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5212 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5213( cx, "TestExampleInterface"
, "passLenientFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5213 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5213( cx, "TestExampleInterface"
, "passLenientFloat", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5214
5215 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5216 if (!args.requireAtLeast(cx, "TestExampleInterface.passLenientFloat", 16)) {
5217 return false;
5218 }
5219 bool foundNonFiniteFloat = false;
5220 float arg0;
5221 if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Argument 1", &arg0)) {
5222 return false;
5223 } else if (!std::isfinite(arg0)) {
5224 foundNonFiniteFloat = true;
5225 }
5226 float arg1;
5227 if (!ValueToPrimitive<float, eDefault>(cx, args[1], "Argument 2", &arg1)) {
5228 return false;
5229 }
5230 Nullable<float> arg2;
5231 if (args[2].isNullOrUndefined()) {
5232 arg2.SetNull();
5233 } else if (!ValueToPrimitive<float, eDefault>(cx, args[2], "Argument 3", &arg2.SetValue())) {
5234 return false;
5235 } else if (!std::isfinite(arg2.Value())) {
5236 foundNonFiniteFloat = true;
5237 }
5238 Nullable<float> arg3;
5239 if (args[3].isNullOrUndefined()) {
5240 arg3.SetNull();
5241 } else if (!ValueToPrimitive<float, eDefault>(cx, args[3], "Argument 4", &arg3.SetValue())) {
5242 return false;
5243 }
5244 double arg4;
5245 if (!ValueToPrimitive<double, eDefault>(cx, args[4], "Argument 5", &arg4)) {
5246 return false;
5247 } else if (!std::isfinite(arg4)) {
5248 foundNonFiniteFloat = true;
5249 }
5250 double arg5;
5251 if (!ValueToPrimitive<double, eDefault>(cx, args[5], "Argument 6", &arg5)) {
5252 return false;
5253 }
5254 Nullable<double> arg6;
5255 if (args[6].isNullOrUndefined()) {
5256 arg6.SetNull();
5257 } else if (!ValueToPrimitive<double, eDefault>(cx, args[6], "Argument 7", &arg6.SetValue())) {
5258 return false;
5259 } else if (!std::isfinite(arg6.Value())) {
5260 foundNonFiniteFloat = true;
5261 }
5262 Nullable<double> arg7;
5263 if (args[7].isNullOrUndefined()) {
5264 arg7.SetNull();
5265 } else if (!ValueToPrimitive<double, eDefault>(cx, args[7], "Argument 8", &arg7.SetValue())) {
5266 return false;
5267 }
5268 binding_detail::AutoSequence<float> arg8;
5269 if (args[8].isObject()) {
5270 JS::ForOfIterator iter(cx);
5271 if (!iter.init(args[8], JS::ForOfIterator::AllowNonIterable)) {
5272 return false;
5273 }
5274 if (!iter.valueIsIterable()) {
5275 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 9", "sequence");
5276 return false;
5277 }
5278 binding_detail::AutoSequence<float> &arr = arg8;
5279 JS::Rooted<JS::Value> temp(cx);
5280 while (true) {
5281 bool done;
5282 if (!iter.next(&temp, &done)) {
5283 return false;
5284 }
5285 if (done) {
5286 break;
5287 }
5288 float* slotPtr = arr.AppendElement(mozilla::fallible);
5289 if (!slotPtr) {
5290 JS_ReportOutOfMemory(cx);
5291 return false;
5292 }
5293 float& slot = *slotPtr;
5294 if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 9", &slot)) {
5295 return false;
5296 } else if (!std::isfinite(slot)) {
5297 foundNonFiniteFloat = true;
5298 }
5299 }
5300 } else {
5301 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 9", "sequence");
5302 return false;
5303 }
5304 binding_detail::AutoSequence<float> arg9;
5305 if (args[9].isObject()) {
5306 JS::ForOfIterator iter(cx);
5307 if (!iter.init(args[9], JS::ForOfIterator::AllowNonIterable)) {
5308 return false;
5309 }
5310 if (!iter.valueIsIterable()) {
5311 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 10", "sequence");
5312 return false;
5313 }
5314 binding_detail::AutoSequence<float> &arr = arg9;
5315 JS::Rooted<JS::Value> temp(cx);
5316 while (true) {
5317 bool done;
5318 if (!iter.next(&temp, &done)) {
5319 return false;
5320 }
5321 if (done) {
5322 break;
5323 }
5324 float* slotPtr = arr.AppendElement(mozilla::fallible);
5325 if (!slotPtr) {
5326 JS_ReportOutOfMemory(cx);
5327 return false;
5328 }
5329 float& slot = *slotPtr;
5330 if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 10", &slot)) {
5331 return false;
5332 }
5333 }
5334 } else {
5335 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 10", "sequence");
5336 return false;
5337 }
5338 binding_detail::AutoSequence<Nullable<float>> arg10;
5339 if (args[10].isObject()) {
5340 JS::ForOfIterator iter(cx);
5341 if (!iter.init(args[10], JS::ForOfIterator::AllowNonIterable)) {
5342 return false;
5343 }
5344 if (!iter.valueIsIterable()) {
5345 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 11", "sequence");
5346 return false;
5347 }
5348 binding_detail::AutoSequence<Nullable<float>> &arr = arg10;
5349 JS::Rooted<JS::Value> temp(cx);
5350 while (true) {
5351 bool done;
5352 if (!iter.next(&temp, &done)) {
5353 return false;
5354 }
5355 if (done) {
5356 break;
5357 }
5358 Nullable<float>* slotPtr = arr.AppendElement(mozilla::fallible);
5359 if (!slotPtr) {
5360 JS_ReportOutOfMemory(cx);
5361 return false;
5362 }
5363 Nullable<float>& slot = *slotPtr;
5364 if (temp.isNullOrUndefined()) {
5365 slot.SetNull();
5366 } else if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 11", &slot.SetValue())) {
5367 return false;
5368 } else if (!std::isfinite(slot.Value())) {
5369 foundNonFiniteFloat = true;
5370 }
5371 }
5372 } else {
5373 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 11", "sequence");
5374 return false;
5375 }
5376 binding_detail::AutoSequence<Nullable<float>> arg11;
5377 if (args[11].isObject()) {
5378 JS::ForOfIterator iter(cx);
5379 if (!iter.init(args[11], JS::ForOfIterator::AllowNonIterable)) {
5380 return false;
5381 }
5382 if (!iter.valueIsIterable()) {
5383 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 12", "sequence");
5384 return false;
5385 }
5386 binding_detail::AutoSequence<Nullable<float>> &arr = arg11;
5387 JS::Rooted<JS::Value> temp(cx);
5388 while (true) {
5389 bool done;
5390 if (!iter.next(&temp, &done)) {
5391 return false;
5392 }
5393 if (done) {
5394 break;
5395 }
5396 Nullable<float>* slotPtr = arr.AppendElement(mozilla::fallible);
5397 if (!slotPtr) {
5398 JS_ReportOutOfMemory(cx);
5399 return false;
5400 }
5401 Nullable<float>& slot = *slotPtr;
5402 if (temp.isNullOrUndefined()) {
5403 slot.SetNull();
5404 } else if (!ValueToPrimitive<float, eDefault>(cx, temp, "Element of argument 12", &slot.SetValue())) {
5405 return false;
5406 }
5407 }
5408 } else {
5409 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 12", "sequence");
5410 return false;
5411 }
5412 binding_detail::AutoSequence<double> arg12;
5413 if (args[12].isObject()) {
5414 JS::ForOfIterator iter(cx);
5415 if (!iter.init(args[12], JS::ForOfIterator::AllowNonIterable)) {
5416 return false;
5417 }
5418 if (!iter.valueIsIterable()) {
5419 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 13", "sequence");
5420 return false;
5421 }
5422 binding_detail::AutoSequence<double> &arr = arg12;
5423 JS::Rooted<JS::Value> temp(cx);
5424 while (true) {
5425 bool done;
5426 if (!iter.next(&temp, &done)) {
5427 return false;
5428 }
5429 if (done) {
5430 break;
5431 }
5432 double* slotPtr = arr.AppendElement(mozilla::fallible);
5433 if (!slotPtr) {
5434 JS_ReportOutOfMemory(cx);
5435 return false;
5436 }
5437 double& slot = *slotPtr;
5438 if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 13", &slot)) {
5439 return false;
5440 } else if (!std::isfinite(slot)) {
5441 foundNonFiniteFloat = true;
5442 }
5443 }
5444 } else {
5445 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 13", "sequence");
5446 return false;
5447 }
5448 binding_detail::AutoSequence<double> arg13;
5449 if (args[13].isObject()) {
5450 JS::ForOfIterator iter(cx);
5451 if (!iter.init(args[13], JS::ForOfIterator::AllowNonIterable)) {
5452 return false;
5453 }
5454 if (!iter.valueIsIterable()) {
5455 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 14", "sequence");
5456 return false;
5457 }
5458 binding_detail::AutoSequence<double> &arr = arg13;
5459 JS::Rooted<JS::Value> temp(cx);
5460 while (true) {
5461 bool done;
5462 if (!iter.next(&temp, &done)) {
5463 return false;
5464 }
5465 if (done) {
5466 break;
5467 }
5468 double* slotPtr = arr.AppendElement(mozilla::fallible);
5469 if (!slotPtr) {
5470 JS_ReportOutOfMemory(cx);
5471 return false;
5472 }
5473 double& slot = *slotPtr;
5474 if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 14", &slot)) {
5475 return false;
5476 }
5477 }
5478 } else {
5479 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 14", "sequence");
5480 return false;
5481 }
5482 binding_detail::AutoSequence<Nullable<double>> arg14;
5483 if (args[14].isObject()) {
5484 JS::ForOfIterator iter(cx);
5485 if (!iter.init(args[14], JS::ForOfIterator::AllowNonIterable)) {
5486 return false;
5487 }
5488 if (!iter.valueIsIterable()) {
5489 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 15", "sequence");
5490 return false;
5491 }
5492 binding_detail::AutoSequence<Nullable<double>> &arr = arg14;
5493 JS::Rooted<JS::Value> temp(cx);
5494 while (true) {
5495 bool done;
5496 if (!iter.next(&temp, &done)) {
5497 return false;
5498 }
5499 if (done) {
5500 break;
5501 }
5502 Nullable<double>* slotPtr = arr.AppendElement(mozilla::fallible);
5503 if (!slotPtr) {
5504 JS_ReportOutOfMemory(cx);
5505 return false;
5506 }
5507 Nullable<double>& slot = *slotPtr;
5508 if (temp.isNullOrUndefined()) {
5509 slot.SetNull();
5510 } else if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 15", &slot.SetValue())) {
5511 return false;
5512 } else if (!std::isfinite(slot.Value())) {
5513 foundNonFiniteFloat = true;
5514 }
5515 }
5516 } else {
5517 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 15", "sequence");
5518 return false;
5519 }
5520 binding_detail::AutoSequence<Nullable<double>> arg15;
5521 if (args[15].isObject()) {
5522 JS::ForOfIterator iter(cx);
5523 if (!iter.init(args[15], JS::ForOfIterator::AllowNonIterable)) {
5524 return false;
5525 }
5526 if (!iter.valueIsIterable()) {
5527 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 16", "sequence");
5528 return false;
5529 }
5530 binding_detail::AutoSequence<Nullable<double>> &arr = arg15;
5531 JS::Rooted<JS::Value> temp(cx);
5532 while (true) {
5533 bool done;
5534 if (!iter.next(&temp, &done)) {
5535 return false;
5536 }
5537 if (done) {
5538 break;
5539 }
5540 Nullable<double>* slotPtr = arr.AppendElement(mozilla::fallible);
5541 if (!slotPtr) {
5542 JS_ReportOutOfMemory(cx);
5543 return false;
5544 }
5545 Nullable<double>& slot = *slotPtr;
5546 if (temp.isNullOrUndefined()) {
5547 slot.SetNull();
5548 } else if (!ValueToPrimitive<double, eDefault>(cx, temp, "Element of argument 16", &slot.SetValue())) {
5549 return false;
5550 }
5551 }
5552 } else {
5553 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 16", "sequence");
5554 return false;
5555 }
5556 if (foundNonFiniteFloat) {
5557 args.rval().setUndefined();
5558 return true;
5559 }
5560 // NOTE: This assert does NOT call the function.
5561 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassLenientFloat(arg0, arg1, Constify(arg2), Constify(arg3), arg4, arg5, Constify(arg6), Constify(arg7), Constify(arg8), Constify(arg9), Constify(arg10), Constify(arg11), Constify(arg12), Constify(arg13), Constify(arg14), Constify(arg15)))>, "Should be returning void here");
5562 MOZ_KnownLive(self)(self)->PassLenientFloat(arg0, arg1, Constify(arg2), Constify(arg3), arg4, arg5, Constify(arg6), Constify(arg7), Constify(arg8), Constify(arg9), Constify(arg10), Constify(arg11), Constify(arg12), Constify(arg13), Constify(arg14), Constify(arg15));
5563 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5563); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5563; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5564 args.rval().setUndefined();
5565 return true;
5566}
5567
5568static const JSJitInfo passLenientFloat_methodinfo = {
5569 { (JSJitGetterOp)passLenientFloat },
5570 { prototypes::id::TestExampleInterface },
5571 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5572 JSJitInfo::Method,
5573 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5574 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5575 false, /* isInfallible. False in setters. */
5576 false, /* isMovable. Not relevant for setters. */
5577 false, /* isEliminatable. Not relevant for setters. */
5578 false, /* isAlwaysInSlot. Only relevant for getters. */
5579 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5580 false, /* isTypedMethod. Only relevant for methods. */
5581 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5582};
5583
5584MOZ_CAN_RUN_SCRIPT static bool
5585get_lenientFloatAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
5586{
5587 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5590( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5588 "TestExampleInterface", "lenientFloatAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5590( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5589 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject5590( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5590 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5590( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5591
5592 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5593 float result(MOZ_KnownLive(self)(self)->LenientFloatAttr());
5594 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5594); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5594; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5595 args.rval().set(JS_NumberValue(double(result)));
5596 return true;
5597}
5598
5599MOZ_CAN_RUN_SCRIPT static bool
5600set_lenientFloatAttr(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
5601{
5602 BindingCallContext cx(cx_, "TestExampleInterface.lenientFloatAttr setter");
5603 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5606( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5604 "TestExampleInterface", "lenientFloatAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5606( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5605 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject5606( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5606 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5606( cx, "TestExampleInterface"
, "lenientFloatAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5607
5608 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5609 bool foundNonFiniteFloat = false;
5610 float arg0;
5611 if (!ValueToPrimitive<float, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
5612 return false;
5613 } else if (!std::isfinite(arg0)) {
5614 foundNonFiniteFloat = true;
5615 }
5616 if (foundNonFiniteFloat) {
5617 return true;
5618 }
5619 // NOTE: This assert does NOT call the function.
5620 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetLenientFloatAttr(arg0))>, "Should be returning void here");
5621 MOZ_KnownLive(self)(self)->SetLenientFloatAttr(arg0);
5622 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5622); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5622; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5623
5624 return true;
5625}
5626
5627static const JSJitInfo lenientFloatAttr_getterinfo = {
5628 { get_lenientFloatAttr },
5629 { prototypes::id::TestExampleInterface },
5630 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5631 JSJitInfo::Getter,
5632 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5633 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
5634 true, /* isInfallible. False in setters. */
5635 false, /* isMovable. Not relevant for setters. */
5636 false, /* isEliminatable. Not relevant for setters. */
5637 false, /* isAlwaysInSlot. Only relevant for getters. */
5638 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5639 false, /* isTypedMethod. Only relevant for methods. */
5640 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5641};
5642static const JSJitInfo lenientFloatAttr_setterinfo = {
5643 { (JSJitGetterOp)set_lenientFloatAttr },
5644 { prototypes::id::TestExampleInterface },
5645 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5646 JSJitInfo::Setter,
5647 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5648 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5649 false, /* isInfallible. False in setters. */
5650 false, /* isMovable. Not relevant for setters. */
5651 false, /* isEliminatable. Not relevant for setters. */
5652 false, /* isAlwaysInSlot. Only relevant for getters. */
5653 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5654 false, /* isTypedMethod. Only relevant for methods. */
5655 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5656};
5657
5658MOZ_CAN_RUN_SCRIPT static bool
5659get_lenientDoubleAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
5660{
5661 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5664( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5662 "TestExampleInterface", "lenientDoubleAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5664( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5663 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject5664( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5664 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5664( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5665
5666 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5667 double result(MOZ_KnownLive(self)(self)->LenientDoubleAttr());
5668 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5668); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5668; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5669 args.rval().set(JS_NumberValue(double(result)));
5670 return true;
5671}
5672
5673MOZ_CAN_RUN_SCRIPT static bool
5674set_lenientDoubleAttr(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
5675{
5676 BindingCallContext cx(cx_, "TestExampleInterface.lenientDoubleAttr setter");
5677 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5680( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5678 "TestExampleInterface", "lenientDoubleAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5680( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5679 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject5680( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5680 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5680( cx, "TestExampleInterface"
, "lenientDoubleAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5681
5682 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5683 bool foundNonFiniteFloat = false;
5684 double arg0;
5685 if (!ValueToPrimitive<double, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
5686 return false;
5687 } else if (!std::isfinite(arg0)) {
5688 foundNonFiniteFloat = true;
5689 }
5690 if (foundNonFiniteFloat) {
5691 return true;
5692 }
5693 // NOTE: This assert does NOT call the function.
5694 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetLenientDoubleAttr(arg0))>, "Should be returning void here");
5695 MOZ_KnownLive(self)(self)->SetLenientDoubleAttr(arg0);
5696 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5696); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5696; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5697
5698 return true;
5699}
5700
5701static const JSJitInfo lenientDoubleAttr_getterinfo = {
5702 { get_lenientDoubleAttr },
5703 { prototypes::id::TestExampleInterface },
5704 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5705 JSJitInfo::Getter,
5706 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5707 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
5708 true, /* isInfallible. False in setters. */
5709 false, /* isMovable. Not relevant for setters. */
5710 false, /* isEliminatable. Not relevant for setters. */
5711 false, /* isAlwaysInSlot. Only relevant for getters. */
5712 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5713 false, /* isTypedMethod. Only relevant for methods. */
5714 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5715};
5716static const JSJitInfo lenientDoubleAttr_setterinfo = {
5717 { (JSJitGetterOp)set_lenientDoubleAttr },
5718 { prototypes::id::TestExampleInterface },
5719 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5720 JSJitInfo::Setter,
5721 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5722 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5723 false, /* isInfallible. False in setters. */
5724 false, /* isMovable. Not relevant for setters. */
5725 false, /* isEliminatable. Not relevant for setters. */
5726 false, /* isAlwaysInSlot. Only relevant for getters. */
5727 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5728 false, /* isTypedMethod. Only relevant for methods. */
5729 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5730};
5731
5732MOZ_CAN_RUN_SCRIPT static bool
5733receiveSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5734{
5735 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5738( cx, "TestExampleInterface"
, "receiveSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5736 "TestExampleInterface", "receiveSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5738( cx, "TestExampleInterface"
, "receiveSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5737 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5738( cx, "TestExampleInterface"
, "receiveSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5738 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5738( cx, "TestExampleInterface"
, "receiveSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5739
5740 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5741 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->ReceiveSelf()));
5742 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5742); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5742; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5743 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5744 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5744); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 5744; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
5745 return false;
5746 }
5747 return true;
5748}
5749
5750static const JSJitInfo receiveSelf_methodinfo = {
5751 { (JSJitGetterOp)receiveSelf },
5752 { prototypes::id::TestExampleInterface },
5753 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5754 JSJitInfo::Method,
5755 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5756 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5757 false, /* isInfallible. False in setters. */
5758 false, /* isMovable. Not relevant for setters. */
5759 false, /* isEliminatable. Not relevant for setters. */
5760 false, /* isAlwaysInSlot. Only relevant for getters. */
5761 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5762 false, /* isTypedMethod. Only relevant for methods. */
5763 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5764};
5765
5766MOZ_CAN_RUN_SCRIPT static bool
5767receiveNullableSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5768{
5769 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5772( cx, "TestExampleInterface"
, "receiveNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5770 "TestExampleInterface", "receiveNullableSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5772( cx, "TestExampleInterface"
, "receiveNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5771 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5772( cx, "TestExampleInterface"
, "receiveNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5772 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5772( cx, "TestExampleInterface"
, "receiveNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5773
5774 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5775 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->ReceiveNullableSelf()));
5776 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5776); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5776; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5777 if (!result) {
5778 args.rval().setNull();
5779 return true;
5780 }
5781 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5782 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5782); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 5782; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
5783 return false;
5784 }
5785 return true;
5786}
5787
5788static const JSJitInfo receiveNullableSelf_methodinfo = {
5789 { (JSJitGetterOp)receiveNullableSelf },
5790 { prototypes::id::TestExampleInterface },
5791 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5792 JSJitInfo::Method,
5793 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5794 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5795 false, /* isInfallible. False in setters. */
5796 false, /* isMovable. Not relevant for setters. */
5797 false, /* isEliminatable. Not relevant for setters. */
5798 false, /* isAlwaysInSlot. Only relevant for getters. */
5799 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5800 false, /* isTypedMethod. Only relevant for methods. */
5801 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5802};
5803
5804MOZ_CAN_RUN_SCRIPT static bool
5805receiveWeakSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5806{
5807 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5810( cx, "TestExampleInterface"
, "receiveWeakSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5808 "TestExampleInterface", "receiveWeakSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5810( cx, "TestExampleInterface"
, "receiveWeakSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5809 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5810( cx, "TestExampleInterface"
, "receiveWeakSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5810 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5810( cx, "TestExampleInterface"
, "receiveWeakSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5811
5812 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5813 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->ReceiveWeakSelf()));
5814 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5814); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5814; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5815 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5816 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5816); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 5816; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
5817 return false;
5818 }
5819 return true;
5820}
5821
5822static const JSJitInfo receiveWeakSelf_methodinfo = {
5823 { (JSJitGetterOp)receiveWeakSelf },
5824 { prototypes::id::TestExampleInterface },
5825 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5826 JSJitInfo::Method,
5827 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5828 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5829 false, /* isInfallible. False in setters. */
5830 false, /* isMovable. Not relevant for setters. */
5831 false, /* isEliminatable. Not relevant for setters. */
5832 false, /* isAlwaysInSlot. Only relevant for getters. */
5833 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5834 false, /* isTypedMethod. Only relevant for methods. */
5835 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5836};
5837
5838MOZ_CAN_RUN_SCRIPT static bool
5839receiveWeakNullableSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5840{
5841 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5844( cx, "TestExampleInterface"
, "receiveWeakNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5842 "TestExampleInterface", "receiveWeakNullableSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5844( cx, "TestExampleInterface"
, "receiveWeakNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5843 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5844( cx, "TestExampleInterface"
, "receiveWeakNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5844 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5844( cx, "TestExampleInterface"
, "receiveWeakNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5845
5846 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5847 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->ReceiveWeakNullableSelf()));
5848 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5848); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5848; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5849 if (!result) {
5850 args.rval().setNull();
5851 return true;
5852 }
5853 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5854 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5854); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 5854; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
5855 return false;
5856 }
5857 return true;
5858}
5859
5860static const JSJitInfo receiveWeakNullableSelf_methodinfo = {
5861 { (JSJitGetterOp)receiveWeakNullableSelf },
5862 { prototypes::id::TestExampleInterface },
5863 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5864 JSJitInfo::Method,
5865 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5866 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5867 false, /* isInfallible. False in setters. */
5868 false, /* isMovable. Not relevant for setters. */
5869 false, /* isEliminatable. Not relevant for setters. */
5870 false, /* isAlwaysInSlot. Only relevant for getters. */
5871 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5872 false, /* isTypedMethod. Only relevant for methods. */
5873 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5874};
5875
5876MOZ_CAN_RUN_SCRIPT static bool
5877passSelf(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5878{
5879 BindingCallContext cx(cx_, "TestExampleInterface.passSelf");
5880 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5883( cx, "TestExampleInterface"
, "passSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
5881 "TestExampleInterface", "passSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5883( cx, "TestExampleInterface"
, "passSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
5882 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5883( cx, "TestExampleInterface"
, "passSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
5883 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5883( cx, "TestExampleInterface"
, "passSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
5884
5885 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5886 if (!args.requireAtLeast(cx, "TestExampleInterface.passSelf", 1)) {
5887 return false;
5888 }
5889 NonNull<mozilla::dom::TestInterface> arg0;
5890 if (args[0].isObject()) {
5891 {
5892 // Our JSContext should be in the right global to do unwrapping in.
5893 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
5894 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
5895 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
5896 return false;
5897 }
5898 }
5899 } else {
5900 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
5901 return false;
5902 }
5903 // NOTE: This assert does NOT call the function.
5904 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSelf(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
5905 MOZ_KnownLive(self)(self)->PassSelf(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
5906 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5906); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5906; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5907 args.rval().setUndefined();
5908 return true;
5909}
5910
5911static const JSJitInfo passSelf_methodinfo = {
5912 { (JSJitGetterOp)passSelf },
5913 { prototypes::id::TestExampleInterface },
5914 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5915 JSJitInfo::Method,
5916 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5917 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5918 false, /* isInfallible. False in setters. */
5919 false, /* isMovable. Not relevant for setters. */
5920 false, /* isEliminatable. Not relevant for setters. */
5921 false, /* isAlwaysInSlot. Only relevant for getters. */
5922 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5923 false, /* isTypedMethod. Only relevant for methods. */
5924 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5925};
5926
5927MOZ_CAN_RUN_SCRIPT static bool
5928passNullableSelf(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
5929{
5930 BindingCallContext cx(cx_, "TestExampleInterface.passNullableSelf");
5931 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5934( cx, "TestExampleInterface"
, "passNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5932 "TestExampleInterface", "passNullableSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5934( cx, "TestExampleInterface"
, "passNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5933 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject5934( cx, "TestExampleInterface"
, "passNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5934 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5934( cx, "TestExampleInterface"
, "passNullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5935
5936 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5937 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableSelf", 1)) {
5938 return false;
5939 }
5940 mozilla::dom::TestInterface* arg0;
5941 if (args[0].isObject()) {
5942 {
5943 // Our JSContext should be in the right global to do unwrapping in.
5944 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
5945 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
5946 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
5947 return false;
5948 }
5949 }
5950 } else if (args[0].isNullOrUndefined()) {
5951 arg0 = nullptr;
5952 } else {
5953 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
5954 return false;
5955 }
5956 // NOTE: This assert does NOT call the function.
5957 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableSelf(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
5958 MOZ_KnownLive(self)(self)->PassNullableSelf(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
5959 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5959); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5959; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5960 args.rval().setUndefined();
5961 return true;
5962}
5963
5964static const JSJitInfo passNullableSelf_methodinfo = {
5965 { (JSJitGetterOp)passNullableSelf },
5966 { prototypes::id::TestExampleInterface },
5967 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
5968 JSJitInfo::Method,
5969 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5970 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5971 false, /* isInfallible. False in setters. */
5972 false, /* isMovable. Not relevant for setters. */
5973 false, /* isEliminatable. Not relevant for setters. */
5974 false, /* isAlwaysInSlot. Only relevant for getters. */
5975 false, /* isLazilyCachedInSlot. Only relevant for getters. */
5976 false, /* isTypedMethod. Only relevant for methods. */
5977 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5978};
5979
5980MOZ_CAN_RUN_SCRIPT static bool
5981get_nonNullSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
5982{
5983 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject5986( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5984 "TestExampleInterface", "nonNullSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject5986( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5985 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject5986( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
5986 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject5986( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
5987
5988 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
5989 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->NonNullSelf()));
5990 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5990); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 5990; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
5991 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5992 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 5992); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 5992; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
5993 return false;
5994 }
5995 return true;
5996}
5997
5998MOZ_CAN_RUN_SCRIPT static bool
5999set_nonNullSelf(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
6000{
6001 BindingCallContext cx(cx_, "TestExampleInterface.nonNullSelf setter");
6002 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6005( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6003 "TestExampleInterface", "nonNullSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6005( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6004 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject6005( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6005 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6005( cx, "TestExampleInterface"
, "nonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6006
6007 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6008 NonNull<mozilla::dom::TestInterface> arg0;
6009 if (args[0].isObject()) {
6010 {
6011 // Our JSContext should be in the right global to do unwrapping in.
6012 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
6013 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
6014 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "TestInterface");
6015 return false;
6016 }
6017 }
6018 } else {
6019 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
6020 return false;
6021 }
6022 // NOTE: This assert does NOT call the function.
6023 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNonNullSelf(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
6024 MOZ_KnownLive(self)(self)->SetNonNullSelf(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
6025 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6025); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6025; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6026
6027 return true;
6028}
6029
6030static const JSJitInfo nonNullSelf_getterinfo = {
6031 { get_nonNullSelf },
6032 { prototypes::id::TestExampleInterface },
6033 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6034 JSJitInfo::Getter,
6035 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6036 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6037 false, /* isInfallible. False in setters. */
6038 false, /* isMovable. Not relevant for setters. */
6039 false, /* isEliminatable. Not relevant for setters. */
6040 false, /* isAlwaysInSlot. Only relevant for getters. */
6041 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6042 false, /* isTypedMethod. Only relevant for methods. */
6043 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6044};
6045static const JSJitInfo nonNullSelf_setterinfo = {
6046 { (JSJitGetterOp)set_nonNullSelf },
6047 { prototypes::id::TestExampleInterface },
6048 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6049 JSJitInfo::Setter,
6050 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6051 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6052 false, /* isInfallible. False in setters. */
6053 false, /* isMovable. Not relevant for setters. */
6054 false, /* isEliminatable. Not relevant for setters. */
6055 false, /* isAlwaysInSlot. Only relevant for getters. */
6056 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6057 false, /* isTypedMethod. Only relevant for methods. */
6058 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6059};
6060
6061MOZ_CAN_RUN_SCRIPT static bool
6062get_nullableSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
6063{
6064 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6067( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6065 "TestExampleInterface", "nullableSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6067( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6066 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject6067( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6067 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6067( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6068
6069 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6070 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->GetNullableSelf()));
6071 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6071); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6071; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6072 if (!result) {
6073 args.rval().setNull();
6074 return true;
6075 }
6076 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
6077 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6077); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6077; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6078 return false;
6079 }
6080 return true;
6081}
6082
6083MOZ_CAN_RUN_SCRIPT static bool
6084set_nullableSelf(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
6085{
6086 BindingCallContext cx(cx_, "TestExampleInterface.nullableSelf setter");
6087 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6090( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6088 "TestExampleInterface", "nullableSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6090( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6089 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject6090( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6090 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6090( cx, "TestExampleInterface"
, "nullableSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6091
6092 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6093 mozilla::dom::TestInterface* arg0;
6094 if (args[0].isObject()) {
6095 {
6096 // Our JSContext should be in the right global to do unwrapping in.
6097 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
6098 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
6099 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "TestInterface");
6100 return false;
6101 }
6102 }
6103 } else if (args[0].isNullOrUndefined()) {
6104 arg0 = nullptr;
6105 } else {
6106 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
6107 return false;
6108 }
6109 // NOTE: This assert does NOT call the function.
6110 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNullableSelf(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
6111 MOZ_KnownLive(self)(self)->SetNullableSelf(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
6112 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6112); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6112; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6113
6114 return true;
6115}
6116
6117static const JSJitInfo nullableSelf_getterinfo = {
6118 { get_nullableSelf },
6119 { prototypes::id::TestExampleInterface },
6120 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6121 JSJitInfo::Getter,
6122 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6123 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6124 false, /* isInfallible. False in setters. */
6125 false, /* isMovable. Not relevant for setters. */
6126 false, /* isEliminatable. Not relevant for setters. */
6127 false, /* isAlwaysInSlot. Only relevant for getters. */
6128 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6129 false, /* isTypedMethod. Only relevant for methods. */
6130 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6131};
6132static const JSJitInfo nullableSelf_setterinfo = {
6133 { (JSJitGetterOp)set_nullableSelf },
6134 { prototypes::id::TestExampleInterface },
6135 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6136 JSJitInfo::Setter,
6137 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6138 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6139 false, /* isInfallible. False in setters. */
6140 false, /* isMovable. Not relevant for setters. */
6141 false, /* isEliminatable. Not relevant for setters. */
6142 false, /* isAlwaysInSlot. Only relevant for getters. */
6143 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6144 false, /* isTypedMethod. Only relevant for methods. */
6145 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6146};
6147
6148MOZ_CAN_RUN_SCRIPT static bool
6149get_cachedSelf(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
6150{
6151 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6154( cx, "TestExampleInterface"
, "cachedSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6152 "TestExampleInterface", "cachedSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6154( cx, "TestExampleInterface"
, "cachedSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6153 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject6154( cx, "TestExampleInterface"
, "cachedSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6154 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6154( cx, "TestExampleInterface"
, "cachedSelf", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6155
6156 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6157 // Have to either root across the getter call or reget after.
6158 JS::Rooted<JSObject*> slotStorage(cx, js::UncheckedUnwrap(obj, /* stopAtWindowProxy = */ false));
6159 MOZ_ASSERT(IsDOMObject(slotStorage))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsDOMObject(slotStorage))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsDOMObject(slotStorage)))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("IsDOMObject(slotStorage)"
, "../TestExampleGenBinding.cpp", 6159); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "IsDOMObject(slotStorage)" ")"); do { *((volatile
int*)__null) = 6159; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6160 const size_t slotIndex = (DOM_INSTANCE_RESERVED_SLOTS1 + 3);
6161 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 6161); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 6161; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
6162 {
6163 // Scope for cachedVal
6164 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
6165 if (!cachedVal.isUndefined()) {
6166 args.rval().set(cachedVal);
6167 // The cached value is in the compartment of slotStorage,
6168 // so wrap into the caller compartment as needed.
6169 return MaybeWrapValue(cx, args.rval());
6170 }
6171 }
6172
6173 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->CachedSelf()));
6174 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6174); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6174; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6175 {
6176 JS::Rooted<JSObject*> conversionScope(cx, slotStorage);
6177 JSAutoRealm ar(cx, conversionScope);
6178 do { // block we break out of when done wrapping
6179 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
6180 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6180); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6180; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6181 return false;
6182 }
6183 break;
6184 } while (false);
6185 }
6186 { // And now store things in the realm of our slotStorage.
6187 JSAutoRealm ar(cx, slotStorage);
6188 // Make a copy so that we don't do unnecessary wrapping on args.rval().
6189 JS::Rooted<JS::Value> storedVal(cx, args.rval());
6190 if (!MaybeWrapValue(cx, &storedVal)) {
6191 return false;
6192 }
6193 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
6194 PreserveWrapper(self);
6195 }
6196 // And now make sure args.rval() is in the caller realm.
6197 return MaybeWrapValue(cx, args.rval());
6198}
6199
6200static const JSJitInfo cachedSelf_getterinfo = {
6201 { get_cachedSelf },
6202 { prototypes::id::TestExampleInterface },
6203 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6204 JSJitInfo::Getter,
6205 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
6206 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6207 false, /* isInfallible. False in setters. */
6208 true, /* isMovable. Not relevant for setters. */
6209 true, /* isEliminatable. Not relevant for setters. */
6210 false, /* isAlwaysInSlot. Only relevant for getters. */
6211 true, /* isLazilyCachedInSlot. Only relevant for getters. */
6212 false, /* isTypedMethod. Only relevant for methods. */
6213 (DOM_INSTANCE_RESERVED_SLOTS1 + 3) /* Reserved slot index, if we're stored in a slot, else 0. */
6214};
6215static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 3) <= JSJitInfo::maxSlotIndex, "We won't fit");
6216static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 3) < 22, "There is no slot for us");
6217
6218MOZ_CAN_RUN_SCRIPT static bool
6219passOptionalSelf(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6220{
6221 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSelf");
6222 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6225( cx, "TestExampleInterface"
, "passOptionalSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6223 "TestExampleInterface", "passOptionalSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6225( cx, "TestExampleInterface"
, "passOptionalSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6224 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6225( cx, "TestExampleInterface"
, "passOptionalSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6225 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6225( cx, "TestExampleInterface"
, "passOptionalSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6226
6227 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6228 Optional<mozilla::dom::TestInterface*> arg0;
6229 if (args.hasDefined(0)) {
6230 arg0.Construct();
6231 if (args[0].isObject()) {
6232 {
6233 // Our JSContext should be in the right global to do unwrapping in.
6234 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
6235 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
6236 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
6237 return false;
6238 }
6239 }
6240 } else if (args[0].isNullOrUndefined()) {
6241 arg0.Value() = nullptr;
6242 } else {
6243 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
6244 return false;
6245 }
6246 }
6247 // NOTE: This assert does NOT call the function.
6248 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSelf(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
6249 MOZ_KnownLive(self)(self)->PassOptionalSelf(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
6250 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6250); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6250; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6251 args.rval().setUndefined();
6252 return true;
6253}
6254
6255static const JSJitInfo passOptionalSelf_methodinfo = {
6256 { (JSJitGetterOp)passOptionalSelf },
6257 { prototypes::id::TestExampleInterface },
6258 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6259 JSJitInfo::Method,
6260 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6261 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6262 false, /* isInfallible. False in setters. */
6263 false, /* isMovable. Not relevant for setters. */
6264 false, /* isEliminatable. Not relevant for setters. */
6265 false, /* isAlwaysInSlot. Only relevant for getters. */
6266 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6267 false, /* isTypedMethod. Only relevant for methods. */
6268 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6269};
6270
6271MOZ_CAN_RUN_SCRIPT static bool
6272passOptionalNonNullSelf(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6273{
6274 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNonNullSelf");
6275 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6278( cx, "TestExampleInterface"
, "passOptionalNonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6276 "TestExampleInterface", "passOptionalNonNullSelf", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6278( cx, "TestExampleInterface"
, "passOptionalNonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6277 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6278( cx, "TestExampleInterface"
, "passOptionalNonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6278 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6278( cx, "TestExampleInterface"
, "passOptionalNonNullSelf", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6279
6280 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6281 Optional<NonNull<mozilla::dom::TestInterface>> arg0;
6282 if (args.hasDefined(0)) {
6283 arg0.Construct();
6284 if (args[0].isObject()) {
6285 {
6286 // Our JSContext should be in the right global to do unwrapping in.
6287 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
6288 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
6289 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
6290 return false;
6291 }
6292 }
6293 } else {
6294 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
6295 return false;
6296 }
6297 }
6298 // NOTE: This assert does NOT call the function.
6299 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNonNullSelf(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
6300 MOZ_KnownLive(self)(self)->PassOptionalNonNullSelf(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
6301 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6301); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6301; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6302 args.rval().setUndefined();
6303 return true;
6304}
6305
6306static const JSJitInfo passOptionalNonNullSelf_methodinfo = {
6307 { (JSJitGetterOp)passOptionalNonNullSelf },
6308 { prototypes::id::TestExampleInterface },
6309 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6310 JSJitInfo::Method,
6311 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6312 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6313 false, /* isInfallible. False in setters. */
6314 false, /* isMovable. Not relevant for setters. */
6315 false, /* isEliminatable. Not relevant for setters. */
6316 false, /* isAlwaysInSlot. Only relevant for getters. */
6317 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6318 false, /* isTypedMethod. Only relevant for methods. */
6319 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6320};
6321
6322MOZ_CAN_RUN_SCRIPT static bool
6323passOptionalSelfWithDefault(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6324{
6325 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSelfWithDefault");
6326 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6329( cx, "TestExampleInterface"
, "passOptionalSelfWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6327 "TestExampleInterface", "passOptionalSelfWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6329( cx, "TestExampleInterface"
, "passOptionalSelfWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6328 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6329( cx, "TestExampleInterface"
, "passOptionalSelfWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6329 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6329( cx, "TestExampleInterface"
, "passOptionalSelfWithDefault", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6330
6331 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6332 mozilla::dom::TestInterface* arg0;
6333 if (args.hasDefined(0)) {
6334 if (args[0].isObject()) {
6335 {
6336 // Our JSContext should be in the right global to do unwrapping in.
6337 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
6338 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
6339 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
6340 return false;
6341 }
6342 }
6343 } else if (args[0].isNullOrUndefined()) {
6344 arg0 = nullptr;
6345 } else {
6346 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
6347 return false;
6348 }
6349 } else {
6350 arg0 = nullptr;
6351 }
6352 // NOTE: This assert does NOT call the function.
6353 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSelfWithDefault(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
6354 MOZ_KnownLive(self)(self)->PassOptionalSelfWithDefault(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
6355 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6355); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6355; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6356 args.rval().setUndefined();
6357 return true;
6358}
6359
6360static const JSJitInfo passOptionalSelfWithDefault_methodinfo = {
6361 { (JSJitGetterOp)passOptionalSelfWithDefault },
6362 { prototypes::id::TestExampleInterface },
6363 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6364 JSJitInfo::Method,
6365 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6366 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6367 false, /* isInfallible. False in setters. */
6368 false, /* isMovable. Not relevant for setters. */
6369 false, /* isEliminatable. Not relevant for setters. */
6370 false, /* isAlwaysInSlot. Only relevant for getters. */
6371 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6372 false, /* isTypedMethod. Only relevant for methods. */
6373 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6374};
6375
6376MOZ_CAN_RUN_SCRIPT static bool
6377receiveNonWrapperCacheInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6378{
6379 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6382( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6380 "TestExampleInterface", "receiveNonWrapperCacheInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6382( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6381 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6382( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6382 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6382( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6383
6384 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6385 auto result(StrongOrRawPtr<mozilla::dom::TestNonWrapperCacheInterface>(MOZ_KnownLive(self)(self)->ReceiveNonWrapperCacheInterface()));
6386 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6386); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6386; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6387 static_assert(!std::is_pointer_v<decltype(result)>,
6388 "NewObject implies that we need to keep the object alive with a strong reference.");
6389 if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
6390 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6390); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6390; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6391 return false;
6392 }
6393 return true;
6394}
6395
6396static const JSJitInfo receiveNonWrapperCacheInterface_methodinfo = {
6397 { (JSJitGetterOp)receiveNonWrapperCacheInterface },
6398 { prototypes::id::TestExampleInterface },
6399 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6400 JSJitInfo::Method,
6401 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6402 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6403 false, /* isInfallible. False in setters. */
6404 false, /* isMovable. Not relevant for setters. */
6405 false, /* isEliminatable. Not relevant for setters. */
6406 false, /* isAlwaysInSlot. Only relevant for getters. */
6407 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6408 false, /* isTypedMethod. Only relevant for methods. */
6409 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6410};
6411
6412MOZ_CAN_RUN_SCRIPT static bool
6413receiveNullableNonWrapperCacheInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6414{
6415 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6418( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6416 "TestExampleInterface", "receiveNullableNonWrapperCacheInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6418( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6417 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6418( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6418 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6418( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6419
6420 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6421 auto result(StrongOrRawPtr<mozilla::dom::TestNonWrapperCacheInterface>(MOZ_KnownLive(self)(self)->ReceiveNullableNonWrapperCacheInterface()));
6422 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6422); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6422; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6423 static_assert(!std::is_pointer_v<decltype(result)>,
6424 "NewObject implies that we need to keep the object alive with a strong reference.");
6425 if (!result) {
6426 args.rval().setNull();
6427 return true;
6428 }
6429 if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
6430 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6430); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6430; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6431 return false;
6432 }
6433 return true;
6434}
6435
6436static const JSJitInfo receiveNullableNonWrapperCacheInterface_methodinfo = {
6437 { (JSJitGetterOp)receiveNullableNonWrapperCacheInterface },
6438 { prototypes::id::TestExampleInterface },
6439 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6440 JSJitInfo::Method,
6441 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6442 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6443 false, /* isInfallible. False in setters. */
6444 false, /* isMovable. Not relevant for setters. */
6445 false, /* isEliminatable. Not relevant for setters. */
6446 false, /* isAlwaysInSlot. Only relevant for getters. */
6447 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6448 false, /* isTypedMethod. Only relevant for methods. */
6449 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6450};
6451
6452MOZ_CAN_RUN_SCRIPT static bool
6453receiveNonWrapperCacheInterfaceSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6454{
6455 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6458( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6456 "TestExampleInterface", "receiveNonWrapperCacheInterfaceSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6458( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6457 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6458( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6458 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6458( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6459
6460 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6461 nsTArray<StrongPtrForMember<mozilla::dom::TestNonWrapperCacheInterface>> result;
6462 // NOTE: This assert does NOT call the function.
6463 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNonWrapperCacheInterfaceSequence(result))>, "Should be returning void here");
6464 MOZ_KnownLive(self)(self)->ReceiveNonWrapperCacheInterfaceSequence(result);
6465 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6465); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6465; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6466
6467 uint32_t length = result.Length();
6468 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
6469 if (!returnArray) {
6470 return false;
6471 }
6472 // Scope for 'tmp'
6473 {
6474 JS::Rooted<JS::Value> tmp(cx);
6475 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
6476 // Control block to let us common up the JS_DefineElement calls when there
6477 // are different ways to succeed at wrapping the object.
6478 do {
6479 if (!WrapNewBindingNonWrapperCachedObject(cx, returnArray, result[sequenceIdx0], &tmp)) {
6480 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6480); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6480; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6481 return false;
6482 }
6483 break;
6484 } while (false);
6485 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
6486 JSPROP_ENUMERATE)) {
6487 return false;
6488 }
6489 }
6490 }
6491 args.rval().setObject(*returnArray);
6492 return true;
6493}
6494
6495static const JSJitInfo receiveNonWrapperCacheInterfaceSequence_methodinfo = {
6496 { (JSJitGetterOp)receiveNonWrapperCacheInterfaceSequence },
6497 { prototypes::id::TestExampleInterface },
6498 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6499 JSJitInfo::Method,
6500 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6501 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6502 false, /* isInfallible. False in setters. */
6503 false, /* isMovable. Not relevant for setters. */
6504 false, /* isEliminatable. Not relevant for setters. */
6505 false, /* isAlwaysInSlot. Only relevant for getters. */
6506 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6507 false, /* isTypedMethod. Only relevant for methods. */
6508 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6509};
6510
6511MOZ_CAN_RUN_SCRIPT static bool
6512receiveNullableNonWrapperCacheInterfaceSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6513{
6514 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6517( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6515 "TestExampleInterface", "receiveNullableNonWrapperCacheInterfaceSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6517( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6516 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6517( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6517 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6517( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6518
6519 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6520 nsTArray<StrongPtrForMember<mozilla::dom::TestNonWrapperCacheInterface>> result;
6521 // NOTE: This assert does NOT call the function.
6522 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableNonWrapperCacheInterfaceSequence(result))>, "Should be returning void here");
6523 MOZ_KnownLive(self)(self)->ReceiveNullableNonWrapperCacheInterfaceSequence(result);
6524 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6524); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6524; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6525
6526 uint32_t length = result.Length();
6527 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
6528 if (!returnArray) {
6529 return false;
6530 }
6531 // Scope for 'tmp'
6532 {
6533 JS::Rooted<JS::Value> tmp(cx);
6534 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
6535 // Control block to let us common up the JS_DefineElement calls when there
6536 // are different ways to succeed at wrapping the object.
6537 do {
6538 if (!result[sequenceIdx0]) {
6539 tmp.setNull();
6540 break;
6541 }
6542 if (!WrapNewBindingNonWrapperCachedObject(cx, returnArray, result[sequenceIdx0], &tmp)) {
6543 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6543); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6543; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6544 return false;
6545 }
6546 break;
6547 } while (false);
6548 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
6549 JSPROP_ENUMERATE)) {
6550 return false;
6551 }
6552 }
6553 }
6554 args.rval().setObject(*returnArray);
6555 return true;
6556}
6557
6558static const JSJitInfo receiveNullableNonWrapperCacheInterfaceSequence_methodinfo = {
6559 { (JSJitGetterOp)receiveNullableNonWrapperCacheInterfaceSequence },
6560 { prototypes::id::TestExampleInterface },
6561 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6562 JSJitInfo::Method,
6563 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6564 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6565 false, /* isInfallible. False in setters. */
6566 false, /* isMovable. Not relevant for setters. */
6567 false, /* isEliminatable. Not relevant for setters. */
6568 false, /* isAlwaysInSlot. Only relevant for getters. */
6569 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6570 false, /* isTypedMethod. Only relevant for methods. */
6571 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6572};
6573
6574MOZ_CAN_RUN_SCRIPT static bool
6575receiveNonWrapperCacheInterfaceNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6576{
6577 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6580( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6578 "TestExampleInterface", "receiveNonWrapperCacheInterfaceNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6580( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6579 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6580( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6580 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6580( cx, "TestExampleInterface"
, "receiveNonWrapperCacheInterfaceNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6581
6582 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6583 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::TestNonWrapperCacheInterface>>> result;
6584 // NOTE: This assert does NOT call the function.
6585 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNonWrapperCacheInterfaceNullableSequence(result))>, "Should be returning void here");
6586 MOZ_KnownLive(self)(self)->ReceiveNonWrapperCacheInterfaceNullableSequence(result);
6587 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6587); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6587; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6588
6589 if (result.IsNull()) {
6590 args.rval().setNull();
6591 return true;
6592 }
6593
6594 uint32_t length = result.Value().Length();
6595 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
6596 if (!returnArray) {
6597 return false;
6598 }
6599 // Scope for 'tmp'
6600 {
6601 JS::Rooted<JS::Value> tmp(cx);
6602 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
6603 // Control block to let us common up the JS_DefineElement calls when there
6604 // are different ways to succeed at wrapping the object.
6605 do {
6606 if (!WrapNewBindingNonWrapperCachedObject(cx, returnArray, result.Value()[sequenceIdx0], &tmp)) {
6607 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6607); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6607; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6608 return false;
6609 }
6610 break;
6611 } while (false);
6612 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
6613 JSPROP_ENUMERATE)) {
6614 return false;
6615 }
6616 }
6617 }
6618 args.rval().setObject(*returnArray);
6619 return true;
6620}
6621
6622static const JSJitInfo receiveNonWrapperCacheInterfaceNullableSequence_methodinfo = {
6623 { (JSJitGetterOp)receiveNonWrapperCacheInterfaceNullableSequence },
6624 { prototypes::id::TestExampleInterface },
6625 { PrototypeTraits<prototypes::id::TestExampleInterface>::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
6638MOZ_CAN_RUN_SCRIPT static bool
6639receiveNullableNonWrapperCacheInterfaceNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6640{
6641 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6644( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceNullableSequence", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
6642 "TestExampleInterface", "receiveNullableNonWrapperCacheInterfaceNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6644( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceNullableSequence", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
6643 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6644( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceNullableSequence", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
6644 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6644( cx, "TestExampleInterface"
, "receiveNullableNonWrapperCacheInterfaceNullableSequence", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
6645
6646 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6647 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::TestNonWrapperCacheInterface>>> result;
6648 // NOTE: This assert does NOT call the function.
6649 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableNonWrapperCacheInterfaceNullableSequence(result))>, "Should be returning void here");
6650 MOZ_KnownLive(self)(self)->ReceiveNullableNonWrapperCacheInterfaceNullableSequence(result);
6651 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6651); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6651; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6652
6653 if (result.IsNull()) {
6654 args.rval().setNull();
6655 return true;
6656 }
6657
6658 uint32_t length = result.Value().Length();
6659 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
6660 if (!returnArray) {
6661 return false;
6662 }
6663 // Scope for 'tmp'
6664 {
6665 JS::Rooted<JS::Value> tmp(cx);
6666 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
6667 // Control block to let us common up the JS_DefineElement calls when there
6668 // are different ways to succeed at wrapping the object.
6669 do {
6670 if (!result.Value()[sequenceIdx0]) {
6671 tmp.setNull();
6672 break;
6673 }
6674 if (!WrapNewBindingNonWrapperCachedObject(cx, returnArray, result.Value()[sequenceIdx0], &tmp)) {
6675 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6675); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 6675; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
6676 return false;
6677 }
6678 break;
6679 } while (false);
6680 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
6681 JSPROP_ENUMERATE)) {
6682 return false;
6683 }
6684 }
6685 }
6686 args.rval().setObject(*returnArray);
6687 return true;
6688}
6689
6690static const JSJitInfo receiveNullableNonWrapperCacheInterfaceNullableSequence_methodinfo = {
6691 { (JSJitGetterOp)receiveNullableNonWrapperCacheInterfaceNullableSequence },
6692 { prototypes::id::TestExampleInterface },
6693 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6694 JSJitInfo::Method,
6695 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6696 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6697 false, /* isInfallible. False in setters. */
6698 false, /* isMovable. Not relevant for setters. */
6699 false, /* isEliminatable. Not relevant for setters. */
6700 false, /* isAlwaysInSlot. Only relevant for getters. */
6701 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6702 false, /* isTypedMethod. Only relevant for methods. */
6703 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6704};
6705
6706MOZ_CAN_RUN_SCRIPT static bool
6707receiveExternal(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6708{
6709 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6712( cx, "TestExampleInterface"
, "receiveExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6710 "TestExampleInterface", "receiveExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6712( cx, "TestExampleInterface"
, "receiveExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6711 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6712( cx, "TestExampleInterface"
, "receiveExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6712 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6712( cx, "TestExampleInterface"
, "receiveExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6713
6714 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6715 auto result(StrongOrRawPtr<mozilla::dom::TestExternalInterface>(MOZ_KnownLive(self)(self)->ReceiveExternal()));
6716 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6716); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6716; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6717 if (!WrapObject(cx, result, args.rval())) {
6718 return false;
6719 }
6720 return true;
6721}
6722
6723static const JSJitInfo receiveExternal_methodinfo = {
6724 { (JSJitGetterOp)receiveExternal },
6725 { prototypes::id::TestExampleInterface },
6726 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6727 JSJitInfo::Method,
6728 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6729 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6730 false, /* isInfallible. False in setters. */
6731 false, /* isMovable. Not relevant for setters. */
6732 false, /* isEliminatable. Not relevant for setters. */
6733 false, /* isAlwaysInSlot. Only relevant for getters. */
6734 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6735 false, /* isTypedMethod. Only relevant for methods. */
6736 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6737};
6738
6739MOZ_CAN_RUN_SCRIPT static bool
6740receiveNullableExternal(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6741{
6742 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6745( cx, "TestExampleInterface"
, "receiveNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6743 "TestExampleInterface", "receiveNullableExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6745( cx, "TestExampleInterface"
, "receiveNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6744 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6745( cx, "TestExampleInterface"
, "receiveNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6745 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6745( cx, "TestExampleInterface"
, "receiveNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6746
6747 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6748 auto result(StrongOrRawPtr<mozilla::dom::TestExternalInterface>(MOZ_KnownLive(self)(self)->ReceiveNullableExternal()));
6749 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6749); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6749; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6750 if (!result) {
6751 args.rval().setNull();
6752 return true;
6753 }
6754 if (!WrapObject(cx, result, args.rval())) {
6755 return false;
6756 }
6757 return true;
6758}
6759
6760static const JSJitInfo receiveNullableExternal_methodinfo = {
6761 { (JSJitGetterOp)receiveNullableExternal },
6762 { prototypes::id::TestExampleInterface },
6763 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6764 JSJitInfo::Method,
6765 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6766 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6767 false, /* isInfallible. False in setters. */
6768 false, /* isMovable. Not relevant for setters. */
6769 false, /* isEliminatable. Not relevant for setters. */
6770 false, /* isAlwaysInSlot. Only relevant for getters. */
6771 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6772 false, /* isTypedMethod. Only relevant for methods. */
6773 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6774};
6775
6776MOZ_CAN_RUN_SCRIPT static bool
6777receiveWeakExternal(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6778{
6779 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6782( cx, "TestExampleInterface"
, "receiveWeakExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6780 "TestExampleInterface", "receiveWeakExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6782( cx, "TestExampleInterface"
, "receiveWeakExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6781 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6782( cx, "TestExampleInterface"
, "receiveWeakExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6782 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6782( cx, "TestExampleInterface"
, "receiveWeakExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6783
6784 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6785 auto result(StrongOrRawPtr<mozilla::dom::TestExternalInterface>(MOZ_KnownLive(self)(self)->ReceiveWeakExternal()));
6786 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6786); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6786; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6787 if (!WrapObject(cx, result, args.rval())) {
6788 return false;
6789 }
6790 return true;
6791}
6792
6793static const JSJitInfo receiveWeakExternal_methodinfo = {
6794 { (JSJitGetterOp)receiveWeakExternal },
6795 { prototypes::id::TestExampleInterface },
6796 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6797 JSJitInfo::Method,
6798 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6799 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
6800 false, /* isInfallible. False in setters. */
6801 false, /* isMovable. Not relevant for setters. */
6802 false, /* isEliminatable. Not relevant for setters. */
6803 false, /* isAlwaysInSlot. Only relevant for getters. */
6804 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6805 false, /* isTypedMethod. Only relevant for methods. */
6806 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6807};
6808
6809MOZ_CAN_RUN_SCRIPT static bool
6810receiveWeakNullableExternal(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6811{
6812 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6815( cx, "TestExampleInterface"
, "receiveWeakNullableExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6813 "TestExampleInterface", "receiveWeakNullableExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6815( cx, "TestExampleInterface"
, "receiveWeakNullableExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6814 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6815( cx, "TestExampleInterface"
, "receiveWeakNullableExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
6815 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6815( cx, "TestExampleInterface"
, "receiveWeakNullableExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
6816
6817 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6818 auto result(StrongOrRawPtr<mozilla::dom::TestExternalInterface>(MOZ_KnownLive(self)(self)->ReceiveWeakNullableExternal()));
6819 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6819); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6819; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6820 if (!result) {
6821 args.rval().setNull();
6822 return true;
6823 }
6824 if (!WrapObject(cx, result, args.rval())) {
6825 return false;
6826 }
6827 return true;
6828}
6829
6830static const JSJitInfo receiveWeakNullableExternal_methodinfo = {
6831 { (JSJitGetterOp)receiveWeakNullableExternal },
6832 { prototypes::id::TestExampleInterface },
6833 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6834 JSJitInfo::Method,
6835 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6836 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6837 false, /* isInfallible. False in setters. */
6838 false, /* isMovable. Not relevant for setters. */
6839 false, /* isEliminatable. Not relevant for setters. */
6840 false, /* isAlwaysInSlot. Only relevant for getters. */
6841 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6842 false, /* isTypedMethod. Only relevant for methods. */
6843 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6844};
6845
6846MOZ_CAN_RUN_SCRIPT static bool
6847passExternal(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6848{
6849 BindingCallContext cx(cx_, "TestExampleInterface.passExternal");
6850 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6853( cx, "TestExampleInterface"
, "passExternal", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6851 "TestExampleInterface", "passExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6853( cx, "TestExampleInterface"
, "passExternal", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6852 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6853( cx, "TestExampleInterface"
, "passExternal", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6853 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6853( cx, "TestExampleInterface"
, "passExternal", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6854
6855 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6856 if (!args.requireAtLeast(cx, "TestExampleInterface.passExternal", 1)) {
6857 return false;
6858 }
6859 mozilla::dom::TestExternalInterface* arg0;
6860 RefPtr<mozilla::dom::TestExternalInterface> arg0_holder;
6861 if (args[0].isObject()) {
6862 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
6863 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
)))), 0)))
) {
6864 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestExternalInterface");
6865 return false;
6866 }
6867 MOZ_ASSERT(arg0_holder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("arg0_holder", "../TestExampleGenBinding.cpp"
, 6867); AnnotateMozCrashReason("MOZ_ASSERT" "(" "arg0_holder"
")"); do { *((volatile int*)__null) = 6867; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
6868 arg0 = arg0_holder;
6869 } else {
6870 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
6871 return false;
6872 }
6873 // NOTE: This assert does NOT call the function.
6874 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassExternal(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
6875 MOZ_KnownLive(self)(self)->PassExternal(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
6876 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6876); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6876; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6877 args.rval().setUndefined();
6878 return true;
6879}
6880
6881static const JSJitInfo passExternal_methodinfo = {
6882 { (JSJitGetterOp)passExternal },
6883 { prototypes::id::TestExampleInterface },
6884 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6885 JSJitInfo::Method,
6886 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6887 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6888 false, /* isInfallible. False in setters. */
6889 false, /* isMovable. Not relevant for setters. */
6890 false, /* isEliminatable. Not relevant for setters. */
6891 false, /* isAlwaysInSlot. Only relevant for getters. */
6892 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6893 false, /* isTypedMethod. Only relevant for methods. */
6894 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6895};
6896
6897MOZ_CAN_RUN_SCRIPT static bool
6898passNullableExternal(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
6899{
6900 BindingCallContext cx(cx_, "TestExampleInterface.passNullableExternal");
6901 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6904( cx, "TestExampleInterface"
, "passNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6902 "TestExampleInterface", "passNullableExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6904( cx, "TestExampleInterface"
, "passNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6903 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject6904( cx, "TestExampleInterface"
, "passNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6904 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6904( cx, "TestExampleInterface"
, "passNullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6905
6906 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6907 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableExternal", 1)) {
6908 return false;
6909 }
6910 mozilla::dom::TestExternalInterface* arg0;
6911 RefPtr<mozilla::dom::TestExternalInterface> arg0_holder;
6912 if (args[0].isObject()) {
6913 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
6914 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
)))), 0)))
) {
6915 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestExternalInterface");
6916 return false;
6917 }
6918 MOZ_ASSERT(arg0_holder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("arg0_holder", "../TestExampleGenBinding.cpp"
, 6918); AnnotateMozCrashReason("MOZ_ASSERT" "(" "arg0_holder"
")"); do { *((volatile int*)__null) = 6918; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
6919 arg0 = arg0_holder;
6920 } else if (args[0].isNullOrUndefined()) {
6921 arg0 = nullptr;
6922 } else {
6923 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
6924 return false;
6925 }
6926 // NOTE: This assert does NOT call the function.
6927 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableExternal(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
6928 MOZ_KnownLive(self)(self)->PassNullableExternal(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
6929 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6929); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6929; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6930 args.rval().setUndefined();
6931 return true;
6932}
6933
6934static const JSJitInfo passNullableExternal_methodinfo = {
6935 { (JSJitGetterOp)passNullableExternal },
6936 { prototypes::id::TestExampleInterface },
6937 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
6938 JSJitInfo::Method,
6939 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6940 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6941 false, /* isInfallible. False in setters. */
6942 false, /* isMovable. Not relevant for setters. */
6943 false, /* isEliminatable. Not relevant for setters. */
6944 false, /* isAlwaysInSlot. Only relevant for getters. */
6945 false, /* isLazilyCachedInSlot. Only relevant for getters. */
6946 false, /* isTypedMethod. Only relevant for methods. */
6947 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6948};
6949
6950MOZ_CAN_RUN_SCRIPT static bool
6951get_nonNullExternal(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
6952{
6953 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6956( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6954 "TestExampleInterface", "nonNullExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6956( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6955 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject6956( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6956 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6956( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6957
6958 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6959 auto result(StrongOrRawPtr<mozilla::dom::TestExternalInterface>(MOZ_KnownLive(self)(self)->NonNullExternal()));
6960 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6960); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6960; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6961 if (!WrapObject(cx, result, args.rval())) {
6962 return false;
6963 }
6964 return true;
6965}
6966
6967MOZ_CAN_RUN_SCRIPT static bool
6968set_nonNullExternal(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
6969{
6970 BindingCallContext cx(cx_, "TestExampleInterface.nonNullExternal setter");
6971 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject6974( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6972 "TestExampleInterface", "nonNullExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject6974( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6973 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject6974( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
6974 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject6974( cx, "TestExampleInterface"
, "nonNullExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
6975
6976 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
6977 mozilla::dom::TestExternalInterface* arg0;
6978 RefPtr<mozilla::dom::TestExternalInterface> arg0_holder;
6979 if (args[0].isObject()) {
6980 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
6981 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
)))), 0)))
) {
6982 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "TestExternalInterface");
6983 return false;
6984 }
6985 MOZ_ASSERT(arg0_holder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("arg0_holder", "../TestExampleGenBinding.cpp"
, 6985); AnnotateMozCrashReason("MOZ_ASSERT" "(" "arg0_holder"
")"); do { *((volatile int*)__null) = 6985; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
6986 arg0 = arg0_holder;
6987 } else {
6988 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
6989 return false;
6990 }
6991 // NOTE: This assert does NOT call the function.
6992 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNonNullExternal(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
6993 MOZ_KnownLive(self)(self)->SetNonNullExternal(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
6994 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 6994); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 6994; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
6995
6996 return true;
6997}
6998
6999static const JSJitInfo nonNullExternal_getterinfo = {
7000 { get_nonNullExternal },
7001 { prototypes::id::TestExampleInterface },
7002 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7003 JSJitInfo::Getter,
7004 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7005 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
7006 false, /* isInfallible. False in setters. */
7007 false, /* isMovable. Not relevant for setters. */
7008 false, /* isEliminatable. Not relevant for setters. */
7009 false, /* isAlwaysInSlot. Only relevant for getters. */
7010 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7011 false, /* isTypedMethod. Only relevant for methods. */
7012 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7013};
7014static const JSJitInfo nonNullExternal_setterinfo = {
7015 { (JSJitGetterOp)set_nonNullExternal },
7016 { prototypes::id::TestExampleInterface },
7017 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7018 JSJitInfo::Setter,
7019 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7020 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7021 false, /* isInfallible. False in setters. */
7022 false, /* isMovable. Not relevant for setters. */
7023 false, /* isEliminatable. Not relevant for setters. */
7024 false, /* isAlwaysInSlot. Only relevant for getters. */
7025 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7026 false, /* isTypedMethod. Only relevant for methods. */
7027 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7028};
7029
7030MOZ_CAN_RUN_SCRIPT static bool
7031get_nullableExternal(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
7032{
7033 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7036( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7034 "TestExampleInterface", "nullableExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7036( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7035 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject7036( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7036 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7036( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
7037
7038 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7039 auto result(StrongOrRawPtr<mozilla::dom::TestExternalInterface>(MOZ_KnownLive(self)(self)->GetNullableExternal()));
7040 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7040); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7040; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7041 if (!result) {
7042 args.rval().setNull();
7043 return true;
7044 }
7045 if (!WrapObject(cx, result, args.rval())) {
7046 return false;
7047 }
7048 return true;
7049}
7050
7051MOZ_CAN_RUN_SCRIPT static bool
7052set_nullableExternal(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
7053{
7054 BindingCallContext cx(cx_, "TestExampleInterface.nullableExternal setter");
7055 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7058( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7056 "TestExampleInterface", "nullableExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7058( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7057 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject7058( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7058 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7058( cx, "TestExampleInterface"
, "nullableExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
7059
7060 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7061 mozilla::dom::TestExternalInterface* arg0;
7062 RefPtr<mozilla::dom::TestExternalInterface> arg0_holder;
7063 if (args[0].isObject()) {
7064 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
7065 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
)))), 0)))
) {
7066 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "TestExternalInterface");
7067 return false;
7068 }
7069 MOZ_ASSERT(arg0_holder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("arg0_holder", "../TestExampleGenBinding.cpp"
, 7069); AnnotateMozCrashReason("MOZ_ASSERT" "(" "arg0_holder"
")"); do { *((volatile int*)__null) = 7069; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
7070 arg0 = arg0_holder;
7071 } else if (args[0].isNullOrUndefined()) {
7072 arg0 = nullptr;
7073 } else {
7074 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
7075 return false;
7076 }
7077 // NOTE: This assert does NOT call the function.
7078 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNullableExternal(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7079 MOZ_KnownLive(self)(self)->SetNullableExternal(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7080 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7080); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7080; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7081
7082 return true;
7083}
7084
7085static const JSJitInfo nullableExternal_getterinfo = {
7086 { get_nullableExternal },
7087 { prototypes::id::TestExampleInterface },
7088 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7089 JSJitInfo::Getter,
7090 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7091 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7092 false, /* isInfallible. False in setters. */
7093 false, /* isMovable. Not relevant for setters. */
7094 false, /* isEliminatable. Not relevant for setters. */
7095 false, /* isAlwaysInSlot. Only relevant for getters. */
7096 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7097 false, /* isTypedMethod. Only relevant for methods. */
7098 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7099};
7100static const JSJitInfo nullableExternal_setterinfo = {
7101 { (JSJitGetterOp)set_nullableExternal },
7102 { prototypes::id::TestExampleInterface },
7103 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7104 JSJitInfo::Setter,
7105 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7106 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7107 false, /* isInfallible. False in setters. */
7108 false, /* isMovable. Not relevant for setters. */
7109 false, /* isEliminatable. Not relevant for setters. */
7110 false, /* isAlwaysInSlot. Only relevant for getters. */
7111 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7112 false, /* isTypedMethod. Only relevant for methods. */
7113 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7114};
7115
7116MOZ_CAN_RUN_SCRIPT static bool
7117passOptionalExternal(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7118{
7119 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalExternal");
7120 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7123( cx, "TestExampleInterface"
, "passOptionalExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7121 "TestExampleInterface", "passOptionalExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7123( cx, "TestExampleInterface"
, "passOptionalExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7122 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7123( cx, "TestExampleInterface"
, "passOptionalExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7123 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7123( cx, "TestExampleInterface"
, "passOptionalExternal", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
7124
7125 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7126 Optional<mozilla::dom::TestExternalInterface*> arg0;
7127 Maybe<RefPtr<mozilla::dom::TestExternalInterface>> arg0_holder;
7128 if (args.hasDefined(0)) {
7129 arg0.Construct();
7130 arg0_holder.emplace();
7131 if (args[0].isObject()) {
7132 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
7133 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder.ref())))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
.ref())))), 0)))
) {
7134 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestExternalInterface");
7135 return false;
7136 }
7137 MOZ_ASSERT(arg0_holder.ref())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder.ref())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder.ref()))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("arg0_holder.ref()"
, "../TestExampleGenBinding.cpp", 7137); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "arg0_holder.ref()" ")"); do { *((volatile int
*)__null) = 7137; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
7138 arg0.Value() = arg0_holder.ref();
7139 } else if (args[0].isNullOrUndefined()) {
7140 arg0.Value() = nullptr;
7141 } else {
7142 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7143 return false;
7144 }
7145 }
7146 // NOTE: This assert does NOT call the function.
7147 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalExternal(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7148 MOZ_KnownLive(self)(self)->PassOptionalExternal(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7149 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7149); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7149; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7150 args.rval().setUndefined();
7151 return true;
7152}
7153
7154static const JSJitInfo passOptionalExternal_methodinfo = {
7155 { (JSJitGetterOp)passOptionalExternal },
7156 { prototypes::id::TestExampleInterface },
7157 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7158 JSJitInfo::Method,
7159 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7160 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7161 false, /* isInfallible. False in setters. */
7162 false, /* isMovable. Not relevant for setters. */
7163 false, /* isEliminatable. Not relevant for setters. */
7164 false, /* isAlwaysInSlot. Only relevant for getters. */
7165 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7166 false, /* isTypedMethod. Only relevant for methods. */
7167 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7168};
7169
7170MOZ_CAN_RUN_SCRIPT static bool
7171passOptionalNonNullExternal(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7172{
7173 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNonNullExternal");
7174 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7177( cx, "TestExampleInterface"
, "passOptionalNonNullExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7175 "TestExampleInterface", "passOptionalNonNullExternal", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7177( cx, "TestExampleInterface"
, "passOptionalNonNullExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7176 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7177( cx, "TestExampleInterface"
, "passOptionalNonNullExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7177 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7177( cx, "TestExampleInterface"
, "passOptionalNonNullExternal", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7178
7179 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7180 Optional<mozilla::dom::TestExternalInterface*> arg0;
7181 Maybe<RefPtr<mozilla::dom::TestExternalInterface>> arg0_holder;
7182 if (args.hasDefined(0)) {
7183 arg0.Construct();
7184 arg0_holder.emplace();
7185 if (args[0].isObject()) {
7186 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
7187 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder.ref())))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
.ref())))), 0)))
) {
7188 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestExternalInterface");
7189 return false;
7190 }
7191 MOZ_ASSERT(arg0_holder.ref())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder.ref())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder.ref()))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("arg0_holder.ref()"
, "../TestExampleGenBinding.cpp", 7191); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "arg0_holder.ref()" ")"); do { *((volatile int
*)__null) = 7191; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
7192 arg0.Value() = arg0_holder.ref();
7193 } else {
7194 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7195 return false;
7196 }
7197 }
7198 // NOTE: This assert does NOT call the function.
7199 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNonNullExternal(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
7200 MOZ_KnownLive(self)(self)->PassOptionalNonNullExternal(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
7201 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7201); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7201; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7202 args.rval().setUndefined();
7203 return true;
7204}
7205
7206static const JSJitInfo passOptionalNonNullExternal_methodinfo = {
7207 { (JSJitGetterOp)passOptionalNonNullExternal },
7208 { prototypes::id::TestExampleInterface },
7209 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7210 JSJitInfo::Method,
7211 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7212 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7213 false, /* isInfallible. False in setters. */
7214 false, /* isMovable. Not relevant for setters. */
7215 false, /* isEliminatable. Not relevant for setters. */
7216 false, /* isAlwaysInSlot. Only relevant for getters. */
7217 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7218 false, /* isTypedMethod. Only relevant for methods. */
7219 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7220};
7221
7222MOZ_CAN_RUN_SCRIPT static bool
7223passOptionalExternalWithDefault(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7224{
7225 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalExternalWithDefault");
7226 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7229( cx, "TestExampleInterface"
, "passOptionalExternalWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7227 "TestExampleInterface", "passOptionalExternalWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7229( cx, "TestExampleInterface"
, "passOptionalExternalWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7228 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7229( cx, "TestExampleInterface"
, "passOptionalExternalWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7229 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7229( cx, "TestExampleInterface"
, "passOptionalExternalWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7230
7231 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7232 mozilla::dom::TestExternalInterface* arg0;
7233 RefPtr<mozilla::dom::TestExternalInterface> arg0_holder;
7234 if (args.hasDefined(0)) {
7235 if (args[0].isObject()) {
7236 JS::Rooted<JSObject*> source(cx, &args[0].toObject());
7237 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(arg0_holder
)))), 0)))
) {
7238 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestExternalInterface");
7239 return false;
7240 }
7241 MOZ_ASSERT(arg0_holder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(arg0_holder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(arg0_holder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("arg0_holder", "../TestExampleGenBinding.cpp"
, 7241); AnnotateMozCrashReason("MOZ_ASSERT" "(" "arg0_holder"
")"); do { *((volatile int*)__null) = 7241; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
7242 arg0 = arg0_holder;
7243 } else if (args[0].isNullOrUndefined()) {
7244 arg0 = nullptr;
7245 } else {
7246 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7247 return false;
7248 }
7249 } else {
7250 arg0 = nullptr;
7251 }
7252 // NOTE: This assert does NOT call the function.
7253 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalExternalWithDefault(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7254 MOZ_KnownLive(self)(self)->PassOptionalExternalWithDefault(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7255 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7255); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7255; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7256 args.rval().setUndefined();
7257 return true;
7258}
7259
7260static const JSJitInfo passOptionalExternalWithDefault_methodinfo = {
7261 { (JSJitGetterOp)passOptionalExternalWithDefault },
7262 { prototypes::id::TestExampleInterface },
7263 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7264 JSJitInfo::Method,
7265 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7266 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7267 false, /* isInfallible. False in setters. */
7268 false, /* isMovable. Not relevant for setters. */
7269 false, /* isEliminatable. Not relevant for setters. */
7270 false, /* isAlwaysInSlot. Only relevant for getters. */
7271 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7272 false, /* isTypedMethod. Only relevant for methods. */
7273 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7274};
7275
7276MOZ_CAN_RUN_SCRIPT static bool
7277receiveCallbackInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7278{
7279 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7282( cx, "TestExampleInterface"
, "receiveCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7280 "TestExampleInterface", "receiveCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7282( cx, "TestExampleInterface"
, "receiveCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7281 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7282( cx, "TestExampleInterface"
, "receiveCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7282 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7282( cx, "TestExampleInterface"
, "receiveCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7283
7284 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7285 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->ReceiveCallbackInterface()));
7286 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7286); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7286; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7287 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
7288 if (!MaybeWrapObjectValue(cx, args.rval())) {
7289 return false;
7290 }
7291 return true;
7292}
7293
7294static const JSJitInfo receiveCallbackInterface_methodinfo = {
7295 { (JSJitGetterOp)receiveCallbackInterface },
7296 { prototypes::id::TestExampleInterface },
7297 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7298 JSJitInfo::Method,
7299 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7300 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
7301 false, /* isInfallible. False in setters. */
7302 false, /* isMovable. Not relevant for setters. */
7303 false, /* isEliminatable. Not relevant for setters. */
7304 false, /* isAlwaysInSlot. Only relevant for getters. */
7305 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7306 false, /* isTypedMethod. Only relevant for methods. */
7307 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7308};
7309
7310MOZ_CAN_RUN_SCRIPT static bool
7311receiveNullableCallbackInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7312{
7313 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7316( cx, "TestExampleInterface"
, "receiveNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7314 "TestExampleInterface", "receiveNullableCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7316( cx, "TestExampleInterface"
, "receiveNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7315 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7316( cx, "TestExampleInterface"
, "receiveNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7316 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7316( cx, "TestExampleInterface"
, "receiveNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7317
7318 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7319 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->ReceiveNullableCallbackInterface()));
7320 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7320); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7320; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7321 if (result) {
7322 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
7323 if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7324 return false;
7325 }
7326 return true;
7327 } else {
7328 args.rval().setNull();
7329 return true;
7330 }
7331}
7332
7333static const JSJitInfo receiveNullableCallbackInterface_methodinfo = {
7334 { (JSJitGetterOp)receiveNullableCallbackInterface },
7335 { prototypes::id::TestExampleInterface },
7336 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7337 JSJitInfo::Method,
7338 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7339 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7340 false, /* isInfallible. False in setters. */
7341 false, /* isMovable. Not relevant for setters. */
7342 false, /* isEliminatable. Not relevant for setters. */
7343 false, /* isAlwaysInSlot. Only relevant for getters. */
7344 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7345 false, /* isTypedMethod. Only relevant for methods. */
7346 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7347};
7348
7349MOZ_CAN_RUN_SCRIPT static bool
7350receiveWeakCallbackInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7351{
7352 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7355( cx, "TestExampleInterface"
, "receiveWeakCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7353 "TestExampleInterface", "receiveWeakCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7355( cx, "TestExampleInterface"
, "receiveWeakCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7354 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7355( cx, "TestExampleInterface"
, "receiveWeakCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7355 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7355( cx, "TestExampleInterface"
, "receiveWeakCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7356
7357 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7358 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->ReceiveWeakCallbackInterface()));
7359 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7359); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7359; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7360 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
7361 if (!MaybeWrapObjectValue(cx, args.rval())) {
7362 return false;
7363 }
7364 return true;
7365}
7366
7367static const JSJitInfo receiveWeakCallbackInterface_methodinfo = {
7368 { (JSJitGetterOp)receiveWeakCallbackInterface },
7369 { prototypes::id::TestExampleInterface },
7370 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7371 JSJitInfo::Method,
7372 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7373 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
7374 false, /* isInfallible. False in setters. */
7375 false, /* isMovable. Not relevant for setters. */
7376 false, /* isEliminatable. Not relevant for setters. */
7377 false, /* isAlwaysInSlot. Only relevant for getters. */
7378 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7379 false, /* isTypedMethod. Only relevant for methods. */
7380 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7381};
7382
7383MOZ_CAN_RUN_SCRIPT static bool
7384receiveWeakNullableCallbackInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7385{
7386 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7389( cx, "TestExampleInterface"
, "receiveWeakNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7387 "TestExampleInterface", "receiveWeakNullableCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7389( cx, "TestExampleInterface"
, "receiveWeakNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7388 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7389( cx, "TestExampleInterface"
, "receiveWeakNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7389 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7389( cx, "TestExampleInterface"
, "receiveWeakNullableCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7390
7391 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7392 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->ReceiveWeakNullableCallbackInterface()));
7393 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7393); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7393; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7394 if (result) {
7395 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
7396 if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7397 return false;
7398 }
7399 return true;
7400 } else {
7401 args.rval().setNull();
7402 return true;
7403 }
7404}
7405
7406static const JSJitInfo receiveWeakNullableCallbackInterface_methodinfo = {
7407 { (JSJitGetterOp)receiveWeakNullableCallbackInterface },
7408 { prototypes::id::TestExampleInterface },
7409 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7410 JSJitInfo::Method,
7411 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7412 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7413 false, /* isInfallible. False in setters. */
7414 false, /* isMovable. Not relevant for setters. */
7415 false, /* isEliminatable. Not relevant for setters. */
7416 false, /* isAlwaysInSlot. Only relevant for getters. */
7417 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7418 false, /* isTypedMethod. Only relevant for methods. */
7419 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7420};
7421
7422MOZ_CAN_RUN_SCRIPT static bool
7423passCallbackInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7424{
7425 BindingCallContext cx(cx_, "TestExampleInterface.passCallbackInterface");
7426 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7429( cx, "TestExampleInterface"
, "passCallbackInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7427 "TestExampleInterface", "passCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7429( cx, "TestExampleInterface"
, "passCallbackInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7428 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7429( cx, "TestExampleInterface"
, "passCallbackInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7429 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7429( cx, "TestExampleInterface"
, "passCallbackInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
7430
7431 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7432 if (!args.requireAtLeast(cx, "TestExampleInterface.passCallbackInterface", 1)) {
7433 return false;
7434 }
7435 RootedCallback<OwningNonNull<binding_detail::FastTestCallbackInterface>> arg0(cx);
7436 if (args[0].isObject()) {
7437 { // scope for tempRoot and tempGlobalRoot if needed
7438 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
7439 }
7440 } else {
7441 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7442 return false;
7443 }
7444 // NOTE: This assert does NOT call the function.
7445 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassCallbackInterface(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
7446 MOZ_KnownLive(self)(self)->PassCallbackInterface(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
7447 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7447); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7447; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7448 args.rval().setUndefined();
7449 return true;
7450}
7451
7452static const JSJitInfo passCallbackInterface_methodinfo = {
7453 { (JSJitGetterOp)passCallbackInterface },
7454 { prototypes::id::TestExampleInterface },
7455 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7456 JSJitInfo::Method,
7457 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7458 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7459 false, /* isInfallible. False in setters. */
7460 false, /* isMovable. Not relevant for setters. */
7461 false, /* isEliminatable. Not relevant for setters. */
7462 false, /* isAlwaysInSlot. Only relevant for getters. */
7463 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7464 false, /* isTypedMethod. Only relevant for methods. */
7465 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7466};
7467
7468MOZ_CAN_RUN_SCRIPT static bool
7469passNullableCallbackInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7470{
7471 BindingCallContext cx(cx_, "TestExampleInterface.passNullableCallbackInterface");
7472 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7475( cx, "TestExampleInterface"
, "passNullableCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7473 "TestExampleInterface", "passNullableCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7475( cx, "TestExampleInterface"
, "passNullableCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7474 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7475( cx, "TestExampleInterface"
, "passNullableCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7475 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7475( cx, "TestExampleInterface"
, "passNullableCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7476
7477 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7478 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableCallbackInterface", 1)) {
7479 return false;
7480 }
7481 RootedCallback<RefPtr<binding_detail::FastTestCallbackInterface>> arg0(cx);
7482 if (args[0].isObject()) {
7483 { // scope for tempRoot and tempGlobalRoot if needed
7484 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
7485 }
7486 } else if (args[0].isNullOrUndefined()) {
7487 arg0 = nullptr;
7488 } else {
7489 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7490 return false;
7491 }
7492 // NOTE: This assert does NOT call the function.
7493 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableCallbackInterface(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7494 MOZ_KnownLive(self)(self)->PassNullableCallbackInterface(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7495 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7495); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7495; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7496 args.rval().setUndefined();
7497 return true;
7498}
7499
7500static const JSJitInfo passNullableCallbackInterface_methodinfo = {
7501 { (JSJitGetterOp)passNullableCallbackInterface },
7502 { prototypes::id::TestExampleInterface },
7503 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7504 JSJitInfo::Method,
7505 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7506 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7507 false, /* isInfallible. False in setters. */
7508 false, /* isMovable. Not relevant for setters. */
7509 false, /* isEliminatable. Not relevant for setters. */
7510 false, /* isAlwaysInSlot. Only relevant for getters. */
7511 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7512 false, /* isTypedMethod. Only relevant for methods. */
7513 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7514};
7515
7516MOZ_CAN_RUN_SCRIPT static bool
7517get_nonNullCallbackInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
7518{
7519 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7522( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7520 "TestExampleInterface", "nonNullCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7522( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7521 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject7522( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7522 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7522( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7523
7524 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7525 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->NonNullCallbackInterface()));
7526 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7526); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7526; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7527 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
7528 if (!MaybeWrapObjectValue(cx, args.rval())) {
7529 return false;
7530 }
7531 return true;
7532}
7533
7534MOZ_CAN_RUN_SCRIPT static bool
7535set_nonNullCallbackInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
7536{
7537 BindingCallContext cx(cx_, "TestExampleInterface.nonNullCallbackInterface setter");
7538 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7541( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7539 "TestExampleInterface", "nonNullCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7541( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7540 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject7541( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7541 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7541( cx, "TestExampleInterface"
, "nonNullCallbackInterface", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7542
7543 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7544 RootedCallback<OwningNonNull<binding_detail::FastTestCallbackInterface>> arg0(cx);
7545 if (args[0].isObject()) {
7546 { // scope for tempRoot and tempGlobalRoot if needed
7547 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
7548 }
7549 } else {
7550 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
7551 return false;
7552 }
7553 // NOTE: This assert does NOT call the function.
7554 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNonNullCallbackInterface(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
7555 MOZ_KnownLive(self)(self)->SetNonNullCallbackInterface(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
7556 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7556); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7556; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7557
7558 return true;
7559}
7560
7561static const JSJitInfo nonNullCallbackInterface_getterinfo = {
7562 { get_nonNullCallbackInterface },
7563 { prototypes::id::TestExampleInterface },
7564 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7565 JSJitInfo::Getter,
7566 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7567 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
7568 false, /* isInfallible. False in setters. */
7569 false, /* isMovable. Not relevant for setters. */
7570 false, /* isEliminatable. Not relevant for setters. */
7571 false, /* isAlwaysInSlot. Only relevant for getters. */
7572 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7573 false, /* isTypedMethod. Only relevant for methods. */
7574 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7575};
7576static const JSJitInfo nonNullCallbackInterface_setterinfo = {
7577 { (JSJitGetterOp)set_nonNullCallbackInterface },
7578 { prototypes::id::TestExampleInterface },
7579 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7580 JSJitInfo::Setter,
7581 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7582 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7583 false, /* isInfallible. False in setters. */
7584 false, /* isMovable. Not relevant for setters. */
7585 false, /* isEliminatable. Not relevant for setters. */
7586 false, /* isAlwaysInSlot. Only relevant for getters. */
7587 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7588 false, /* isTypedMethod. Only relevant for methods. */
7589 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7590};
7591
7592MOZ_CAN_RUN_SCRIPT static bool
7593get_nullableCallbackInterface(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
7594{
7595 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7598( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7596 "TestExampleInterface", "nullableCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7598( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7597 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject7598( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7598 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7598( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7599
7600 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7601 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->GetNullableCallbackInterface()));
7602 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7602); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7602; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7603 if (result) {
7604 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
7605 if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7606 return false;
7607 }
7608 return true;
7609 } else {
7610 args.rval().setNull();
7611 return true;
7612 }
7613}
7614
7615MOZ_CAN_RUN_SCRIPT static bool
7616set_nullableCallbackInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
7617{
7618 BindingCallContext cx(cx_, "TestExampleInterface.nullableCallbackInterface setter");
7619 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7622( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7620 "TestExampleInterface", "nullableCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7622( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7621 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject7622( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7622 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7622( cx, "TestExampleInterface"
, "nullableCallbackInterface", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7623
7624 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7625 RootedCallback<RefPtr<binding_detail::FastTestCallbackInterface>> arg0(cx);
7626 if (args[0].isObject()) {
7627 { // scope for tempRoot and tempGlobalRoot if needed
7628 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
7629 }
7630 } else if (args[0].isNullOrUndefined()) {
7631 arg0 = nullptr;
7632 } else {
7633 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
7634 return false;
7635 }
7636 // NOTE: This assert does NOT call the function.
7637 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNullableCallbackInterface(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7638 MOZ_KnownLive(self)(self)->SetNullableCallbackInterface(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7639 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7639); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7639; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7640
7641 return true;
7642}
7643
7644static const JSJitInfo nullableCallbackInterface_getterinfo = {
7645 { get_nullableCallbackInterface },
7646 { prototypes::id::TestExampleInterface },
7647 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7648 JSJitInfo::Getter,
7649 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7650 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7651 false, /* isInfallible. False in setters. */
7652 false, /* isMovable. Not relevant for setters. */
7653 false, /* isEliminatable. Not relevant for setters. */
7654 false, /* isAlwaysInSlot. Only relevant for getters. */
7655 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7656 false, /* isTypedMethod. Only relevant for methods. */
7657 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7658};
7659static const JSJitInfo nullableCallbackInterface_setterinfo = {
7660 { (JSJitGetterOp)set_nullableCallbackInterface },
7661 { prototypes::id::TestExampleInterface },
7662 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7663 JSJitInfo::Setter,
7664 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7665 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7666 false, /* isInfallible. False in setters. */
7667 false, /* isMovable. Not relevant for setters. */
7668 false, /* isEliminatable. Not relevant for setters. */
7669 false, /* isAlwaysInSlot. Only relevant for getters. */
7670 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7671 false, /* isTypedMethod. Only relevant for methods. */
7672 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7673};
7674
7675MOZ_CAN_RUN_SCRIPT static bool
7676passOptionalCallbackInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7677{
7678 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalCallbackInterface");
7679 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7682( cx, "TestExampleInterface"
, "passOptionalCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7680 "TestExampleInterface", "passOptionalCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7682( cx, "TestExampleInterface"
, "passOptionalCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7681 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7682( cx, "TestExampleInterface"
, "passOptionalCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7682 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7682( cx, "TestExampleInterface"
, "passOptionalCallbackInterface", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7683
7684 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7685 Optional<RefPtr<TestCallbackInterface>> arg0;
7686 if (args.hasDefined(0)) {
7687 arg0.Construct();
7688 if (args[0].isObject()) {
7689 { // scope for tempRoot and tempGlobalRoot if needed
7690 JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7691 JS::Rooted<JSObject*> tempGlobalRoot(cx, JS::CurrentGlobalOrNull(cx));
7692 arg0.Value() = new TestCallbackInterface(cx, tempRoot, tempGlobalRoot, GetIncumbentGlobal());
7693 }
7694 } else if (args[0].isNullOrUndefined()) {
7695 arg0.Value() = nullptr;
7696 } else {
7697 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7698 return false;
7699 }
7700 }
7701 // NOTE: This assert does NOT call the function.
7702 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalCallbackInterface(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7703 MOZ_KnownLive(self)(self)->PassOptionalCallbackInterface(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7704 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7704); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7704; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7705 args.rval().setUndefined();
7706 return true;
7707}
7708
7709static const JSJitInfo passOptionalCallbackInterface_methodinfo = {
7710 { (JSJitGetterOp)passOptionalCallbackInterface },
7711 { prototypes::id::TestExampleInterface },
7712 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7713 JSJitInfo::Method,
7714 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7715 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7716 false, /* isInfallible. False in setters. */
7717 false, /* isMovable. Not relevant for setters. */
7718 false, /* isEliminatable. Not relevant for setters. */
7719 false, /* isAlwaysInSlot. Only relevant for getters. */
7720 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7721 false, /* isTypedMethod. Only relevant for methods. */
7722 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7723};
7724
7725MOZ_CAN_RUN_SCRIPT static bool
7726passOptionalNonNullCallbackInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7727{
7728 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNonNullCallbackInterface");
7729 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7732( cx, "TestExampleInterface"
, "passOptionalNonNullCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7730 "TestExampleInterface", "passOptionalNonNullCallbackInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7732( cx, "TestExampleInterface"
, "passOptionalNonNullCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7731 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7732( cx, "TestExampleInterface"
, "passOptionalNonNullCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7732 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7732( cx, "TestExampleInterface"
, "passOptionalNonNullCallbackInterface", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7733
7734 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7735 Optional<OwningNonNull<TestCallbackInterface>> arg0;
7736 if (args.hasDefined(0)) {
7737 arg0.Construct();
7738 if (args[0].isObject()) {
7739 { // scope for tempRoot and tempGlobalRoot if needed
7740 JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7741 JS::Rooted<JSObject*> tempGlobalRoot(cx, JS::CurrentGlobalOrNull(cx));
7742 arg0.Value() = new TestCallbackInterface(cx, tempRoot, tempGlobalRoot, GetIncumbentGlobal());
7743 }
7744 } else {
7745 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7746 return false;
7747 }
7748 }
7749 // NOTE: This assert does NOT call the function.
7750 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNonNullCallbackInterface(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
7751 MOZ_KnownLive(self)(self)->PassOptionalNonNullCallbackInterface(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
7752 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7752); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7752; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7753 args.rval().setUndefined();
7754 return true;
7755}
7756
7757static const JSJitInfo passOptionalNonNullCallbackInterface_methodinfo = {
7758 { (JSJitGetterOp)passOptionalNonNullCallbackInterface },
7759 { prototypes::id::TestExampleInterface },
7760 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7761 JSJitInfo::Method,
7762 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7763 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7764 false, /* isInfallible. False in setters. */
7765 false, /* isMovable. Not relevant for setters. */
7766 false, /* isEliminatable. Not relevant for setters. */
7767 false, /* isAlwaysInSlot. Only relevant for getters. */
7768 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7769 false, /* isTypedMethod. Only relevant for methods. */
7770 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7771};
7772
7773MOZ_CAN_RUN_SCRIPT static bool
7774passOptionalCallbackInterfaceWithDefault(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
7775{
7776 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalCallbackInterfaceWithDefault");
7777 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7780( cx, "TestExampleInterface"
, "passOptionalCallbackInterfaceWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7778 "TestExampleInterface", "passOptionalCallbackInterfaceWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7780( cx, "TestExampleInterface"
, "passOptionalCallbackInterfaceWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7779 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject7780( cx, "TestExampleInterface"
, "passOptionalCallbackInterfaceWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7780 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7780( cx, "TestExampleInterface"
, "passOptionalCallbackInterfaceWithDefault", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7781
7782 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7783 RootedCallback<RefPtr<binding_detail::FastTestCallbackInterface>> arg0(cx);
7784 if (args.hasDefined(0)) {
7785 if (args[0].isObject()) {
7786 { // scope for tempRoot and tempGlobalRoot if needed
7787 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
7788 }
7789 } else if (args[0].isNullOrUndefined()) {
7790 arg0 = nullptr;
7791 } else {
7792 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
7793 return false;
7794 }
7795 } else {
7796 arg0 = nullptr;
7797 }
7798 // NOTE: This assert does NOT call the function.
7799 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalCallbackInterfaceWithDefault(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
7800 MOZ_KnownLive(self)(self)->PassOptionalCallbackInterfaceWithDefault(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
7801 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7801); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7801; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7802 args.rval().setUndefined();
7803 return true;
7804}
7805
7806static const JSJitInfo passOptionalCallbackInterfaceWithDefault_methodinfo = {
7807 { (JSJitGetterOp)passOptionalCallbackInterfaceWithDefault },
7808 { prototypes::id::TestExampleInterface },
7809 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7810 JSJitInfo::Method,
7811 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7812 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7813 false, /* isInfallible. False in setters. */
7814 false, /* isMovable. Not relevant for setters. */
7815 false, /* isEliminatable. Not relevant for setters. */
7816 false, /* isAlwaysInSlot. Only relevant for getters. */
7817 false, /* isLazilyCachedInSlot. Only relevant for getters. */
7818 false, /* isTypedMethod. Only relevant for methods. */
7819 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7820};
7821
7822MOZ_CAN_RUN_SCRIPT static bool
7823get_readonlySequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
7824{
7825 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7828( cx, "TestExampleInterface"
, "readonlySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7826 "TestExampleInterface", "readonlySequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7828( cx, "TestExampleInterface"
, "readonlySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7827 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject7828( cx, "TestExampleInterface"
, "readonlySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
7828 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7828( cx, "TestExampleInterface"
, "readonlySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
7829
7830 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7831 // Have to either root across the getter call or reget after.
7832 bool isXray;
7833 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
7834 if (!slotStorage) {
7835 return false;
7836 }
7837 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 4) : (DOM_INSTANCE_RESERVED_SLOTS1 + 4);
7838 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 7838); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 7838; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
7839 {
7840 // Scope for cachedVal
7841 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
7842 if (!cachedVal.isUndefined()) {
7843 args.rval().set(cachedVal);
7844 // The cached value is in the compartment of slotStorage,
7845 // so wrap into the caller compartment as needed.
7846 return MaybeWrapNonDOMObjectValue(cx, args.rval());
7847 }
7848 }
7849
7850 nsTArray<int32_t> result;
7851 // NOTE: This assert does NOT call the function.
7852 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlySequence(result))>, "Should be returning void here");
7853 MOZ_KnownLive(self)(self)->GetReadonlySequence(result);
7854 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7854); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7854; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7855 {
7856 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
7857 JSAutoRealm ar(cx, conversionScope);
7858 do { // block we break out of when done wrapping
7859
7860 uint32_t length = result.Length();
7861 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
7862 if (!returnArray) {
7863 return false;
7864 }
7865 // Scope for 'tmp'
7866 {
7867 JS::Rooted<JS::Value> tmp(cx);
7868 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
7869 // Control block to let us common up the JS_DefineElement calls when there
7870 // are different ways to succeed at wrapping the object.
7871 do {
7872 tmp.setInt32(int32_t(result[sequenceIdx0]));
7873 break;
7874 } while (false);
7875 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
7876 JSPROP_ENUMERATE)) {
7877 return false;
7878 }
7879 }
7880 }
7881 args.rval().setObject(*returnArray);
7882 break;
7883 } while (false);
7884 }
7885 { // And now store things in the realm of our slotStorage.
7886 JSAutoRealm ar(cx, slotStorage);
7887 // Make a copy so that we don't do unnecessary wrapping on args.rval().
7888 JS::Rooted<JS::Value> storedVal(cx, args.rval());
7889 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
7890 return false;
7891 }
7892 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
7893 if (!isXray) {
7894 // In the Xray case we don't need to do this, because getting the
7895 // expando object already preserved our wrapper.
7896 PreserveWrapper(self);
7897 }
7898 }
7899 // And now make sure args.rval() is in the caller realm.
7900 return MaybeWrapNonDOMObjectValue(cx, args.rval());
7901}
7902
7903static const JSJitInfo readonlySequence_getterinfo = {
7904 { get_readonlySequence },
7905 { prototypes::id::TestExampleInterface },
7906 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
7907 JSJitInfo::Getter,
7908 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
7909 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
7910 false, /* isInfallible. False in setters. */
7911 true, /* isMovable. Not relevant for setters. */
7912 true, /* isEliminatable. Not relevant for setters. */
7913 false, /* isAlwaysInSlot. Only relevant for getters. */
7914 true, /* isLazilyCachedInSlot. Only relevant for getters. */
7915 false, /* isTypedMethod. Only relevant for methods. */
7916 (DOM_INSTANCE_RESERVED_SLOTS1 + 4) /* Reserved slot index, if we're stored in a slot, else 0. */
7917};
7918static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 4) <= JSJitInfo::maxSlotIndex, "We won't fit");
7919static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 4) < 22, "There is no slot for us");
7920
7921MOZ_CAN_RUN_SCRIPT static bool
7922get_readonlySequenceOfDictionaries(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
7923{
7924 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject7927( cx, "TestExampleInterface"
, "readonlySequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7925 "TestExampleInterface", "readonlySequenceOfDictionaries", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject7927( cx, "TestExampleInterface"
, "readonlySequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7926 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject7927( cx, "TestExampleInterface"
, "readonlySequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
7927 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject7927( cx, "TestExampleInterface"
, "readonlySequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
7928
7929 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
7930 // Have to either root across the getter call or reget after.
7931 bool isXray;
7932 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
7933 if (!slotStorage) {
7934 return false;
7935 }
7936 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 5) : (DOM_INSTANCE_RESERVED_SLOTS1 + 5);
7937 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 7937); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 7937; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
7938 {
7939 // Scope for cachedVal
7940 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
7941 if (!cachedVal.isUndefined()) {
7942 args.rval().set(cachedVal);
7943 // The cached value is in the compartment of slotStorage,
7944 // so wrap into the caller compartment as needed.
7945 return MaybeWrapNonDOMObjectValue(cx, args.rval());
7946 }
7947 }
7948
7949 nsTArray<Dict> result;
7950 SequenceRooter<Dict > resultRooter(cx, &result);
7951 // NOTE: This assert does NOT call the function.
7952 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlySequenceOfDictionaries(cx, result))>, "Should be returning void here");
7953 MOZ_KnownLive(self)(self)->GetReadonlySequenceOfDictionaries(cx, result);
7954 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 7954); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 7954; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
7955 {
7956 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
7957 JSAutoRealm ar(cx, conversionScope);
7958 do { // block we break out of when done wrapping
7959
7960 uint32_t length = result.Length();
7961 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
7962 if (!returnArray) {
7963 return false;
7964 }
7965 // Scope for 'tmp'
7966 {
7967 JS::Rooted<JS::Value> tmp(cx);
7968 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
7969 // Control block to let us common up the JS_DefineElement calls when there
7970 // are different ways to succeed at wrapping the object.
7971 do {
7972 if (!result[sequenceIdx0].ToObjectInternal(cx, &tmp)) {
7973 return false;
7974 }
7975 break;
7976 } while (false);
7977 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
7978 JSPROP_ENUMERATE)) {
7979 return false;
7980 }
7981 }
7982 }
7983 args.rval().setObject(*returnArray);
7984 break;
7985 } while (false);
7986 }
7987 { // And now store things in the realm of our slotStorage.
7988 JSAutoRealm ar(cx, slotStorage);
7989 // Make a copy so that we don't do unnecessary wrapping on args.rval().
7990 JS::Rooted<JS::Value> storedVal(cx, args.rval());
7991 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
7992 return false;
7993 }
7994 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
7995 if (!isXray) {
7996 // In the Xray case we don't need to do this, because getting the
7997 // expando object already preserved our wrapper.
7998 PreserveWrapper(self);
7999 }
8000 }
8001 // And now make sure args.rval() is in the caller realm.
8002 return MaybeWrapNonDOMObjectValue(cx, args.rval());
8003}
8004
8005static const JSJitInfo readonlySequenceOfDictionaries_getterinfo = {
8006 { get_readonlySequenceOfDictionaries },
8007 { prototypes::id::TestExampleInterface },
8008 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8009 JSJitInfo::Getter,
8010 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
8011 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
8012 false, /* isInfallible. False in setters. */
8013 true, /* isMovable. Not relevant for setters. */
8014 true, /* isEliminatable. Not relevant for setters. */
8015 false, /* isAlwaysInSlot. Only relevant for getters. */
8016 true, /* isLazilyCachedInSlot. Only relevant for getters. */
8017 false, /* isTypedMethod. Only relevant for methods. */
8018 (DOM_INSTANCE_RESERVED_SLOTS1 + 5) /* Reserved slot index, if we're stored in a slot, else 0. */
8019};
8020static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 5) <= JSJitInfo::maxSlotIndex, "We won't fit");
8021static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 5) < 22, "There is no slot for us");
8022
8023MOZ_CAN_RUN_SCRIPT static bool
8024get_readonlyNullableSequenceOfDictionaries(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
8025{
8026 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8029( cx, "TestExampleInterface"
, "readonlyNullableSequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8027 "TestExampleInterface", "readonlyNullableSequenceOfDictionaries", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8029( cx, "TestExampleInterface"
, "readonlyNullableSequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8028 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject8029( cx, "TestExampleInterface"
, "readonlyNullableSequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8029 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8029( cx, "TestExampleInterface"
, "readonlyNullableSequenceOfDictionaries", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8030
8031 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8032 // Have to either root across the getter call or reget after.
8033 bool isXray;
8034 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
8035 if (!slotStorage) {
8036 return false;
8037 }
8038 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 6) : (DOM_INSTANCE_RESERVED_SLOTS1 + 6);
8039 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 8039); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 8039; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
8040 {
8041 // Scope for cachedVal
8042 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
8043 if (!cachedVal.isUndefined()) {
8044 args.rval().set(cachedVal);
8045 // The cached value is in the compartment of slotStorage,
8046 // so wrap into the caller compartment as needed.
8047 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
8048 }
8049 }
8050
8051 Nullable<nsTArray<Dict>> result;
8052 SequenceRooter<Dict > resultRooter(cx, &result);
8053 // NOTE: This assert does NOT call the function.
8054 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyNullableSequenceOfDictionaries(cx, result))>, "Should be returning void here");
8055 MOZ_KnownLive(self)(self)->GetReadonlyNullableSequenceOfDictionaries(cx, result);
8056 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8056); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8056; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8057 {
8058 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
8059 JSAutoRealm ar(cx, conversionScope);
8060 do { // block we break out of when done wrapping
8061
8062 if (result.IsNull()) {
8063 args.rval().setNull();
8064 break;
8065 }
8066
8067 uint32_t length = result.Value().Length();
8068 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8069 if (!returnArray) {
8070 return false;
8071 }
8072 // Scope for 'tmp'
8073 {
8074 JS::Rooted<JS::Value> tmp(cx);
8075 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8076 // Control block to let us common up the JS_DefineElement calls when there
8077 // are different ways to succeed at wrapping the object.
8078 do {
8079 if (!result.Value()[sequenceIdx0].ToObjectInternal(cx, &tmp)) {
8080 return false;
8081 }
8082 break;
8083 } while (false);
8084 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8085 JSPROP_ENUMERATE)) {
8086 return false;
8087 }
8088 }
8089 }
8090 args.rval().setObject(*returnArray);
8091 break;
8092 } while (false);
8093 }
8094 { // And now store things in the realm of our slotStorage.
8095 JSAutoRealm ar(cx, slotStorage);
8096 // Make a copy so that we don't do unnecessary wrapping on args.rval().
8097 JS::Rooted<JS::Value> storedVal(cx, args.rval());
8098 if (!MaybeWrapNonDOMObjectOrNullValue(cx, &storedVal)) {
8099 return false;
8100 }
8101 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
8102 if (!isXray) {
8103 // In the Xray case we don't need to do this, because getting the
8104 // expando object already preserved our wrapper.
8105 PreserveWrapper(self);
8106 }
8107 }
8108 // And now make sure args.rval() is in the caller realm.
8109 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
8110}
8111
8112static const JSJitInfo readonlyNullableSequenceOfDictionaries_getterinfo = {
8113 { get_readonlyNullableSequenceOfDictionaries },
8114 { prototypes::id::TestExampleInterface },
8115 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8116 JSJitInfo::Getter,
8117 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
8118 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8119 false, /* isInfallible. False in setters. */
8120 true, /* isMovable. Not relevant for setters. */
8121 true, /* isEliminatable. Not relevant for setters. */
8122 false, /* isAlwaysInSlot. Only relevant for getters. */
8123 true, /* isLazilyCachedInSlot. Only relevant for getters. */
8124 false, /* isTypedMethod. Only relevant for methods. */
8125 (DOM_INSTANCE_RESERVED_SLOTS1 + 6) /* Reserved slot index, if we're stored in a slot, else 0. */
8126};
8127static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 6) <= JSJitInfo::maxSlotIndex, "We won't fit");
8128static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 6) < 22, "There is no slot for us");
8129
8130MOZ_CAN_RUN_SCRIPT static bool
8131get_readonlyFrozenSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
8132{
8133 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8136( cx, "TestExampleInterface"
, "readonlyFrozenSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8134 "TestExampleInterface", "readonlyFrozenSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8136( cx, "TestExampleInterface"
, "readonlyFrozenSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8135 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject8136( cx, "TestExampleInterface"
, "readonlyFrozenSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8136 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8136( cx, "TestExampleInterface"
, "readonlyFrozenSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
8137
8138 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8139 // Have to either root across the getter call or reget after.
8140 bool isXray;
8141 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
8142 if (!slotStorage) {
8143 return false;
8144 }
8145 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 7) : (DOM_INSTANCE_RESERVED_SLOTS1 + 7);
8146 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 8146); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 8146; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
8147 {
8148 // Scope for cachedVal
8149 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
8150 if (!cachedVal.isUndefined()) {
8151 args.rval().set(cachedVal);
8152 // The cached value is in the compartment of slotStorage,
8153 // so wrap into the caller compartment as needed.
8154 return MaybeWrapNonDOMObjectValue(cx, args.rval());
8155 }
8156 }
8157
8158 nsTArray<int32_t> result;
8159 // NOTE: This assert does NOT call the function.
8160 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyFrozenSequence(result))>, "Should be returning void here");
8161 MOZ_KnownLive(self)(self)->GetReadonlyFrozenSequence(result);
8162 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8162); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8162; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8163 {
8164 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
8165 JSAutoRealm ar(cx, conversionScope);
8166 do { // block we break out of when done wrapping
8167
8168 uint32_t length = result.Length();
8169 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8170 if (!returnArray) {
8171 return false;
8172 }
8173 // Scope for 'tmp'
8174 {
8175 JS::Rooted<JS::Value> tmp(cx);
8176 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8177 // Control block to let us common up the JS_DefineElement calls when there
8178 // are different ways to succeed at wrapping the object.
8179 do {
8180 tmp.setInt32(int32_t(result[sequenceIdx0]));
8181 break;
8182 } while (false);
8183 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8184 JSPROP_ENUMERATE)) {
8185 return false;
8186 }
8187 }
8188 }
8189 args.rval().setObject(*returnArray);
8190 break;
8191 } while (false);
8192 JS::Rooted<JSObject*> rvalObj(cx, &args.rval().toObject());
8193 if (!JS_FreezeObject(cx, rvalObj)) {
8194 return false;
8195 }
8196 }
8197 { // And now store things in the realm of our slotStorage.
8198 JSAutoRealm ar(cx, slotStorage);
8199 // Make a copy so that we don't do unnecessary wrapping on args.rval().
8200 JS::Rooted<JS::Value> storedVal(cx, args.rval());
8201 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
8202 return false;
8203 }
8204 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
8205 if (!isXray) {
8206 // In the Xray case we don't need to do this, because getting the
8207 // expando object already preserved our wrapper.
8208 PreserveWrapper(self);
8209 }
8210 }
8211 // And now make sure args.rval() is in the caller realm.
8212 return MaybeWrapNonDOMObjectValue(cx, args.rval());
8213}
8214
8215static const JSJitInfo readonlyFrozenSequence_getterinfo = {
8216 { get_readonlyFrozenSequence },
8217 { prototypes::id::TestExampleInterface },
8218 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8219 JSJitInfo::Getter,
8220 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
8221 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
8222 false, /* isInfallible. False in setters. */
8223 true, /* isMovable. Not relevant for setters. */
8224 true, /* isEliminatable. Not relevant for setters. */
8225 false, /* isAlwaysInSlot. Only relevant for getters. */
8226 true, /* isLazilyCachedInSlot. Only relevant for getters. */
8227 false, /* isTypedMethod. Only relevant for methods. */
8228 (DOM_INSTANCE_RESERVED_SLOTS1 + 7) /* Reserved slot index, if we're stored in a slot, else 0. */
8229};
8230static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 7) <= JSJitInfo::maxSlotIndex, "We won't fit");
8231static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 7) < 22, "There is no slot for us");
8232
8233MOZ_CAN_RUN_SCRIPT static bool
8234get_readonlyFrozenNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
8235{
8236 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8239( cx, "TestExampleInterface"
, "readonlyFrozenNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8237 "TestExampleInterface", "readonlyFrozenNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8239( cx, "TestExampleInterface"
, "readonlyFrozenNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8238 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject8239( cx, "TestExampleInterface"
, "readonlyFrozenNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8239 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8239( cx, "TestExampleInterface"
, "readonlyFrozenNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8240
8241 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8242 // Have to either root across the getter call or reget after.
8243 bool isXray;
8244 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
8245 if (!slotStorage) {
8246 return false;
8247 }
8248 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 8) : (DOM_INSTANCE_RESERVED_SLOTS1 + 8);
8249 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 8249); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 8249; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
8250 {
8251 // Scope for cachedVal
8252 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
8253 if (!cachedVal.isUndefined()) {
8254 args.rval().set(cachedVal);
8255 // The cached value is in the compartment of slotStorage,
8256 // so wrap into the caller compartment as needed.
8257 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
8258 }
8259 }
8260
8261 Nullable<nsTArray<int32_t>> result;
8262 // NOTE: This assert does NOT call the function.
8263 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyFrozenNullableSequence(result))>, "Should be returning void here");
8264 MOZ_KnownLive(self)(self)->GetReadonlyFrozenNullableSequence(result);
8265 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8265); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8265; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8266 {
8267 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
8268 JSAutoRealm ar(cx, conversionScope);
8269 do { // block we break out of when done wrapping
8270
8271 if (result.IsNull()) {
8272 args.rval().setNull();
8273 break;
8274 }
8275
8276 uint32_t length = result.Value().Length();
8277 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8278 if (!returnArray) {
8279 return false;
8280 }
8281 // Scope for 'tmp'
8282 {
8283 JS::Rooted<JS::Value> tmp(cx);
8284 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8285 // Control block to let us common up the JS_DefineElement calls when there
8286 // are different ways to succeed at wrapping the object.
8287 do {
8288 tmp.setInt32(int32_t(result.Value()[sequenceIdx0]));
8289 break;
8290 } while (false);
8291 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8292 JSPROP_ENUMERATE)) {
8293 return false;
8294 }
8295 }
8296 }
8297 args.rval().setObject(*returnArray);
8298 break;
8299 } while (false);
8300 if (args.rval().isObject()) {
8301 JS::Rooted<JSObject*> rvalObj(cx, &args.rval().toObject());
8302 if (!JS_FreezeObject(cx, rvalObj)) {
8303 return false;
8304 }
8305 }
8306 }
8307 { // And now store things in the realm of our slotStorage.
8308 JSAutoRealm ar(cx, slotStorage);
8309 // Make a copy so that we don't do unnecessary wrapping on args.rval().
8310 JS::Rooted<JS::Value> storedVal(cx, args.rval());
8311 if (!MaybeWrapNonDOMObjectOrNullValue(cx, &storedVal)) {
8312 return false;
8313 }
8314 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
8315 if (!isXray) {
8316 // In the Xray case we don't need to do this, because getting the
8317 // expando object already preserved our wrapper.
8318 PreserveWrapper(self);
8319 }
8320 }
8321 // And now make sure args.rval() is in the caller realm.
8322 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
8323}
8324
8325static const JSJitInfo readonlyFrozenNullableSequence_getterinfo = {
8326 { get_readonlyFrozenNullableSequence },
8327 { prototypes::id::TestExampleInterface },
8328 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8329 JSJitInfo::Getter,
8330 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
8331 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8332 false, /* isInfallible. False in setters. */
8333 true, /* isMovable. Not relevant for setters. */
8334 true, /* isEliminatable. Not relevant for setters. */
8335 false, /* isAlwaysInSlot. Only relevant for getters. */
8336 true, /* isLazilyCachedInSlot. Only relevant for getters. */
8337 false, /* isTypedMethod. Only relevant for methods. */
8338 (DOM_INSTANCE_RESERVED_SLOTS1 + 8) /* Reserved slot index, if we're stored in a slot, else 0. */
8339};
8340static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 8) <= JSJitInfo::maxSlotIndex, "We won't fit");
8341static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 8) < 22, "There is no slot for us");
8342
8343MOZ_CAN_RUN_SCRIPT static bool
8344receiveSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8345{
8346 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8349( cx, "TestExampleInterface"
, "receiveSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8347 "TestExampleInterface", "receiveSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8349( cx, "TestExampleInterface"
, "receiveSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8348 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8349( cx, "TestExampleInterface"
, "receiveSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8349 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8349( cx, "TestExampleInterface"
, "receiveSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
8350
8351 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8352 nsTArray<int32_t> result;
8353 // NOTE: This assert does NOT call the function.
8354 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveSequence(result))>, "Should be returning void here");
8355 MOZ_KnownLive(self)(self)->ReceiveSequence(result);
8356 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8356); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8356; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8357
8358 uint32_t length = result.Length();
8359 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8360 if (!returnArray) {
8361 return false;
8362 }
8363 // Scope for 'tmp'
8364 {
8365 JS::Rooted<JS::Value> tmp(cx);
8366 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8367 // Control block to let us common up the JS_DefineElement calls when there
8368 // are different ways to succeed at wrapping the object.
8369 do {
8370 tmp.setInt32(int32_t(result[sequenceIdx0]));
8371 break;
8372 } while (false);
8373 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8374 JSPROP_ENUMERATE)) {
8375 return false;
8376 }
8377 }
8378 }
8379 args.rval().setObject(*returnArray);
8380 return true;
8381}
8382
8383static const JSJitInfo receiveSequence_methodinfo = {
8384 { (JSJitGetterOp)receiveSequence },
8385 { prototypes::id::TestExampleInterface },
8386 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8387 JSJitInfo::Method,
8388 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8389 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
8390 false, /* isInfallible. False in setters. */
8391 false, /* isMovable. Not relevant for setters. */
8392 false, /* isEliminatable. Not relevant for setters. */
8393 false, /* isAlwaysInSlot. Only relevant for getters. */
8394 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8395 false, /* isTypedMethod. Only relevant for methods. */
8396 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8397};
8398
8399MOZ_CAN_RUN_SCRIPT static bool
8400receiveNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8401{
8402 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8405( cx, "TestExampleInterface"
, "receiveNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8403 "TestExampleInterface", "receiveNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8405( cx, "TestExampleInterface"
, "receiveNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8404 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8405( cx, "TestExampleInterface"
, "receiveNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8405 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8405( cx, "TestExampleInterface"
, "receiveNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
8406
8407 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8408 Nullable<nsTArray<int32_t>> result;
8409 // NOTE: This assert does NOT call the function.
8410 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableSequence(result))>, "Should be returning void here");
8411 MOZ_KnownLive(self)(self)->ReceiveNullableSequence(result);
8412 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8412); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8412; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8413
8414 if (result.IsNull()) {
8415 args.rval().setNull();
8416 return true;
8417 }
8418
8419 uint32_t length = result.Value().Length();
8420 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8421 if (!returnArray) {
8422 return false;
8423 }
8424 // Scope for 'tmp'
8425 {
8426 JS::Rooted<JS::Value> tmp(cx);
8427 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8428 // Control block to let us common up the JS_DefineElement calls when there
8429 // are different ways to succeed at wrapping the object.
8430 do {
8431 tmp.setInt32(int32_t(result.Value()[sequenceIdx0]));
8432 break;
8433 } while (false);
8434 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8435 JSPROP_ENUMERATE)) {
8436 return false;
8437 }
8438 }
8439 }
8440 args.rval().setObject(*returnArray);
8441 return true;
8442}
8443
8444static const JSJitInfo receiveNullableSequence_methodinfo = {
8445 { (JSJitGetterOp)receiveNullableSequence },
8446 { prototypes::id::TestExampleInterface },
8447 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8448 JSJitInfo::Method,
8449 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8450 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8451 false, /* isInfallible. False in setters. */
8452 false, /* isMovable. Not relevant for setters. */
8453 false, /* isEliminatable. Not relevant for setters. */
8454 false, /* isAlwaysInSlot. Only relevant for getters. */
8455 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8456 false, /* isTypedMethod. Only relevant for methods. */
8457 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8458};
8459
8460MOZ_CAN_RUN_SCRIPT static bool
8461receiveSequenceOfNullableInts(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8462{
8463 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8466( cx, "TestExampleInterface"
, "receiveSequenceOfNullableInts", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8464 "TestExampleInterface", "receiveSequenceOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8466( cx, "TestExampleInterface"
, "receiveSequenceOfNullableInts", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8465 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8466( cx, "TestExampleInterface"
, "receiveSequenceOfNullableInts", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8466 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8466( cx, "TestExampleInterface"
, "receiveSequenceOfNullableInts", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8467
8468 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8469 nsTArray<Nullable<int32_t>> result;
8470 // NOTE: This assert does NOT call the function.
8471 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveSequenceOfNullableInts(result))>, "Should be returning void here");
8472 MOZ_KnownLive(self)(self)->ReceiveSequenceOfNullableInts(result);
8473 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8473); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8473; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8474
8475 uint32_t length = result.Length();
8476 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8477 if (!returnArray) {
8478 return false;
8479 }
8480 // Scope for 'tmp'
8481 {
8482 JS::Rooted<JS::Value> tmp(cx);
8483 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8484 // Control block to let us common up the JS_DefineElement calls when there
8485 // are different ways to succeed at wrapping the object.
8486 do {
8487 if (result[sequenceIdx0].IsNull()) {
8488 tmp.setNull();
8489 break;
8490 }
8491 tmp.setInt32(int32_t(result[sequenceIdx0].Value()));
8492 break;
8493 } while (false);
8494 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8495 JSPROP_ENUMERATE)) {
8496 return false;
8497 }
8498 }
8499 }
8500 args.rval().setObject(*returnArray);
8501 return true;
8502}
8503
8504static const JSJitInfo receiveSequenceOfNullableInts_methodinfo = {
8505 { (JSJitGetterOp)receiveSequenceOfNullableInts },
8506 { prototypes::id::TestExampleInterface },
8507 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8508 JSJitInfo::Method,
8509 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8510 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
8511 false, /* isInfallible. False in setters. */
8512 false, /* isMovable. Not relevant for setters. */
8513 false, /* isEliminatable. Not relevant for setters. */
8514 false, /* isAlwaysInSlot. Only relevant for getters. */
8515 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8516 false, /* isTypedMethod. Only relevant for methods. */
8517 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8518};
8519
8520MOZ_CAN_RUN_SCRIPT static bool
8521receiveNullableSequenceOfNullableInts(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8522{
8523 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8526( cx, "TestExampleInterface"
, "receiveNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8524 "TestExampleInterface", "receiveNullableSequenceOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8526( cx, "TestExampleInterface"
, "receiveNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8525 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8526( cx, "TestExampleInterface"
, "receiveNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8526 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8526( cx, "TestExampleInterface"
, "receiveNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8527
8528 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8529 Nullable<nsTArray<Nullable<int32_t>>> result;
8530 // NOTE: This assert does NOT call the function.
8531 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableSequenceOfNullableInts(result))>, "Should be returning void here");
8532 MOZ_KnownLive(self)(self)->ReceiveNullableSequenceOfNullableInts(result);
8533 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8533); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8533; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8534
8535 if (result.IsNull()) {
8536 args.rval().setNull();
8537 return true;
8538 }
8539
8540 uint32_t length = result.Value().Length();
8541 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8542 if (!returnArray) {
8543 return false;
8544 }
8545 // Scope for 'tmp'
8546 {
8547 JS::Rooted<JS::Value> tmp(cx);
8548 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8549 // Control block to let us common up the JS_DefineElement calls when there
8550 // are different ways to succeed at wrapping the object.
8551 do {
8552 if (result.Value()[sequenceIdx0].IsNull()) {
8553 tmp.setNull();
8554 break;
8555 }
8556 tmp.setInt32(int32_t(result.Value()[sequenceIdx0].Value()));
8557 break;
8558 } while (false);
8559 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8560 JSPROP_ENUMERATE)) {
8561 return false;
8562 }
8563 }
8564 }
8565 args.rval().setObject(*returnArray);
8566 return true;
8567}
8568
8569static const JSJitInfo receiveNullableSequenceOfNullableInts_methodinfo = {
8570 { (JSJitGetterOp)receiveNullableSequenceOfNullableInts },
8571 { prototypes::id::TestExampleInterface },
8572 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8573 JSJitInfo::Method,
8574 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8575 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8576 false, /* isInfallible. False in setters. */
8577 false, /* isMovable. Not relevant for setters. */
8578 false, /* isEliminatable. Not relevant for setters. */
8579 false, /* isAlwaysInSlot. Only relevant for getters. */
8580 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8581 false, /* isTypedMethod. Only relevant for methods. */
8582 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8583};
8584
8585MOZ_CAN_RUN_SCRIPT static bool
8586passSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8587{
8588 BindingCallContext cx(cx_, "TestExampleInterface.passSequence");
8589 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8592( cx, "TestExampleInterface"
, "passSequence", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8590 "TestExampleInterface", "passSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8592( cx, "TestExampleInterface"
, "passSequence", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8591 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8592( cx, "TestExampleInterface"
, "passSequence", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8592 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8592( cx, "TestExampleInterface"
, "passSequence", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
8593
8594 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8595 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequence", 1)) {
8596 return false;
8597 }
8598 binding_detail::AutoSequence<int32_t> arg0;
8599 if (args[0].isObject()) {
8600 JS::ForOfIterator iter(cx);
8601 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
8602 return false;
8603 }
8604 if (!iter.valueIsIterable()) {
8605 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8606 return false;
8607 }
8608 binding_detail::AutoSequence<int32_t> &arr = arg0;
8609 JS::Rooted<JS::Value> temp(cx);
8610 while (true) {
8611 bool done;
8612 if (!iter.next(&temp, &done)) {
8613 return false;
8614 }
8615 if (done) {
8616 break;
8617 }
8618 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
8619 if (!slotPtr) {
8620 JS_ReportOutOfMemory(cx);
8621 return false;
8622 }
8623 int32_t& slot = *slotPtr;
8624 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
8625 return false;
8626 }
8627 }
8628 } else {
8629 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8630 return false;
8631 }
8632 // NOTE: This assert does NOT call the function.
8633 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequence(Constify(arg0)))>, "Should be returning void here");
8634 MOZ_KnownLive(self)(self)->PassSequence(Constify(arg0));
8635 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8635); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8635; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8636 args.rval().setUndefined();
8637 return true;
8638}
8639
8640static const JSJitInfo passSequence_methodinfo = {
8641 { (JSJitGetterOp)passSequence },
8642 { prototypes::id::TestExampleInterface },
8643 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8644 JSJitInfo::Method,
8645 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8646 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8647 false, /* isInfallible. False in setters. */
8648 false, /* isMovable. Not relevant for setters. */
8649 false, /* isEliminatable. Not relevant for setters. */
8650 false, /* isAlwaysInSlot. Only relevant for getters. */
8651 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8652 false, /* isTypedMethod. Only relevant for methods. */
8653 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8654};
8655
8656MOZ_CAN_RUN_SCRIPT static bool
8657passNullableSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8658{
8659 BindingCallContext cx(cx_, "TestExampleInterface.passNullableSequence");
8660 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8663( cx, "TestExampleInterface"
, "passNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8661 "TestExampleInterface", "passNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8663( cx, "TestExampleInterface"
, "passNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8662 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8663( cx, "TestExampleInterface"
, "passNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
8663 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8663( cx, "TestExampleInterface"
, "passNullableSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
8664
8665 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8666 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableSequence", 1)) {
8667 return false;
8668 }
8669 Nullable<Sequence<int32_t>> arg0;
8670 if (args[0].isObject()) {
8671 JS::ForOfIterator iter(cx);
8672 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
8673 return false;
8674 }
8675 if (!iter.valueIsIterable()) {
8676 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8677 return false;
8678 }
8679 Sequence<int32_t> &arr = arg0.SetValue();
8680 JS::Rooted<JS::Value> temp(cx);
8681 while (true) {
8682 bool done;
8683 if (!iter.next(&temp, &done)) {
8684 return false;
8685 }
8686 if (done) {
8687 break;
8688 }
8689 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
8690 if (!slotPtr) {
8691 JS_ReportOutOfMemory(cx);
8692 return false;
8693 }
8694 int32_t& slot = *slotPtr;
8695 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
8696 return false;
8697 }
8698 }
8699 } else if (args[0].isNullOrUndefined()) {
8700 arg0.SetNull();
8701 } else {
8702 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8703 return false;
8704 }
8705 // NOTE: This assert does NOT call the function.
8706 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableSequence(Constify(arg0)))>, "Should be returning void here");
8707 MOZ_KnownLive(self)(self)->PassNullableSequence(Constify(arg0));
8708 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8708); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8708; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8709 args.rval().setUndefined();
8710 return true;
8711}
8712
8713static const JSJitInfo passNullableSequence_methodinfo = {
8714 { (JSJitGetterOp)passNullableSequence },
8715 { prototypes::id::TestExampleInterface },
8716 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8717 JSJitInfo::Method,
8718 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8719 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8720 false, /* isInfallible. False in setters. */
8721 false, /* isMovable. Not relevant for setters. */
8722 false, /* isEliminatable. Not relevant for setters. */
8723 false, /* isAlwaysInSlot. Only relevant for getters. */
8724 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8725 false, /* isTypedMethod. Only relevant for methods. */
8726 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8727};
8728
8729MOZ_CAN_RUN_SCRIPT static bool
8730passSequenceOfNullableInts(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8731{
8732 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfNullableInts");
8733 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8736( cx, "TestExampleInterface"
, "passSequenceOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8734 "TestExampleInterface", "passSequenceOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8736( cx, "TestExampleInterface"
, "passSequenceOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8735 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8736( cx, "TestExampleInterface"
, "passSequenceOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8736 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8736( cx, "TestExampleInterface"
, "passSequenceOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8737
8738 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8739 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfNullableInts", 1)) {
8740 return false;
8741 }
8742 binding_detail::AutoSequence<Nullable<int32_t>> arg0;
8743 if (args[0].isObject()) {
8744 JS::ForOfIterator iter(cx);
8745 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
8746 return false;
8747 }
8748 if (!iter.valueIsIterable()) {
8749 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8750 return false;
8751 }
8752 binding_detail::AutoSequence<Nullable<int32_t>> &arr = arg0;
8753 JS::Rooted<JS::Value> temp(cx);
8754 while (true) {
8755 bool done;
8756 if (!iter.next(&temp, &done)) {
8757 return false;
8758 }
8759 if (done) {
8760 break;
8761 }
8762 Nullable<int32_t>* slotPtr = arr.AppendElement(mozilla::fallible);
8763 if (!slotPtr) {
8764 JS_ReportOutOfMemory(cx);
8765 return false;
8766 }
8767 Nullable<int32_t>& slot = *slotPtr;
8768 if (temp.isNullOrUndefined()) {
8769 slot.SetNull();
8770 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot.SetValue())) {
8771 return false;
8772 }
8773 }
8774 } else {
8775 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8776 return false;
8777 }
8778 // NOTE: This assert does NOT call the function.
8779 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfNullableInts(Constify(arg0)))>, "Should be returning void here");
8780 MOZ_KnownLive(self)(self)->PassSequenceOfNullableInts(Constify(arg0));
8781 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8781); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8781; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8782 args.rval().setUndefined();
8783 return true;
8784}
8785
8786static const JSJitInfo passSequenceOfNullableInts_methodinfo = {
8787 { (JSJitGetterOp)passSequenceOfNullableInts },
8788 { prototypes::id::TestExampleInterface },
8789 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8790 JSJitInfo::Method,
8791 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8792 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8793 false, /* isInfallible. False in setters. */
8794 false, /* isMovable. Not relevant for setters. */
8795 false, /* isEliminatable. Not relevant for setters. */
8796 false, /* isAlwaysInSlot. Only relevant for getters. */
8797 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8798 false, /* isTypedMethod. Only relevant for methods. */
8799 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8800};
8801
8802MOZ_CAN_RUN_SCRIPT static bool
8803passOptionalSequenceOfNullableInts(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8804{
8805 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSequenceOfNullableInts");
8806 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8809( cx, "TestExampleInterface"
, "passOptionalSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8807 "TestExampleInterface", "passOptionalSequenceOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8809( cx, "TestExampleInterface"
, "passOptionalSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8808 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8809( cx, "TestExampleInterface"
, "passOptionalSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8809 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8809( cx, "TestExampleInterface"
, "passOptionalSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8810
8811 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8812 Optional<Sequence<Nullable<int32_t>>> arg0;
8813 if (args.hasDefined(0)) {
8814 arg0.Construct();
8815 if (args[0].isObject()) {
8816 JS::ForOfIterator iter(cx);
8817 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
8818 return false;
8819 }
8820 if (!iter.valueIsIterable()) {
8821 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8822 return false;
8823 }
8824 Sequence<Nullable<int32_t>> &arr = arg0.Value();
8825 JS::Rooted<JS::Value> temp(cx);
8826 while (true) {
8827 bool done;
8828 if (!iter.next(&temp, &done)) {
8829 return false;
8830 }
8831 if (done) {
8832 break;
8833 }
8834 Nullable<int32_t>* slotPtr = arr.AppendElement(mozilla::fallible);
8835 if (!slotPtr) {
8836 JS_ReportOutOfMemory(cx);
8837 return false;
8838 }
8839 Nullable<int32_t>& slot = *slotPtr;
8840 if (temp.isNullOrUndefined()) {
8841 slot.SetNull();
8842 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot.SetValue())) {
8843 return false;
8844 }
8845 }
8846 } else {
8847 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8848 return false;
8849 }
8850 }
8851 // NOTE: This assert does NOT call the function.
8852 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSequenceOfNullableInts(Constify(arg0)))>, "Should be returning void here");
8853 MOZ_KnownLive(self)(self)->PassOptionalSequenceOfNullableInts(Constify(arg0));
8854 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8854); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8854; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8855 args.rval().setUndefined();
8856 return true;
8857}
8858
8859static const JSJitInfo passOptionalSequenceOfNullableInts_methodinfo = {
8860 { (JSJitGetterOp)passOptionalSequenceOfNullableInts },
8861 { prototypes::id::TestExampleInterface },
8862 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8863 JSJitInfo::Method,
8864 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8865 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8866 false, /* isInfallible. False in setters. */
8867 false, /* isMovable. Not relevant for setters. */
8868 false, /* isEliminatable. Not relevant for setters. */
8869 false, /* isAlwaysInSlot. Only relevant for getters. */
8870 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8871 false, /* isTypedMethod. Only relevant for methods. */
8872 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8873};
8874
8875MOZ_CAN_RUN_SCRIPT static bool
8876passOptionalNullableSequenceOfNullableInts(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8877{
8878 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceOfNullableInts");
8879 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8882( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8880 "TestExampleInterface", "passOptionalNullableSequenceOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8882( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8881 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8882( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8882 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8882( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8883
8884 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8885 Optional<Nullable<Sequence<Nullable<int32_t>>>> arg0;
8886 if (args.hasDefined(0)) {
8887 arg0.Construct();
8888 if (args[0].isObject()) {
8889 JS::ForOfIterator iter(cx);
8890 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
8891 return false;
8892 }
8893 if (!iter.valueIsIterable()) {
8894 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8895 return false;
8896 }
8897 Sequence<Nullable<int32_t>> &arr = arg0.Value().SetValue();
8898 JS::Rooted<JS::Value> temp(cx);
8899 while (true) {
8900 bool done;
8901 if (!iter.next(&temp, &done)) {
8902 return false;
8903 }
8904 if (done) {
8905 break;
8906 }
8907 Nullable<int32_t>* slotPtr = arr.AppendElement(mozilla::fallible);
8908 if (!slotPtr) {
8909 JS_ReportOutOfMemory(cx);
8910 return false;
8911 }
8912 Nullable<int32_t>& slot = *slotPtr;
8913 if (temp.isNullOrUndefined()) {
8914 slot.SetNull();
8915 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot.SetValue())) {
8916 return false;
8917 }
8918 }
8919 } else if (args[0].isNullOrUndefined()) {
8920 arg0.Value().SetNull();
8921 } else {
8922 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
8923 return false;
8924 }
8925 }
8926 // NOTE: This assert does NOT call the function.
8927 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableInts(Constify(arg0)))>, "Should be returning void here");
8928 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableInts(Constify(arg0));
8929 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8929); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8929; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8930 args.rval().setUndefined();
8931 return true;
8932}
8933
8934static const JSJitInfo passOptionalNullableSequenceOfNullableInts_methodinfo = {
8935 { (JSJitGetterOp)passOptionalNullableSequenceOfNullableInts },
8936 { prototypes::id::TestExampleInterface },
8937 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8938 JSJitInfo::Method,
8939 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8940 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8941 false, /* isInfallible. False in setters. */
8942 false, /* isMovable. Not relevant for setters. */
8943 false, /* isEliminatable. Not relevant for setters. */
8944 false, /* isAlwaysInSlot. Only relevant for getters. */
8945 false, /* isLazilyCachedInSlot. Only relevant for getters. */
8946 false, /* isTypedMethod. Only relevant for methods. */
8947 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8948};
8949
8950MOZ_CAN_RUN_SCRIPT static bool
8951receiveCastableObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
8952{
8953 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject8956( cx, "TestExampleInterface"
, "receiveCastableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8954 "TestExampleInterface", "receiveCastableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject8956( cx, "TestExampleInterface"
, "receiveCastableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8955 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject8956( cx, "TestExampleInterface"
, "receiveCastableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
8956 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject8956( cx, "TestExampleInterface"
, "receiveCastableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
8957
8958 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
8959 nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>> result;
8960 // NOTE: This assert does NOT call the function.
8961 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveCastableObjectSequence(result))>, "Should be returning void here");
8962 MOZ_KnownLive(self)(self)->ReceiveCastableObjectSequence(result);
8963 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8963); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 8963; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
8964
8965 uint32_t length = result.Length();
8966 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
8967 if (!returnArray) {
8968 return false;
8969 }
8970 // Scope for 'tmp'
8971 {
8972 JS::Rooted<JS::Value> tmp(cx);
8973 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
8974 // Control block to let us common up the JS_DefineElement calls when there
8975 // are different ways to succeed at wrapping the object.
8976 do {
8977 if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
8978 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 8978); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 8978; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
8979 return false;
8980 }
8981 break;
8982 } while (false);
8983 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
8984 JSPROP_ENUMERATE)) {
8985 return false;
8986 }
8987 }
8988 }
8989 args.rval().setObject(*returnArray);
8990 return true;
8991}
8992
8993static const JSJitInfo receiveCastableObjectSequence_methodinfo = {
8994 { (JSJitGetterOp)receiveCastableObjectSequence },
8995 { prototypes::id::TestExampleInterface },
8996 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
8997 JSJitInfo::Method,
8998 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8999 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
9000 false, /* isInfallible. False in setters. */
9001 false, /* isMovable. Not relevant for setters. */
9002 false, /* isEliminatable. Not relevant for setters. */
9003 false, /* isAlwaysInSlot. Only relevant for getters. */
9004 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9005 false, /* isTypedMethod. Only relevant for methods. */
9006 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9007};
9008
9009MOZ_CAN_RUN_SCRIPT static bool
9010receiveCallbackObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9011{
9012 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9015( cx, "TestExampleInterface"
, "receiveCallbackObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9013 "TestExampleInterface", "receiveCallbackObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9015( cx, "TestExampleInterface"
, "receiveCallbackObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9014 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9015( cx, "TestExampleInterface"
, "receiveCallbackObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9015 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9015( cx, "TestExampleInterface"
, "receiveCallbackObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9016
9017 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9018 nsTArray<StrongPtrForMember<mozilla::dom::TestCallbackInterface>> result;
9019 // NOTE: This assert does NOT call the function.
9020 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveCallbackObjectSequence(result))>, "Should be returning void here");
9021 MOZ_KnownLive(self)(self)->ReceiveCallbackObjectSequence(result);
9022 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9022); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9022; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9023
9024 uint32_t length = result.Length();
9025 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9026 if (!returnArray) {
9027 return false;
9028 }
9029 // Scope for 'tmp'
9030 {
9031 JS::Rooted<JS::Value> tmp(cx);
9032 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9033 // Control block to let us common up the JS_DefineElement calls when there
9034 // are different ways to succeed at wrapping the object.
9035 do {
9036 tmp.setObjectOrNull(GetCallbackFromCallbackObject(cx, result[sequenceIdx0]));
9037 if (!MaybeWrapObjectValue(cx, &tmp)) {
9038 return false;
9039 }
9040 break;
9041 } while (false);
9042 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9043 JSPROP_ENUMERATE)) {
9044 return false;
9045 }
9046 }
9047 }
9048 args.rval().setObject(*returnArray);
9049 return true;
9050}
9051
9052static const JSJitInfo receiveCallbackObjectSequence_methodinfo = {
9053 { (JSJitGetterOp)receiveCallbackObjectSequence },
9054 { prototypes::id::TestExampleInterface },
9055 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9056 JSJitInfo::Method,
9057 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9058 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
9059 false, /* isInfallible. False in setters. */
9060 false, /* isMovable. Not relevant for setters. */
9061 false, /* isEliminatable. Not relevant for setters. */
9062 false, /* isAlwaysInSlot. Only relevant for getters. */
9063 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9064 false, /* isTypedMethod. Only relevant for methods. */
9065 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9066};
9067
9068MOZ_CAN_RUN_SCRIPT static bool
9069receiveNullableCastableObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9070{
9071 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9074( cx, "TestExampleInterface"
, "receiveNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9072 "TestExampleInterface", "receiveNullableCastableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9074( cx, "TestExampleInterface"
, "receiveNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9073 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9074( cx, "TestExampleInterface"
, "receiveNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9074 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9074( cx, "TestExampleInterface"
, "receiveNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9075
9076 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9077 nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>> result;
9078 // NOTE: This assert does NOT call the function.
9079 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableCastableObjectSequence(result))>, "Should be returning void here");
9080 MOZ_KnownLive(self)(self)->ReceiveNullableCastableObjectSequence(result);
9081 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9081); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9081; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9082
9083 uint32_t length = result.Length();
9084 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9085 if (!returnArray) {
9086 return false;
9087 }
9088 // Scope for 'tmp'
9089 {
9090 JS::Rooted<JS::Value> tmp(cx);
9091 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9092 // Control block to let us common up the JS_DefineElement calls when there
9093 // are different ways to succeed at wrapping the object.
9094 do {
9095 if (!result[sequenceIdx0]) {
9096 tmp.setNull();
9097 break;
9098 }
9099 if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
9100 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9100); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9100; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9101 return false;
9102 }
9103 break;
9104 } while (false);
9105 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9106 JSPROP_ENUMERATE)) {
9107 return false;
9108 }
9109 }
9110 }
9111 args.rval().setObject(*returnArray);
9112 return true;
9113}
9114
9115static const JSJitInfo receiveNullableCastableObjectSequence_methodinfo = {
9116 { (JSJitGetterOp)receiveNullableCastableObjectSequence },
9117 { prototypes::id::TestExampleInterface },
9118 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9119 JSJitInfo::Method,
9120 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9121 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
9122 false, /* isInfallible. False in setters. */
9123 false, /* isMovable. Not relevant for setters. */
9124 false, /* isEliminatable. Not relevant for setters. */
9125 false, /* isAlwaysInSlot. Only relevant for getters. */
9126 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9127 false, /* isTypedMethod. Only relevant for methods. */
9128 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9129};
9130
9131MOZ_CAN_RUN_SCRIPT static bool
9132receiveNullableCallbackObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9133{
9134 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9137( cx, "TestExampleInterface"
, "receiveNullableCallbackObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9135 "TestExampleInterface", "receiveNullableCallbackObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9137( cx, "TestExampleInterface"
, "receiveNullableCallbackObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9136 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9137( cx, "TestExampleInterface"
, "receiveNullableCallbackObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9137 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9137( cx, "TestExampleInterface"
, "receiveNullableCallbackObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9138
9139 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9140 nsTArray<StrongPtrForMember<mozilla::dom::TestCallbackInterface>> result;
9141 // NOTE: This assert does NOT call the function.
9142 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableCallbackObjectSequence(result))>, "Should be returning void here");
9143 MOZ_KnownLive(self)(self)->ReceiveNullableCallbackObjectSequence(result);
9144 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9144); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9144; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9145
9146 uint32_t length = result.Length();
9147 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9148 if (!returnArray) {
9149 return false;
9150 }
9151 // Scope for 'tmp'
9152 {
9153 JS::Rooted<JS::Value> tmp(cx);
9154 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9155 // Control block to let us common up the JS_DefineElement calls when there
9156 // are different ways to succeed at wrapping the object.
9157 do {
9158 if (result[sequenceIdx0]) {
9159 tmp.setObjectOrNull(GetCallbackFromCallbackObject(cx, result[sequenceIdx0]));
9160 if (!MaybeWrapObjectOrNullValue(cx, &tmp)) {
9161 return false;
9162 }
9163 break;
9164 } else {
9165 tmp.setNull();
9166 break;
9167 }
9168 } while (false);
9169 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9170 JSPROP_ENUMERATE)) {
9171 return false;
9172 }
9173 }
9174 }
9175 args.rval().setObject(*returnArray);
9176 return true;
9177}
9178
9179static const JSJitInfo receiveNullableCallbackObjectSequence_methodinfo = {
9180 { (JSJitGetterOp)receiveNullableCallbackObjectSequence },
9181 { prototypes::id::TestExampleInterface },
9182 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9183 JSJitInfo::Method,
9184 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9185 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
9186 false, /* isInfallible. False in setters. */
9187 false, /* isMovable. Not relevant for setters. */
9188 false, /* isEliminatable. Not relevant for setters. */
9189 false, /* isAlwaysInSlot. Only relevant for getters. */
9190 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9191 false, /* isTypedMethod. Only relevant for methods. */
9192 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9193};
9194
9195MOZ_CAN_RUN_SCRIPT static bool
9196receiveCastableObjectNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9197{
9198 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9201( cx, "TestExampleInterface"
, "receiveCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9199 "TestExampleInterface", "receiveCastableObjectNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9201( cx, "TestExampleInterface"
, "receiveCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9200 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9201( cx, "TestExampleInterface"
, "receiveCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9201 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9201( cx, "TestExampleInterface"
, "receiveCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9202
9203 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9204 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>>> result;
9205 // NOTE: This assert does NOT call the function.
9206 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveCastableObjectNullableSequence(result))>, "Should be returning void here");
9207 MOZ_KnownLive(self)(self)->ReceiveCastableObjectNullableSequence(result);
9208 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9208); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9208; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9209
9210 if (result.IsNull()) {
9211 args.rval().setNull();
9212 return true;
9213 }
9214
9215 uint32_t length = result.Value().Length();
9216 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9217 if (!returnArray) {
9218 return false;
9219 }
9220 // Scope for 'tmp'
9221 {
9222 JS::Rooted<JS::Value> tmp(cx);
9223 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9224 // Control block to let us common up the JS_DefineElement calls when there
9225 // are different ways to succeed at wrapping the object.
9226 do {
9227 if (!GetOrCreateDOMReflector(cx, result.Value()[sequenceIdx0], &tmp)) {
9228 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9228); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9228; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9229 return false;
9230 }
9231 break;
9232 } while (false);
9233 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9234 JSPROP_ENUMERATE)) {
9235 return false;
9236 }
9237 }
9238 }
9239 args.rval().setObject(*returnArray);
9240 return true;
9241}
9242
9243static const JSJitInfo receiveCastableObjectNullableSequence_methodinfo = {
9244 { (JSJitGetterOp)receiveCastableObjectNullableSequence },
9245 { prototypes::id::TestExampleInterface },
9246 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9247 JSJitInfo::Method,
9248 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9249 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9250 false, /* isInfallible. False in setters. */
9251 false, /* isMovable. Not relevant for setters. */
9252 false, /* isEliminatable. Not relevant for setters. */
9253 false, /* isAlwaysInSlot. Only relevant for getters. */
9254 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9255 false, /* isTypedMethod. Only relevant for methods. */
9256 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9257};
9258
9259MOZ_CAN_RUN_SCRIPT static bool
9260receiveNullableCastableObjectNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9261{
9262 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9265( cx, "TestExampleInterface"
, "receiveNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9263 "TestExampleInterface", "receiveNullableCastableObjectNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9265( cx, "TestExampleInterface"
, "receiveNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9264 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9265( cx, "TestExampleInterface"
, "receiveNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9265 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9265( cx, "TestExampleInterface"
, "receiveNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9266
9267 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9268 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>>> result;
9269 // NOTE: This assert does NOT call the function.
9270 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableCastableObjectNullableSequence(result))>, "Should be returning void here");
9271 MOZ_KnownLive(self)(self)->ReceiveNullableCastableObjectNullableSequence(result);
9272 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9272); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9272; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9273
9274 if (result.IsNull()) {
9275 args.rval().setNull();
9276 return true;
9277 }
9278
9279 uint32_t length = result.Value().Length();
9280 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9281 if (!returnArray) {
9282 return false;
9283 }
9284 // Scope for 'tmp'
9285 {
9286 JS::Rooted<JS::Value> tmp(cx);
9287 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9288 // Control block to let us common up the JS_DefineElement calls when there
9289 // are different ways to succeed at wrapping the object.
9290 do {
9291 if (!result.Value()[sequenceIdx0]) {
9292 tmp.setNull();
9293 break;
9294 }
9295 if (!GetOrCreateDOMReflector(cx, result.Value()[sequenceIdx0], &tmp)) {
9296 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9296); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9296; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9297 return false;
9298 }
9299 break;
9300 } while (false);
9301 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9302 JSPROP_ENUMERATE)) {
9303 return false;
9304 }
9305 }
9306 }
9307 args.rval().setObject(*returnArray);
9308 return true;
9309}
9310
9311static const JSJitInfo receiveNullableCastableObjectNullableSequence_methodinfo = {
9312 { (JSJitGetterOp)receiveNullableCastableObjectNullableSequence },
9313 { prototypes::id::TestExampleInterface },
9314 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9315 JSJitInfo::Method,
9316 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9317 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9318 false, /* isInfallible. False in setters. */
9319 false, /* isMovable. Not relevant for setters. */
9320 false, /* isEliminatable. Not relevant for setters. */
9321 false, /* isAlwaysInSlot. Only relevant for getters. */
9322 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9323 false, /* isTypedMethod. Only relevant for methods. */
9324 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9325};
9326
9327MOZ_CAN_RUN_SCRIPT static bool
9328receiveWeakCastableObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9329{
9330 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9333( cx, "TestExampleInterface"
, "receiveWeakCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9331 "TestExampleInterface", "receiveWeakCastableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9333( cx, "TestExampleInterface"
, "receiveWeakCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9332 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9333( cx, "TestExampleInterface"
, "receiveWeakCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9333 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9333( cx, "TestExampleInterface"
, "receiveWeakCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9334
9335 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9336 nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>> result;
9337 // NOTE: This assert does NOT call the function.
9338 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveWeakCastableObjectSequence(result))>, "Should be returning void here");
9339 MOZ_KnownLive(self)(self)->ReceiveWeakCastableObjectSequence(result);
9340 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9340); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9340; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9341
9342 uint32_t length = result.Length();
9343 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9344 if (!returnArray) {
9345 return false;
9346 }
9347 // Scope for 'tmp'
9348 {
9349 JS::Rooted<JS::Value> tmp(cx);
9350 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9351 // Control block to let us common up the JS_DefineElement calls when there
9352 // are different ways to succeed at wrapping the object.
9353 do {
9354 if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
9355 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9355); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9355; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9356 return false;
9357 }
9358 break;
9359 } while (false);
9360 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9361 JSPROP_ENUMERATE)) {
9362 return false;
9363 }
9364 }
9365 }
9366 args.rval().setObject(*returnArray);
9367 return true;
9368}
9369
9370static const JSJitInfo receiveWeakCastableObjectSequence_methodinfo = {
9371 { (JSJitGetterOp)receiveWeakCastableObjectSequence },
9372 { prototypes::id::TestExampleInterface },
9373 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9374 JSJitInfo::Method,
9375 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9376 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
9377 false, /* isInfallible. False in setters. */
9378 false, /* isMovable. Not relevant for setters. */
9379 false, /* isEliminatable. Not relevant for setters. */
9380 false, /* isAlwaysInSlot. Only relevant for getters. */
9381 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9382 false, /* isTypedMethod. Only relevant for methods. */
9383 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9384};
9385
9386MOZ_CAN_RUN_SCRIPT static bool
9387receiveWeakNullableCastableObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9388{
9389 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9392( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9390 "TestExampleInterface", "receiveWeakNullableCastableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9392( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9391 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9392( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9392 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9392( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9393
9394 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9395 nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>> result;
9396 // NOTE: This assert does NOT call the function.
9397 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveWeakNullableCastableObjectSequence(result))>, "Should be returning void here");
9398 MOZ_KnownLive(self)(self)->ReceiveWeakNullableCastableObjectSequence(result);
9399 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9399); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9399; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9400
9401 uint32_t length = result.Length();
9402 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9403 if (!returnArray) {
9404 return false;
9405 }
9406 // Scope for 'tmp'
9407 {
9408 JS::Rooted<JS::Value> tmp(cx);
9409 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9410 // Control block to let us common up the JS_DefineElement calls when there
9411 // are different ways to succeed at wrapping the object.
9412 do {
9413 if (!result[sequenceIdx0]) {
9414 tmp.setNull();
9415 break;
9416 }
9417 if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
9418 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9418); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9418; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9419 return false;
9420 }
9421 break;
9422 } while (false);
9423 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9424 JSPROP_ENUMERATE)) {
9425 return false;
9426 }
9427 }
9428 }
9429 args.rval().setObject(*returnArray);
9430 return true;
9431}
9432
9433static const JSJitInfo receiveWeakNullableCastableObjectSequence_methodinfo = {
9434 { (JSJitGetterOp)receiveWeakNullableCastableObjectSequence },
9435 { prototypes::id::TestExampleInterface },
9436 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9437 JSJitInfo::Method,
9438 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9439 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
9440 false, /* isInfallible. False in setters. */
9441 false, /* isMovable. Not relevant for setters. */
9442 false, /* isEliminatable. Not relevant for setters. */
9443 false, /* isAlwaysInSlot. Only relevant for getters. */
9444 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9445 false, /* isTypedMethod. Only relevant for methods. */
9446 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9447};
9448
9449MOZ_CAN_RUN_SCRIPT static bool
9450receiveWeakCastableObjectNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9451{
9452 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9455( cx, "TestExampleInterface"
, "receiveWeakCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9453 "TestExampleInterface", "receiveWeakCastableObjectNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9455( cx, "TestExampleInterface"
, "receiveWeakCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9454 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9455( cx, "TestExampleInterface"
, "receiveWeakCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9455 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9455( cx, "TestExampleInterface"
, "receiveWeakCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9456
9457 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9458 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>>> result;
9459 // NOTE: This assert does NOT call the function.
9460 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveWeakCastableObjectNullableSequence(result))>, "Should be returning void here");
9461 MOZ_KnownLive(self)(self)->ReceiveWeakCastableObjectNullableSequence(result);
9462 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9462); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9462; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9463
9464 if (result.IsNull()) {
9465 args.rval().setNull();
9466 return true;
9467 }
9468
9469 uint32_t length = result.Value().Length();
9470 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9471 if (!returnArray) {
9472 return false;
9473 }
9474 // Scope for 'tmp'
9475 {
9476 JS::Rooted<JS::Value> tmp(cx);
9477 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9478 // Control block to let us common up the JS_DefineElement calls when there
9479 // are different ways to succeed at wrapping the object.
9480 do {
9481 if (!GetOrCreateDOMReflector(cx, result.Value()[sequenceIdx0], &tmp)) {
9482 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9482); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9482; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9483 return false;
9484 }
9485 break;
9486 } while (false);
9487 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9488 JSPROP_ENUMERATE)) {
9489 return false;
9490 }
9491 }
9492 }
9493 args.rval().setObject(*returnArray);
9494 return true;
9495}
9496
9497static const JSJitInfo receiveWeakCastableObjectNullableSequence_methodinfo = {
9498 { (JSJitGetterOp)receiveWeakCastableObjectNullableSequence },
9499 { prototypes::id::TestExampleInterface },
9500 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9501 JSJitInfo::Method,
9502 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9503 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9504 false, /* isInfallible. False in setters. */
9505 false, /* isMovable. Not relevant for setters. */
9506 false, /* isEliminatable. Not relevant for setters. */
9507 false, /* isAlwaysInSlot. Only relevant for getters. */
9508 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9509 false, /* isTypedMethod. Only relevant for methods. */
9510 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9511};
9512
9513MOZ_CAN_RUN_SCRIPT static bool
9514receiveWeakNullableCastableObjectNullableSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9515{
9516 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9519( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9517 "TestExampleInterface", "receiveWeakNullableCastableObjectNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9519( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9518 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9519( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9519 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9519( cx, "TestExampleInterface"
, "receiveWeakNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9520
9521 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9522 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::TestInterface>>> result;
9523 // NOTE: This assert does NOT call the function.
9524 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveWeakNullableCastableObjectNullableSequence(result))>, "Should be returning void here");
9525 MOZ_KnownLive(self)(self)->ReceiveWeakNullableCastableObjectNullableSequence(result);
9526 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9526); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9526; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9527
9528 if (result.IsNull()) {
9529 args.rval().setNull();
9530 return true;
9531 }
9532
9533 uint32_t length = result.Value().Length();
9534 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
9535 if (!returnArray) {
9536 return false;
9537 }
9538 // Scope for 'tmp'
9539 {
9540 JS::Rooted<JS::Value> tmp(cx);
9541 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
9542 // Control block to let us common up the JS_DefineElement calls when there
9543 // are different ways to succeed at wrapping the object.
9544 do {
9545 if (!result.Value()[sequenceIdx0]) {
9546 tmp.setNull();
9547 break;
9548 }
9549 if (!GetOrCreateDOMReflector(cx, result.Value()[sequenceIdx0], &tmp)) {
9550 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9550); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 9550; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
9551 return false;
9552 }
9553 break;
9554 } while (false);
9555 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
9556 JSPROP_ENUMERATE)) {
9557 return false;
9558 }
9559 }
9560 }
9561 args.rval().setObject(*returnArray);
9562 return true;
9563}
9564
9565static const JSJitInfo receiveWeakNullableCastableObjectNullableSequence_methodinfo = {
9566 { (JSJitGetterOp)receiveWeakNullableCastableObjectNullableSequence },
9567 { prototypes::id::TestExampleInterface },
9568 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9569 JSJitInfo::Method,
9570 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9571 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9572 false, /* isInfallible. False in setters. */
9573 false, /* isMovable. Not relevant for setters. */
9574 false, /* isEliminatable. Not relevant for setters. */
9575 false, /* isAlwaysInSlot. Only relevant for getters. */
9576 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9577 false, /* isTypedMethod. Only relevant for methods. */
9578 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9579};
9580
9581MOZ_CAN_RUN_SCRIPT static bool
9582passCastableObjectSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9583{
9584 BindingCallContext cx(cx_, "TestExampleInterface.passCastableObjectSequence");
9585 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9588( cx, "TestExampleInterface"
, "passCastableObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9586 "TestExampleInterface", "passCastableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9588( cx, "TestExampleInterface"
, "passCastableObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9587 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9588( cx, "TestExampleInterface"
, "passCastableObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9588 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9588( cx, "TestExampleInterface"
, "passCastableObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9589
9590 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9591 if (!args.requireAtLeast(cx, "TestExampleInterface.passCastableObjectSequence", 1)) {
9592 return false;
9593 }
9594 binding_detail::AutoSequence<OwningNonNull<mozilla::dom::TestInterface>> arg0;
9595 if (args[0].isObject()) {
9596 JS::ForOfIterator iter(cx);
9597 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
9598 return false;
9599 }
9600 if (!iter.valueIsIterable()) {
9601 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9602 return false;
9603 }
9604 binding_detail::AutoSequence<OwningNonNull<mozilla::dom::TestInterface>> &arr = arg0;
9605 JS::Rooted<JS::Value> temp(cx);
9606 while (true) {
9607 bool done;
9608 if (!iter.next(&temp, &done)) {
9609 return false;
9610 }
9611 if (done) {
9612 break;
9613 }
9614 OwningNonNull<mozilla::dom::TestInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
9615 if (!slotPtr) {
9616 JS_ReportOutOfMemory(cx);
9617 return false;
9618 }
9619 OwningNonNull<mozilla::dom::TestInterface>& slot = *slotPtr;
9620 if (temp.isObject()) {
9621 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
9622 {
9623 // Our JSContext should be in the right global to do unwrapping in.
9624 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
9625 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
9626 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestInterface");
9627 return false;
9628 }
9629 }
9630 } else {
9631 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
9632 return false;
9633 }
9634 }
9635 } else {
9636 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9637 return false;
9638 }
9639 // NOTE: This assert does NOT call the function.
9640 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassCastableObjectSequence(Constify(arg0)))>, "Should be returning void here");
9641 MOZ_KnownLive(self)(self)->PassCastableObjectSequence(Constify(arg0));
9642 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9642); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9642; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9643 args.rval().setUndefined();
9644 return true;
9645}
9646
9647static const JSJitInfo passCastableObjectSequence_methodinfo = {
9648 { (JSJitGetterOp)passCastableObjectSequence },
9649 { prototypes::id::TestExampleInterface },
9650 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9651 JSJitInfo::Method,
9652 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9653 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9654 false, /* isInfallible. False in setters. */
9655 false, /* isMovable. Not relevant for setters. */
9656 false, /* isEliminatable. Not relevant for setters. */
9657 false, /* isAlwaysInSlot. Only relevant for getters. */
9658 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9659 false, /* isTypedMethod. Only relevant for methods. */
9660 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9661};
9662
9663MOZ_CAN_RUN_SCRIPT static bool
9664passNullableCastableObjectSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9665{
9666 BindingCallContext cx(cx_, "TestExampleInterface.passNullableCastableObjectSequence");
9667 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9670( cx, "TestExampleInterface"
, "passNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9668 "TestExampleInterface", "passNullableCastableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9670( cx, "TestExampleInterface"
, "passNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9669 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9670( cx, "TestExampleInterface"
, "passNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9670 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9670( cx, "TestExampleInterface"
, "passNullableCastableObjectSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9671
9672 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9673 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableCastableObjectSequence", 1)) {
9674 return false;
9675 }
9676 binding_detail::AutoSequence<RefPtr<mozilla::dom::TestInterface>> arg0;
9677 if (args[0].isObject()) {
9678 JS::ForOfIterator iter(cx);
9679 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
9680 return false;
9681 }
9682 if (!iter.valueIsIterable()) {
9683 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9684 return false;
9685 }
9686 binding_detail::AutoSequence<RefPtr<mozilla::dom::TestInterface>> &arr = arg0;
9687 JS::Rooted<JS::Value> temp(cx);
9688 while (true) {
9689 bool done;
9690 if (!iter.next(&temp, &done)) {
9691 return false;
9692 }
9693 if (done) {
9694 break;
9695 }
9696 RefPtr<mozilla::dom::TestInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
9697 if (!slotPtr) {
9698 JS_ReportOutOfMemory(cx);
9699 return false;
9700 }
9701 RefPtr<mozilla::dom::TestInterface>& slot = *slotPtr;
9702 if (temp.isObject()) {
9703 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
9704 {
9705 // Our JSContext should be in the right global to do unwrapping in.
9706 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
9707 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
9708 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestInterface");
9709 return false;
9710 }
9711 }
9712 } else if (temp.isNullOrUndefined()) {
9713 slot = nullptr;
9714 } else {
9715 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
9716 return false;
9717 }
9718 }
9719 } else {
9720 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9721 return false;
9722 }
9723 // NOTE: This assert does NOT call the function.
9724 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableCastableObjectSequence(Constify(arg0)))>, "Should be returning void here");
9725 MOZ_KnownLive(self)(self)->PassNullableCastableObjectSequence(Constify(arg0));
9726 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9726); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9726; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9727 args.rval().setUndefined();
9728 return true;
9729}
9730
9731static const JSJitInfo passNullableCastableObjectSequence_methodinfo = {
9732 { (JSJitGetterOp)passNullableCastableObjectSequence },
9733 { prototypes::id::TestExampleInterface },
9734 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9735 JSJitInfo::Method,
9736 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9737 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9738 false, /* isInfallible. False in setters. */
9739 false, /* isMovable. Not relevant for setters. */
9740 false, /* isEliminatable. Not relevant for setters. */
9741 false, /* isAlwaysInSlot. Only relevant for getters. */
9742 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9743 false, /* isTypedMethod. Only relevant for methods. */
9744 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9745};
9746
9747MOZ_CAN_RUN_SCRIPT static bool
9748passCastableObjectNullableSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9749{
9750 BindingCallContext cx(cx_, "TestExampleInterface.passCastableObjectNullableSequence");
9751 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9754( cx, "TestExampleInterface"
, "passCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9752 "TestExampleInterface", "passCastableObjectNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9754( cx, "TestExampleInterface"
, "passCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9753 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9754( cx, "TestExampleInterface"
, "passCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9754 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9754( cx, "TestExampleInterface"
, "passCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9755
9756 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9757 if (!args.requireAtLeast(cx, "TestExampleInterface.passCastableObjectNullableSequence", 1)) {
9758 return false;
9759 }
9760 Nullable<Sequence<OwningNonNull<mozilla::dom::TestInterface>>> arg0;
9761 if (args[0].isObject()) {
9762 JS::ForOfIterator iter(cx);
9763 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
9764 return false;
9765 }
9766 if (!iter.valueIsIterable()) {
9767 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9768 return false;
9769 }
9770 Sequence<OwningNonNull<mozilla::dom::TestInterface>> &arr = arg0.SetValue();
9771 JS::Rooted<JS::Value> temp(cx);
9772 while (true) {
9773 bool done;
9774 if (!iter.next(&temp, &done)) {
9775 return false;
9776 }
9777 if (done) {
9778 break;
9779 }
9780 OwningNonNull<mozilla::dom::TestInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
9781 if (!slotPtr) {
9782 JS_ReportOutOfMemory(cx);
9783 return false;
9784 }
9785 OwningNonNull<mozilla::dom::TestInterface>& slot = *slotPtr;
9786 if (temp.isObject()) {
9787 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
9788 {
9789 // Our JSContext should be in the right global to do unwrapping in.
9790 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
9791 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
9792 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestInterface");
9793 return false;
9794 }
9795 }
9796 } else {
9797 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
9798 return false;
9799 }
9800 }
9801 } else if (args[0].isNullOrUndefined()) {
9802 arg0.SetNull();
9803 } else {
9804 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9805 return false;
9806 }
9807 // NOTE: This assert does NOT call the function.
9808 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassCastableObjectNullableSequence(Constify(arg0)))>, "Should be returning void here");
9809 MOZ_KnownLive(self)(self)->PassCastableObjectNullableSequence(Constify(arg0));
9810 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9810); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9810; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9811 args.rval().setUndefined();
9812 return true;
9813}
9814
9815static const JSJitInfo passCastableObjectNullableSequence_methodinfo = {
9816 { (JSJitGetterOp)passCastableObjectNullableSequence },
9817 { prototypes::id::TestExampleInterface },
9818 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9819 JSJitInfo::Method,
9820 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9821 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9822 false, /* isInfallible. False in setters. */
9823 false, /* isMovable. Not relevant for setters. */
9824 false, /* isEliminatable. Not relevant for setters. */
9825 false, /* isAlwaysInSlot. Only relevant for getters. */
9826 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9827 false, /* isTypedMethod. Only relevant for methods. */
9828 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9829};
9830
9831MOZ_CAN_RUN_SCRIPT static bool
9832passNullableCastableObjectNullableSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9833{
9834 BindingCallContext cx(cx_, "TestExampleInterface.passNullableCastableObjectNullableSequence");
9835 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9838( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9836 "TestExampleInterface", "passNullableCastableObjectNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9838( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9837 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9838( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9838 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9838( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9839
9840 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9841 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableCastableObjectNullableSequence", 1)) {
9842 return false;
9843 }
9844 Nullable<Sequence<RefPtr<mozilla::dom::TestInterface>>> arg0;
9845 if (args[0].isObject()) {
9846 JS::ForOfIterator iter(cx);
9847 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
9848 return false;
9849 }
9850 if (!iter.valueIsIterable()) {
9851 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9852 return false;
9853 }
9854 Sequence<RefPtr<mozilla::dom::TestInterface>> &arr = arg0.SetValue();
9855 JS::Rooted<JS::Value> temp(cx);
9856 while (true) {
9857 bool done;
9858 if (!iter.next(&temp, &done)) {
9859 return false;
9860 }
9861 if (done) {
9862 break;
9863 }
9864 RefPtr<mozilla::dom::TestInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
9865 if (!slotPtr) {
9866 JS_ReportOutOfMemory(cx);
9867 return false;
9868 }
9869 RefPtr<mozilla::dom::TestInterface>& slot = *slotPtr;
9870 if (temp.isObject()) {
9871 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
9872 {
9873 // Our JSContext should be in the right global to do unwrapping in.
9874 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
9875 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
9876 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestInterface");
9877 return false;
9878 }
9879 }
9880 } else if (temp.isNullOrUndefined()) {
9881 slot = nullptr;
9882 } else {
9883 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
9884 return false;
9885 }
9886 }
9887 } else if (args[0].isNullOrUndefined()) {
9888 arg0.SetNull();
9889 } else {
9890 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9891 return false;
9892 }
9893 // NOTE: This assert does NOT call the function.
9894 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableCastableObjectNullableSequence(Constify(arg0)))>, "Should be returning void here");
9895 MOZ_KnownLive(self)(self)->PassNullableCastableObjectNullableSequence(Constify(arg0));
9896 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9896); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9896; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9897 args.rval().setUndefined();
9898 return true;
9899}
9900
9901static const JSJitInfo passNullableCastableObjectNullableSequence_methodinfo = {
9902 { (JSJitGetterOp)passNullableCastableObjectNullableSequence },
9903 { prototypes::id::TestExampleInterface },
9904 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9905 JSJitInfo::Method,
9906 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9907 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9908 false, /* isInfallible. False in setters. */
9909 false, /* isMovable. Not relevant for setters. */
9910 false, /* isEliminatable. Not relevant for setters. */
9911 false, /* isAlwaysInSlot. Only relevant for getters. */
9912 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9913 false, /* isTypedMethod. Only relevant for methods. */
9914 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9915};
9916
9917MOZ_CAN_RUN_SCRIPT static bool
9918passOptionalSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9919{
9920 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSequence");
9921 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9924( cx, "TestExampleInterface"
, "passOptionalSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
9922 "TestExampleInterface", "passOptionalSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9924( cx, "TestExampleInterface"
, "passOptionalSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
9923 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9924( cx, "TestExampleInterface"
, "passOptionalSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
9924 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9924( cx, "TestExampleInterface"
, "passOptionalSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
9925
9926 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9927 Optional<Sequence<int32_t>> arg0;
9928 if (args.hasDefined(0)) {
9929 arg0.Construct();
9930 if (args[0].isObject()) {
9931 JS::ForOfIterator iter(cx);
9932 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
9933 return false;
9934 }
9935 if (!iter.valueIsIterable()) {
9936 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9937 return false;
9938 }
9939 Sequence<int32_t> &arr = arg0.Value();
9940 JS::Rooted<JS::Value> temp(cx);
9941 while (true) {
9942 bool done;
9943 if (!iter.next(&temp, &done)) {
9944 return false;
9945 }
9946 if (done) {
9947 break;
9948 }
9949 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
9950 if (!slotPtr) {
9951 JS_ReportOutOfMemory(cx);
9952 return false;
9953 }
9954 int32_t& slot = *slotPtr;
9955 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
9956 return false;
9957 }
9958 }
9959 } else {
9960 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
9961 return false;
9962 }
9963 }
9964 // NOTE: This assert does NOT call the function.
9965 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSequence(Constify(arg0)))>, "Should be returning void here");
9966 MOZ_KnownLive(self)(self)->PassOptionalSequence(Constify(arg0));
9967 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 9967); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 9967; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
9968 args.rval().setUndefined();
9969 return true;
9970}
9971
9972static const JSJitInfo passOptionalSequence_methodinfo = {
9973 { (JSJitGetterOp)passOptionalSequence },
9974 { prototypes::id::TestExampleInterface },
9975 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
9976 JSJitInfo::Method,
9977 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9978 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9979 false, /* isInfallible. False in setters. */
9980 false, /* isMovable. Not relevant for setters. */
9981 false, /* isEliminatable. Not relevant for setters. */
9982 false, /* isAlwaysInSlot. Only relevant for getters. */
9983 false, /* isLazilyCachedInSlot. Only relevant for getters. */
9984 false, /* isTypedMethod. Only relevant for methods. */
9985 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9986};
9987
9988MOZ_CAN_RUN_SCRIPT static bool
9989passOptionalSequenceWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
9990{
9991 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSequenceWithDefaultValue");
9992 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject9995( cx, "TestExampleInterface"
, "passOptionalSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9993 "TestExampleInterface", "passOptionalSequenceWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject9995( cx, "TestExampleInterface"
, "passOptionalSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9994 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject9995( cx, "TestExampleInterface"
, "passOptionalSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
9995 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject9995( cx, "TestExampleInterface"
, "passOptionalSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
9996
9997 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
9998 binding_detail::AutoSequence<int32_t> arg0;
9999 if (args.hasDefined(0)) {
10000 if (args[0].isObject()) {
10001 JS::ForOfIterator iter(cx);
10002 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10003 return false;
10004 }
10005 if (!iter.valueIsIterable()) {
10006 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10007 return false;
10008 }
10009 binding_detail::AutoSequence<int32_t> &arr = arg0;
10010 JS::Rooted<JS::Value> temp(cx);
10011 while (true) {
10012 bool done;
10013 if (!iter.next(&temp, &done)) {
10014 return false;
10015 }
10016 if (done) {
10017 break;
10018 }
10019 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
10020 if (!slotPtr) {
10021 JS_ReportOutOfMemory(cx);
10022 return false;
10023 }
10024 int32_t& slot = *slotPtr;
10025 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
10026 return false;
10027 }
10028 }
10029 } else {
10030 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10031 return false;
10032 }
10033 } else {
10034 /* arg0 array is already empty; nothing to do */
10035 }
10036 // NOTE: This assert does NOT call the function.
10037 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSequenceWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
10038 MOZ_KnownLive(self)(self)->PassOptionalSequenceWithDefaultValue(Constify(arg0));
10039 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10039); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10039; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10040 args.rval().setUndefined();
10041 return true;
10042}
10043
10044static const JSJitInfo passOptionalSequenceWithDefaultValue_methodinfo = {
10045 { (JSJitGetterOp)passOptionalSequenceWithDefaultValue },
10046 { prototypes::id::TestExampleInterface },
10047 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10048 JSJitInfo::Method,
10049 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10050 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10051 false, /* isInfallible. False in setters. */
10052 false, /* isMovable. Not relevant for setters. */
10053 false, /* isEliminatable. Not relevant for setters. */
10054 false, /* isAlwaysInSlot. Only relevant for getters. */
10055 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10056 false, /* isTypedMethod. Only relevant for methods. */
10057 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10058};
10059
10060MOZ_CAN_RUN_SCRIPT static bool
10061passOptionalNullableSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10062{
10063 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequence");
10064 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10067( cx, "TestExampleInterface"
, "passOptionalNullableSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10065 "TestExampleInterface", "passOptionalNullableSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10067( cx, "TestExampleInterface"
, "passOptionalNullableSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10066 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10067( cx, "TestExampleInterface"
, "passOptionalNullableSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10067 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10067( cx, "TestExampleInterface"
, "passOptionalNullableSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10068
10069 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10070 Optional<Nullable<Sequence<int32_t>>> arg0;
10071 if (args.hasDefined(0)) {
10072 arg0.Construct();
10073 if (args[0].isObject()) {
10074 JS::ForOfIterator iter(cx);
10075 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10076 return false;
10077 }
10078 if (!iter.valueIsIterable()) {
10079 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10080 return false;
10081 }
10082 Sequence<int32_t> &arr = arg0.Value().SetValue();
10083 JS::Rooted<JS::Value> temp(cx);
10084 while (true) {
10085 bool done;
10086 if (!iter.next(&temp, &done)) {
10087 return false;
10088 }
10089 if (done) {
10090 break;
10091 }
10092 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
10093 if (!slotPtr) {
10094 JS_ReportOutOfMemory(cx);
10095 return false;
10096 }
10097 int32_t& slot = *slotPtr;
10098 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
10099 return false;
10100 }
10101 }
10102 } else if (args[0].isNullOrUndefined()) {
10103 arg0.Value().SetNull();
10104 } else {
10105 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10106 return false;
10107 }
10108 }
10109 // NOTE: This assert does NOT call the function.
10110 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequence(Constify(arg0)))>, "Should be returning void here");
10111 MOZ_KnownLive(self)(self)->PassOptionalNullableSequence(Constify(arg0));
10112 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10112); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10112; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10113 args.rval().setUndefined();
10114 return true;
10115}
10116
10117static const JSJitInfo passOptionalNullableSequence_methodinfo = {
10118 { (JSJitGetterOp)passOptionalNullableSequence },
10119 { prototypes::id::TestExampleInterface },
10120 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10121 JSJitInfo::Method,
10122 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10123 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10124 false, /* isInfallible. False in setters. */
10125 false, /* isMovable. Not relevant for setters. */
10126 false, /* isEliminatable. Not relevant for setters. */
10127 false, /* isAlwaysInSlot. Only relevant for getters. */
10128 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10129 false, /* isTypedMethod. Only relevant for methods. */
10130 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10131};
10132
10133MOZ_CAN_RUN_SCRIPT static bool
10134passOptionalNullableSequenceWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10135{
10136 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceWithDefaultValue");
10137 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10140( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10138 "TestExampleInterface", "passOptionalNullableSequenceWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10140( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10139 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10140( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10140 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10140( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10141
10142 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10143 Nullable<Sequence<int32_t>> arg0;
10144 if (args.hasDefined(0)) {
10145 if (args[0].isObject()) {
10146 JS::ForOfIterator iter(cx);
10147 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10148 return false;
10149 }
10150 if (!iter.valueIsIterable()) {
10151 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10152 return false;
10153 }
10154 Sequence<int32_t> &arr = arg0.SetValue();
10155 JS::Rooted<JS::Value> temp(cx);
10156 while (true) {
10157 bool done;
10158 if (!iter.next(&temp, &done)) {
10159 return false;
10160 }
10161 if (done) {
10162 break;
10163 }
10164 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
10165 if (!slotPtr) {
10166 JS_ReportOutOfMemory(cx);
10167 return false;
10168 }
10169 int32_t& slot = *slotPtr;
10170 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
10171 return false;
10172 }
10173 }
10174 } else if (args[0].isNullOrUndefined()) {
10175 arg0.SetNull();
10176 } else {
10177 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10178 return false;
10179 }
10180 } else {
10181 arg0.SetNull();
10182 }
10183 // NOTE: This assert does NOT call the function.
10184 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
10185 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceWithDefaultValue(Constify(arg0));
10186 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10186); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10186; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10187 args.rval().setUndefined();
10188 return true;
10189}
10190
10191static const JSJitInfo passOptionalNullableSequenceWithDefaultValue_methodinfo = {
10192 { (JSJitGetterOp)passOptionalNullableSequenceWithDefaultValue },
10193 { prototypes::id::TestExampleInterface },
10194 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10195 JSJitInfo::Method,
10196 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10197 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10198 false, /* isInfallible. False in setters. */
10199 false, /* isMovable. Not relevant for setters. */
10200 false, /* isEliminatable. Not relevant for setters. */
10201 false, /* isAlwaysInSlot. Only relevant for getters. */
10202 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10203 false, /* isTypedMethod. Only relevant for methods. */
10204 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10205};
10206
10207MOZ_CAN_RUN_SCRIPT static bool
10208passOptionalNullableSequenceWithDefaultValue2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10209{
10210 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceWithDefaultValue2");
10211 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10214( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10212 "TestExampleInterface", "passOptionalNullableSequenceWithDefaultValue2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10214( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10213 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10214( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10214 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10214( cx, "TestExampleInterface"
, "passOptionalNullableSequenceWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10215
10216 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10217 Nullable<Sequence<int32_t>> arg0;
10218 if (args.hasDefined(0)) {
10219 if (args[0].isObject()) {
10220 JS::ForOfIterator iter(cx);
10221 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10222 return false;
10223 }
10224 if (!iter.valueIsIterable()) {
10225 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10226 return false;
10227 }
10228 Sequence<int32_t> &arr = arg0.SetValue();
10229 JS::Rooted<JS::Value> temp(cx);
10230 while (true) {
10231 bool done;
10232 if (!iter.next(&temp, &done)) {
10233 return false;
10234 }
10235 if (done) {
10236 break;
10237 }
10238 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
10239 if (!slotPtr) {
10240 JS_ReportOutOfMemory(cx);
10241 return false;
10242 }
10243 int32_t& slot = *slotPtr;
10244 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
10245 return false;
10246 }
10247 }
10248 } else if (args[0].isNullOrUndefined()) {
10249 arg0.SetNull();
10250 } else {
10251 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10252 return false;
10253 }
10254 } else {
10255 arg0.SetValue();
10256 }
10257 // NOTE: This assert does NOT call the function.
10258 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceWithDefaultValue2(Constify(arg0)))>, "Should be returning void here");
10259 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceWithDefaultValue2(Constify(arg0));
10260 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10260); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10260; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10261 args.rval().setUndefined();
10262 return true;
10263}
10264
10265static const JSJitInfo passOptionalNullableSequenceWithDefaultValue2_methodinfo = {
10266 { (JSJitGetterOp)passOptionalNullableSequenceWithDefaultValue2 },
10267 { prototypes::id::TestExampleInterface },
10268 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10269 JSJitInfo::Method,
10270 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10271 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10272 false, /* isInfallible. False in setters. */
10273 false, /* isMovable. Not relevant for setters. */
10274 false, /* isEliminatable. Not relevant for setters. */
10275 false, /* isAlwaysInSlot. Only relevant for getters. */
10276 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10277 false, /* isTypedMethod. Only relevant for methods. */
10278 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10279};
10280
10281MOZ_CAN_RUN_SCRIPT static bool
10282passOptionalObjectSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10283{
10284 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalObjectSequence");
10285 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10288( cx, "TestExampleInterface"
, "passOptionalObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10286 "TestExampleInterface", "passOptionalObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10288( cx, "TestExampleInterface"
, "passOptionalObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10287 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10288( cx, "TestExampleInterface"
, "passOptionalObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10288 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10288( cx, "TestExampleInterface"
, "passOptionalObjectSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10289
10290 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10291 Optional<Sequence<OwningNonNull<mozilla::dom::TestInterface>>> arg0;
10292 if (args.hasDefined(0)) {
10293 arg0.Construct();
10294 if (args[0].isObject()) {
10295 JS::ForOfIterator iter(cx);
10296 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10297 return false;
10298 }
10299 if (!iter.valueIsIterable()) {
10300 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10301 return false;
10302 }
10303 Sequence<OwningNonNull<mozilla::dom::TestInterface>> &arr = arg0.Value();
10304 JS::Rooted<JS::Value> temp(cx);
10305 while (true) {
10306 bool done;
10307 if (!iter.next(&temp, &done)) {
10308 return false;
10309 }
10310 if (done) {
10311 break;
10312 }
10313 OwningNonNull<mozilla::dom::TestInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
10314 if (!slotPtr) {
10315 JS_ReportOutOfMemory(cx);
10316 return false;
10317 }
10318 OwningNonNull<mozilla::dom::TestInterface>& slot = *slotPtr;
10319 if (temp.isObject()) {
10320 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
10321 {
10322 // Our JSContext should be in the right global to do unwrapping in.
10323 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
10324 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
10325 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestInterface");
10326 return false;
10327 }
10328 }
10329 } else {
10330 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
10331 return false;
10332 }
10333 }
10334 } else {
10335 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10336 return false;
10337 }
10338 }
10339 // NOTE: This assert does NOT call the function.
10340 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalObjectSequence(Constify(arg0)))>, "Should be returning void here");
10341 MOZ_KnownLive(self)(self)->PassOptionalObjectSequence(Constify(arg0));
10342 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10342); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10342; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10343 args.rval().setUndefined();
10344 return true;
10345}
10346
10347static const JSJitInfo passOptionalObjectSequence_methodinfo = {
10348 { (JSJitGetterOp)passOptionalObjectSequence },
10349 { prototypes::id::TestExampleInterface },
10350 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10351 JSJitInfo::Method,
10352 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10353 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10354 false, /* isInfallible. False in setters. */
10355 false, /* isMovable. Not relevant for setters. */
10356 false, /* isEliminatable. Not relevant for setters. */
10357 false, /* isAlwaysInSlot. Only relevant for getters. */
10358 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10359 false, /* isTypedMethod. Only relevant for methods. */
10360 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10361};
10362
10363MOZ_CAN_RUN_SCRIPT static bool
10364passExternalInterfaceSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10365{
10366 BindingCallContext cx(cx_, "TestExampleInterface.passExternalInterfaceSequence");
10367 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10370( cx, "TestExampleInterface"
, "passExternalInterfaceSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10368 "TestExampleInterface", "passExternalInterfaceSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10370( cx, "TestExampleInterface"
, "passExternalInterfaceSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10369 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10370( cx, "TestExampleInterface"
, "passExternalInterfaceSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10370 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10370( cx, "TestExampleInterface"
, "passExternalInterfaceSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10371
10372 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10373 if (!args.requireAtLeast(cx, "TestExampleInterface.passExternalInterfaceSequence", 1)) {
10374 return false;
10375 }
10376 binding_detail::AutoSequence<RefPtr<mozilla::dom::TestExternalInterface>> arg0;
10377 if (args[0].isObject()) {
10378 JS::ForOfIterator iter(cx);
10379 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10380 return false;
10381 }
10382 if (!iter.valueIsIterable()) {
10383 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10384 return false;
10385 }
10386 binding_detail::AutoSequence<RefPtr<mozilla::dom::TestExternalInterface>> &arr = arg0;
10387 JS::Rooted<JS::Value> temp(cx);
10388 while (true) {
10389 bool done;
10390 if (!iter.next(&temp, &done)) {
10391 return false;
10392 }
10393 if (done) {
10394 break;
10395 }
10396 RefPtr<mozilla::dom::TestExternalInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
10397 if (!slotPtr) {
10398 JS_ReportOutOfMemory(cx);
10399 return false;
10400 }
10401 RefPtr<mozilla::dom::TestExternalInterface>& slot = *slotPtr;
10402 if (temp.isObject()) {
10403 static_assert(IsRefcounted<mozilla::dom::TestExternalInterface>::value, "We can only store refcounted classes.");
10404 RefPtr<mozilla::dom::TestExternalInterface> tempHolder;
10405 JS::Rooted<JSObject*> source(cx, &temp.toObject());
10406 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder
)))), 0)))
) {
10407 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestExternalInterface");
10408 return false;
10409 }
10410 MOZ_ASSERT(tempHolder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(tempHolder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(tempHolder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("tempHolder", "../TestExampleGenBinding.cpp"
, 10410); AnnotateMozCrashReason("MOZ_ASSERT" "(" "tempHolder"
")"); do { *((volatile int*)__null) = 10410; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
10411 slot = tempHolder;
10412 } else {
10413 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
10414 return false;
10415 }
10416 }
10417 } else {
10418 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10419 return false;
10420 }
10421 // NOTE: This assert does NOT call the function.
10422 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassExternalInterfaceSequence(Constify(arg0)))>, "Should be returning void here");
10423 MOZ_KnownLive(self)(self)->PassExternalInterfaceSequence(Constify(arg0));
10424 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10424); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10424; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10425 args.rval().setUndefined();
10426 return true;
10427}
10428
10429static const JSJitInfo passExternalInterfaceSequence_methodinfo = {
10430 { (JSJitGetterOp)passExternalInterfaceSequence },
10431 { prototypes::id::TestExampleInterface },
10432 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10433 JSJitInfo::Method,
10434 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10435 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10436 false, /* isInfallible. False in setters. */
10437 false, /* isMovable. Not relevant for setters. */
10438 false, /* isEliminatable. Not relevant for setters. */
10439 false, /* isAlwaysInSlot. Only relevant for getters. */
10440 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10441 false, /* isTypedMethod. Only relevant for methods. */
10442 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10443};
10444
10445MOZ_CAN_RUN_SCRIPT static bool
10446passNullableExternalInterfaceSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10447{
10448 BindingCallContext cx(cx_, "TestExampleInterface.passNullableExternalInterfaceSequence");
10449 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10452( cx, "TestExampleInterface"
, "passNullableExternalInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10450 "TestExampleInterface", "passNullableExternalInterfaceSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10452( cx, "TestExampleInterface"
, "passNullableExternalInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10451 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10452( cx, "TestExampleInterface"
, "passNullableExternalInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10452 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10452( cx, "TestExampleInterface"
, "passNullableExternalInterfaceSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10453
10454 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10455 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableExternalInterfaceSequence", 1)) {
10456 return false;
10457 }
10458 binding_detail::AutoSequence<RefPtr<mozilla::dom::TestExternalInterface>> arg0;
10459 if (args[0].isObject()) {
10460 JS::ForOfIterator iter(cx);
10461 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10462 return false;
10463 }
10464 if (!iter.valueIsIterable()) {
10465 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10466 return false;
10467 }
10468 binding_detail::AutoSequence<RefPtr<mozilla::dom::TestExternalInterface>> &arr = arg0;
10469 JS::Rooted<JS::Value> temp(cx);
10470 while (true) {
10471 bool done;
10472 if (!iter.next(&temp, &done)) {
10473 return false;
10474 }
10475 if (done) {
10476 break;
10477 }
10478 RefPtr<mozilla::dom::TestExternalInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
10479 if (!slotPtr) {
10480 JS_ReportOutOfMemory(cx);
10481 return false;
10482 }
10483 RefPtr<mozilla::dom::TestExternalInterface>& slot = *slotPtr;
10484 if (temp.isObject()) {
10485 static_assert(IsRefcounted<mozilla::dom::TestExternalInterface>::value, "We can only store refcounted classes.");
10486 RefPtr<mozilla::dom::TestExternalInterface> tempHolder;
10487 JS::Rooted<JSObject*> source(cx, &temp.toObject());
10488 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder
)))), 0)))
) {
10489 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "TestExternalInterface");
10490 return false;
10491 }
10492 MOZ_ASSERT(tempHolder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(tempHolder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(tempHolder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("tempHolder", "../TestExampleGenBinding.cpp"
, 10492); AnnotateMozCrashReason("MOZ_ASSERT" "(" "tempHolder"
")"); do { *((volatile int*)__null) = 10492; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
10493 slot = tempHolder;
10494 } else if (temp.isNullOrUndefined()) {
10495 slot = nullptr;
10496 } else {
10497 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
10498 return false;
10499 }
10500 }
10501 } else {
10502 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10503 return false;
10504 }
10505 // NOTE: This assert does NOT call the function.
10506 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableExternalInterfaceSequence(Constify(arg0)))>, "Should be returning void here");
10507 MOZ_KnownLive(self)(self)->PassNullableExternalInterfaceSequence(Constify(arg0));
10508 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10508); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10508; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10509 args.rval().setUndefined();
10510 return true;
10511}
10512
10513static const JSJitInfo passNullableExternalInterfaceSequence_methodinfo = {
10514 { (JSJitGetterOp)passNullableExternalInterfaceSequence },
10515 { prototypes::id::TestExampleInterface },
10516 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10517 JSJitInfo::Method,
10518 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10519 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10520 false, /* isInfallible. False in setters. */
10521 false, /* isMovable. Not relevant for setters. */
10522 false, /* isEliminatable. Not relevant for setters. */
10523 false, /* isAlwaysInSlot. Only relevant for getters. */
10524 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10525 false, /* isTypedMethod. Only relevant for methods. */
10526 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10527};
10528
10529MOZ_CAN_RUN_SCRIPT static bool
10530receiveStringSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10531{
10532 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10535( cx, "TestExampleInterface"
, "receiveStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10533 "TestExampleInterface", "receiveStringSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10535( cx, "TestExampleInterface"
, "receiveStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10534 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10535( cx, "TestExampleInterface"
, "receiveStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10535 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10535( cx, "TestExampleInterface"
, "receiveStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
10536
10537 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10538 nsTArray<nsString> result;
10539 // NOTE: This assert does NOT call the function.
10540 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveStringSequence(result))>, "Should be returning void here");
10541 MOZ_KnownLive(self)(self)->ReceiveStringSequence(result);
10542 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10542); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10542; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10543
10544 uint32_t length = result.Length();
10545 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
10546 if (!returnArray) {
10547 return false;
10548 }
10549 // Scope for 'tmp'
10550 {
10551 JS::Rooted<JS::Value> tmp(cx);
10552 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
10553 // Control block to let us common up the JS_DefineElement calls when there
10554 // are different ways to succeed at wrapping the object.
10555 do {
10556 if (!xpc::NonVoidStringToJsval(cx, result[sequenceIdx0], &tmp)) {
10557 return false;
10558 }
10559 break;
10560 } while (false);
10561 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
10562 JSPROP_ENUMERATE)) {
10563 return false;
10564 }
10565 }
10566 }
10567 args.rval().setObject(*returnArray);
10568 return true;
10569}
10570
10571static const JSJitInfo receiveStringSequence_methodinfo = {
10572 { (JSJitGetterOp)receiveStringSequence },
10573 { prototypes::id::TestExampleInterface },
10574 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10575 JSJitInfo::Method,
10576 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10577 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
10578 false, /* isInfallible. False in setters. */
10579 false, /* isMovable. Not relevant for setters. */
10580 false, /* isEliminatable. Not relevant for setters. */
10581 false, /* isAlwaysInSlot. Only relevant for getters. */
10582 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10583 false, /* isTypedMethod. Only relevant for methods. */
10584 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10585};
10586
10587MOZ_CAN_RUN_SCRIPT static bool
10588passStringSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10589{
10590 BindingCallContext cx(cx_, "TestExampleInterface.passStringSequence");
10591 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10594( cx, "TestExampleInterface"
, "passStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10592 "TestExampleInterface", "passStringSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10594( cx, "TestExampleInterface"
, "passStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10593 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10594( cx, "TestExampleInterface"
, "passStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10594 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10594( cx, "TestExampleInterface"
, "passStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
10595
10596 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10597 if (!args.requireAtLeast(cx, "TestExampleInterface.passStringSequence", 1)) {
10598 return false;
10599 }
10600 binding_detail::AutoSequence<nsString> arg0;
10601 if (args[0].isObject()) {
10602 JS::ForOfIterator iter(cx);
10603 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10604 return false;
10605 }
10606 if (!iter.valueIsIterable()) {
10607 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10608 return false;
10609 }
10610 binding_detail::AutoSequence<nsString> &arr = arg0;
10611 JS::Rooted<JS::Value> temp(cx);
10612 while (true) {
10613 bool done;
10614 if (!iter.next(&temp, &done)) {
10615 return false;
10616 }
10617 if (done) {
10618 break;
10619 }
10620 nsString* slotPtr = arr.AppendElement(mozilla::fallible);
10621 if (!slotPtr) {
10622 JS_ReportOutOfMemory(cx);
10623 return false;
10624 }
10625 nsString& slot = *slotPtr;
10626 if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
10627 return false;
10628 }
10629 }
10630 } else {
10631 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10632 return false;
10633 }
10634 // NOTE: This assert does NOT call the function.
10635 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassStringSequence(Constify(arg0)))>, "Should be returning void here");
10636 MOZ_KnownLive(self)(self)->PassStringSequence(Constify(arg0));
10637 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10637); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10637; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10638 args.rval().setUndefined();
10639 return true;
10640}
10641
10642static const JSJitInfo passStringSequence_methodinfo = {
10643 { (JSJitGetterOp)passStringSequence },
10644 { prototypes::id::TestExampleInterface },
10645 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10646 JSJitInfo::Method,
10647 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10648 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10649 false, /* isInfallible. False in setters. */
10650 false, /* isMovable. Not relevant for setters. */
10651 false, /* isEliminatable. Not relevant for setters. */
10652 false, /* isAlwaysInSlot. Only relevant for getters. */
10653 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10654 false, /* isTypedMethod. Only relevant for methods. */
10655 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10656};
10657
10658MOZ_CAN_RUN_SCRIPT static bool
10659receiveByteStringSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10660{
10661 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10664( cx, "TestExampleInterface"
, "receiveByteStringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10662 "TestExampleInterface", "receiveByteStringSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10664( cx, "TestExampleInterface"
, "receiveByteStringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10663 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10664( cx, "TestExampleInterface"
, "receiveByteStringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10664 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10664( cx, "TestExampleInterface"
, "receiveByteStringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10665
10666 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10667 nsTArray<nsCString> result;
10668 // NOTE: This assert does NOT call the function.
10669 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveByteStringSequence(result))>, "Should be returning void here");
10670 MOZ_KnownLive(self)(self)->ReceiveByteStringSequence(result);
10671 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10671); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10671; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10672
10673 uint32_t length = result.Length();
10674 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
10675 if (!returnArray) {
10676 return false;
10677 }
10678 // Scope for 'tmp'
10679 {
10680 JS::Rooted<JS::Value> tmp(cx);
10681 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
10682 // Control block to let us common up the JS_DefineElement calls when there
10683 // are different ways to succeed at wrapping the object.
10684 do {
10685 if (!NonVoidByteStringToJsval(cx, result[sequenceIdx0], &tmp)) {
10686 return false;
10687 }
10688 break;
10689 } while (false);
10690 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
10691 JSPROP_ENUMERATE)) {
10692 return false;
10693 }
10694 }
10695 }
10696 args.rval().setObject(*returnArray);
10697 return true;
10698}
10699
10700static const JSJitInfo receiveByteStringSequence_methodinfo = {
10701 { (JSJitGetterOp)receiveByteStringSequence },
10702 { prototypes::id::TestExampleInterface },
10703 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10704 JSJitInfo::Method,
10705 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10706 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
10707 false, /* isInfallible. False in setters. */
10708 false, /* isMovable. Not relevant for setters. */
10709 false, /* isEliminatable. Not relevant for setters. */
10710 false, /* isAlwaysInSlot. Only relevant for getters. */
10711 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10712 false, /* isTypedMethod. Only relevant for methods. */
10713 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10714};
10715
10716MOZ_CAN_RUN_SCRIPT static bool
10717passByteStringSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10718{
10719 BindingCallContext cx(cx_, "TestExampleInterface.passByteStringSequence");
10720 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10723( cx, "TestExampleInterface"
, "passByteStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10721 "TestExampleInterface", "passByteStringSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10723( cx, "TestExampleInterface"
, "passByteStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10722 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10723( cx, "TestExampleInterface"
, "passByteStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10723 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10723( cx, "TestExampleInterface"
, "passByteStringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
10724
10725 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10726 if (!args.requireAtLeast(cx, "TestExampleInterface.passByteStringSequence", 1)) {
10727 return false;
10728 }
10729 binding_detail::AutoSequence<nsCString> arg0;
10730 if (args[0].isObject()) {
10731 JS::ForOfIterator iter(cx);
10732 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10733 return false;
10734 }
10735 if (!iter.valueIsIterable()) {
10736 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10737 return false;
10738 }
10739 binding_detail::AutoSequence<nsCString> &arr = arg0;
10740 JS::Rooted<JS::Value> temp(cx);
10741 while (true) {
10742 bool done;
10743 if (!iter.next(&temp, &done)) {
10744 return false;
10745 }
10746 if (done) {
10747 break;
10748 }
10749 nsCString* slotPtr = arr.AppendElement(mozilla::fallible);
10750 if (!slotPtr) {
10751 JS_ReportOutOfMemory(cx);
10752 return false;
10753 }
10754 nsCString& slot = *slotPtr;
10755 if (!ConvertJSValueToByteString(cx, temp, false, "element of argument 1", slot)) {
10756 return false;
10757 }
10758 }
10759 } else {
10760 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10761 return false;
10762 }
10763 // NOTE: This assert does NOT call the function.
10764 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassByteStringSequence(Constify(arg0)))>, "Should be returning void here");
10765 MOZ_KnownLive(self)(self)->PassByteStringSequence(Constify(arg0));
10766 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10766); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10766; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10767 args.rval().setUndefined();
10768 return true;
10769}
10770
10771static const JSJitInfo passByteStringSequence_methodinfo = {
10772 { (JSJitGetterOp)passByteStringSequence },
10773 { prototypes::id::TestExampleInterface },
10774 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10775 JSJitInfo::Method,
10776 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10777 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10778 false, /* isInfallible. False in setters. */
10779 false, /* isMovable. Not relevant for setters. */
10780 false, /* isEliminatable. Not relevant for setters. */
10781 false, /* isAlwaysInSlot. Only relevant for getters. */
10782 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10783 false, /* isTypedMethod. Only relevant for methods. */
10784 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10785};
10786
10787MOZ_CAN_RUN_SCRIPT static bool
10788receiveUTF8StringSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10789{
10790 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10793( cx, "TestExampleInterface"
, "receiveUTF8StringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10791 "TestExampleInterface", "receiveUTF8StringSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10793( cx, "TestExampleInterface"
, "receiveUTF8StringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10792 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10793( cx, "TestExampleInterface"
, "receiveUTF8StringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10793 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10793( cx, "TestExampleInterface"
, "receiveUTF8StringSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10794
10795 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10796 nsTArray<nsCString> result;
10797 // NOTE: This assert does NOT call the function.
10798 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUTF8StringSequence(result))>, "Should be returning void here");
10799 MOZ_KnownLive(self)(self)->ReceiveUTF8StringSequence(result);
10800 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10800); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10800; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10801
10802 uint32_t length = result.Length();
10803 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
10804 if (!returnArray) {
10805 return false;
10806 }
10807 // Scope for 'tmp'
10808 {
10809 JS::Rooted<JS::Value> tmp(cx);
10810 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
10811 // Control block to let us common up the JS_DefineElement calls when there
10812 // are different ways to succeed at wrapping the object.
10813 do {
10814 if (!NonVoidUTF8StringToJsval(cx, result[sequenceIdx0], &tmp)) {
10815 return false;
10816 }
10817 break;
10818 } while (false);
10819 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
10820 JSPROP_ENUMERATE)) {
10821 return false;
10822 }
10823 }
10824 }
10825 args.rval().setObject(*returnArray);
10826 return true;
10827}
10828
10829static const JSJitInfo receiveUTF8StringSequence_methodinfo = {
10830 { (JSJitGetterOp)receiveUTF8StringSequence },
10831 { prototypes::id::TestExampleInterface },
10832 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10833 JSJitInfo::Method,
10834 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10835 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
10836 false, /* isInfallible. False in setters. */
10837 false, /* isMovable. Not relevant for setters. */
10838 false, /* isEliminatable. Not relevant for setters. */
10839 false, /* isAlwaysInSlot. Only relevant for getters. */
10840 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10841 false, /* isTypedMethod. Only relevant for methods. */
10842 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10843};
10844
10845MOZ_CAN_RUN_SCRIPT static bool
10846passUTF8StringSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10847{
10848 BindingCallContext cx(cx_, "TestExampleInterface.passUTF8StringSequence");
10849 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10852( cx, "TestExampleInterface"
, "passUTF8StringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10850 "TestExampleInterface", "passUTF8StringSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10852( cx, "TestExampleInterface"
, "passUTF8StringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10851 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10852( cx, "TestExampleInterface"
, "passUTF8StringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10852 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10852( cx, "TestExampleInterface"
, "passUTF8StringSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
10853
10854 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10855 if (!args.requireAtLeast(cx, "TestExampleInterface.passUTF8StringSequence", 1)) {
10856 return false;
10857 }
10858 binding_detail::AutoSequence<nsCString> arg0;
10859 if (args[0].isObject()) {
10860 JS::ForOfIterator iter(cx);
10861 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
10862 return false;
10863 }
10864 if (!iter.valueIsIterable()) {
10865 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10866 return false;
10867 }
10868 binding_detail::AutoSequence<nsCString> &arr = arg0;
10869 JS::Rooted<JS::Value> temp(cx);
10870 while (true) {
10871 bool done;
10872 if (!iter.next(&temp, &done)) {
10873 return false;
10874 }
10875 if (done) {
10876 break;
10877 }
10878 nsCString* slotPtr = arr.AppendElement(mozilla::fallible);
10879 if (!slotPtr) {
10880 JS_ReportOutOfMemory(cx);
10881 return false;
10882 }
10883 nsCString& slot = *slotPtr;
10884 if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
10885 return false;
10886 }
10887 }
10888 } else {
10889 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
10890 return false;
10891 }
10892 // NOTE: This assert does NOT call the function.
10893 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUTF8StringSequence(Constify(arg0)))>, "Should be returning void here");
10894 MOZ_KnownLive(self)(self)->PassUTF8StringSequence(Constify(arg0));
10895 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10895); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10895; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10896 args.rval().setUndefined();
10897 return true;
10898}
10899
10900static const JSJitInfo passUTF8StringSequence_methodinfo = {
10901 { (JSJitGetterOp)passUTF8StringSequence },
10902 { prototypes::id::TestExampleInterface },
10903 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10904 JSJitInfo::Method,
10905 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10906 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10907 false, /* isInfallible. False in setters. */
10908 false, /* isMovable. Not relevant for setters. */
10909 false, /* isEliminatable. Not relevant for setters. */
10910 false, /* isAlwaysInSlot. Only relevant for getters. */
10911 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10912 false, /* isTypedMethod. Only relevant for methods. */
10913 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10914};
10915
10916MOZ_CAN_RUN_SCRIPT static bool
10917receiveAnySequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10918{
10919 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10922( cx, "TestExampleInterface"
, "receiveAnySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10920 "TestExampleInterface", "receiveAnySequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10922( cx, "TestExampleInterface"
, "receiveAnySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10921 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10922( cx, "TestExampleInterface"
, "receiveAnySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
10922 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10922( cx, "TestExampleInterface"
, "receiveAnySequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
10923
10924 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10925 nsTArray<JS::Value> result;
10926 SequenceRooter<JS::Value > resultRooter(cx, &result);
10927 // NOTE: This assert does NOT call the function.
10928 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveAnySequence(cx, result))>, "Should be returning void here");
10929 MOZ_KnownLive(self)(self)->ReceiveAnySequence(cx, result);
10930 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10930); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10930; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10931
10932 uint32_t length = result.Length();
10933 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
10934 if (!returnArray) {
10935 return false;
10936 }
10937 // Scope for 'tmp'
10938 {
10939 JS::Rooted<JS::Value> tmp(cx);
10940 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
10941 // Control block to let us common up the JS_DefineElement calls when there
10942 // are different ways to succeed at wrapping the object.
10943 do {
10944 JS::ExposeValueToActiveJS(result[sequenceIdx0]);
10945 tmp.set(result[sequenceIdx0]);
10946 if (!MaybeWrapValue(cx, &tmp)) {
10947 return false;
10948 }
10949 break;
10950 } while (false);
10951 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
10952 JSPROP_ENUMERATE)) {
10953 return false;
10954 }
10955 }
10956 }
10957 args.rval().setObject(*returnArray);
10958 return true;
10959}
10960
10961static const JSJitInfo receiveAnySequence_methodinfo = {
10962 { (JSJitGetterOp)receiveAnySequence },
10963 { prototypes::id::TestExampleInterface },
10964 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
10965 JSJitInfo::Method,
10966 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10967 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
10968 false, /* isInfallible. False in setters. */
10969 false, /* isMovable. Not relevant for setters. */
10970 false, /* isEliminatable. Not relevant for setters. */
10971 false, /* isAlwaysInSlot. Only relevant for getters. */
10972 false, /* isLazilyCachedInSlot. Only relevant for getters. */
10973 false, /* isTypedMethod. Only relevant for methods. */
10974 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10975};
10976
10977MOZ_CAN_RUN_SCRIPT static bool
10978receiveNullableAnySequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
10979{
10980 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject10983( cx, "TestExampleInterface"
, "receiveNullableAnySequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10981 "TestExampleInterface", "receiveNullableAnySequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject10983( cx, "TestExampleInterface"
, "receiveNullableAnySequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10982 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject10983( cx, "TestExampleInterface"
, "receiveNullableAnySequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
10983 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject10983( cx, "TestExampleInterface"
, "receiveNullableAnySequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
10984
10985 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
10986 Nullable<nsTArray<JS::Value>> result;
10987 SequenceRooter<JS::Value > resultRooter(cx, &result);
10988 // NOTE: This assert does NOT call the function.
10989 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableAnySequence(cx, result))>, "Should be returning void here");
10990 MOZ_KnownLive(self)(self)->ReceiveNullableAnySequence(cx, result);
10991 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 10991); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 10991; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
10992
10993 if (result.IsNull()) {
10994 args.rval().setNull();
10995 return true;
10996 }
10997
10998 uint32_t length = result.Value().Length();
10999 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
11000 if (!returnArray) {
11001 return false;
11002 }
11003 // Scope for 'tmp'
11004 {
11005 JS::Rooted<JS::Value> tmp(cx);
11006 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
11007 // Control block to let us common up the JS_DefineElement calls when there
11008 // are different ways to succeed at wrapping the object.
11009 do {
11010 JS::ExposeValueToActiveJS(result.Value()[sequenceIdx0]);
11011 tmp.set(result.Value()[sequenceIdx0]);
11012 if (!MaybeWrapValue(cx, &tmp)) {
11013 return false;
11014 }
11015 break;
11016 } while (false);
11017 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
11018 JSPROP_ENUMERATE)) {
11019 return false;
11020 }
11021 }
11022 }
11023 args.rval().setObject(*returnArray);
11024 return true;
11025}
11026
11027static const JSJitInfo receiveNullableAnySequence_methodinfo = {
11028 { (JSJitGetterOp)receiveNullableAnySequence },
11029 { prototypes::id::TestExampleInterface },
11030 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11031 JSJitInfo::Method,
11032 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11033 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11034 false, /* isInfallible. False in setters. */
11035 false, /* isMovable. Not relevant for setters. */
11036 false, /* isEliminatable. Not relevant for setters. */
11037 false, /* isAlwaysInSlot. Only relevant for getters. */
11038 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11039 false, /* isTypedMethod. Only relevant for methods. */
11040 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11041};
11042
11043MOZ_CAN_RUN_SCRIPT static bool
11044receiveObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11045{
11046 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11049( cx, "TestExampleInterface"
, "receiveObjectSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11047 "TestExampleInterface", "receiveObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11049( cx, "TestExampleInterface"
, "receiveObjectSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11048 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11049( cx, "TestExampleInterface"
, "receiveObjectSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11049 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11049( cx, "TestExampleInterface"
, "receiveObjectSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
11050
11051 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11052 nsTArray<JSObject*> result;
11053 SequenceRooter<JSObject* > resultRooter(cx, &result);
11054 // NOTE: This assert does NOT call the function.
11055 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveObjectSequence(cx, result))>, "Should be returning void here");
11056 MOZ_KnownLive(self)(self)->ReceiveObjectSequence(cx, result);
11057 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11057); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11057; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11058
11059 uint32_t length = result.Length();
11060 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
11061 if (!returnArray) {
11062 return false;
11063 }
11064 // Scope for 'tmp'
11065 {
11066 JS::Rooted<JS::Value> tmp(cx);
11067 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
11068 // Control block to let us common up the JS_DefineElement calls when there
11069 // are different ways to succeed at wrapping the object.
11070 do {
11071 JS::ExposeObjectToActiveJS(result[sequenceIdx0]);
11072 tmp.setObject(*result[sequenceIdx0]);
11073 if (!MaybeWrapObjectValue(cx, &tmp)) {
11074 return false;
11075 }
11076 break;
11077 } while (false);
11078 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
11079 JSPROP_ENUMERATE)) {
11080 return false;
11081 }
11082 }
11083 }
11084 args.rval().setObject(*returnArray);
11085 return true;
11086}
11087
11088static const JSJitInfo receiveObjectSequence_methodinfo = {
11089 { (JSJitGetterOp)receiveObjectSequence },
11090 { prototypes::id::TestExampleInterface },
11091 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11092 JSJitInfo::Method,
11093 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11094 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
11095 false, /* isInfallible. False in setters. */
11096 false, /* isMovable. Not relevant for setters. */
11097 false, /* isEliminatable. Not relevant for setters. */
11098 false, /* isAlwaysInSlot. Only relevant for getters. */
11099 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11100 false, /* isTypedMethod. Only relevant for methods. */
11101 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11102};
11103
11104MOZ_CAN_RUN_SCRIPT static bool
11105receiveNullableObjectSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11106{
11107 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11110( cx, "TestExampleInterface"
, "receiveNullableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11108 "TestExampleInterface", "receiveNullableObjectSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11110( cx, "TestExampleInterface"
, "receiveNullableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11109 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11110( cx, "TestExampleInterface"
, "receiveNullableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11110 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11110( cx, "TestExampleInterface"
, "receiveNullableObjectSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
11111
11112 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11113 nsTArray<JSObject*> result;
11114 SequenceRooter<JSObject* > resultRooter(cx, &result);
11115 // NOTE: This assert does NOT call the function.
11116 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableObjectSequence(cx, result))>, "Should be returning void here");
11117 MOZ_KnownLive(self)(self)->ReceiveNullableObjectSequence(cx, result);
11118 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11118); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11118; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11119
11120 uint32_t length = result.Length();
11121 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
11122 if (!returnArray) {
11123 return false;
11124 }
11125 // Scope for 'tmp'
11126 {
11127 JS::Rooted<JS::Value> tmp(cx);
11128 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
11129 // Control block to let us common up the JS_DefineElement calls when there
11130 // are different ways to succeed at wrapping the object.
11131 do {
11132 if (result[sequenceIdx0]) {
11133 JS::ExposeObjectToActiveJS(result[sequenceIdx0]);
11134 }
11135 tmp.setObjectOrNull(result[sequenceIdx0]);
11136 if (!MaybeWrapObjectOrNullValue(cx, &tmp)) {
11137 return false;
11138 }
11139 break;
11140 } while (false);
11141 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
11142 JSPROP_ENUMERATE)) {
11143 return false;
11144 }
11145 }
11146 }
11147 args.rval().setObject(*returnArray);
11148 return true;
11149}
11150
11151static const JSJitInfo receiveNullableObjectSequence_methodinfo = {
11152 { (JSJitGetterOp)receiveNullableObjectSequence },
11153 { prototypes::id::TestExampleInterface },
11154 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11155 JSJitInfo::Method,
11156 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11157 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
11158 false, /* isInfallible. False in setters. */
11159 false, /* isMovable. Not relevant for setters. */
11160 false, /* isEliminatable. Not relevant for setters. */
11161 false, /* isAlwaysInSlot. Only relevant for getters. */
11162 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11163 false, /* isTypedMethod. Only relevant for methods. */
11164 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11165};
11166
11167MOZ_CAN_RUN_SCRIPT static bool
11168passSequenceOfSequences(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11169{
11170 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfSequences");
11171 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11174( cx, "TestExampleInterface"
, "passSequenceOfSequences", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11172 "TestExampleInterface", "passSequenceOfSequences", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11174( cx, "TestExampleInterface"
, "passSequenceOfSequences", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11173 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11174( cx, "TestExampleInterface"
, "passSequenceOfSequences", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11174 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11174( cx, "TestExampleInterface"
, "passSequenceOfSequences", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
11175
11176 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11177 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfSequences", 1)) {
11178 return false;
11179 }
11180 binding_detail::AutoSequence<Sequence<int32_t>> arg0;
11181 if (args[0].isObject()) {
11182 JS::ForOfIterator iter(cx);
11183 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
11184 return false;
11185 }
11186 if (!iter.valueIsIterable()) {
11187 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
11188 return false;
11189 }
11190 binding_detail::AutoSequence<Sequence<int32_t>> &arr = arg0;
11191 JS::Rooted<JS::Value> temp(cx);
11192 while (true) {
11193 bool done;
11194 if (!iter.next(&temp, &done)) {
11195 return false;
11196 }
11197 if (done) {
11198 break;
11199 }
11200 Sequence<int32_t>* slotPtr = arr.AppendElement(mozilla::fallible);
11201 if (!slotPtr) {
11202 JS_ReportOutOfMemory(cx);
11203 return false;
11204 }
11205 Sequence<int32_t>& slot = *slotPtr;
11206 if (temp.isObject()) {
11207 JS::ForOfIterator iter1(cx);
11208 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
11209 return false;
11210 }
11211 if (!iter1.valueIsIterable()) {
11212 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
11213 return false;
11214 }
11215 Sequence<int32_t> &arr1 = slot;
11216 JS::Rooted<JS::Value> temp1(cx);
11217 while (true) {
11218 bool done1;
11219 if (!iter1.next(&temp1, &done1)) {
11220 return false;
11221 }
11222 if (done1) {
11223 break;
11224 }
11225 int32_t* slotPtr1 = arr1.AppendElement(mozilla::fallible);
11226 if (!slotPtr1) {
11227 JS_ReportOutOfMemory(cx);
11228 return false;
11229 }
11230 int32_t& slot1 = *slotPtr1;
11231 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp1, "Element of element of argument 1", &slot1)) {
11232 return false;
11233 }
11234 }
11235 } else {
11236 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
11237 return false;
11238 }
11239 }
11240 } else {
11241 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
11242 return false;
11243 }
11244 // NOTE: This assert does NOT call the function.
11245 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfSequences(Constify(arg0)))>, "Should be returning void here");
11246 MOZ_KnownLive(self)(self)->PassSequenceOfSequences(Constify(arg0));
11247 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11247); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11247; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11248 args.rval().setUndefined();
11249 return true;
11250}
11251
11252static const JSJitInfo passSequenceOfSequences_methodinfo = {
11253 { (JSJitGetterOp)passSequenceOfSequences },
11254 { prototypes::id::TestExampleInterface },
11255 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11256 JSJitInfo::Method,
11257 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11258 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11259 false, /* isInfallible. False in setters. */
11260 false, /* isMovable. Not relevant for setters. */
11261 false, /* isEliminatable. Not relevant for setters. */
11262 false, /* isAlwaysInSlot. Only relevant for getters. */
11263 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11264 false, /* isTypedMethod. Only relevant for methods. */
11265 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11266};
11267
11268MOZ_CAN_RUN_SCRIPT static bool
11269passSequenceOfSequencesOfSequences(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11270{
11271 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfSequencesOfSequences");
11272 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11275( cx, "TestExampleInterface"
, "passSequenceOfSequencesOfSequences", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11273 "TestExampleInterface", "passSequenceOfSequencesOfSequences", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11275( cx, "TestExampleInterface"
, "passSequenceOfSequencesOfSequences", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11274 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11275( cx, "TestExampleInterface"
, "passSequenceOfSequencesOfSequences", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11275 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11275( cx, "TestExampleInterface"
, "passSequenceOfSequencesOfSequences", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
11276
11277 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11278 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfSequencesOfSequences", 1)) {
11279 return false;
11280 }
11281 binding_detail::AutoSequence<Sequence<Sequence<int32_t>>> arg0;
11282 if (args[0].isObject()) {
11283 JS::ForOfIterator iter(cx);
11284 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
11285 return false;
11286 }
11287 if (!iter.valueIsIterable()) {
11288 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
11289 return false;
11290 }
11291 binding_detail::AutoSequence<Sequence<Sequence<int32_t>>> &arr = arg0;
11292 JS::Rooted<JS::Value> temp(cx);
11293 while (true) {
11294 bool done;
11295 if (!iter.next(&temp, &done)) {
11296 return false;
11297 }
11298 if (done) {
11299 break;
11300 }
11301 Sequence<Sequence<int32_t>>* slotPtr = arr.AppendElement(mozilla::fallible);
11302 if (!slotPtr) {
11303 JS_ReportOutOfMemory(cx);
11304 return false;
11305 }
11306 Sequence<Sequence<int32_t>>& slot = *slotPtr;
11307 if (temp.isObject()) {
11308 JS::ForOfIterator iter1(cx);
11309 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
11310 return false;
11311 }
11312 if (!iter1.valueIsIterable()) {
11313 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
11314 return false;
11315 }
11316 Sequence<Sequence<int32_t>> &arr1 = slot;
11317 JS::Rooted<JS::Value> temp1(cx);
11318 while (true) {
11319 bool done1;
11320 if (!iter1.next(&temp1, &done1)) {
11321 return false;
11322 }
11323 if (done1) {
11324 break;
11325 }
11326 Sequence<int32_t>* slotPtr1 = arr1.AppendElement(mozilla::fallible);
11327 if (!slotPtr1) {
11328 JS_ReportOutOfMemory(cx);
11329 return false;
11330 }
11331 Sequence<int32_t>& slot1 = *slotPtr1;
11332 if (temp1.isObject()) {
11333 JS::ForOfIterator iter2(cx);
11334 if (!iter2.init(temp1, JS::ForOfIterator::AllowNonIterable)) {
11335 return false;
11336 }
11337 if (!iter2.valueIsIterable()) {
11338 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of element of argument 1", "sequence");
11339 return false;
11340 }
11341 Sequence<int32_t> &arr2 = slot1;
11342 JS::Rooted<JS::Value> temp2(cx);
11343 while (true) {
11344 bool done2;
11345 if (!iter2.next(&temp2, &done2)) {
11346 return false;
11347 }
11348 if (done2) {
11349 break;
11350 }
11351 int32_t* slotPtr2 = arr2.AppendElement(mozilla::fallible);
11352 if (!slotPtr2) {
11353 JS_ReportOutOfMemory(cx);
11354 return false;
11355 }
11356 int32_t& slot2 = *slotPtr2;
11357 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp2, "Element of element of element of argument 1", &slot2)) {
11358 return false;
11359 }
11360 }
11361 } else {
11362 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of element of argument 1", "sequence");
11363 return false;
11364 }
11365 }
11366 } else {
11367 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
11368 return false;
11369 }
11370 }
11371 } else {
11372 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
11373 return false;
11374 }
11375 // NOTE: This assert does NOT call the function.
11376 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfSequencesOfSequences(Constify(arg0)))>, "Should be returning void here");
11377 MOZ_KnownLive(self)(self)->PassSequenceOfSequencesOfSequences(Constify(arg0));
11378 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11378); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11378; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11379 args.rval().setUndefined();
11380 return true;
11381}
11382
11383static const JSJitInfo passSequenceOfSequencesOfSequences_methodinfo = {
11384 { (JSJitGetterOp)passSequenceOfSequencesOfSequences },
11385 { prototypes::id::TestExampleInterface },
11386 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11387 JSJitInfo::Method,
11388 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11389 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11390 false, /* isInfallible. False in setters. */
11391 false, /* isMovable. Not relevant for setters. */
11392 false, /* isEliminatable. Not relevant for setters. */
11393 false, /* isAlwaysInSlot. Only relevant for getters. */
11394 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11395 false, /* isTypedMethod. Only relevant for methods. */
11396 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11397};
11398
11399MOZ_CAN_RUN_SCRIPT static bool
11400passRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11401{
11402 BindingCallContext cx(cx_, "TestExampleInterface.passRecord");
11403 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11406( cx, "TestExampleInterface"
, "passRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11404 "TestExampleInterface", "passRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11406( cx, "TestExampleInterface"
, "passRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11405 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11406( cx, "TestExampleInterface"
, "passRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11406 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11406( cx, "TestExampleInterface"
, "passRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
11407
11408 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11409 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecord", 1)) {
11410 return false;
11411 }
11412 Record<nsString, int32_t> arg0;
11413 if (args[0].isObject()) {
11414 auto& recordEntries = arg0.Entries();
11415
11416 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
11417 JS::RootedVector<jsid> ids(cx);
11418 if (!js::GetPropertyKeys(cx, recordObj,
11419 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
11420 return false;
11421 }
11422 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
11423 JS_ReportOutOfMemory(cx);
11424 return false;
11425 }
11426 JS::Rooted<JS::Value> propNameValue(cx);
11427 JS::Rooted<JS::Value> temp(cx);
11428 JS::Rooted<jsid> curId(cx);
11429 JS::Rooted<JS::Value> idVal(cx);
11430 // Use a hashset to keep track of ids seen, to avoid
11431 // introducing nasty O(N^2) behavior scanning for them all the
11432 // time. Ideally we'd use a data structure with O(1) lookup
11433 // _and_ ordering for the MozMap, but we don't have one lying
11434 // around.
11435 nsTHashtable<nsStringHashKey> idsSeen;
11436 for (size_t i = 0; i < ids.length(); ++i) {
11437 curId = ids[i];
11438
11439 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
11440 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
11441 &desc)) {
11442 return false;
11443 }
11444
11445 if (desc.isNothing() || !desc->enumerable()) {
11446 continue;
11447 }
11448
11449 idVal = js::IdToValue(curId);
11450 nsString propName;
11451 // This will just throw if idVal is a Symbol, like the spec says
11452 // to do.
11453 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
11454 return false;
11455 }
11456
11457 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
11458 return false;
11459 }
11460
11461 Record<nsString, int32_t>::EntryType* entry;
11462 if (!idsSeen.EnsureInserted(propName)) {
11463 // Find the existing entry.
11464 auto idx = recordEntries.IndexOf(propName);
11465 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11466); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11466; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
11466 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11466); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11466; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
11467 // Now blow it away to make it look like it was just added
11468 // to the array, because it's not obvious that it's
11469 // safe to write to its already-initialized mValue via our
11470 // normal codegen conversions. For example, the value
11471 // could be a union and this would change its type, but
11472 // codegen assumes we won't do that.
11473 entry = recordEntries.ReconstructElementAt(idx);
11474 } else {
11475 // Safe to do an infallible append here, because we did a
11476 // SetCapacity above to the right capacity.
11477 entry = recordEntries.AppendElement();
11478 }
11479 entry->mKey = propName;
11480 int32_t& slot = entry->mValue;
11481 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot)) {
11482 return false;
11483 }
11484 }
11485 } else {
11486 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
11487 return false;
11488 }
11489 // NOTE: This assert does NOT call the function.
11490 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecord(Constify(arg0)))>, "Should be returning void here");
11491 MOZ_KnownLive(self)(self)->PassRecord(Constify(arg0));
11492 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11492); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11492; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11493 args.rval().setUndefined();
11494 return true;
11495}
11496
11497static const JSJitInfo passRecord_methodinfo = {
11498 { (JSJitGetterOp)passRecord },
11499 { prototypes::id::TestExampleInterface },
11500 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11501 JSJitInfo::Method,
11502 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11503 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11504 false, /* isInfallible. False in setters. */
11505 false, /* isMovable. Not relevant for setters. */
11506 false, /* isEliminatable. Not relevant for setters. */
11507 false, /* isAlwaysInSlot. Only relevant for getters. */
11508 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11509 false, /* isTypedMethod. Only relevant for methods. */
11510 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11511};
11512
11513MOZ_CAN_RUN_SCRIPT static bool
11514passNullableRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11515{
11516 BindingCallContext cx(cx_, "TestExampleInterface.passNullableRecord");
11517 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11520( cx, "TestExampleInterface"
, "passNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11518 "TestExampleInterface", "passNullableRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11520( cx, "TestExampleInterface"
, "passNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11519 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11520( cx, "TestExampleInterface"
, "passNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
11520 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11520( cx, "TestExampleInterface"
, "passNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
11521
11522 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11523 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableRecord", 1)) {
11524 return false;
11525 }
11526 Nullable<Record<nsString, int32_t>> arg0;
11527 if (args[0].isObject()) {
11528 auto& recordEntries = arg0.SetValue().Entries();
11529
11530 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
11531 JS::RootedVector<jsid> ids(cx);
11532 if (!js::GetPropertyKeys(cx, recordObj,
11533 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
11534 return false;
11535 }
11536 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
11537 JS_ReportOutOfMemory(cx);
11538 return false;
11539 }
11540 JS::Rooted<JS::Value> propNameValue(cx);
11541 JS::Rooted<JS::Value> temp(cx);
11542 JS::Rooted<jsid> curId(cx);
11543 JS::Rooted<JS::Value> idVal(cx);
11544 // Use a hashset to keep track of ids seen, to avoid
11545 // introducing nasty O(N^2) behavior scanning for them all the
11546 // time. Ideally we'd use a data structure with O(1) lookup
11547 // _and_ ordering for the MozMap, but we don't have one lying
11548 // around.
11549 nsTHashtable<nsStringHashKey> idsSeen;
11550 for (size_t i = 0; i < ids.length(); ++i) {
11551 curId = ids[i];
11552
11553 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
11554 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
11555 &desc)) {
11556 return false;
11557 }
11558
11559 if (desc.isNothing() || !desc->enumerable()) {
11560 continue;
11561 }
11562
11563 idVal = js::IdToValue(curId);
11564 nsString propName;
11565 // This will just throw if idVal is a Symbol, like the spec says
11566 // to do.
11567 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
11568 return false;
11569 }
11570
11571 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
11572 return false;
11573 }
11574
11575 Record<nsString, int32_t>::EntryType* entry;
11576 if (!idsSeen.EnsureInserted(propName)) {
11577 // Find the existing entry.
11578 auto idx = recordEntries.IndexOf(propName);
11579 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11580); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11580; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
11580 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11580); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11580; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
11581 // Now blow it away to make it look like it was just added
11582 // to the array, because it's not obvious that it's
11583 // safe to write to its already-initialized mValue via our
11584 // normal codegen conversions. For example, the value
11585 // could be a union and this would change its type, but
11586 // codegen assumes we won't do that.
11587 entry = recordEntries.ReconstructElementAt(idx);
11588 } else {
11589 // Safe to do an infallible append here, because we did a
11590 // SetCapacity above to the right capacity.
11591 entry = recordEntries.AppendElement();
11592 }
11593 entry->mKey = propName;
11594 int32_t& slot = entry->mValue;
11595 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot)) {
11596 return false;
11597 }
11598 }
11599 } else if (args[0].isNullOrUndefined()) {
11600 arg0.SetNull();
11601 } else {
11602 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
11603 return false;
11604 }
11605 // NOTE: This assert does NOT call the function.
11606 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableRecord(Constify(arg0)))>, "Should be returning void here");
11607 MOZ_KnownLive(self)(self)->PassNullableRecord(Constify(arg0));
11608 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11608); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11608; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11609 args.rval().setUndefined();
11610 return true;
11611}
11612
11613static const JSJitInfo passNullableRecord_methodinfo = {
11614 { (JSJitGetterOp)passNullableRecord },
11615 { prototypes::id::TestExampleInterface },
11616 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11617 JSJitInfo::Method,
11618 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11619 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11620 false, /* isInfallible. False in setters. */
11621 false, /* isMovable. Not relevant for setters. */
11622 false, /* isEliminatable. Not relevant for setters. */
11623 false, /* isAlwaysInSlot. Only relevant for getters. */
11624 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11625 false, /* isTypedMethod. Only relevant for methods. */
11626 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11627};
11628
11629MOZ_CAN_RUN_SCRIPT static bool
11630passRecordOfNullableInts(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11631{
11632 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfNullableInts");
11633 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11636( cx, "TestExampleInterface"
, "passRecordOfNullableInts", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11634 "TestExampleInterface", "passRecordOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11636( cx, "TestExampleInterface"
, "passRecordOfNullableInts", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11635 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11636( cx, "TestExampleInterface"
, "passRecordOfNullableInts", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11636 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11636( cx, "TestExampleInterface"
, "passRecordOfNullableInts", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
11637
11638 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11639 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfNullableInts", 1)) {
11640 return false;
11641 }
11642 Record<nsString, Nullable<int32_t>> arg0;
11643 if (args[0].isObject()) {
11644 auto& recordEntries = arg0.Entries();
11645
11646 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
11647 JS::RootedVector<jsid> ids(cx);
11648 if (!js::GetPropertyKeys(cx, recordObj,
11649 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
11650 return false;
11651 }
11652 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
11653 JS_ReportOutOfMemory(cx);
11654 return false;
11655 }
11656 JS::Rooted<JS::Value> propNameValue(cx);
11657 JS::Rooted<JS::Value> temp(cx);
11658 JS::Rooted<jsid> curId(cx);
11659 JS::Rooted<JS::Value> idVal(cx);
11660 // Use a hashset to keep track of ids seen, to avoid
11661 // introducing nasty O(N^2) behavior scanning for them all the
11662 // time. Ideally we'd use a data structure with O(1) lookup
11663 // _and_ ordering for the MozMap, but we don't have one lying
11664 // around.
11665 nsTHashtable<nsStringHashKey> idsSeen;
11666 for (size_t i = 0; i < ids.length(); ++i) {
11667 curId = ids[i];
11668
11669 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
11670 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
11671 &desc)) {
11672 return false;
11673 }
11674
11675 if (desc.isNothing() || !desc->enumerable()) {
11676 continue;
11677 }
11678
11679 idVal = js::IdToValue(curId);
11680 nsString propName;
11681 // This will just throw if idVal is a Symbol, like the spec says
11682 // to do.
11683 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
11684 return false;
11685 }
11686
11687 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
11688 return false;
11689 }
11690
11691 Record<nsString, Nullable<int32_t>>::EntryType* entry;
11692 if (!idsSeen.EnsureInserted(propName)) {
11693 // Find the existing entry.
11694 auto idx = recordEntries.IndexOf(propName);
11695 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11696); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11696; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
11696 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11696); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11696; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
11697 // Now blow it away to make it look like it was just added
11698 // to the array, because it's not obvious that it's
11699 // safe to write to its already-initialized mValue via our
11700 // normal codegen conversions. For example, the value
11701 // could be a union and this would change its type, but
11702 // codegen assumes we won't do that.
11703 entry = recordEntries.ReconstructElementAt(idx);
11704 } else {
11705 // Safe to do an infallible append here, because we did a
11706 // SetCapacity above to the right capacity.
11707 entry = recordEntries.AppendElement();
11708 }
11709 entry->mKey = propName;
11710 Nullable<int32_t>& slot = entry->mValue;
11711 if (temp.isNullOrUndefined()) {
11712 slot.SetNull();
11713 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot.SetValue())) {
11714 return false;
11715 }
11716 }
11717 } else {
11718 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
11719 return false;
11720 }
11721 // NOTE: This assert does NOT call the function.
11722 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfNullableInts(Constify(arg0)))>, "Should be returning void here");
11723 MOZ_KnownLive(self)(self)->PassRecordOfNullableInts(Constify(arg0));
11724 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11724); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11724; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11725 args.rval().setUndefined();
11726 return true;
11727}
11728
11729static const JSJitInfo passRecordOfNullableInts_methodinfo = {
11730 { (JSJitGetterOp)passRecordOfNullableInts },
11731 { prototypes::id::TestExampleInterface },
11732 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11733 JSJitInfo::Method,
11734 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11735 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11736 false, /* isInfallible. False in setters. */
11737 false, /* isMovable. Not relevant for setters. */
11738 false, /* isEliminatable. Not relevant for setters. */
11739 false, /* isAlwaysInSlot. Only relevant for getters. */
11740 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11741 false, /* isTypedMethod. Only relevant for methods. */
11742 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11743};
11744
11745MOZ_CAN_RUN_SCRIPT static bool
11746passOptionalRecordOfNullableInts(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11747{
11748 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalRecordOfNullableInts");
11749 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11752( cx, "TestExampleInterface"
, "passOptionalRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11750 "TestExampleInterface", "passOptionalRecordOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11752( cx, "TestExampleInterface"
, "passOptionalRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11751 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11752( cx, "TestExampleInterface"
, "passOptionalRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11752 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11752( cx, "TestExampleInterface"
, "passOptionalRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
11753
11754 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11755 Optional<Record<nsString, Nullable<int32_t>>> arg0;
11756 if (args.hasDefined(0)) {
11757 arg0.Construct();
11758 if (args[0].isObject()) {
11759 auto& recordEntries = arg0.Value().Entries();
11760
11761 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
11762 JS::RootedVector<jsid> ids(cx);
11763 if (!js::GetPropertyKeys(cx, recordObj,
11764 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
11765 return false;
11766 }
11767 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
11768 JS_ReportOutOfMemory(cx);
11769 return false;
11770 }
11771 JS::Rooted<JS::Value> propNameValue(cx);
11772 JS::Rooted<JS::Value> temp(cx);
11773 JS::Rooted<jsid> curId(cx);
11774 JS::Rooted<JS::Value> idVal(cx);
11775 // Use a hashset to keep track of ids seen, to avoid
11776 // introducing nasty O(N^2) behavior scanning for them all the
11777 // time. Ideally we'd use a data structure with O(1) lookup
11778 // _and_ ordering for the MozMap, but we don't have one lying
11779 // around.
11780 nsTHashtable<nsStringHashKey> idsSeen;
11781 for (size_t i = 0; i < ids.length(); ++i) {
11782 curId = ids[i];
11783
11784 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
11785 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
11786 &desc)) {
11787 return false;
11788 }
11789
11790 if (desc.isNothing() || !desc->enumerable()) {
11791 continue;
11792 }
11793
11794 idVal = js::IdToValue(curId);
11795 nsString propName;
11796 // This will just throw if idVal is a Symbol, like the spec says
11797 // to do.
11798 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
11799 return false;
11800 }
11801
11802 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
11803 return false;
11804 }
11805
11806 Record<nsString, Nullable<int32_t>>::EntryType* entry;
11807 if (!idsSeen.EnsureInserted(propName)) {
11808 // Find the existing entry.
11809 auto idx = recordEntries.IndexOf(propName);
11810 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11811); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11811; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
11811 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11811); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11811; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
11812 // Now blow it away to make it look like it was just added
11813 // to the array, because it's not obvious that it's
11814 // safe to write to its already-initialized mValue via our
11815 // normal codegen conversions. For example, the value
11816 // could be a union and this would change its type, but
11817 // codegen assumes we won't do that.
11818 entry = recordEntries.ReconstructElementAt(idx);
11819 } else {
11820 // Safe to do an infallible append here, because we did a
11821 // SetCapacity above to the right capacity.
11822 entry = recordEntries.AppendElement();
11823 }
11824 entry->mKey = propName;
11825 Nullable<int32_t>& slot = entry->mValue;
11826 if (temp.isNullOrUndefined()) {
11827 slot.SetNull();
11828 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot.SetValue())) {
11829 return false;
11830 }
11831 }
11832 } else {
11833 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
11834 return false;
11835 }
11836 }
11837 // NOTE: This assert does NOT call the function.
11838 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalRecordOfNullableInts(Constify(arg0)))>, "Should be returning void here");
11839 MOZ_KnownLive(self)(self)->PassOptionalRecordOfNullableInts(Constify(arg0));
11840 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11840); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11840; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11841 args.rval().setUndefined();
11842 return true;
11843}
11844
11845static const JSJitInfo passOptionalRecordOfNullableInts_methodinfo = {
11846 { (JSJitGetterOp)passOptionalRecordOfNullableInts },
11847 { prototypes::id::TestExampleInterface },
11848 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11849 JSJitInfo::Method,
11850 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11851 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11852 false, /* isInfallible. False in setters. */
11853 false, /* isMovable. Not relevant for setters. */
11854 false, /* isEliminatable. Not relevant for setters. */
11855 false, /* isAlwaysInSlot. Only relevant for getters. */
11856 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11857 false, /* isTypedMethod. Only relevant for methods. */
11858 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11859};
11860
11861MOZ_CAN_RUN_SCRIPT static bool
11862passOptionalNullableRecordOfNullableInts(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11863{
11864 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableRecordOfNullableInts");
11865 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11868( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11866 "TestExampleInterface", "passOptionalNullableRecordOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11868( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11867 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11868( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11868 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11868( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
11869
11870 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11871 Optional<Nullable<Record<nsString, Nullable<int32_t>>>> arg0;
11872 if (args.hasDefined(0)) {
11873 arg0.Construct();
11874 if (args[0].isObject()) {
11875 auto& recordEntries = arg0.Value().SetValue().Entries();
11876
11877 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
11878 JS::RootedVector<jsid> ids(cx);
11879 if (!js::GetPropertyKeys(cx, recordObj,
11880 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
11881 return false;
11882 }
11883 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
11884 JS_ReportOutOfMemory(cx);
11885 return false;
11886 }
11887 JS::Rooted<JS::Value> propNameValue(cx);
11888 JS::Rooted<JS::Value> temp(cx);
11889 JS::Rooted<jsid> curId(cx);
11890 JS::Rooted<JS::Value> idVal(cx);
11891 // Use a hashset to keep track of ids seen, to avoid
11892 // introducing nasty O(N^2) behavior scanning for them all the
11893 // time. Ideally we'd use a data structure with O(1) lookup
11894 // _and_ ordering for the MozMap, but we don't have one lying
11895 // around.
11896 nsTHashtable<nsStringHashKey> idsSeen;
11897 for (size_t i = 0; i < ids.length(); ++i) {
11898 curId = ids[i];
11899
11900 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
11901 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
11902 &desc)) {
11903 return false;
11904 }
11905
11906 if (desc.isNothing() || !desc->enumerable()) {
11907 continue;
11908 }
11909
11910 idVal = js::IdToValue(curId);
11911 nsString propName;
11912 // This will just throw if idVal is a Symbol, like the spec says
11913 // to do.
11914 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
11915 return false;
11916 }
11917
11918 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
11919 return false;
11920 }
11921
11922 Record<nsString, Nullable<int32_t>>::EntryType* entry;
11923 if (!idsSeen.EnsureInserted(propName)) {
11924 // Find the existing entry.
11925 auto idx = recordEntries.IndexOf(propName);
11926 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11927); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11927; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
11927 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 11927); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 11927; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
11928 // Now blow it away to make it look like it was just added
11929 // to the array, because it's not obvious that it's
11930 // safe to write to its already-initialized mValue via our
11931 // normal codegen conversions. For example, the value
11932 // could be a union and this would change its type, but
11933 // codegen assumes we won't do that.
11934 entry = recordEntries.ReconstructElementAt(idx);
11935 } else {
11936 // Safe to do an infallible append here, because we did a
11937 // SetCapacity above to the right capacity.
11938 entry = recordEntries.AppendElement();
11939 }
11940 entry->mKey = propName;
11941 Nullable<int32_t>& slot = entry->mValue;
11942 if (temp.isNullOrUndefined()) {
11943 slot.SetNull();
11944 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot.SetValue())) {
11945 return false;
11946 }
11947 }
11948 } else if (args[0].isNullOrUndefined()) {
11949 arg0.Value().SetNull();
11950 } else {
11951 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
11952 return false;
11953 }
11954 }
11955 // NOTE: This assert does NOT call the function.
11956 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfNullableInts(Constify(arg0)))>, "Should be returning void here");
11957 MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfNullableInts(Constify(arg0));
11958 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 11958); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 11958; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
11959 args.rval().setUndefined();
11960 return true;
11961}
11962
11963static const JSJitInfo passOptionalNullableRecordOfNullableInts_methodinfo = {
11964 { (JSJitGetterOp)passOptionalNullableRecordOfNullableInts },
11965 { prototypes::id::TestExampleInterface },
11966 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
11967 JSJitInfo::Method,
11968 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11969 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11970 false, /* isInfallible. False in setters. */
11971 false, /* isMovable. Not relevant for setters. */
11972 false, /* isEliminatable. Not relevant for setters. */
11973 false, /* isAlwaysInSlot. Only relevant for getters. */
11974 false, /* isLazilyCachedInSlot. Only relevant for getters. */
11975 false, /* isTypedMethod. Only relevant for methods. */
11976 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11977};
11978
11979MOZ_CAN_RUN_SCRIPT static bool
11980passCastableObjectRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
11981{
11982 BindingCallContext cx(cx_, "TestExampleInterface.passCastableObjectRecord");
11983 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject11986( cx, "TestExampleInterface"
, "passCastableObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11984 "TestExampleInterface", "passCastableObjectRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject11986( cx, "TestExampleInterface"
, "passCastableObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11985 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject11986( cx, "TestExampleInterface"
, "passCastableObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
11986 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject11986( cx, "TestExampleInterface"
, "passCastableObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
11987
11988 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
11989 if (!args.requireAtLeast(cx, "TestExampleInterface.passCastableObjectRecord", 1)) {
11990 return false;
11991 }
11992 Record<nsString, OwningNonNull<mozilla::dom::TestInterface>> arg0;
11993 if (args[0].isObject()) {
11994 auto& recordEntries = arg0.Entries();
11995
11996 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
11997 JS::RootedVector<jsid> ids(cx);
11998 if (!js::GetPropertyKeys(cx, recordObj,
11999 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12000 return false;
12001 }
12002 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12003 JS_ReportOutOfMemory(cx);
12004 return false;
12005 }
12006 JS::Rooted<JS::Value> propNameValue(cx);
12007 JS::Rooted<JS::Value> temp(cx);
12008 JS::Rooted<jsid> curId(cx);
12009 JS::Rooted<JS::Value> idVal(cx);
12010 // Use a hashset to keep track of ids seen, to avoid
12011 // introducing nasty O(N^2) behavior scanning for them all the
12012 // time. Ideally we'd use a data structure with O(1) lookup
12013 // _and_ ordering for the MozMap, but we don't have one lying
12014 // around.
12015 nsTHashtable<nsStringHashKey> idsSeen;
12016 for (size_t i = 0; i < ids.length(); ++i) {
12017 curId = ids[i];
12018
12019 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12020 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12021 &desc)) {
12022 return false;
12023 }
12024
12025 if (desc.isNothing() || !desc->enumerable()) {
12026 continue;
12027 }
12028
12029 idVal = js::IdToValue(curId);
12030 nsString propName;
12031 // This will just throw if idVal is a Symbol, like the spec says
12032 // to do.
12033 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12034 return false;
12035 }
12036
12037 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12038 return false;
12039 }
12040
12041 Record<nsString, OwningNonNull<mozilla::dom::TestInterface>>::EntryType* entry;
12042 if (!idsSeen.EnsureInserted(propName)) {
12043 // Find the existing entry.
12044 auto idx = recordEntries.IndexOf(propName);
12045 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12046); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12046; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12046 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12046); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12046; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12047 // Now blow it away to make it look like it was just added
12048 // to the array, because it's not obvious that it's
12049 // safe to write to its already-initialized mValue via our
12050 // normal codegen conversions. For example, the value
12051 // could be a union and this would change its type, but
12052 // codegen assumes we won't do that.
12053 entry = recordEntries.ReconstructElementAt(idx);
12054 } else {
12055 // Safe to do an infallible append here, because we did a
12056 // SetCapacity above to the right capacity.
12057 entry = recordEntries.AppendElement();
12058 }
12059 entry->mKey = propName;
12060 OwningNonNull<mozilla::dom::TestInterface>& slot = entry->mValue;
12061 if (temp.isObject()) {
12062 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
12063 {
12064 // Our JSContext should be in the right global to do unwrapping in.
12065 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
12066 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
12067 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestInterface");
12068 return false;
12069 }
12070 }
12071 } else {
12072 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
12073 return false;
12074 }
12075 }
12076 } else {
12077 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12078 return false;
12079 }
12080 // NOTE: This assert does NOT call the function.
12081 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassCastableObjectRecord(Constify(arg0)))>, "Should be returning void here");
12082 MOZ_KnownLive(self)(self)->PassCastableObjectRecord(Constify(arg0));
12083 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12083); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12083; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12084 args.rval().setUndefined();
12085 return true;
12086}
12087
12088static const JSJitInfo passCastableObjectRecord_methodinfo = {
12089 { (JSJitGetterOp)passCastableObjectRecord },
12090 { prototypes::id::TestExampleInterface },
12091 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12092 JSJitInfo::Method,
12093 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12094 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12095 false, /* isInfallible. False in setters. */
12096 false, /* isMovable. Not relevant for setters. */
12097 false, /* isEliminatable. Not relevant for setters. */
12098 false, /* isAlwaysInSlot. Only relevant for getters. */
12099 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12100 false, /* isTypedMethod. Only relevant for methods. */
12101 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12102};
12103
12104MOZ_CAN_RUN_SCRIPT static bool
12105passNullableCastableObjectRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12106{
12107 BindingCallContext cx(cx_, "TestExampleInterface.passNullableCastableObjectRecord");
12108 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12111( cx, "TestExampleInterface"
, "passNullableCastableObjectRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12109 "TestExampleInterface", "passNullableCastableObjectRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12111( cx, "TestExampleInterface"
, "passNullableCastableObjectRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12110 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12111( cx, "TestExampleInterface"
, "passNullableCastableObjectRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12111 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12111( cx, "TestExampleInterface"
, "passNullableCastableObjectRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12112
12113 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12114 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableCastableObjectRecord", 1)) {
12115 return false;
12116 }
12117 Record<nsString, RefPtr<mozilla::dom::TestInterface>> arg0;
12118 if (args[0].isObject()) {
12119 auto& recordEntries = arg0.Entries();
12120
12121 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12122 JS::RootedVector<jsid> ids(cx);
12123 if (!js::GetPropertyKeys(cx, recordObj,
12124 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12125 return false;
12126 }
12127 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12128 JS_ReportOutOfMemory(cx);
12129 return false;
12130 }
12131 JS::Rooted<JS::Value> propNameValue(cx);
12132 JS::Rooted<JS::Value> temp(cx);
12133 JS::Rooted<jsid> curId(cx);
12134 JS::Rooted<JS::Value> idVal(cx);
12135 // Use a hashset to keep track of ids seen, to avoid
12136 // introducing nasty O(N^2) behavior scanning for them all the
12137 // time. Ideally we'd use a data structure with O(1) lookup
12138 // _and_ ordering for the MozMap, but we don't have one lying
12139 // around.
12140 nsTHashtable<nsStringHashKey> idsSeen;
12141 for (size_t i = 0; i < ids.length(); ++i) {
12142 curId = ids[i];
12143
12144 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12145 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12146 &desc)) {
12147 return false;
12148 }
12149
12150 if (desc.isNothing() || !desc->enumerable()) {
12151 continue;
12152 }
12153
12154 idVal = js::IdToValue(curId);
12155 nsString propName;
12156 // This will just throw if idVal is a Symbol, like the spec says
12157 // to do.
12158 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12159 return false;
12160 }
12161
12162 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12163 return false;
12164 }
12165
12166 Record<nsString, RefPtr<mozilla::dom::TestInterface>>::EntryType* entry;
12167 if (!idsSeen.EnsureInserted(propName)) {
12168 // Find the existing entry.
12169 auto idx = recordEntries.IndexOf(propName);
12170 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12171); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12171; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12171 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12171); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12171; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12172 // Now blow it away to make it look like it was just added
12173 // to the array, because it's not obvious that it's
12174 // safe to write to its already-initialized mValue via our
12175 // normal codegen conversions. For example, the value
12176 // could be a union and this would change its type, but
12177 // codegen assumes we won't do that.
12178 entry = recordEntries.ReconstructElementAt(idx);
12179 } else {
12180 // Safe to do an infallible append here, because we did a
12181 // SetCapacity above to the right capacity.
12182 entry = recordEntries.AppendElement();
12183 }
12184 entry->mKey = propName;
12185 RefPtr<mozilla::dom::TestInterface>& slot = entry->mValue;
12186 if (temp.isObject()) {
12187 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
12188 {
12189 // Our JSContext should be in the right global to do unwrapping in.
12190 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
12191 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
12192 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestInterface");
12193 return false;
12194 }
12195 }
12196 } else if (temp.isNullOrUndefined()) {
12197 slot = nullptr;
12198 } else {
12199 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
12200 return false;
12201 }
12202 }
12203 } else {
12204 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12205 return false;
12206 }
12207 // NOTE: This assert does NOT call the function.
12208 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableCastableObjectRecord(Constify(arg0)))>, "Should be returning void here");
12209 MOZ_KnownLive(self)(self)->PassNullableCastableObjectRecord(Constify(arg0));
12210 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12210); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12210; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12211 args.rval().setUndefined();
12212 return true;
12213}
12214
12215static const JSJitInfo passNullableCastableObjectRecord_methodinfo = {
12216 { (JSJitGetterOp)passNullableCastableObjectRecord },
12217 { prototypes::id::TestExampleInterface },
12218 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12219 JSJitInfo::Method,
12220 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12221 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12222 false, /* isInfallible. False in setters. */
12223 false, /* isMovable. Not relevant for setters. */
12224 false, /* isEliminatable. Not relevant for setters. */
12225 false, /* isAlwaysInSlot. Only relevant for getters. */
12226 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12227 false, /* isTypedMethod. Only relevant for methods. */
12228 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12229};
12230
12231MOZ_CAN_RUN_SCRIPT static bool
12232passCastableObjectNullableRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12233{
12234 BindingCallContext cx(cx_, "TestExampleInterface.passCastableObjectNullableRecord");
12235 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12238( cx, "TestExampleInterface"
, "passCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12236 "TestExampleInterface", "passCastableObjectNullableRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12238( cx, "TestExampleInterface"
, "passCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12237 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12238( cx, "TestExampleInterface"
, "passCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12238 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12238( cx, "TestExampleInterface"
, "passCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12239
12240 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12241 if (!args.requireAtLeast(cx, "TestExampleInterface.passCastableObjectNullableRecord", 1)) {
12242 return false;
12243 }
12244 Nullable<Record<nsString, OwningNonNull<mozilla::dom::TestInterface>>> arg0;
12245 if (args[0].isObject()) {
12246 auto& recordEntries = arg0.SetValue().Entries();
12247
12248 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12249 JS::RootedVector<jsid> ids(cx);
12250 if (!js::GetPropertyKeys(cx, recordObj,
12251 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12252 return false;
12253 }
12254 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12255 JS_ReportOutOfMemory(cx);
12256 return false;
12257 }
12258 JS::Rooted<JS::Value> propNameValue(cx);
12259 JS::Rooted<JS::Value> temp(cx);
12260 JS::Rooted<jsid> curId(cx);
12261 JS::Rooted<JS::Value> idVal(cx);
12262 // Use a hashset to keep track of ids seen, to avoid
12263 // introducing nasty O(N^2) behavior scanning for them all the
12264 // time. Ideally we'd use a data structure with O(1) lookup
12265 // _and_ ordering for the MozMap, but we don't have one lying
12266 // around.
12267 nsTHashtable<nsStringHashKey> idsSeen;
12268 for (size_t i = 0; i < ids.length(); ++i) {
12269 curId = ids[i];
12270
12271 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12272 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12273 &desc)) {
12274 return false;
12275 }
12276
12277 if (desc.isNothing() || !desc->enumerable()) {
12278 continue;
12279 }
12280
12281 idVal = js::IdToValue(curId);
12282 nsString propName;
12283 // This will just throw if idVal is a Symbol, like the spec says
12284 // to do.
12285 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12286 return false;
12287 }
12288
12289 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12290 return false;
12291 }
12292
12293 Record<nsString, OwningNonNull<mozilla::dom::TestInterface>>::EntryType* entry;
12294 if (!idsSeen.EnsureInserted(propName)) {
12295 // Find the existing entry.
12296 auto idx = recordEntries.IndexOf(propName);
12297 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12298); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12298; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12298 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12298); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12298; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12299 // Now blow it away to make it look like it was just added
12300 // to the array, because it's not obvious that it's
12301 // safe to write to its already-initialized mValue via our
12302 // normal codegen conversions. For example, the value
12303 // could be a union and this would change its type, but
12304 // codegen assumes we won't do that.
12305 entry = recordEntries.ReconstructElementAt(idx);
12306 } else {
12307 // Safe to do an infallible append here, because we did a
12308 // SetCapacity above to the right capacity.
12309 entry = recordEntries.AppendElement();
12310 }
12311 entry->mKey = propName;
12312 OwningNonNull<mozilla::dom::TestInterface>& slot = entry->mValue;
12313 if (temp.isObject()) {
12314 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
12315 {
12316 // Our JSContext should be in the right global to do unwrapping in.
12317 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
12318 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
12319 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestInterface");
12320 return false;
12321 }
12322 }
12323 } else {
12324 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
12325 return false;
12326 }
12327 }
12328 } else if (args[0].isNullOrUndefined()) {
12329 arg0.SetNull();
12330 } else {
12331 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12332 return false;
12333 }
12334 // NOTE: This assert does NOT call the function.
12335 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassCastableObjectNullableRecord(Constify(arg0)))>, "Should be returning void here");
12336 MOZ_KnownLive(self)(self)->PassCastableObjectNullableRecord(Constify(arg0));
12337 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12337); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12337; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12338 args.rval().setUndefined();
12339 return true;
12340}
12341
12342static const JSJitInfo passCastableObjectNullableRecord_methodinfo = {
12343 { (JSJitGetterOp)passCastableObjectNullableRecord },
12344 { prototypes::id::TestExampleInterface },
12345 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12346 JSJitInfo::Method,
12347 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12348 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12349 false, /* isInfallible. False in setters. */
12350 false, /* isMovable. Not relevant for setters. */
12351 false, /* isEliminatable. Not relevant for setters. */
12352 false, /* isAlwaysInSlot. Only relevant for getters. */
12353 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12354 false, /* isTypedMethod. Only relevant for methods. */
12355 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12356};
12357
12358MOZ_CAN_RUN_SCRIPT static bool
12359passNullableCastableObjectNullableRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12360{
12361 BindingCallContext cx(cx_, "TestExampleInterface.passNullableCastableObjectNullableRecord");
12362 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12365( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12363 "TestExampleInterface", "passNullableCastableObjectNullableRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12365( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12364 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12365( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12365 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12365( cx, "TestExampleInterface"
, "passNullableCastableObjectNullableRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12366
12367 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12368 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableCastableObjectNullableRecord", 1)) {
12369 return false;
12370 }
12371 Nullable<Record<nsString, RefPtr<mozilla::dom::TestInterface>>> arg0;
12372 if (args[0].isObject()) {
12373 auto& recordEntries = arg0.SetValue().Entries();
12374
12375 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12376 JS::RootedVector<jsid> ids(cx);
12377 if (!js::GetPropertyKeys(cx, recordObj,
12378 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12379 return false;
12380 }
12381 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12382 JS_ReportOutOfMemory(cx);
12383 return false;
12384 }
12385 JS::Rooted<JS::Value> propNameValue(cx);
12386 JS::Rooted<JS::Value> temp(cx);
12387 JS::Rooted<jsid> curId(cx);
12388 JS::Rooted<JS::Value> idVal(cx);
12389 // Use a hashset to keep track of ids seen, to avoid
12390 // introducing nasty O(N^2) behavior scanning for them all the
12391 // time. Ideally we'd use a data structure with O(1) lookup
12392 // _and_ ordering for the MozMap, but we don't have one lying
12393 // around.
12394 nsTHashtable<nsStringHashKey> idsSeen;
12395 for (size_t i = 0; i < ids.length(); ++i) {
12396 curId = ids[i];
12397
12398 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12399 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12400 &desc)) {
12401 return false;
12402 }
12403
12404 if (desc.isNothing() || !desc->enumerable()) {
12405 continue;
12406 }
12407
12408 idVal = js::IdToValue(curId);
12409 nsString propName;
12410 // This will just throw if idVal is a Symbol, like the spec says
12411 // to do.
12412 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12413 return false;
12414 }
12415
12416 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12417 return false;
12418 }
12419
12420 Record<nsString, RefPtr<mozilla::dom::TestInterface>>::EntryType* entry;
12421 if (!idsSeen.EnsureInserted(propName)) {
12422 // Find the existing entry.
12423 auto idx = recordEntries.IndexOf(propName);
12424 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12425); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12425; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12425 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12425); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12425; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12426 // Now blow it away to make it look like it was just added
12427 // to the array, because it's not obvious that it's
12428 // safe to write to its already-initialized mValue via our
12429 // normal codegen conversions. For example, the value
12430 // could be a union and this would change its type, but
12431 // codegen assumes we won't do that.
12432 entry = recordEntries.ReconstructElementAt(idx);
12433 } else {
12434 // Safe to do an infallible append here, because we did a
12435 // SetCapacity above to the right capacity.
12436 entry = recordEntries.AppendElement();
12437 }
12438 entry->mKey = propName;
12439 RefPtr<mozilla::dom::TestInterface>& slot = entry->mValue;
12440 if (temp.isObject()) {
12441 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
12442 {
12443 // Our JSContext should be in the right global to do unwrapping in.
12444 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
12445 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
12446 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestInterface");
12447 return false;
12448 }
12449 }
12450 } else if (temp.isNullOrUndefined()) {
12451 slot = nullptr;
12452 } else {
12453 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
12454 return false;
12455 }
12456 }
12457 } else if (args[0].isNullOrUndefined()) {
12458 arg0.SetNull();
12459 } else {
12460 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12461 return false;
12462 }
12463 // NOTE: This assert does NOT call the function.
12464 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableCastableObjectNullableRecord(Constify(arg0)))>, "Should be returning void here");
12465 MOZ_KnownLive(self)(self)->PassNullableCastableObjectNullableRecord(Constify(arg0));
12466 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12466); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12466; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12467 args.rval().setUndefined();
12468 return true;
12469}
12470
12471static const JSJitInfo passNullableCastableObjectNullableRecord_methodinfo = {
12472 { (JSJitGetterOp)passNullableCastableObjectNullableRecord },
12473 { prototypes::id::TestExampleInterface },
12474 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12475 JSJitInfo::Method,
12476 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12477 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12478 false, /* isInfallible. False in setters. */
12479 false, /* isMovable. Not relevant for setters. */
12480 false, /* isEliminatable. Not relevant for setters. */
12481 false, /* isAlwaysInSlot. Only relevant for getters. */
12482 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12483 false, /* isTypedMethod. Only relevant for methods. */
12484 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12485};
12486
12487MOZ_CAN_RUN_SCRIPT static bool
12488passOptionalRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12489{
12490 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalRecord");
12491 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12494( cx, "TestExampleInterface"
, "passOptionalRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
12492 "TestExampleInterface", "passOptionalRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12494( cx, "TestExampleInterface"
, "passOptionalRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
12493 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12494( cx, "TestExampleInterface"
, "passOptionalRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
12494 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12494( cx, "TestExampleInterface"
, "passOptionalRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
12495
12496 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12497 Optional<Record<nsString, int32_t>> arg0;
12498 if (args.hasDefined(0)) {
12499 arg0.Construct();
12500 if (args[0].isObject()) {
12501 auto& recordEntries = arg0.Value().Entries();
12502
12503 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12504 JS::RootedVector<jsid> ids(cx);
12505 if (!js::GetPropertyKeys(cx, recordObj,
12506 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12507 return false;
12508 }
12509 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12510 JS_ReportOutOfMemory(cx);
12511 return false;
12512 }
12513 JS::Rooted<JS::Value> propNameValue(cx);
12514 JS::Rooted<JS::Value> temp(cx);
12515 JS::Rooted<jsid> curId(cx);
12516 JS::Rooted<JS::Value> idVal(cx);
12517 // Use a hashset to keep track of ids seen, to avoid
12518 // introducing nasty O(N^2) behavior scanning for them all the
12519 // time. Ideally we'd use a data structure with O(1) lookup
12520 // _and_ ordering for the MozMap, but we don't have one lying
12521 // around.
12522 nsTHashtable<nsStringHashKey> idsSeen;
12523 for (size_t i = 0; i < ids.length(); ++i) {
12524 curId = ids[i];
12525
12526 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12527 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12528 &desc)) {
12529 return false;
12530 }
12531
12532 if (desc.isNothing() || !desc->enumerable()) {
12533 continue;
12534 }
12535
12536 idVal = js::IdToValue(curId);
12537 nsString propName;
12538 // This will just throw if idVal is a Symbol, like the spec says
12539 // to do.
12540 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12541 return false;
12542 }
12543
12544 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12545 return false;
12546 }
12547
12548 Record<nsString, int32_t>::EntryType* entry;
12549 if (!idsSeen.EnsureInserted(propName)) {
12550 // Find the existing entry.
12551 auto idx = recordEntries.IndexOf(propName);
12552 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12553); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12553; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12553 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12553); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12553; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12554 // Now blow it away to make it look like it was just added
12555 // to the array, because it's not obvious that it's
12556 // safe to write to its already-initialized mValue via our
12557 // normal codegen conversions. For example, the value
12558 // could be a union and this would change its type, but
12559 // codegen assumes we won't do that.
12560 entry = recordEntries.ReconstructElementAt(idx);
12561 } else {
12562 // Safe to do an infallible append here, because we did a
12563 // SetCapacity above to the right capacity.
12564 entry = recordEntries.AppendElement();
12565 }
12566 entry->mKey = propName;
12567 int32_t& slot = entry->mValue;
12568 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot)) {
12569 return false;
12570 }
12571 }
12572 } else {
12573 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12574 return false;
12575 }
12576 }
12577 // NOTE: This assert does NOT call the function.
12578 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalRecord(Constify(arg0)))>, "Should be returning void here");
12579 MOZ_KnownLive(self)(self)->PassOptionalRecord(Constify(arg0));
12580 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12580); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12580; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12581 args.rval().setUndefined();
12582 return true;
12583}
12584
12585static const JSJitInfo passOptionalRecord_methodinfo = {
12586 { (JSJitGetterOp)passOptionalRecord },
12587 { prototypes::id::TestExampleInterface },
12588 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12589 JSJitInfo::Method,
12590 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12591 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12592 false, /* isInfallible. False in setters. */
12593 false, /* isMovable. Not relevant for setters. */
12594 false, /* isEliminatable. Not relevant for setters. */
12595 false, /* isAlwaysInSlot. Only relevant for getters. */
12596 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12597 false, /* isTypedMethod. Only relevant for methods. */
12598 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12599};
12600
12601MOZ_CAN_RUN_SCRIPT static bool
12602passOptionalNullableRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12603{
12604 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableRecord");
12605 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12608( cx, "TestExampleInterface"
, "passOptionalNullableRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12606 "TestExampleInterface", "passOptionalNullableRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12608( cx, "TestExampleInterface"
, "passOptionalNullableRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12607 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12608( cx, "TestExampleInterface"
, "passOptionalNullableRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12608 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12608( cx, "TestExampleInterface"
, "passOptionalNullableRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12609
12610 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12611 Optional<Nullable<Record<nsString, int32_t>>> arg0;
12612 if (args.hasDefined(0)) {
12613 arg0.Construct();
12614 if (args[0].isObject()) {
12615 auto& recordEntries = arg0.Value().SetValue().Entries();
12616
12617 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12618 JS::RootedVector<jsid> ids(cx);
12619 if (!js::GetPropertyKeys(cx, recordObj,
12620 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12621 return false;
12622 }
12623 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12624 JS_ReportOutOfMemory(cx);
12625 return false;
12626 }
12627 JS::Rooted<JS::Value> propNameValue(cx);
12628 JS::Rooted<JS::Value> temp(cx);
12629 JS::Rooted<jsid> curId(cx);
12630 JS::Rooted<JS::Value> idVal(cx);
12631 // Use a hashset to keep track of ids seen, to avoid
12632 // introducing nasty O(N^2) behavior scanning for them all the
12633 // time. Ideally we'd use a data structure with O(1) lookup
12634 // _and_ ordering for the MozMap, but we don't have one lying
12635 // around.
12636 nsTHashtable<nsStringHashKey> idsSeen;
12637 for (size_t i = 0; i < ids.length(); ++i) {
12638 curId = ids[i];
12639
12640 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12641 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12642 &desc)) {
12643 return false;
12644 }
12645
12646 if (desc.isNothing() || !desc->enumerable()) {
12647 continue;
12648 }
12649
12650 idVal = js::IdToValue(curId);
12651 nsString propName;
12652 // This will just throw if idVal is a Symbol, like the spec says
12653 // to do.
12654 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12655 return false;
12656 }
12657
12658 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12659 return false;
12660 }
12661
12662 Record<nsString, int32_t>::EntryType* entry;
12663 if (!idsSeen.EnsureInserted(propName)) {
12664 // Find the existing entry.
12665 auto idx = recordEntries.IndexOf(propName);
12666 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12667); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12667; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12667 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12667); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12667; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12668 // Now blow it away to make it look like it was just added
12669 // to the array, because it's not obvious that it's
12670 // safe to write to its already-initialized mValue via our
12671 // normal codegen conversions. For example, the value
12672 // could be a union and this would change its type, but
12673 // codegen assumes we won't do that.
12674 entry = recordEntries.ReconstructElementAt(idx);
12675 } else {
12676 // Safe to do an infallible append here, because we did a
12677 // SetCapacity above to the right capacity.
12678 entry = recordEntries.AppendElement();
12679 }
12680 entry->mKey = propName;
12681 int32_t& slot = entry->mValue;
12682 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot)) {
12683 return false;
12684 }
12685 }
12686 } else if (args[0].isNullOrUndefined()) {
12687 arg0.Value().SetNull();
12688 } else {
12689 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12690 return false;
12691 }
12692 }
12693 // NOTE: This assert does NOT call the function.
12694 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableRecord(Constify(arg0)))>, "Should be returning void here");
12695 MOZ_KnownLive(self)(self)->PassOptionalNullableRecord(Constify(arg0));
12696 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12696); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12696; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12697 args.rval().setUndefined();
12698 return true;
12699}
12700
12701static const JSJitInfo passOptionalNullableRecord_methodinfo = {
12702 { (JSJitGetterOp)passOptionalNullableRecord },
12703 { prototypes::id::TestExampleInterface },
12704 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12705 JSJitInfo::Method,
12706 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12707 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12708 false, /* isInfallible. False in setters. */
12709 false, /* isMovable. Not relevant for setters. */
12710 false, /* isEliminatable. Not relevant for setters. */
12711 false, /* isAlwaysInSlot. Only relevant for getters. */
12712 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12713 false, /* isTypedMethod. Only relevant for methods. */
12714 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12715};
12716
12717MOZ_CAN_RUN_SCRIPT static bool
12718passOptionalNullableRecordWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12719{
12720 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableRecordWithDefaultValue");
12721 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12724( cx, "TestExampleInterface"
, "passOptionalNullableRecordWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12722 "TestExampleInterface", "passOptionalNullableRecordWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12724( cx, "TestExampleInterface"
, "passOptionalNullableRecordWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12723 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12724( cx, "TestExampleInterface"
, "passOptionalNullableRecordWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12724 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12724( cx, "TestExampleInterface"
, "passOptionalNullableRecordWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12725
12726 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12727 Nullable<Record<nsString, int32_t>> arg0;
12728 if (args.hasDefined(0)) {
12729 if (args[0].isObject()) {
12730 auto& recordEntries = arg0.SetValue().Entries();
12731
12732 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12733 JS::RootedVector<jsid> ids(cx);
12734 if (!js::GetPropertyKeys(cx, recordObj,
12735 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12736 return false;
12737 }
12738 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12739 JS_ReportOutOfMemory(cx);
12740 return false;
12741 }
12742 JS::Rooted<JS::Value> propNameValue(cx);
12743 JS::Rooted<JS::Value> temp(cx);
12744 JS::Rooted<jsid> curId(cx);
12745 JS::Rooted<JS::Value> idVal(cx);
12746 // Use a hashset to keep track of ids seen, to avoid
12747 // introducing nasty O(N^2) behavior scanning for them all the
12748 // time. Ideally we'd use a data structure with O(1) lookup
12749 // _and_ ordering for the MozMap, but we don't have one lying
12750 // around.
12751 nsTHashtable<nsStringHashKey> idsSeen;
12752 for (size_t i = 0; i < ids.length(); ++i) {
12753 curId = ids[i];
12754
12755 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12756 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12757 &desc)) {
12758 return false;
12759 }
12760
12761 if (desc.isNothing() || !desc->enumerable()) {
12762 continue;
12763 }
12764
12765 idVal = js::IdToValue(curId);
12766 nsString propName;
12767 // This will just throw if idVal is a Symbol, like the spec says
12768 // to do.
12769 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12770 return false;
12771 }
12772
12773 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12774 return false;
12775 }
12776
12777 Record<nsString, int32_t>::EntryType* entry;
12778 if (!idsSeen.EnsureInserted(propName)) {
12779 // Find the existing entry.
12780 auto idx = recordEntries.IndexOf(propName);
12781 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12782); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12782; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12782 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12782); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12782; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12783 // Now blow it away to make it look like it was just added
12784 // to the array, because it's not obvious that it's
12785 // safe to write to its already-initialized mValue via our
12786 // normal codegen conversions. For example, the value
12787 // could be a union and this would change its type, but
12788 // codegen assumes we won't do that.
12789 entry = recordEntries.ReconstructElementAt(idx);
12790 } else {
12791 // Safe to do an infallible append here, because we did a
12792 // SetCapacity above to the right capacity.
12793 entry = recordEntries.AppendElement();
12794 }
12795 entry->mKey = propName;
12796 int32_t& slot = entry->mValue;
12797 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot)) {
12798 return false;
12799 }
12800 }
12801 } else if (args[0].isNullOrUndefined()) {
12802 arg0.SetNull();
12803 } else {
12804 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12805 return false;
12806 }
12807 } else {
12808 arg0.SetNull();
12809 }
12810 // NOTE: This assert does NOT call the function.
12811 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableRecordWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
12812 MOZ_KnownLive(self)(self)->PassOptionalNullableRecordWithDefaultValue(Constify(arg0));
12813 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12813); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12813; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12814 args.rval().setUndefined();
12815 return true;
12816}
12817
12818static const JSJitInfo passOptionalNullableRecordWithDefaultValue_methodinfo = {
12819 { (JSJitGetterOp)passOptionalNullableRecordWithDefaultValue },
12820 { prototypes::id::TestExampleInterface },
12821 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12822 JSJitInfo::Method,
12823 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12824 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12825 false, /* isInfallible. False in setters. */
12826 false, /* isMovable. Not relevant for setters. */
12827 false, /* isEliminatable. Not relevant for setters. */
12828 false, /* isAlwaysInSlot. Only relevant for getters. */
12829 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12830 false, /* isTypedMethod. Only relevant for methods. */
12831 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12832};
12833
12834MOZ_CAN_RUN_SCRIPT static bool
12835passOptionalObjectRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12836{
12837 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalObjectRecord");
12838 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12841( cx, "TestExampleInterface"
, "passOptionalObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12839 "TestExampleInterface", "passOptionalObjectRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12841( cx, "TestExampleInterface"
, "passOptionalObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12840 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12841( cx, "TestExampleInterface"
, "passOptionalObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12841 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12841( cx, "TestExampleInterface"
, "passOptionalObjectRecord", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12842
12843 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12844 Optional<Record<nsString, OwningNonNull<mozilla::dom::TestInterface>>> arg0;
12845 if (args.hasDefined(0)) {
12846 arg0.Construct();
12847 if (args[0].isObject()) {
12848 auto& recordEntries = arg0.Value().Entries();
12849
12850 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12851 JS::RootedVector<jsid> ids(cx);
12852 if (!js::GetPropertyKeys(cx, recordObj,
12853 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12854 return false;
12855 }
12856 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12857 JS_ReportOutOfMemory(cx);
12858 return false;
12859 }
12860 JS::Rooted<JS::Value> propNameValue(cx);
12861 JS::Rooted<JS::Value> temp(cx);
12862 JS::Rooted<jsid> curId(cx);
12863 JS::Rooted<JS::Value> idVal(cx);
12864 // Use a hashset to keep track of ids seen, to avoid
12865 // introducing nasty O(N^2) behavior scanning for them all the
12866 // time. Ideally we'd use a data structure with O(1) lookup
12867 // _and_ ordering for the MozMap, but we don't have one lying
12868 // around.
12869 nsTHashtable<nsStringHashKey> idsSeen;
12870 for (size_t i = 0; i < ids.length(); ++i) {
12871 curId = ids[i];
12872
12873 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
12874 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
12875 &desc)) {
12876 return false;
12877 }
12878
12879 if (desc.isNothing() || !desc->enumerable()) {
12880 continue;
12881 }
12882
12883 idVal = js::IdToValue(curId);
12884 nsString propName;
12885 // This will just throw if idVal is a Symbol, like the spec says
12886 // to do.
12887 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
12888 return false;
12889 }
12890
12891 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
12892 return false;
12893 }
12894
12895 Record<nsString, OwningNonNull<mozilla::dom::TestInterface>>::EntryType* entry;
12896 if (!idsSeen.EnsureInserted(propName)) {
12897 // Find the existing entry.
12898 auto idx = recordEntries.IndexOf(propName);
12899 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12900); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12900; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
12900 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 12900); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 12900; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
12901 // Now blow it away to make it look like it was just added
12902 // to the array, because it's not obvious that it's
12903 // safe to write to its already-initialized mValue via our
12904 // normal codegen conversions. For example, the value
12905 // could be a union and this would change its type, but
12906 // codegen assumes we won't do that.
12907 entry = recordEntries.ReconstructElementAt(idx);
12908 } else {
12909 // Safe to do an infallible append here, because we did a
12910 // SetCapacity above to the right capacity.
12911 entry = recordEntries.AppendElement();
12912 }
12913 entry->mKey = propName;
12914 OwningNonNull<mozilla::dom::TestInterface>& slot = entry->mValue;
12915 if (temp.isObject()) {
12916 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
12917 {
12918 // Our JSContext should be in the right global to do unwrapping in.
12919 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
12920 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
12921 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestInterface");
12922 return false;
12923 }
12924 }
12925 } else {
12926 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
12927 return false;
12928 }
12929 }
12930 } else {
12931 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
12932 return false;
12933 }
12934 }
12935 // NOTE: This assert does NOT call the function.
12936 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalObjectRecord(Constify(arg0)))>, "Should be returning void here");
12937 MOZ_KnownLive(self)(self)->PassOptionalObjectRecord(Constify(arg0));
12938 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 12938); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 12938; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
12939 args.rval().setUndefined();
12940 return true;
12941}
12942
12943static const JSJitInfo passOptionalObjectRecord_methodinfo = {
12944 { (JSJitGetterOp)passOptionalObjectRecord },
12945 { prototypes::id::TestExampleInterface },
12946 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
12947 JSJitInfo::Method,
12948 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12949 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12950 false, /* isInfallible. False in setters. */
12951 false, /* isMovable. Not relevant for setters. */
12952 false, /* isEliminatable. Not relevant for setters. */
12953 false, /* isAlwaysInSlot. Only relevant for getters. */
12954 false, /* isLazilyCachedInSlot. Only relevant for getters. */
12955 false, /* isTypedMethod. Only relevant for methods. */
12956 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12957};
12958
12959MOZ_CAN_RUN_SCRIPT static bool
12960passExternalInterfaceRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
12961{
12962 BindingCallContext cx(cx_, "TestExampleInterface.passExternalInterfaceRecord");
12963 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject12966( cx, "TestExampleInterface"
, "passExternalInterfaceRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12964 "TestExampleInterface", "passExternalInterfaceRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject12966( cx, "TestExampleInterface"
, "passExternalInterfaceRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12965 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject12966( cx, "TestExampleInterface"
, "passExternalInterfaceRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
12966 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject12966( cx, "TestExampleInterface"
, "passExternalInterfaceRecord", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
12967
12968 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
12969 if (!args.requireAtLeast(cx, "TestExampleInterface.passExternalInterfaceRecord", 1)) {
12970 return false;
12971 }
12972 Record<nsString, RefPtr<mozilla::dom::TestExternalInterface>> arg0;
12973 if (args[0].isObject()) {
12974 auto& recordEntries = arg0.Entries();
12975
12976 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
12977 JS::RootedVector<jsid> ids(cx);
12978 if (!js::GetPropertyKeys(cx, recordObj,
12979 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
12980 return false;
12981 }
12982 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
12983 JS_ReportOutOfMemory(cx);
12984 return false;
12985 }
12986 JS::Rooted<JS::Value> propNameValue(cx);
12987 JS::Rooted<JS::Value> temp(cx);
12988 JS::Rooted<jsid> curId(cx);
12989 JS::Rooted<JS::Value> idVal(cx);
12990 // Use a hashset to keep track of ids seen, to avoid
12991 // introducing nasty O(N^2) behavior scanning for them all the
12992 // time. Ideally we'd use a data structure with O(1) lookup
12993 // _and_ ordering for the MozMap, but we don't have one lying
12994 // around.
12995 nsTHashtable<nsStringHashKey> idsSeen;
12996 for (size_t i = 0; i < ids.length(); ++i) {
12997 curId = ids[i];
12998
12999 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13000 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13001 &desc)) {
13002 return false;
13003 }
13004
13005 if (desc.isNothing() || !desc->enumerable()) {
13006 continue;
13007 }
13008
13009 idVal = js::IdToValue(curId);
13010 nsString propName;
13011 // This will just throw if idVal is a Symbol, like the spec says
13012 // to do.
13013 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
13014 return false;
13015 }
13016
13017 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13018 return false;
13019 }
13020
13021 Record<nsString, RefPtr<mozilla::dom::TestExternalInterface>>::EntryType* entry;
13022 if (!idsSeen.EnsureInserted(propName)) {
13023 // Find the existing entry.
13024 auto idx = recordEntries.IndexOf(propName);
13025 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13026); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13026; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13026 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13026); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13026; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13027 // Now blow it away to make it look like it was just added
13028 // to the array, because it's not obvious that it's
13029 // safe to write to its already-initialized mValue via our
13030 // normal codegen conversions. For example, the value
13031 // could be a union and this would change its type, but
13032 // codegen assumes we won't do that.
13033 entry = recordEntries.ReconstructElementAt(idx);
13034 } else {
13035 // Safe to do an infallible append here, because we did a
13036 // SetCapacity above to the right capacity.
13037 entry = recordEntries.AppendElement();
13038 }
13039 entry->mKey = propName;
13040 RefPtr<mozilla::dom::TestExternalInterface>& slot = entry->mValue;
13041 if (temp.isObject()) {
13042 static_assert(IsRefcounted<mozilla::dom::TestExternalInterface>::value, "We can only store refcounted classes.");
13043 RefPtr<mozilla::dom::TestExternalInterface> tempHolder;
13044 JS::Rooted<JSObject*> source(cx, &temp.toObject());
13045 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder
)))), 0)))
) {
13046 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestExternalInterface");
13047 return false;
13048 }
13049 MOZ_ASSERT(tempHolder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(tempHolder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(tempHolder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("tempHolder", "../TestExampleGenBinding.cpp"
, 13049); AnnotateMozCrashReason("MOZ_ASSERT" "(" "tempHolder"
")"); do { *((volatile int*)__null) = 13049; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13050 slot = tempHolder;
13051 } else {
13052 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
13053 return false;
13054 }
13055 }
13056 } else {
13057 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
13058 return false;
13059 }
13060 // NOTE: This assert does NOT call the function.
13061 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassExternalInterfaceRecord(Constify(arg0)))>, "Should be returning void here");
13062 MOZ_KnownLive(self)(self)->PassExternalInterfaceRecord(Constify(arg0));
13063 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13063); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13063; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13064 args.rval().setUndefined();
13065 return true;
13066}
13067
13068static const JSJitInfo passExternalInterfaceRecord_methodinfo = {
13069 { (JSJitGetterOp)passExternalInterfaceRecord },
13070 { prototypes::id::TestExampleInterface },
13071 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13072 JSJitInfo::Method,
13073 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13074 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13075 false, /* isInfallible. False in setters. */
13076 false, /* isMovable. Not relevant for setters. */
13077 false, /* isEliminatable. Not relevant for setters. */
13078 false, /* isAlwaysInSlot. Only relevant for getters. */
13079 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13080 false, /* isTypedMethod. Only relevant for methods. */
13081 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13082};
13083
13084MOZ_CAN_RUN_SCRIPT static bool
13085passNullableExternalInterfaceRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13086{
13087 BindingCallContext cx(cx_, "TestExampleInterface.passNullableExternalInterfaceRecord");
13088 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13091( cx, "TestExampleInterface"
, "passNullableExternalInterfaceRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13089 "TestExampleInterface", "passNullableExternalInterfaceRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13091( cx, "TestExampleInterface"
, "passNullableExternalInterfaceRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13090 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13091( cx, "TestExampleInterface"
, "passNullableExternalInterfaceRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13091 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13091( cx, "TestExampleInterface"
, "passNullableExternalInterfaceRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
13092
13093 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13094 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableExternalInterfaceRecord", 1)) {
13095 return false;
13096 }
13097 Record<nsString, RefPtr<mozilla::dom::TestExternalInterface>> arg0;
13098 if (args[0].isObject()) {
13099 auto& recordEntries = arg0.Entries();
13100
13101 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
13102 JS::RootedVector<jsid> ids(cx);
13103 if (!js::GetPropertyKeys(cx, recordObj,
13104 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
13105 return false;
13106 }
13107 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
13108 JS_ReportOutOfMemory(cx);
13109 return false;
13110 }
13111 JS::Rooted<JS::Value> propNameValue(cx);
13112 JS::Rooted<JS::Value> temp(cx);
13113 JS::Rooted<jsid> curId(cx);
13114 JS::Rooted<JS::Value> idVal(cx);
13115 // Use a hashset to keep track of ids seen, to avoid
13116 // introducing nasty O(N^2) behavior scanning for them all the
13117 // time. Ideally we'd use a data structure with O(1) lookup
13118 // _and_ ordering for the MozMap, but we don't have one lying
13119 // around.
13120 nsTHashtable<nsStringHashKey> idsSeen;
13121 for (size_t i = 0; i < ids.length(); ++i) {
13122 curId = ids[i];
13123
13124 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13125 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13126 &desc)) {
13127 return false;
13128 }
13129
13130 if (desc.isNothing() || !desc->enumerable()) {
13131 continue;
13132 }
13133
13134 idVal = js::IdToValue(curId);
13135 nsString propName;
13136 // This will just throw if idVal is a Symbol, like the spec says
13137 // to do.
13138 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
13139 return false;
13140 }
13141
13142 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13143 return false;
13144 }
13145
13146 Record<nsString, RefPtr<mozilla::dom::TestExternalInterface>>::EntryType* entry;
13147 if (!idsSeen.EnsureInserted(propName)) {
13148 // Find the existing entry.
13149 auto idx = recordEntries.IndexOf(propName);
13150 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13151); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13151; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13151 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13151); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13151; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13152 // Now blow it away to make it look like it was just added
13153 // to the array, because it's not obvious that it's
13154 // safe to write to its already-initialized mValue via our
13155 // normal codegen conversions. For example, the value
13156 // could be a union and this would change its type, but
13157 // codegen assumes we won't do that.
13158 entry = recordEntries.ReconstructElementAt(idx);
13159 } else {
13160 // Safe to do an infallible append here, because we did a
13161 // SetCapacity above to the right capacity.
13162 entry = recordEntries.AppendElement();
13163 }
13164 entry->mKey = propName;
13165 RefPtr<mozilla::dom::TestExternalInterface>& slot = entry->mValue;
13166 if (temp.isObject()) {
13167 static_assert(IsRefcounted<mozilla::dom::TestExternalInterface>::value, "We can only store refcounted classes.");
13168 RefPtr<mozilla::dom::TestExternalInterface> tempHolder;
13169 JS::Rooted<JSObject*> source(cx, &temp.toObject());
13170 if (NS_FAILED(UnwrapArg<mozilla::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder)))((bool)(__builtin_expect(!!(NS_FAILED_impl(UnwrapArg<mozilla
::dom::TestExternalInterface>(cx, source, getter_AddRefs(tempHolder
)))), 0)))
) {
13171 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "TestExternalInterface");
13172 return false;
13173 }
13174 MOZ_ASSERT(tempHolder)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(tempHolder)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(tempHolder))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("tempHolder", "../TestExampleGenBinding.cpp"
, 13174); AnnotateMozCrashReason("MOZ_ASSERT" "(" "tempHolder"
")"); do { *((volatile int*)__null) = 13174; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13175 slot = tempHolder;
13176 } else if (temp.isNullOrUndefined()) {
13177 slot = nullptr;
13178 } else {
13179 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
13180 return false;
13181 }
13182 }
13183 } else {
13184 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
13185 return false;
13186 }
13187 // NOTE: This assert does NOT call the function.
13188 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableExternalInterfaceRecord(Constify(arg0)))>, "Should be returning void here");
13189 MOZ_KnownLive(self)(self)->PassNullableExternalInterfaceRecord(Constify(arg0));
13190 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13190); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13190; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13191 args.rval().setUndefined();
13192 return true;
13193}
13194
13195static const JSJitInfo passNullableExternalInterfaceRecord_methodinfo = {
13196 { (JSJitGetterOp)passNullableExternalInterfaceRecord },
13197 { prototypes::id::TestExampleInterface },
13198 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13199 JSJitInfo::Method,
13200 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13201 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13202 false, /* isInfallible. False in setters. */
13203 false, /* isMovable. Not relevant for setters. */
13204 false, /* isEliminatable. Not relevant for setters. */
13205 false, /* isAlwaysInSlot. Only relevant for getters. */
13206 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13207 false, /* isTypedMethod. Only relevant for methods. */
13208 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13209};
13210
13211MOZ_CAN_RUN_SCRIPT static bool
13212passStringRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13213{
13214 BindingCallContext cx(cx_, "TestExampleInterface.passStringRecord");
13215 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13218( cx, "TestExampleInterface"
, "passStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13216 "TestExampleInterface", "passStringRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13218( cx, "TestExampleInterface"
, "passStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13217 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13218( cx, "TestExampleInterface"
, "passStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13218 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13218( cx, "TestExampleInterface"
, "passStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13219
13220 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13221 if (!args.requireAtLeast(cx, "TestExampleInterface.passStringRecord", 1)) {
13222 return false;
13223 }
13224 Record<nsString, nsString> arg0;
13225 if (args[0].isObject()) {
13226 auto& recordEntries = arg0.Entries();
13227
13228 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
13229 JS::RootedVector<jsid> ids(cx);
13230 if (!js::GetPropertyKeys(cx, recordObj,
13231 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
13232 return false;
13233 }
13234 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
13235 JS_ReportOutOfMemory(cx);
13236 return false;
13237 }
13238 JS::Rooted<JS::Value> propNameValue(cx);
13239 JS::Rooted<JS::Value> temp(cx);
13240 JS::Rooted<jsid> curId(cx);
13241 JS::Rooted<JS::Value> idVal(cx);
13242 // Use a hashset to keep track of ids seen, to avoid
13243 // introducing nasty O(N^2) behavior scanning for them all the
13244 // time. Ideally we'd use a data structure with O(1) lookup
13245 // _and_ ordering for the MozMap, but we don't have one lying
13246 // around.
13247 nsTHashtable<nsStringHashKey> idsSeen;
13248 for (size_t i = 0; i < ids.length(); ++i) {
13249 curId = ids[i];
13250
13251 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13252 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13253 &desc)) {
13254 return false;
13255 }
13256
13257 if (desc.isNothing() || !desc->enumerable()) {
13258 continue;
13259 }
13260
13261 idVal = js::IdToValue(curId);
13262 nsString propName;
13263 // This will just throw if idVal is a Symbol, like the spec says
13264 // to do.
13265 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
13266 return false;
13267 }
13268
13269 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13270 return false;
13271 }
13272
13273 Record<nsString, nsString>::EntryType* entry;
13274 if (!idsSeen.EnsureInserted(propName)) {
13275 // Find the existing entry.
13276 auto idx = recordEntries.IndexOf(propName);
13277 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13278); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13278; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13278 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13278); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13278; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13279 // Now blow it away to make it look like it was just added
13280 // to the array, because it's not obvious that it's
13281 // safe to write to its already-initialized mValue via our
13282 // normal codegen conversions. For example, the value
13283 // could be a union and this would change its type, but
13284 // codegen assumes we won't do that.
13285 entry = recordEntries.ReconstructElementAt(idx);
13286 } else {
13287 // Safe to do an infallible append here, because we did a
13288 // SetCapacity above to the right capacity.
13289 entry = recordEntries.AppendElement();
13290 }
13291 entry->mKey = propName;
13292 nsString& slot = entry->mValue;
13293 if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
13294 return false;
13295 }
13296 }
13297 } else {
13298 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
13299 return false;
13300 }
13301 // NOTE: This assert does NOT call the function.
13302 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassStringRecord(Constify(arg0)))>, "Should be returning void here");
13303 MOZ_KnownLive(self)(self)->PassStringRecord(Constify(arg0));
13304 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13304); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13304; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13305 args.rval().setUndefined();
13306 return true;
13307}
13308
13309static const JSJitInfo passStringRecord_methodinfo = {
13310 { (JSJitGetterOp)passStringRecord },
13311 { prototypes::id::TestExampleInterface },
13312 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13313 JSJitInfo::Method,
13314 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13315 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13316 false, /* isInfallible. False in setters. */
13317 false, /* isMovable. Not relevant for setters. */
13318 false, /* isEliminatable. Not relevant for setters. */
13319 false, /* isAlwaysInSlot. Only relevant for getters. */
13320 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13321 false, /* isTypedMethod. Only relevant for methods. */
13322 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13323};
13324
13325MOZ_CAN_RUN_SCRIPT static bool
13326passByteStringRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13327{
13328 BindingCallContext cx(cx_, "TestExampleInterface.passByteStringRecord");
13329 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13332( cx, "TestExampleInterface"
, "passByteStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13330 "TestExampleInterface", "passByteStringRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13332( cx, "TestExampleInterface"
, "passByteStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13331 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13332( cx, "TestExampleInterface"
, "passByteStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13332 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13332( cx, "TestExampleInterface"
, "passByteStringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13333
13334 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13335 if (!args.requireAtLeast(cx, "TestExampleInterface.passByteStringRecord", 1)) {
13336 return false;
13337 }
13338 Record<nsString, nsCString> arg0;
13339 if (args[0].isObject()) {
13340 auto& recordEntries = arg0.Entries();
13341
13342 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
13343 JS::RootedVector<jsid> ids(cx);
13344 if (!js::GetPropertyKeys(cx, recordObj,
13345 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
13346 return false;
13347 }
13348 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
13349 JS_ReportOutOfMemory(cx);
13350 return false;
13351 }
13352 JS::Rooted<JS::Value> propNameValue(cx);
13353 JS::Rooted<JS::Value> temp(cx);
13354 JS::Rooted<jsid> curId(cx);
13355 JS::Rooted<JS::Value> idVal(cx);
13356 // Use a hashset to keep track of ids seen, to avoid
13357 // introducing nasty O(N^2) behavior scanning for them all the
13358 // time. Ideally we'd use a data structure with O(1) lookup
13359 // _and_ ordering for the MozMap, but we don't have one lying
13360 // around.
13361 nsTHashtable<nsStringHashKey> idsSeen;
13362 for (size_t i = 0; i < ids.length(); ++i) {
13363 curId = ids[i];
13364
13365 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13366 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13367 &desc)) {
13368 return false;
13369 }
13370
13371 if (desc.isNothing() || !desc->enumerable()) {
13372 continue;
13373 }
13374
13375 idVal = js::IdToValue(curId);
13376 nsString propName;
13377 // This will just throw if idVal is a Symbol, like the spec says
13378 // to do.
13379 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
13380 return false;
13381 }
13382
13383 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13384 return false;
13385 }
13386
13387 Record<nsString, nsCString>::EntryType* entry;
13388 if (!idsSeen.EnsureInserted(propName)) {
13389 // Find the existing entry.
13390 auto idx = recordEntries.IndexOf(propName);
13391 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13392); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13392; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13392 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13392); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13392; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13393 // Now blow it away to make it look like it was just added
13394 // to the array, because it's not obvious that it's
13395 // safe to write to its already-initialized mValue via our
13396 // normal codegen conversions. For example, the value
13397 // could be a union and this would change its type, but
13398 // codegen assumes we won't do that.
13399 entry = recordEntries.ReconstructElementAt(idx);
13400 } else {
13401 // Safe to do an infallible append here, because we did a
13402 // SetCapacity above to the right capacity.
13403 entry = recordEntries.AppendElement();
13404 }
13405 entry->mKey = propName;
13406 nsCString& slot = entry->mValue;
13407 if (!ConvertJSValueToByteString(cx, temp, false, "value in argument 1", slot)) {
13408 return false;
13409 }
13410 }
13411 } else {
13412 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
13413 return false;
13414 }
13415 // NOTE: This assert does NOT call the function.
13416 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassByteStringRecord(Constify(arg0)))>, "Should be returning void here");
13417 MOZ_KnownLive(self)(self)->PassByteStringRecord(Constify(arg0));
13418 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13418); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13418; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13419 args.rval().setUndefined();
13420 return true;
13421}
13422
13423static const JSJitInfo passByteStringRecord_methodinfo = {
13424 { (JSJitGetterOp)passByteStringRecord },
13425 { prototypes::id::TestExampleInterface },
13426 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13427 JSJitInfo::Method,
13428 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13429 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13430 false, /* isInfallible. False in setters. */
13431 false, /* isMovable. Not relevant for setters. */
13432 false, /* isEliminatable. Not relevant for setters. */
13433 false, /* isAlwaysInSlot. Only relevant for getters. */
13434 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13435 false, /* isTypedMethod. Only relevant for methods. */
13436 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13437};
13438
13439MOZ_CAN_RUN_SCRIPT static bool
13440passUTF8StringRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13441{
13442 BindingCallContext cx(cx_, "TestExampleInterface.passUTF8StringRecord");
13443 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13446( cx, "TestExampleInterface"
, "passUTF8StringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13444 "TestExampleInterface", "passUTF8StringRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13446( cx, "TestExampleInterface"
, "passUTF8StringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13445 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13446( cx, "TestExampleInterface"
, "passUTF8StringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13446 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13446( cx, "TestExampleInterface"
, "passUTF8StringRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13447
13448 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13449 if (!args.requireAtLeast(cx, "TestExampleInterface.passUTF8StringRecord", 1)) {
13450 return false;
13451 }
13452 Record<nsString, nsCString> arg0;
13453 if (args[0].isObject()) {
13454 auto& recordEntries = arg0.Entries();
13455
13456 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
13457 JS::RootedVector<jsid> ids(cx);
13458 if (!js::GetPropertyKeys(cx, recordObj,
13459 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
13460 return false;
13461 }
13462 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
13463 JS_ReportOutOfMemory(cx);
13464 return false;
13465 }
13466 JS::Rooted<JS::Value> propNameValue(cx);
13467 JS::Rooted<JS::Value> temp(cx);
13468 JS::Rooted<jsid> curId(cx);
13469 JS::Rooted<JS::Value> idVal(cx);
13470 // Use a hashset to keep track of ids seen, to avoid
13471 // introducing nasty O(N^2) behavior scanning for them all the
13472 // time. Ideally we'd use a data structure with O(1) lookup
13473 // _and_ ordering for the MozMap, but we don't have one lying
13474 // around.
13475 nsTHashtable<nsStringHashKey> idsSeen;
13476 for (size_t i = 0; i < ids.length(); ++i) {
13477 curId = ids[i];
13478
13479 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13480 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13481 &desc)) {
13482 return false;
13483 }
13484
13485 if (desc.isNothing() || !desc->enumerable()) {
13486 continue;
13487 }
13488
13489 idVal = js::IdToValue(curId);
13490 nsString propName;
13491 // This will just throw if idVal is a Symbol, like the spec says
13492 // to do.
13493 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
13494 return false;
13495 }
13496
13497 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13498 return false;
13499 }
13500
13501 Record<nsString, nsCString>::EntryType* entry;
13502 if (!idsSeen.EnsureInserted(propName)) {
13503 // Find the existing entry.
13504 auto idx = recordEntries.IndexOf(propName);
13505 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13506); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13506; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13506 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13506); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13506; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13507 // Now blow it away to make it look like it was just added
13508 // to the array, because it's not obvious that it's
13509 // safe to write to its already-initialized mValue via our
13510 // normal codegen conversions. For example, the value
13511 // could be a union and this would change its type, but
13512 // codegen assumes we won't do that.
13513 entry = recordEntries.ReconstructElementAt(idx);
13514 } else {
13515 // Safe to do an infallible append here, because we did a
13516 // SetCapacity above to the right capacity.
13517 entry = recordEntries.AppendElement();
13518 }
13519 entry->mKey = propName;
13520 nsCString& slot = entry->mValue;
13521 if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
13522 return false;
13523 }
13524 }
13525 } else {
13526 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
13527 return false;
13528 }
13529 // NOTE: This assert does NOT call the function.
13530 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUTF8StringRecord(Constify(arg0)))>, "Should be returning void here");
13531 MOZ_KnownLive(self)(self)->PassUTF8StringRecord(Constify(arg0));
13532 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13532); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13532; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13533 args.rval().setUndefined();
13534 return true;
13535}
13536
13537static const JSJitInfo passUTF8StringRecord_methodinfo = {
13538 { (JSJitGetterOp)passUTF8StringRecord },
13539 { prototypes::id::TestExampleInterface },
13540 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13541 JSJitInfo::Method,
13542 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13543 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13544 false, /* isInfallible. False in setters. */
13545 false, /* isMovable. Not relevant for setters. */
13546 false, /* isEliminatable. Not relevant for setters. */
13547 false, /* isAlwaysInSlot. Only relevant for getters. */
13548 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13549 false, /* isTypedMethod. Only relevant for methods. */
13550 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13551};
13552
13553MOZ_CAN_RUN_SCRIPT static bool
13554passRecordOfRecords(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13555{
13556 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfRecords");
13557 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13560( cx, "TestExampleInterface"
, "passRecordOfRecords", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13558 "TestExampleInterface", "passRecordOfRecords", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13560( cx, "TestExampleInterface"
, "passRecordOfRecords", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13559 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13560( cx, "TestExampleInterface"
, "passRecordOfRecords", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13560 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13560( cx, "TestExampleInterface"
, "passRecordOfRecords", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13561
13562 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13563 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfRecords", 1)) {
13564 return false;
13565 }
13566 Record<nsString, Record<nsString, int32_t>> arg0;
13567 if (args[0].isObject()) {
13568 auto& recordEntries = arg0.Entries();
13569
13570 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
13571 JS::RootedVector<jsid> ids(cx);
13572 if (!js::GetPropertyKeys(cx, recordObj,
13573 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
13574 return false;
13575 }
13576 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
13577 JS_ReportOutOfMemory(cx);
13578 return false;
13579 }
13580 JS::Rooted<JS::Value> propNameValue(cx);
13581 JS::Rooted<JS::Value> temp(cx);
13582 JS::Rooted<jsid> curId(cx);
13583 JS::Rooted<JS::Value> idVal(cx);
13584 // Use a hashset to keep track of ids seen, to avoid
13585 // introducing nasty O(N^2) behavior scanning for them all the
13586 // time. Ideally we'd use a data structure with O(1) lookup
13587 // _and_ ordering for the MozMap, but we don't have one lying
13588 // around.
13589 nsTHashtable<nsStringHashKey> idsSeen;
13590 for (size_t i = 0; i < ids.length(); ++i) {
13591 curId = ids[i];
13592
13593 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13594 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13595 &desc)) {
13596 return false;
13597 }
13598
13599 if (desc.isNothing() || !desc->enumerable()) {
13600 continue;
13601 }
13602
13603 idVal = js::IdToValue(curId);
13604 nsString propName;
13605 // This will just throw if idVal is a Symbol, like the spec says
13606 // to do.
13607 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
13608 return false;
13609 }
13610
13611 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13612 return false;
13613 }
13614
13615 Record<nsString, Record<nsString, int32_t>>::EntryType* entry;
13616 if (!idsSeen.EnsureInserted(propName)) {
13617 // Find the existing entry.
13618 auto idx = recordEntries.IndexOf(propName);
13619 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13620); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13620; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13620 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13620); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13620; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13621 // Now blow it away to make it look like it was just added
13622 // to the array, because it's not obvious that it's
13623 // safe to write to its already-initialized mValue via our
13624 // normal codegen conversions. For example, the value
13625 // could be a union and this would change its type, but
13626 // codegen assumes we won't do that.
13627 entry = recordEntries.ReconstructElementAt(idx);
13628 } else {
13629 // Safe to do an infallible append here, because we did a
13630 // SetCapacity above to the right capacity.
13631 entry = recordEntries.AppendElement();
13632 }
13633 entry->mKey = propName;
13634 Record<nsString, int32_t>& slot = entry->mValue;
13635 if (temp.isObject()) {
13636 auto& recordEntries = slot.Entries();
13637
13638 JS::Rooted<JSObject*> recordObj(cx, &temp.toObject());
13639 JS::RootedVector<jsid> ids(cx);
13640 if (!js::GetPropertyKeys(cx, recordObj,
13641 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
13642 return false;
13643 }
13644 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
13645 JS_ReportOutOfMemory(cx);
13646 return false;
13647 }
13648 JS::Rooted<JS::Value> propNameValue(cx);
13649 JS::Rooted<JS::Value> temp(cx);
13650 JS::Rooted<jsid> curId(cx);
13651 JS::Rooted<JS::Value> idVal(cx);
13652 // Use a hashset to keep track of ids seen, to avoid
13653 // introducing nasty O(N^2) behavior scanning for them all the
13654 // time. Ideally we'd use a data structure with O(1) lookup
13655 // _and_ ordering for the MozMap, but we don't have one lying
13656 // around.
13657 nsTHashtable<nsStringHashKey> idsSeen;
13658 for (size_t i = 0; i < ids.length(); ++i) {
13659 curId = ids[i];
13660
13661 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
13662 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
13663 &desc)) {
13664 return false;
13665 }
13666
13667 if (desc.isNothing() || !desc->enumerable()) {
13668 continue;
13669 }
13670
13671 idVal = js::IdToValue(curId);
13672 nsString propName;
13673 // This will just throw if idVal is a Symbol, like the spec says
13674 // to do.
13675 if (!ConvertJSValueToString(cx, idVal, "key of value in argument 1", propName)) {
13676 return false;
13677 }
13678
13679 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
13680 return false;
13681 }
13682
13683 Record<nsString, int32_t>::EntryType* entry;
13684 if (!idsSeen.EnsureInserted(propName)) {
13685 // Find the existing entry.
13686 auto idx = recordEntries.IndexOf(propName);
13687 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13688); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13688; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
13688 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 13688); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 13688; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
13689 // Now blow it away to make it look like it was just added
13690 // to the array, because it's not obvious that it's
13691 // safe to write to its already-initialized mValue via our
13692 // normal codegen conversions. For example, the value
13693 // could be a union and this would change its type, but
13694 // codegen assumes we won't do that.
13695 entry = recordEntries.ReconstructElementAt(idx);
13696 } else {
13697 // Safe to do an infallible append here, because we did a
13698 // SetCapacity above to the right capacity.
13699 entry = recordEntries.AppendElement();
13700 }
13701 entry->mKey = propName;
13702 int32_t& slot = entry->mValue;
13703 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in value in argument 1", &slot)) {
13704 return false;
13705 }
13706 }
13707 } else {
13708 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
13709 return false;
13710 }
13711 }
13712 } else {
13713 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
13714 return false;
13715 }
13716 // NOTE: This assert does NOT call the function.
13717 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfRecords(Constify(arg0)))>, "Should be returning void here");
13718 MOZ_KnownLive(self)(self)->PassRecordOfRecords(Constify(arg0));
13719 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13719); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13719; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13720 args.rval().setUndefined();
13721 return true;
13722}
13723
13724static const JSJitInfo passRecordOfRecords_methodinfo = {
13725 { (JSJitGetterOp)passRecordOfRecords },
13726 { prototypes::id::TestExampleInterface },
13727 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13728 JSJitInfo::Method,
13729 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13730 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
13731 false, /* isInfallible. False in setters. */
13732 false, /* isMovable. Not relevant for setters. */
13733 false, /* isEliminatable. Not relevant for setters. */
13734 false, /* isAlwaysInSlot. Only relevant for getters. */
13735 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13736 false, /* isTypedMethod. Only relevant for methods. */
13737 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13738};
13739
13740MOZ_CAN_RUN_SCRIPT static bool
13741receiveRecord(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13742{
13743 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13746( cx, "TestExampleInterface"
, "receiveRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13744 "TestExampleInterface", "receiveRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13746( cx, "TestExampleInterface"
, "receiveRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13745 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13746( cx, "TestExampleInterface"
, "receiveRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13746 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13746( cx, "TestExampleInterface"
, "receiveRecord", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13747
13748 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13749 Record<nsString, int32_t> result;
13750 // NOTE: This assert does NOT call the function.
13751 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveRecord(result))>, "Should be returning void here");
13752 MOZ_KnownLive(self)(self)->ReceiveRecord(result);
13753 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13753); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13753; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13754
13755 JS::Rooted<JSObject*> returnObj(cx, JS_NewPlainObject(cx));
13756 if (!returnObj) {
13757 return false;
13758 }
13759 // Scope for 'tmp'
13760 {
13761 JS::Rooted<JS::Value> tmp(cx);
13762 for (auto& entry : result.Entries()) {
13763 auto& recordValue0 = entry.mValue;
13764 // Control block to let us common up the JS_DefineUCProperty calls when there
13765 // are different ways to succeed at wrapping the value.
13766 do {
13767 tmp.setInt32(int32_t(recordValue0));
13768 break;
13769 } while (false);
13770 if (!JS_DefineUCProperty(cx, returnObj,
13771 entry.mKey.BeginReading(),
13772 entry.mKey.Length(), tmp,
13773 JSPROP_ENUMERATE)) {
13774 return false;
13775 }
13776 }
13777 }
13778 args.rval().setObject(*returnObj);
13779 return true;
13780}
13781
13782static const JSJitInfo receiveRecord_methodinfo = {
13783 { (JSJitGetterOp)receiveRecord },
13784 { prototypes::id::TestExampleInterface },
13785 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13786 JSJitInfo::Method,
13787 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13788 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
13789 false, /* isInfallible. False in setters. */
13790 false, /* isMovable. Not relevant for setters. */
13791 false, /* isEliminatable. Not relevant for setters. */
13792 false, /* isAlwaysInSlot. Only relevant for getters. */
13793 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13794 false, /* isTypedMethod. Only relevant for methods. */
13795 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13796};
13797
13798MOZ_CAN_RUN_SCRIPT static bool
13799receiveNullableRecord(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13800{
13801 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13804( cx, "TestExampleInterface"
, "receiveNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13802 "TestExampleInterface", "receiveNullableRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13804( cx, "TestExampleInterface"
, "receiveNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13803 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13804( cx, "TestExampleInterface"
, "receiveNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13804 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13804( cx, "TestExampleInterface"
, "receiveNullableRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13805
13806 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13807 Nullable<Record<nsString, int32_t>> result;
13808 // NOTE: This assert does NOT call the function.
13809 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableRecord(result))>, "Should be returning void here");
13810 MOZ_KnownLive(self)(self)->ReceiveNullableRecord(result);
13811 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13811); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13811; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13812
13813 if (result.IsNull()) {
13814 args.rval().setNull();
13815 return true;
13816 }
13817
13818 JS::Rooted<JSObject*> returnObj(cx, JS_NewPlainObject(cx));
13819 if (!returnObj) {
13820 return false;
13821 }
13822 // Scope for 'tmp'
13823 {
13824 JS::Rooted<JS::Value> tmp(cx);
13825 for (auto& entry : result.Value().Entries()) {
13826 auto& recordValue0 = entry.mValue;
13827 // Control block to let us common up the JS_DefineUCProperty calls when there
13828 // are different ways to succeed at wrapping the value.
13829 do {
13830 tmp.setInt32(int32_t(recordValue0));
13831 break;
13832 } while (false);
13833 if (!JS_DefineUCProperty(cx, returnObj,
13834 entry.mKey.BeginReading(),
13835 entry.mKey.Length(), tmp,
13836 JSPROP_ENUMERATE)) {
13837 return false;
13838 }
13839 }
13840 }
13841 args.rval().setObject(*returnObj);
13842 return true;
13843}
13844
13845static const JSJitInfo receiveNullableRecord_methodinfo = {
13846 { (JSJitGetterOp)receiveNullableRecord },
13847 { prototypes::id::TestExampleInterface },
13848 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13849 JSJitInfo::Method,
13850 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13851 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
13852 false, /* isInfallible. False in setters. */
13853 false, /* isMovable. Not relevant for setters. */
13854 false, /* isEliminatable. Not relevant for setters. */
13855 false, /* isAlwaysInSlot. Only relevant for getters. */
13856 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13857 false, /* isTypedMethod. Only relevant for methods. */
13858 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13859};
13860
13861MOZ_CAN_RUN_SCRIPT static bool
13862receiveRecordOfNullableInts(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13863{
13864 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13867( cx, "TestExampleInterface"
, "receiveRecordOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13865 "TestExampleInterface", "receiveRecordOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13867( cx, "TestExampleInterface"
, "receiveRecordOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13866 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13867( cx, "TestExampleInterface"
, "receiveRecordOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13867 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13867( cx, "TestExampleInterface"
, "receiveRecordOfNullableInts", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
13868
13869 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13870 Record<nsString, Nullable<int32_t>> result;
13871 // NOTE: This assert does NOT call the function.
13872 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveRecordOfNullableInts(result))>, "Should be returning void here");
13873 MOZ_KnownLive(self)(self)->ReceiveRecordOfNullableInts(result);
13874 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13874); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13874; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13875
13876 JS::Rooted<JSObject*> returnObj(cx, JS_NewPlainObject(cx));
13877 if (!returnObj) {
13878 return false;
13879 }
13880 // Scope for 'tmp'
13881 {
13882 JS::Rooted<JS::Value> tmp(cx);
13883 for (auto& entry : result.Entries()) {
13884 auto& recordValue0 = entry.mValue;
13885 // Control block to let us common up the JS_DefineUCProperty calls when there
13886 // are different ways to succeed at wrapping the value.
13887 do {
13888 if (recordValue0.IsNull()) {
13889 tmp.setNull();
13890 break;
13891 }
13892 tmp.setInt32(int32_t(recordValue0.Value()));
13893 break;
13894 } while (false);
13895 if (!JS_DefineUCProperty(cx, returnObj,
13896 entry.mKey.BeginReading(),
13897 entry.mKey.Length(), tmp,
13898 JSPROP_ENUMERATE)) {
13899 return false;
13900 }
13901 }
13902 }
13903 args.rval().setObject(*returnObj);
13904 return true;
13905}
13906
13907static const JSJitInfo receiveRecordOfNullableInts_methodinfo = {
13908 { (JSJitGetterOp)receiveRecordOfNullableInts },
13909 { prototypes::id::TestExampleInterface },
13910 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13911 JSJitInfo::Method,
13912 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13913 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
13914 false, /* isInfallible. False in setters. */
13915 false, /* isMovable. Not relevant for setters. */
13916 false, /* isEliminatable. Not relevant for setters. */
13917 false, /* isAlwaysInSlot. Only relevant for getters. */
13918 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13919 false, /* isTypedMethod. Only relevant for methods. */
13920 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13921};
13922
13923MOZ_CAN_RUN_SCRIPT static bool
13924receiveNullableRecordOfNullableInts(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13925{
13926 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13929( cx, "TestExampleInterface"
, "receiveNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13927 "TestExampleInterface", "receiveNullableRecordOfNullableInts", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13929( cx, "TestExampleInterface"
, "receiveNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13928 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13929( cx, "TestExampleInterface"
, "receiveNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
13929 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13929( cx, "TestExampleInterface"
, "receiveNullableRecordOfNullableInts", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
13930
13931 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13932 Nullable<Record<nsString, Nullable<int32_t>>> result;
13933 // NOTE: This assert does NOT call the function.
13934 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableRecordOfNullableInts(result))>, "Should be returning void here");
13935 MOZ_KnownLive(self)(self)->ReceiveNullableRecordOfNullableInts(result);
13936 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 13936); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 13936; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
13937
13938 if (result.IsNull()) {
13939 args.rval().setNull();
13940 return true;
13941 }
13942
13943 JS::Rooted<JSObject*> returnObj(cx, JS_NewPlainObject(cx));
13944 if (!returnObj) {
13945 return false;
13946 }
13947 // Scope for 'tmp'
13948 {
13949 JS::Rooted<JS::Value> tmp(cx);
13950 for (auto& entry : result.Value().Entries()) {
13951 auto& recordValue0 = entry.mValue;
13952 // Control block to let us common up the JS_DefineUCProperty calls when there
13953 // are different ways to succeed at wrapping the value.
13954 do {
13955 if (recordValue0.IsNull()) {
13956 tmp.setNull();
13957 break;
13958 }
13959 tmp.setInt32(int32_t(recordValue0.Value()));
13960 break;
13961 } while (false);
13962 if (!JS_DefineUCProperty(cx, returnObj,
13963 entry.mKey.BeginReading(),
13964 entry.mKey.Length(), tmp,
13965 JSPROP_ENUMERATE)) {
13966 return false;
13967 }
13968 }
13969 }
13970 args.rval().setObject(*returnObj);
13971 return true;
13972}
13973
13974static const JSJitInfo receiveNullableRecordOfNullableInts_methodinfo = {
13975 { (JSJitGetterOp)receiveNullableRecordOfNullableInts },
13976 { prototypes::id::TestExampleInterface },
13977 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
13978 JSJitInfo::Method,
13979 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
13980 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
13981 false, /* isInfallible. False in setters. */
13982 false, /* isMovable. Not relevant for setters. */
13983 false, /* isEliminatable. Not relevant for setters. */
13984 false, /* isAlwaysInSlot. Only relevant for getters. */
13985 false, /* isLazilyCachedInSlot. Only relevant for getters. */
13986 false, /* isTypedMethod. Only relevant for methods. */
13987 0 /* Reserved slot index, if we're stored in a slot, else 0. */
13988};
13989
13990MOZ_CAN_RUN_SCRIPT static bool
13991receiveAnyRecord(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
13992{
13993 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject13996( cx, "TestExampleInterface"
, "receiveAnyRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13994 "TestExampleInterface", "receiveAnyRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject13996( cx, "TestExampleInterface"
, "receiveAnyRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13995 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject13996( cx, "TestExampleInterface"
, "receiveAnyRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
13996 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject13996( cx, "TestExampleInterface"
, "receiveAnyRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
13997
13998 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
13999 Record<nsString, JS::Value> result;
14000 RecordRooter<nsString, JS::Value> resultRooter(cx, &result);
14001 // NOTE: This assert does NOT call the function.
14002 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveAnyRecord(cx, result))>, "Should be returning void here");
14003 MOZ_KnownLive(self)(self)->ReceiveAnyRecord(cx, result);
14004 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14004); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14004; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14005
14006 JS::Rooted<JSObject*> returnObj(cx, JS_NewPlainObject(cx));
14007 if (!returnObj) {
14008 return false;
14009 }
14010 // Scope for 'tmp'
14011 {
14012 JS::Rooted<JS::Value> tmp(cx);
14013 for (auto& entry : result.Entries()) {
14014 auto& recordValue0 = entry.mValue;
14015 // Control block to let us common up the JS_DefineUCProperty calls when there
14016 // are different ways to succeed at wrapping the value.
14017 do {
14018 JS::ExposeValueToActiveJS(recordValue0);
14019 tmp.set(recordValue0);
14020 if (!MaybeWrapValue(cx, &tmp)) {
14021 return false;
14022 }
14023 break;
14024 } while (false);
14025 if (!JS_DefineUCProperty(cx, returnObj,
14026 entry.mKey.BeginReading(),
14027 entry.mKey.Length(), tmp,
14028 JSPROP_ENUMERATE)) {
14029 return false;
14030 }
14031 }
14032 }
14033 args.rval().setObject(*returnObj);
14034 return true;
14035}
14036
14037static const JSJitInfo receiveAnyRecord_methodinfo = {
14038 { (JSJitGetterOp)receiveAnyRecord },
14039 { prototypes::id::TestExampleInterface },
14040 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14041 JSJitInfo::Method,
14042 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14043 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
14044 false, /* isInfallible. False in setters. */
14045 false, /* isMovable. Not relevant for setters. */
14046 false, /* isEliminatable. Not relevant for setters. */
14047 false, /* isAlwaysInSlot. Only relevant for getters. */
14048 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14049 false, /* isTypedMethod. Only relevant for methods. */
14050 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14051};
14052
14053MOZ_CAN_RUN_SCRIPT static bool
14054passArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14055{
14056 BindingCallContext cx(cx_, "TestExampleInterface.passArrayBuffer");
14057 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14060( cx, "TestExampleInterface"
, "passArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14058 "TestExampleInterface", "passArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14060( cx, "TestExampleInterface"
, "passArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14059 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14060( cx, "TestExampleInterface"
, "passArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14060 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14060( cx, "TestExampleInterface"
, "passArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14061
14062 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14063 if (!args.requireAtLeast(cx, "TestExampleInterface.passArrayBuffer", 1)) {
14064 return false;
14065 }
14066 RootedSpiderMonkeyInterface<ArrayBuffer> arg0(cx);
14067 if (args[0].isObject()) {
14068 if (!arg0.Init(&args[0].toObject())) {
14069 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBuffer");
14070 return false;
14071 }
14072 if (JS::IsSharedArrayBufferObject(arg0.Obj())) {
14073 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14074 return false;
14075 }
14076 if (JS::IsLargeArrayBufferMaybeShared(arg0.Obj())) {
14077 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14078 return false;
14079 }
14080 if (JS::IsResizableArrayBufferMaybeShared(arg0.Obj())) {
14081 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14082 return false;
14083 }
14084 } else {
14085 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14086 return false;
14087 }
14088 // NOTE: This assert does NOT call the function.
14089 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassArrayBuffer(Constify(arg0)))>, "Should be returning void here");
14090 MOZ_KnownLive(self)(self)->PassArrayBuffer(Constify(arg0));
14091 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14091); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14091; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14092 args.rval().setUndefined();
14093 return true;
14094}
14095
14096static const JSJitInfo passArrayBuffer_methodinfo = {
14097 { (JSJitGetterOp)passArrayBuffer },
14098 { prototypes::id::TestExampleInterface },
14099 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14100 JSJitInfo::Method,
14101 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14102 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14103 false, /* isInfallible. False in setters. */
14104 false, /* isMovable. Not relevant for setters. */
14105 false, /* isEliminatable. Not relevant for setters. */
14106 false, /* isAlwaysInSlot. Only relevant for getters. */
14107 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14108 false, /* isTypedMethod. Only relevant for methods. */
14109 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14110};
14111
14112MOZ_CAN_RUN_SCRIPT static bool
14113passNullableArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14114{
14115 BindingCallContext cx(cx_, "TestExampleInterface.passNullableArrayBuffer");
14116 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14119( cx, "TestExampleInterface"
, "passNullableArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14117 "TestExampleInterface", "passNullableArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14119( cx, "TestExampleInterface"
, "passNullableArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14118 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14119( cx, "TestExampleInterface"
, "passNullableArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14119 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14119( cx, "TestExampleInterface"
, "passNullableArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14120
14121 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14122 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableArrayBuffer", 1)) {
14123 return false;
14124 }
14125 RootedSpiderMonkeyInterface<Nullable<ArrayBuffer>> arg0(cx);
14126 if (args[0].isObject()) {
14127 if (!arg0.SetValue().Init(&args[0].toObject())) {
14128 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferOrNull");
14129 return false;
14130 }
14131 if (JS::IsSharedArrayBufferObject(arg0.SetValue().Obj())) {
14132 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14133 return false;
14134 }
14135 if (JS::IsLargeArrayBufferMaybeShared(arg0.SetValue().Obj())) {
14136 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14137 return false;
14138 }
14139 if (JS::IsResizableArrayBufferMaybeShared(arg0.SetValue().Obj())) {
14140 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14141 return false;
14142 }
14143 } else if (args[0].isNullOrUndefined()) {
14144 arg0.SetNull();
14145 } else {
14146 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14147 return false;
14148 }
14149 // NOTE: This assert does NOT call the function.
14150 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableArrayBuffer(Constify(arg0)))>, "Should be returning void here");
14151 MOZ_KnownLive(self)(self)->PassNullableArrayBuffer(Constify(arg0));
14152 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14152); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14152; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14153 args.rval().setUndefined();
14154 return true;
14155}
14156
14157static const JSJitInfo passNullableArrayBuffer_methodinfo = {
14158 { (JSJitGetterOp)passNullableArrayBuffer },
14159 { prototypes::id::TestExampleInterface },
14160 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14161 JSJitInfo::Method,
14162 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14163 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14164 false, /* isInfallible. False in setters. */
14165 false, /* isMovable. Not relevant for setters. */
14166 false, /* isEliminatable. Not relevant for setters. */
14167 false, /* isAlwaysInSlot. Only relevant for getters. */
14168 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14169 false, /* isTypedMethod. Only relevant for methods. */
14170 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14171};
14172
14173MOZ_CAN_RUN_SCRIPT static bool
14174passOptionalArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14175{
14176 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalArrayBuffer");
14177 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14180( cx, "TestExampleInterface"
, "passOptionalArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14178 "TestExampleInterface", "passOptionalArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14180( cx, "TestExampleInterface"
, "passOptionalArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14179 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14180( cx, "TestExampleInterface"
, "passOptionalArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14180 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14180( cx, "TestExampleInterface"
, "passOptionalArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14181
14182 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14183 Optional<ArrayBuffer> arg0;
14184 Maybe<SpiderMonkeyInterfaceRooter<ArrayBuffer>> arg0_holder;
14185 if (args.hasDefined(0)) {
14186 arg0.Construct();
14187 arg0_holder.emplace(cx, &arg0.Value());
14188 if (args[0].isObject()) {
14189 if (!arg0.Value().Init(&args[0].toObject())) {
14190 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBuffer");
14191 return false;
14192 }
14193 if (JS::IsSharedArrayBufferObject(arg0.Value().Obj())) {
14194 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14195 return false;
14196 }
14197 if (JS::IsLargeArrayBufferMaybeShared(arg0.Value().Obj())) {
14198 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14199 return false;
14200 }
14201 if (JS::IsResizableArrayBufferMaybeShared(arg0.Value().Obj())) {
14202 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14203 return false;
14204 }
14205 } else {
14206 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14207 return false;
14208 }
14209 }
14210 // NOTE: This assert does NOT call the function.
14211 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalArrayBuffer(Constify(arg0)))>, "Should be returning void here");
14212 MOZ_KnownLive(self)(self)->PassOptionalArrayBuffer(Constify(arg0));
14213 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14213); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14213; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14214 args.rval().setUndefined();
14215 return true;
14216}
14217
14218static const JSJitInfo passOptionalArrayBuffer_methodinfo = {
14219 { (JSJitGetterOp)passOptionalArrayBuffer },
14220 { prototypes::id::TestExampleInterface },
14221 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14222 JSJitInfo::Method,
14223 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14224 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14225 false, /* isInfallible. False in setters. */
14226 false, /* isMovable. Not relevant for setters. */
14227 false, /* isEliminatable. Not relevant for setters. */
14228 false, /* isAlwaysInSlot. Only relevant for getters. */
14229 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14230 false, /* isTypedMethod. Only relevant for methods. */
14231 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14232};
14233
14234MOZ_CAN_RUN_SCRIPT static bool
14235passOptionalNullableArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14236{
14237 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableArrayBuffer");
14238 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14241( cx, "TestExampleInterface"
, "passOptionalNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14239 "TestExampleInterface", "passOptionalNullableArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14241( cx, "TestExampleInterface"
, "passOptionalNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14240 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14241( cx, "TestExampleInterface"
, "passOptionalNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14241 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14241( cx, "TestExampleInterface"
, "passOptionalNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
14242
14243 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14244 Optional<Nullable<ArrayBuffer>> arg0;
14245 Maybe<SpiderMonkeyInterfaceRooter<ArrayBuffer>> arg0_holder;
14246 if (args.hasDefined(0)) {
14247 arg0.Construct();
14248 arg0_holder.emplace(cx, &arg0.Value().SetValue());
14249 if (args[0].isObject()) {
14250 if (!arg0.Value().SetValue().Init(&args[0].toObject())) {
14251 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferOrNull");
14252 return false;
14253 }
14254 if (JS::IsSharedArrayBufferObject(arg0.Value().SetValue().Obj())) {
14255 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14256 return false;
14257 }
14258 if (JS::IsLargeArrayBufferMaybeShared(arg0.Value().SetValue().Obj())) {
14259 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14260 return false;
14261 }
14262 if (JS::IsResizableArrayBufferMaybeShared(arg0.Value().SetValue().Obj())) {
14263 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14264 return false;
14265 }
14266 } else if (args[0].isNullOrUndefined()) {
14267 arg0.Value().SetNull();
14268 } else {
14269 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14270 return false;
14271 }
14272 }
14273 // NOTE: This assert does NOT call the function.
14274 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableArrayBuffer(Constify(arg0)))>, "Should be returning void here");
14275 MOZ_KnownLive(self)(self)->PassOptionalNullableArrayBuffer(Constify(arg0));
14276 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14276); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14276; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14277 args.rval().setUndefined();
14278 return true;
14279}
14280
14281static const JSJitInfo passOptionalNullableArrayBuffer_methodinfo = {
14282 { (JSJitGetterOp)passOptionalNullableArrayBuffer },
14283 { prototypes::id::TestExampleInterface },
14284 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14285 JSJitInfo::Method,
14286 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14287 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14288 false, /* isInfallible. False in setters. */
14289 false, /* isMovable. Not relevant for setters. */
14290 false, /* isEliminatable. Not relevant for setters. */
14291 false, /* isAlwaysInSlot. Only relevant for getters. */
14292 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14293 false, /* isTypedMethod. Only relevant for methods. */
14294 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14295};
14296
14297MOZ_CAN_RUN_SCRIPT static bool
14298passOptionalNullableArrayBufferWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14299{
14300 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableArrayBufferWithDefaultValue");
14301 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14304( cx, "TestExampleInterface"
, "passOptionalNullableArrayBufferWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14302 "TestExampleInterface", "passOptionalNullableArrayBufferWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14304( cx, "TestExampleInterface"
, "passOptionalNullableArrayBufferWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14303 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14304( cx, "TestExampleInterface"
, "passOptionalNullableArrayBufferWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14304 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14304( cx, "TestExampleInterface"
, "passOptionalNullableArrayBufferWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
14305
14306 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14307 RootedSpiderMonkeyInterface<Nullable<ArrayBuffer>> arg0(cx);
14308 if (args.hasDefined(0)) {
14309 if (args[0].isObject()) {
14310 if (!arg0.SetValue().Init(&args[0].toObject())) {
14311 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferOrNull");
14312 return false;
14313 }
14314 if (JS::IsSharedArrayBufferObject(arg0.SetValue().Obj())) {
14315 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14316 return false;
14317 }
14318 if (JS::IsLargeArrayBufferMaybeShared(arg0.SetValue().Obj())) {
14319 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14320 return false;
14321 }
14322 if (JS::IsResizableArrayBufferMaybeShared(arg0.SetValue().Obj())) {
14323 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14324 return false;
14325 }
14326 } else if (args[0].isNullOrUndefined()) {
14327 arg0.SetNull();
14328 } else {
14329 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14330 return false;
14331 }
14332 } else {
14333 arg0.SetNull();
14334 }
14335 // NOTE: This assert does NOT call the function.
14336 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableArrayBufferWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
14337 MOZ_KnownLive(self)(self)->PassOptionalNullableArrayBufferWithDefaultValue(Constify(arg0));
14338 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14338); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14338; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14339 args.rval().setUndefined();
14340 return true;
14341}
14342
14343static const JSJitInfo passOptionalNullableArrayBufferWithDefaultValue_methodinfo = {
14344 { (JSJitGetterOp)passOptionalNullableArrayBufferWithDefaultValue },
14345 { prototypes::id::TestExampleInterface },
14346 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14347 JSJitInfo::Method,
14348 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14349 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14350 false, /* isInfallible. False in setters. */
14351 false, /* isMovable. Not relevant for setters. */
14352 false, /* isEliminatable. Not relevant for setters. */
14353 false, /* isAlwaysInSlot. Only relevant for getters. */
14354 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14355 false, /* isTypedMethod. Only relevant for methods. */
14356 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14357};
14358
14359MOZ_CAN_RUN_SCRIPT static bool
14360passArrayBufferView(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14361{
14362 BindingCallContext cx(cx_, "TestExampleInterface.passArrayBufferView");
14363 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14366( cx, "TestExampleInterface"
, "passArrayBufferView", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14364 "TestExampleInterface", "passArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14366( cx, "TestExampleInterface"
, "passArrayBufferView", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14365 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14366( cx, "TestExampleInterface"
, "passArrayBufferView", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14366 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14366( cx, "TestExampleInterface"
, "passArrayBufferView", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14367
14368 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14369 if (!args.requireAtLeast(cx, "TestExampleInterface.passArrayBufferView", 1)) {
14370 return false;
14371 }
14372 RootedSpiderMonkeyInterface<ArrayBufferView> arg0(cx);
14373 if (args[0].isObject()) {
14374 if (!arg0.Init(&args[0].toObject())) {
14375 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferView");
14376 return false;
14377 }
14378 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14379 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14380 return false;
14381 }
14382 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14383 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14384 return false;
14385 }
14386 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14387 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14388 return false;
14389 }
14390 } else {
14391 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14392 return false;
14393 }
14394 // NOTE: This assert does NOT call the function.
14395 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassArrayBufferView(Constify(arg0)))>, "Should be returning void here");
14396 MOZ_KnownLive(self)(self)->PassArrayBufferView(Constify(arg0));
14397 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14397); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14397; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14398 args.rval().setUndefined();
14399 return true;
14400}
14401
14402static const JSJitInfo passArrayBufferView_methodinfo = {
14403 { (JSJitGetterOp)passArrayBufferView },
14404 { prototypes::id::TestExampleInterface },
14405 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14406 JSJitInfo::Method,
14407 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14408 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14409 false, /* isInfallible. False in setters. */
14410 false, /* isMovable. Not relevant for setters. */
14411 false, /* isEliminatable. Not relevant for setters. */
14412 false, /* isAlwaysInSlot. Only relevant for getters. */
14413 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14414 false, /* isTypedMethod. Only relevant for methods. */
14415 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14416};
14417
14418MOZ_CAN_RUN_SCRIPT static bool
14419passInt8Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14420{
14421 BindingCallContext cx(cx_, "TestExampleInterface.passInt8Array");
14422 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14425( cx, "TestExampleInterface"
, "passInt8Array", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14423 "TestExampleInterface", "passInt8Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14425( cx, "TestExampleInterface"
, "passInt8Array", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14424 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14425( cx, "TestExampleInterface"
, "passInt8Array", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14425 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14425( cx, "TestExampleInterface"
, "passInt8Array", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14426
14427 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14428 if (!args.requireAtLeast(cx, "TestExampleInterface.passInt8Array", 1)) {
14429 return false;
14430 }
14431 RootedSpiderMonkeyInterface<Int8Array> arg0(cx);
14432 if (args[0].isObject()) {
14433 if (!arg0.Init(&args[0].toObject())) {
14434 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Int8Array");
14435 return false;
14436 }
14437 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14438 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14439 return false;
14440 }
14441 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14442 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14443 return false;
14444 }
14445 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14446 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14447 return false;
14448 }
14449 } else {
14450 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14451 return false;
14452 }
14453 // NOTE: This assert does NOT call the function.
14454 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassInt8Array(Constify(arg0)))>, "Should be returning void here");
14455 MOZ_KnownLive(self)(self)->PassInt8Array(Constify(arg0));
14456 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14456); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14456; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14457 args.rval().setUndefined();
14458 return true;
14459}
14460
14461static const JSJitInfo passInt8Array_methodinfo = {
14462 { (JSJitGetterOp)passInt8Array },
14463 { prototypes::id::TestExampleInterface },
14464 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14465 JSJitInfo::Method,
14466 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14467 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14468 false, /* isInfallible. False in setters. */
14469 false, /* isMovable. Not relevant for setters. */
14470 false, /* isEliminatable. Not relevant for setters. */
14471 false, /* isAlwaysInSlot. Only relevant for getters. */
14472 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14473 false, /* isTypedMethod. Only relevant for methods. */
14474 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14475};
14476
14477MOZ_CAN_RUN_SCRIPT static bool
14478passInt16Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14479{
14480 BindingCallContext cx(cx_, "TestExampleInterface.passInt16Array");
14481 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14484( cx, "TestExampleInterface"
, "passInt16Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14482 "TestExampleInterface", "passInt16Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14484( cx, "TestExampleInterface"
, "passInt16Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14483 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14484( cx, "TestExampleInterface"
, "passInt16Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14484 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14484( cx, "TestExampleInterface"
, "passInt16Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14485
14486 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14487 if (!args.requireAtLeast(cx, "TestExampleInterface.passInt16Array", 1)) {
14488 return false;
14489 }
14490 RootedSpiderMonkeyInterface<Int16Array> arg0(cx);
14491 if (args[0].isObject()) {
14492 if (!arg0.Init(&args[0].toObject())) {
14493 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Int16Array");
14494 return false;
14495 }
14496 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14497 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14498 return false;
14499 }
14500 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14501 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14502 return false;
14503 }
14504 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14505 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14506 return false;
14507 }
14508 } else {
14509 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14510 return false;
14511 }
14512 // NOTE: This assert does NOT call the function.
14513 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassInt16Array(Constify(arg0)))>, "Should be returning void here");
14514 MOZ_KnownLive(self)(self)->PassInt16Array(Constify(arg0));
14515 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14515); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14515; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14516 args.rval().setUndefined();
14517 return true;
14518}
14519
14520static const JSJitInfo passInt16Array_methodinfo = {
14521 { (JSJitGetterOp)passInt16Array },
14522 { prototypes::id::TestExampleInterface },
14523 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14524 JSJitInfo::Method,
14525 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14526 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14527 false, /* isInfallible. False in setters. */
14528 false, /* isMovable. Not relevant for setters. */
14529 false, /* isEliminatable. Not relevant for setters. */
14530 false, /* isAlwaysInSlot. Only relevant for getters. */
14531 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14532 false, /* isTypedMethod. Only relevant for methods. */
14533 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14534};
14535
14536MOZ_CAN_RUN_SCRIPT static bool
14537passInt32Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14538{
14539 BindingCallContext cx(cx_, "TestExampleInterface.passInt32Array");
14540 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14543( cx, "TestExampleInterface"
, "passInt32Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14541 "TestExampleInterface", "passInt32Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14543( cx, "TestExampleInterface"
, "passInt32Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14542 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14543( cx, "TestExampleInterface"
, "passInt32Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14543 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14543( cx, "TestExampleInterface"
, "passInt32Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14544
14545 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14546 if (!args.requireAtLeast(cx, "TestExampleInterface.passInt32Array", 1)) {
14547 return false;
14548 }
14549 RootedSpiderMonkeyInterface<Int32Array> arg0(cx);
14550 if (args[0].isObject()) {
14551 if (!arg0.Init(&args[0].toObject())) {
14552 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Int32Array");
14553 return false;
14554 }
14555 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14556 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14557 return false;
14558 }
14559 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14560 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14561 return false;
14562 }
14563 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14564 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14565 return false;
14566 }
14567 } else {
14568 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14569 return false;
14570 }
14571 // NOTE: This assert does NOT call the function.
14572 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassInt32Array(Constify(arg0)))>, "Should be returning void here");
14573 MOZ_KnownLive(self)(self)->PassInt32Array(Constify(arg0));
14574 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14574); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14574; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14575 args.rval().setUndefined();
14576 return true;
14577}
14578
14579static const JSJitInfo passInt32Array_methodinfo = {
14580 { (JSJitGetterOp)passInt32Array },
14581 { prototypes::id::TestExampleInterface },
14582 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14583 JSJitInfo::Method,
14584 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14585 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14586 false, /* isInfallible. False in setters. */
14587 false, /* isMovable. Not relevant for setters. */
14588 false, /* isEliminatable. Not relevant for setters. */
14589 false, /* isAlwaysInSlot. Only relevant for getters. */
14590 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14591 false, /* isTypedMethod. Only relevant for methods. */
14592 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14593};
14594
14595MOZ_CAN_RUN_SCRIPT static bool
14596passUint8Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14597{
14598 BindingCallContext cx(cx_, "TestExampleInterface.passUint8Array");
14599 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14602( cx, "TestExampleInterface"
, "passUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14600 "TestExampleInterface", "passUint8Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14602( cx, "TestExampleInterface"
, "passUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14601 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14602( cx, "TestExampleInterface"
, "passUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14602 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14602( cx, "TestExampleInterface"
, "passUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14603
14604 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14605 if (!args.requireAtLeast(cx, "TestExampleInterface.passUint8Array", 1)) {
14606 return false;
14607 }
14608 RootedSpiderMonkeyInterface<Uint8Array> arg0(cx);
14609 if (args[0].isObject()) {
14610 if (!arg0.Init(&args[0].toObject())) {
14611 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Uint8Array");
14612 return false;
14613 }
14614 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14615 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14616 return false;
14617 }
14618 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14619 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14620 return false;
14621 }
14622 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14623 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14624 return false;
14625 }
14626 } else {
14627 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14628 return false;
14629 }
14630 // NOTE: This assert does NOT call the function.
14631 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUint8Array(Constify(arg0)))>, "Should be returning void here");
14632 MOZ_KnownLive(self)(self)->PassUint8Array(Constify(arg0));
14633 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14633); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14633; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14634 args.rval().setUndefined();
14635 return true;
14636}
14637
14638static const JSJitInfo passUint8Array_methodinfo = {
14639 { (JSJitGetterOp)passUint8Array },
14640 { prototypes::id::TestExampleInterface },
14641 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14642 JSJitInfo::Method,
14643 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14644 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14645 false, /* isInfallible. False in setters. */
14646 false, /* isMovable. Not relevant for setters. */
14647 false, /* isEliminatable. Not relevant for setters. */
14648 false, /* isAlwaysInSlot. Only relevant for getters. */
14649 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14650 false, /* isTypedMethod. Only relevant for methods. */
14651 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14652};
14653
14654MOZ_CAN_RUN_SCRIPT static bool
14655passUint16Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14656{
14657 BindingCallContext cx(cx_, "TestExampleInterface.passUint16Array");
14658 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14661( cx, "TestExampleInterface"
, "passUint16Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14659 "TestExampleInterface", "passUint16Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14661( cx, "TestExampleInterface"
, "passUint16Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14660 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14661( cx, "TestExampleInterface"
, "passUint16Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14661 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14661( cx, "TestExampleInterface"
, "passUint16Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14662
14663 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14664 if (!args.requireAtLeast(cx, "TestExampleInterface.passUint16Array", 1)) {
14665 return false;
14666 }
14667 RootedSpiderMonkeyInterface<Uint16Array> arg0(cx);
14668 if (args[0].isObject()) {
14669 if (!arg0.Init(&args[0].toObject())) {
14670 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Uint16Array");
14671 return false;
14672 }
14673 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14674 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14675 return false;
14676 }
14677 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14678 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14679 return false;
14680 }
14681 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14682 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14683 return false;
14684 }
14685 } else {
14686 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14687 return false;
14688 }
14689 // NOTE: This assert does NOT call the function.
14690 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUint16Array(Constify(arg0)))>, "Should be returning void here");
14691 MOZ_KnownLive(self)(self)->PassUint16Array(Constify(arg0));
14692 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14692); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14692; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14693 args.rval().setUndefined();
14694 return true;
14695}
14696
14697static const JSJitInfo passUint16Array_methodinfo = {
14698 { (JSJitGetterOp)passUint16Array },
14699 { prototypes::id::TestExampleInterface },
14700 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14701 JSJitInfo::Method,
14702 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14703 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14704 false, /* isInfallible. False in setters. */
14705 false, /* isMovable. Not relevant for setters. */
14706 false, /* isEliminatable. Not relevant for setters. */
14707 false, /* isAlwaysInSlot. Only relevant for getters. */
14708 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14709 false, /* isTypedMethod. Only relevant for methods. */
14710 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14711};
14712
14713MOZ_CAN_RUN_SCRIPT static bool
14714passUint32Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14715{
14716 BindingCallContext cx(cx_, "TestExampleInterface.passUint32Array");
14717 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14720( cx, "TestExampleInterface"
, "passUint32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14718 "TestExampleInterface", "passUint32Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14720( cx, "TestExampleInterface"
, "passUint32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14719 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14720( cx, "TestExampleInterface"
, "passUint32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14720 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14720( cx, "TestExampleInterface"
, "passUint32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14721
14722 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14723 if (!args.requireAtLeast(cx, "TestExampleInterface.passUint32Array", 1)) {
14724 return false;
14725 }
14726 RootedSpiderMonkeyInterface<Uint32Array> arg0(cx);
14727 if (args[0].isObject()) {
14728 if (!arg0.Init(&args[0].toObject())) {
14729 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Uint32Array");
14730 return false;
14731 }
14732 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14733 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14734 return false;
14735 }
14736 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14737 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14738 return false;
14739 }
14740 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14741 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14742 return false;
14743 }
14744 } else {
14745 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14746 return false;
14747 }
14748 // NOTE: This assert does NOT call the function.
14749 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUint32Array(Constify(arg0)))>, "Should be returning void here");
14750 MOZ_KnownLive(self)(self)->PassUint32Array(Constify(arg0));
14751 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14751); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14751; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14752 args.rval().setUndefined();
14753 return true;
14754}
14755
14756static const JSJitInfo passUint32Array_methodinfo = {
14757 { (JSJitGetterOp)passUint32Array },
14758 { prototypes::id::TestExampleInterface },
14759 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14760 JSJitInfo::Method,
14761 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14762 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14763 false, /* isInfallible. False in setters. */
14764 false, /* isMovable. Not relevant for setters. */
14765 false, /* isEliminatable. Not relevant for setters. */
14766 false, /* isAlwaysInSlot. Only relevant for getters. */
14767 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14768 false, /* isTypedMethod. Only relevant for methods. */
14769 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14770};
14771
14772MOZ_CAN_RUN_SCRIPT static bool
14773passUint8ClampedArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14774{
14775 BindingCallContext cx(cx_, "TestExampleInterface.passUint8ClampedArray");
14776 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14779( cx, "TestExampleInterface"
, "passUint8ClampedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14777 "TestExampleInterface", "passUint8ClampedArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14779( cx, "TestExampleInterface"
, "passUint8ClampedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14778 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14779( cx, "TestExampleInterface"
, "passUint8ClampedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14779 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14779( cx, "TestExampleInterface"
, "passUint8ClampedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14780
14781 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14782 if (!args.requireAtLeast(cx, "TestExampleInterface.passUint8ClampedArray", 1)) {
14783 return false;
14784 }
14785 RootedSpiderMonkeyInterface<Uint8ClampedArray> arg0(cx);
14786 if (args[0].isObject()) {
14787 if (!arg0.Init(&args[0].toObject())) {
14788 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Uint8ClampedArray");
14789 return false;
14790 }
14791 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14792 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14793 return false;
14794 }
14795 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14796 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14797 return false;
14798 }
14799 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14800 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14801 return false;
14802 }
14803 } else {
14804 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14805 return false;
14806 }
14807 // NOTE: This assert does NOT call the function.
14808 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUint8ClampedArray(Constify(arg0)))>, "Should be returning void here");
14809 MOZ_KnownLive(self)(self)->PassUint8ClampedArray(Constify(arg0));
14810 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14810); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14810; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14811 args.rval().setUndefined();
14812 return true;
14813}
14814
14815static const JSJitInfo passUint8ClampedArray_methodinfo = {
14816 { (JSJitGetterOp)passUint8ClampedArray },
14817 { prototypes::id::TestExampleInterface },
14818 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14819 JSJitInfo::Method,
14820 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14821 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14822 false, /* isInfallible. False in setters. */
14823 false, /* isMovable. Not relevant for setters. */
14824 false, /* isEliminatable. Not relevant for setters. */
14825 false, /* isAlwaysInSlot. Only relevant for getters. */
14826 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14827 false, /* isTypedMethod. Only relevant for methods. */
14828 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14829};
14830
14831MOZ_CAN_RUN_SCRIPT static bool
14832passFloat32Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14833{
14834 BindingCallContext cx(cx_, "TestExampleInterface.passFloat32Array");
14835 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14838( cx, "TestExampleInterface"
, "passFloat32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14836 "TestExampleInterface", "passFloat32Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14838( cx, "TestExampleInterface"
, "passFloat32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14837 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14838( cx, "TestExampleInterface"
, "passFloat32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14838 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14838( cx, "TestExampleInterface"
, "passFloat32Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14839
14840 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14841 if (!args.requireAtLeast(cx, "TestExampleInterface.passFloat32Array", 1)) {
14842 return false;
14843 }
14844 RootedSpiderMonkeyInterface<Float32Array> arg0(cx);
14845 if (args[0].isObject()) {
14846 if (!arg0.Init(&args[0].toObject())) {
14847 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Float32Array");
14848 return false;
14849 }
14850 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14851 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14852 return false;
14853 }
14854 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14855 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14856 return false;
14857 }
14858 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14859 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14860 return false;
14861 }
14862 } else {
14863 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14864 return false;
14865 }
14866 // NOTE: This assert does NOT call the function.
14867 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassFloat32Array(Constify(arg0)))>, "Should be returning void here");
14868 MOZ_KnownLive(self)(self)->PassFloat32Array(Constify(arg0));
14869 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14869); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14869; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14870 args.rval().setUndefined();
14871 return true;
14872}
14873
14874static const JSJitInfo passFloat32Array_methodinfo = {
14875 { (JSJitGetterOp)passFloat32Array },
14876 { prototypes::id::TestExampleInterface },
14877 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14878 JSJitInfo::Method,
14879 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14880 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14881 false, /* isInfallible. False in setters. */
14882 false, /* isMovable. Not relevant for setters. */
14883 false, /* isEliminatable. Not relevant for setters. */
14884 false, /* isAlwaysInSlot. Only relevant for getters. */
14885 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14886 false, /* isTypedMethod. Only relevant for methods. */
14887 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14888};
14889
14890MOZ_CAN_RUN_SCRIPT static bool
14891passFloat64Array(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14892{
14893 BindingCallContext cx(cx_, "TestExampleInterface.passFloat64Array");
14894 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14897( cx, "TestExampleInterface"
, "passFloat64Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14895 "TestExampleInterface", "passFloat64Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14897( cx, "TestExampleInterface"
, "passFloat64Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14896 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14897( cx, "TestExampleInterface"
, "passFloat64Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
14897 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14897( cx, "TestExampleInterface"
, "passFloat64Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
14898
14899 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14900 if (!args.requireAtLeast(cx, "TestExampleInterface.passFloat64Array", 1)) {
14901 return false;
14902 }
14903 RootedSpiderMonkeyInterface<Float64Array> arg0(cx);
14904 if (args[0].isObject()) {
14905 if (!arg0.Init(&args[0].toObject())) {
14906 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Float64Array");
14907 return false;
14908 }
14909 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
14910 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
14911 return false;
14912 }
14913 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
14914 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
14915 return false;
14916 }
14917 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
14918 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
14919 return false;
14920 }
14921 } else {
14922 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
14923 return false;
14924 }
14925 // NOTE: This assert does NOT call the function.
14926 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassFloat64Array(Constify(arg0)))>, "Should be returning void here");
14927 MOZ_KnownLive(self)(self)->PassFloat64Array(Constify(arg0));
14928 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 14928); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 14928; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
14929 args.rval().setUndefined();
14930 return true;
14931}
14932
14933static const JSJitInfo passFloat64Array_methodinfo = {
14934 { (JSJitGetterOp)passFloat64Array },
14935 { prototypes::id::TestExampleInterface },
14936 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
14937 JSJitInfo::Method,
14938 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
14939 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
14940 false, /* isInfallible. False in setters. */
14941 false, /* isMovable. Not relevant for setters. */
14942 false, /* isEliminatable. Not relevant for setters. */
14943 false, /* isAlwaysInSlot. Only relevant for getters. */
14944 false, /* isLazilyCachedInSlot. Only relevant for getters. */
14945 false, /* isTypedMethod. Only relevant for methods. */
14946 0 /* Reserved slot index, if we're stored in a slot, else 0. */
14947};
14948
14949MOZ_CAN_RUN_SCRIPT static bool
14950passSequenceOfArrayBuffers(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
14951{
14952 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfArrayBuffers");
14953 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject14956( cx, "TestExampleInterface"
, "passSequenceOfArrayBuffers", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14954 "TestExampleInterface", "passSequenceOfArrayBuffers", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject14956( cx, "TestExampleInterface"
, "passSequenceOfArrayBuffers", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14955 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject14956( cx, "TestExampleInterface"
, "passSequenceOfArrayBuffers", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
14956 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject14956( cx, "TestExampleInterface"
, "passSequenceOfArrayBuffers", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
14957
14958 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
14959 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfArrayBuffers", 1)) {
14960 return false;
14961 }
14962 binding_detail::AutoSequence<ArrayBuffer> arg0;
14963 SequenceRooter<ArrayBuffer> arg0_holder(cx, &arg0);
14964 if (args[0].isObject()) {
14965 JS::ForOfIterator iter(cx);
14966 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
14967 return false;
14968 }
14969 if (!iter.valueIsIterable()) {
14970 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
14971 return false;
14972 }
14973 binding_detail::AutoSequence<ArrayBuffer> &arr = arg0;
14974 JS::Rooted<JS::Value> temp(cx);
14975 while (true) {
14976 bool done;
14977 if (!iter.next(&temp, &done)) {
14978 return false;
14979 }
14980 if (done) {
14981 break;
14982 }
14983 ArrayBuffer* slotPtr = arr.AppendElement(mozilla::fallible);
14984 if (!slotPtr) {
14985 JS_ReportOutOfMemory(cx);
14986 return false;
14987 }
14988 ArrayBuffer& slot = *slotPtr;
14989 if (temp.isObject()) {
14990 if (!slot.Init(&temp.toObject())) {
14991 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "ArrayBuffer");
14992 return false;
14993 }
14994 if (JS::IsSharedArrayBufferObject(slot.Obj())) {
14995 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Element of argument 1");
14996 return false;
14997 }
14998 if (JS::IsLargeArrayBufferMaybeShared(slot.Obj())) {
14999 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Element of argument 1");
15000 return false;
15001 }
15002 if (JS::IsResizableArrayBufferMaybeShared(slot.Obj())) {
15003 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Element of argument 1");
15004 return false;
15005 }
15006 } else {
15007 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
15008 return false;
15009 }
15010 }
15011 } else {
15012 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
15013 return false;
15014 }
15015 // NOTE: This assert does NOT call the function.
15016 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfArrayBuffers(Constify(arg0)))>, "Should be returning void here");
15017 MOZ_KnownLive(self)(self)->PassSequenceOfArrayBuffers(Constify(arg0));
15018 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15018); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15018; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15019 args.rval().setUndefined();
15020 return true;
15021}
15022
15023static const JSJitInfo passSequenceOfArrayBuffers_methodinfo = {
15024 { (JSJitGetterOp)passSequenceOfArrayBuffers },
15025 { prototypes::id::TestExampleInterface },
15026 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15027 JSJitInfo::Method,
15028 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15029 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15030 false, /* isInfallible. False in setters. */
15031 false, /* isMovable. Not relevant for setters. */
15032 false, /* isEliminatable. Not relevant for setters. */
15033 false, /* isAlwaysInSlot. Only relevant for getters. */
15034 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15035 false, /* isTypedMethod. Only relevant for methods. */
15036 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15037};
15038
15039MOZ_CAN_RUN_SCRIPT static bool
15040passSequenceOfNullableArrayBuffers(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15041{
15042 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfNullableArrayBuffers");
15043 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15046( cx, "TestExampleInterface"
, "passSequenceOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15044 "TestExampleInterface", "passSequenceOfNullableArrayBuffers", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15046( cx, "TestExampleInterface"
, "passSequenceOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15045 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15046( cx, "TestExampleInterface"
, "passSequenceOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15046 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15046( cx, "TestExampleInterface"
, "passSequenceOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15047
15048 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15049 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfNullableArrayBuffers", 1)) {
15050 return false;
15051 }
15052 binding_detail::AutoSequence<Nullable<ArrayBuffer>> arg0;
15053 SequenceRooter<Nullable<ArrayBuffer>> arg0_holder(cx, &arg0);
15054 if (args[0].isObject()) {
15055 JS::ForOfIterator iter(cx);
15056 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
15057 return false;
15058 }
15059 if (!iter.valueIsIterable()) {
15060 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
15061 return false;
15062 }
15063 binding_detail::AutoSequence<Nullable<ArrayBuffer>> &arr = arg0;
15064 JS::Rooted<JS::Value> temp(cx);
15065 while (true) {
15066 bool done;
15067 if (!iter.next(&temp, &done)) {
15068 return false;
15069 }
15070 if (done) {
15071 break;
15072 }
15073 Nullable<ArrayBuffer>* slotPtr = arr.AppendElement(mozilla::fallible);
15074 if (!slotPtr) {
15075 JS_ReportOutOfMemory(cx);
15076 return false;
15077 }
15078 Nullable<ArrayBuffer>& slot = *slotPtr;
15079 if (temp.isObject()) {
15080 if (!slot.SetValue().Init(&temp.toObject())) {
15081 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of argument 1", "ArrayBufferOrNull");
15082 return false;
15083 }
15084 if (JS::IsSharedArrayBufferObject(slot.SetValue().Obj())) {
15085 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Element of argument 1");
15086 return false;
15087 }
15088 if (JS::IsLargeArrayBufferMaybeShared(slot.SetValue().Obj())) {
15089 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Element of argument 1");
15090 return false;
15091 }
15092 if (JS::IsResizableArrayBufferMaybeShared(slot.SetValue().Obj())) {
15093 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Element of argument 1");
15094 return false;
15095 }
15096 } else if (temp.isNullOrUndefined()) {
15097 slot.SetNull();
15098 } else {
15099 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
15100 return false;
15101 }
15102 }
15103 } else {
15104 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
15105 return false;
15106 }
15107 // NOTE: This assert does NOT call the function.
15108 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfNullableArrayBuffers(Constify(arg0)))>, "Should be returning void here");
15109 MOZ_KnownLive(self)(self)->PassSequenceOfNullableArrayBuffers(Constify(arg0));
15110 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15110); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15110; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15111 args.rval().setUndefined();
15112 return true;
15113}
15114
15115static const JSJitInfo passSequenceOfNullableArrayBuffers_methodinfo = {
15116 { (JSJitGetterOp)passSequenceOfNullableArrayBuffers },
15117 { prototypes::id::TestExampleInterface },
15118 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15119 JSJitInfo::Method,
15120 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15121 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15122 false, /* isInfallible. False in setters. */
15123 false, /* isMovable. Not relevant for setters. */
15124 false, /* isEliminatable. Not relevant for setters. */
15125 false, /* isAlwaysInSlot. Only relevant for getters. */
15126 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15127 false, /* isTypedMethod. Only relevant for methods. */
15128 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15129};
15130
15131MOZ_CAN_RUN_SCRIPT static bool
15132passRecordOfArrayBuffers(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15133{
15134 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfArrayBuffers");
15135 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15138( cx, "TestExampleInterface"
, "passRecordOfArrayBuffers", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15136 "TestExampleInterface", "passRecordOfArrayBuffers", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15138( cx, "TestExampleInterface"
, "passRecordOfArrayBuffers", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15137 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15138( cx, "TestExampleInterface"
, "passRecordOfArrayBuffers", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15138 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15138( cx, "TestExampleInterface"
, "passRecordOfArrayBuffers", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15139
15140 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15141 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfArrayBuffers", 1)) {
15142 return false;
15143 }
15144 Record<nsString, ArrayBuffer> arg0;
15145 RecordRooter<nsString, ArrayBuffer> arg0_holder(cx, &arg0);
15146 if (args[0].isObject()) {
15147 auto& recordEntries = arg0.Entries();
15148
15149 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
15150 JS::RootedVector<jsid> ids(cx);
15151 if (!js::GetPropertyKeys(cx, recordObj,
15152 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
15153 return false;
15154 }
15155 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
15156 JS_ReportOutOfMemory(cx);
15157 return false;
15158 }
15159 JS::Rooted<JS::Value> propNameValue(cx);
15160 JS::Rooted<JS::Value> temp(cx);
15161 JS::Rooted<jsid> curId(cx);
15162 JS::Rooted<JS::Value> idVal(cx);
15163 // Use a hashset to keep track of ids seen, to avoid
15164 // introducing nasty O(N^2) behavior scanning for them all the
15165 // time. Ideally we'd use a data structure with O(1) lookup
15166 // _and_ ordering for the MozMap, but we don't have one lying
15167 // around.
15168 nsTHashtable<nsStringHashKey> idsSeen;
15169 for (size_t i = 0; i < ids.length(); ++i) {
15170 curId = ids[i];
15171
15172 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
15173 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
15174 &desc)) {
15175 return false;
15176 }
15177
15178 if (desc.isNothing() || !desc->enumerable()) {
15179 continue;
15180 }
15181
15182 idVal = js::IdToValue(curId);
15183 nsString propName;
15184 // This will just throw if idVal is a Symbol, like the spec says
15185 // to do.
15186 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
15187 return false;
15188 }
15189
15190 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
15191 return false;
15192 }
15193
15194 Record<nsString, ArrayBuffer>::EntryType* entry;
15195 if (!idsSeen.EnsureInserted(propName)) {
15196 // Find the existing entry.
15197 auto idx = recordEntries.IndexOf(propName);
15198 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 15199); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 15199; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
15199 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 15199); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 15199; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
15200 // Now blow it away to make it look like it was just added
15201 // to the array, because it's not obvious that it's
15202 // safe to write to its already-initialized mValue via our
15203 // normal codegen conversions. For example, the value
15204 // could be a union and this would change its type, but
15205 // codegen assumes we won't do that.
15206 entry = recordEntries.ReconstructElementAt(idx);
15207 } else {
15208 // Safe to do an infallible append here, because we did a
15209 // SetCapacity above to the right capacity.
15210 entry = recordEntries.AppendElement();
15211 }
15212 entry->mKey = propName;
15213 ArrayBuffer& slot = entry->mValue;
15214 if (temp.isObject()) {
15215 if (!slot.Init(&temp.toObject())) {
15216 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "ArrayBuffer");
15217 return false;
15218 }
15219 if (JS::IsSharedArrayBufferObject(slot.Obj())) {
15220 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Value in argument 1");
15221 return false;
15222 }
15223 if (JS::IsLargeArrayBufferMaybeShared(slot.Obj())) {
15224 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value in argument 1");
15225 return false;
15226 }
15227 if (JS::IsResizableArrayBufferMaybeShared(slot.Obj())) {
15228 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value in argument 1");
15229 return false;
15230 }
15231 } else {
15232 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
15233 return false;
15234 }
15235 }
15236 } else {
15237 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
15238 return false;
15239 }
15240 // NOTE: This assert does NOT call the function.
15241 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfArrayBuffers(Constify(arg0)))>, "Should be returning void here");
15242 MOZ_KnownLive(self)(self)->PassRecordOfArrayBuffers(Constify(arg0));
15243 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15243); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15243; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15244 args.rval().setUndefined();
15245 return true;
15246}
15247
15248static const JSJitInfo passRecordOfArrayBuffers_methodinfo = {
15249 { (JSJitGetterOp)passRecordOfArrayBuffers },
15250 { prototypes::id::TestExampleInterface },
15251 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15252 JSJitInfo::Method,
15253 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15254 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15255 false, /* isInfallible. False in setters. */
15256 false, /* isMovable. Not relevant for setters. */
15257 false, /* isEliminatable. Not relevant for setters. */
15258 false, /* isAlwaysInSlot. Only relevant for getters. */
15259 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15260 false, /* isTypedMethod. Only relevant for methods. */
15261 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15262};
15263
15264MOZ_CAN_RUN_SCRIPT static bool
15265passRecordOfNullableArrayBuffers(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15266{
15267 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfNullableArrayBuffers");
15268 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15271( cx, "TestExampleInterface"
, "passRecordOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15269 "TestExampleInterface", "passRecordOfNullableArrayBuffers", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15271( cx, "TestExampleInterface"
, "passRecordOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15270 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15271( cx, "TestExampleInterface"
, "passRecordOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15271 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15271( cx, "TestExampleInterface"
, "passRecordOfNullableArrayBuffers", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15272
15273 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15274 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfNullableArrayBuffers", 1)) {
15275 return false;
15276 }
15277 Record<nsString, Nullable<ArrayBuffer>> arg0;
15278 RecordRooter<nsString, Nullable<ArrayBuffer>> arg0_holder(cx, &arg0);
15279 if (args[0].isObject()) {
15280 auto& recordEntries = arg0.Entries();
15281
15282 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
15283 JS::RootedVector<jsid> ids(cx);
15284 if (!js::GetPropertyKeys(cx, recordObj,
15285 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
15286 return false;
15287 }
15288 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
15289 JS_ReportOutOfMemory(cx);
15290 return false;
15291 }
15292 JS::Rooted<JS::Value> propNameValue(cx);
15293 JS::Rooted<JS::Value> temp(cx);
15294 JS::Rooted<jsid> curId(cx);
15295 JS::Rooted<JS::Value> idVal(cx);
15296 // Use a hashset to keep track of ids seen, to avoid
15297 // introducing nasty O(N^2) behavior scanning for them all the
15298 // time. Ideally we'd use a data structure with O(1) lookup
15299 // _and_ ordering for the MozMap, but we don't have one lying
15300 // around.
15301 nsTHashtable<nsStringHashKey> idsSeen;
15302 for (size_t i = 0; i < ids.length(); ++i) {
15303 curId = ids[i];
15304
15305 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
15306 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
15307 &desc)) {
15308 return false;
15309 }
15310
15311 if (desc.isNothing() || !desc->enumerable()) {
15312 continue;
15313 }
15314
15315 idVal = js::IdToValue(curId);
15316 nsString propName;
15317 // This will just throw if idVal is a Symbol, like the spec says
15318 // to do.
15319 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
15320 return false;
15321 }
15322
15323 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
15324 return false;
15325 }
15326
15327 Record<nsString, Nullable<ArrayBuffer>>::EntryType* entry;
15328 if (!idsSeen.EnsureInserted(propName)) {
15329 // Find the existing entry.
15330 auto idx = recordEntries.IndexOf(propName);
15331 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 15332); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 15332; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
15332 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 15332); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 15332; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
15333 // Now blow it away to make it look like it was just added
15334 // to the array, because it's not obvious that it's
15335 // safe to write to its already-initialized mValue via our
15336 // normal codegen conversions. For example, the value
15337 // could be a union and this would change its type, but
15338 // codegen assumes we won't do that.
15339 entry = recordEntries.ReconstructElementAt(idx);
15340 } else {
15341 // Safe to do an infallible append here, because we did a
15342 // SetCapacity above to the right capacity.
15343 entry = recordEntries.AppendElement();
15344 }
15345 entry->mKey = propName;
15346 Nullable<ArrayBuffer>& slot = entry->mValue;
15347 if (temp.isObject()) {
15348 if (!slot.SetValue().Init(&temp.toObject())) {
15349 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value in argument 1", "ArrayBufferOrNull");
15350 return false;
15351 }
15352 if (JS::IsSharedArrayBufferObject(slot.SetValue().Obj())) {
15353 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Value in argument 1");
15354 return false;
15355 }
15356 if (JS::IsLargeArrayBufferMaybeShared(slot.SetValue().Obj())) {
15357 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value in argument 1");
15358 return false;
15359 }
15360 if (JS::IsResizableArrayBufferMaybeShared(slot.SetValue().Obj())) {
15361 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value in argument 1");
15362 return false;
15363 }
15364 } else if (temp.isNullOrUndefined()) {
15365 slot.SetNull();
15366 } else {
15367 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
15368 return false;
15369 }
15370 }
15371 } else {
15372 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
15373 return false;
15374 }
15375 // NOTE: This assert does NOT call the function.
15376 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfNullableArrayBuffers(Constify(arg0)))>, "Should be returning void here");
15377 MOZ_KnownLive(self)(self)->PassRecordOfNullableArrayBuffers(Constify(arg0));
15378 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15378); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15378; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15379 args.rval().setUndefined();
15380 return true;
15381}
15382
15383static const JSJitInfo passRecordOfNullableArrayBuffers_methodinfo = {
15384 { (JSJitGetterOp)passRecordOfNullableArrayBuffers },
15385 { prototypes::id::TestExampleInterface },
15386 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15387 JSJitInfo::Method,
15388 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15389 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15390 false, /* isInfallible. False in setters. */
15391 false, /* isMovable. Not relevant for setters. */
15392 false, /* isEliminatable. Not relevant for setters. */
15393 false, /* isAlwaysInSlot. Only relevant for getters. */
15394 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15395 false, /* isTypedMethod. Only relevant for methods. */
15396 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15397};
15398
15399MOZ_CAN_RUN_SCRIPT static bool
15400passVariadicTypedArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15401{
15402 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicTypedArray");
15403 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15406( cx, "TestExampleInterface"
, "passVariadicTypedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15404 "TestExampleInterface", "passVariadicTypedArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15406( cx, "TestExampleInterface"
, "passVariadicTypedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15405 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15406( cx, "TestExampleInterface"
, "passVariadicTypedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15406 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15406( cx, "TestExampleInterface"
, "passVariadicTypedArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15407
15408 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15409 AutoSequence<Float32Array> arg0;
15410 SequenceRooter<Float32Array> arg0_holder(cx, &arg0);
15411 if (args.length() > 0) {
15412 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
15413 JS_ReportOutOfMemory(cx);
15414 return false;
15415 }
15416 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
15417 // OK to do infallible append here, since we ensured capacity already.
15418 Float32Array& slot = *arg0.AppendElement();
15419 if (args[variadicArg].isObject()) {
15420 if (!slot.Init(&args[variadicArg].toObject())) {
15421 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Float32Array");
15422 return false;
15423 }
15424 if (JS::IsArrayBufferViewShared(slot.Obj())) {
15425 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
15426 return false;
15427 }
15428 if (JS::IsLargeArrayBufferView(slot.Obj())) {
15429 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
15430 return false;
15431 }
15432 if (JS::IsResizableArrayBufferView(slot.Obj())) {
15433 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
15434 return false;
15435 }
15436 } else {
15437 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
15438 return false;
15439 }
15440 }
15441 }
15442 // NOTE: This assert does NOT call the function.
15443 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicTypedArray(Constify(arg0)))>, "Should be returning void here");
15444 MOZ_KnownLive(self)(self)->PassVariadicTypedArray(Constify(arg0));
15445 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15445); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15445; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15446 args.rval().setUndefined();
15447 return true;
15448}
15449
15450static const JSJitInfo passVariadicTypedArray_methodinfo = {
15451 { (JSJitGetterOp)passVariadicTypedArray },
15452 { prototypes::id::TestExampleInterface },
15453 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15454 JSJitInfo::Method,
15455 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15456 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15457 false, /* isInfallible. False in setters. */
15458 false, /* isMovable. Not relevant for setters. */
15459 false, /* isEliminatable. Not relevant for setters. */
15460 false, /* isAlwaysInSlot. Only relevant for getters. */
15461 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15462 false, /* isTypedMethod. Only relevant for methods. */
15463 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15464};
15465
15466MOZ_CAN_RUN_SCRIPT static bool
15467passVariadicNullableTypedArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15468{
15469 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicNullableTypedArray");
15470 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15473( cx, "TestExampleInterface"
, "passVariadicNullableTypedArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15471 "TestExampleInterface", "passVariadicNullableTypedArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15473( cx, "TestExampleInterface"
, "passVariadicNullableTypedArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15472 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15473( cx, "TestExampleInterface"
, "passVariadicNullableTypedArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15473 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15473( cx, "TestExampleInterface"
, "passVariadicNullableTypedArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15474
15475 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15476 AutoSequence<Nullable<Float32Array>> arg0;
15477 SequenceRooter<Nullable<Float32Array>> arg0_holder(cx, &arg0);
15478 if (args.length() > 0) {
15479 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
15480 JS_ReportOutOfMemory(cx);
15481 return false;
15482 }
15483 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
15484 // OK to do infallible append here, since we ensured capacity already.
15485 Nullable<Float32Array>& slot = *arg0.AppendElement();
15486 if (args[variadicArg].isObject()) {
15487 if (!slot.SetValue().Init(&args[variadicArg].toObject())) {
15488 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "Float32ArrayOrNull");
15489 return false;
15490 }
15491 if (JS::IsArrayBufferViewShared(slot.SetValue().Obj())) {
15492 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
15493 return false;
15494 }
15495 if (JS::IsLargeArrayBufferView(slot.SetValue().Obj())) {
15496 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
15497 return false;
15498 }
15499 if (JS::IsResizableArrayBufferView(slot.SetValue().Obj())) {
15500 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
15501 return false;
15502 }
15503 } else if (args[variadicArg].isNullOrUndefined()) {
15504 slot.SetNull();
15505 } else {
15506 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
15507 return false;
15508 }
15509 }
15510 }
15511 // NOTE: This assert does NOT call the function.
15512 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicNullableTypedArray(Constify(arg0)))>, "Should be returning void here");
15513 MOZ_KnownLive(self)(self)->PassVariadicNullableTypedArray(Constify(arg0));
15514 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15514); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15514; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15515 args.rval().setUndefined();
15516 return true;
15517}
15518
15519static const JSJitInfo passVariadicNullableTypedArray_methodinfo = {
15520 { (JSJitGetterOp)passVariadicNullableTypedArray },
15521 { prototypes::id::TestExampleInterface },
15522 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15523 JSJitInfo::Method,
15524 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15525 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15526 false, /* isInfallible. False in setters. */
15527 false, /* isMovable. Not relevant for setters. */
15528 false, /* isEliminatable. Not relevant for setters. */
15529 false, /* isAlwaysInSlot. Only relevant for getters. */
15530 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15531 false, /* isTypedMethod. Only relevant for methods. */
15532 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15533};
15534
15535MOZ_CAN_RUN_SCRIPT static bool
15536receiveUint8Array(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15537{
15538 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15541( cx, "TestExampleInterface"
, "receiveUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15539 "TestExampleInterface", "receiveUint8Array", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15541( cx, "TestExampleInterface"
, "receiveUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15540 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15541( cx, "TestExampleInterface"
, "receiveUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15541 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15541( cx, "TestExampleInterface"
, "receiveUint8Array", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15542
15543 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15544 JS::Rooted<JSObject*> result(cx);
15545 // NOTE: This assert does NOT call the function.
15546 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUint8Array(cx, &result))>, "Should be returning void here");
15547 MOZ_KnownLive(self)(self)->ReceiveUint8Array(cx, &result);
15548 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15548); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15548; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15549 JS::ExposeObjectToActiveJS(result);
15550 args.rval().setObject(*result);
15551 if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
15552 return false;
15553 }
15554 return true;
15555}
15556
15557static const JSJitInfo receiveUint8Array_methodinfo = {
15558 { (JSJitGetterOp)receiveUint8Array },
15559 { prototypes::id::TestExampleInterface },
15560 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15561 JSJitInfo::Method,
15562 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15563 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
15564 false, /* isInfallible. False in setters. */
15565 false, /* isMovable. Not relevant for setters. */
15566 false, /* isEliminatable. Not relevant for setters. */
15567 false, /* isAlwaysInSlot. Only relevant for getters. */
15568 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15569 false, /* isTypedMethod. Only relevant for methods. */
15570 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15571};
15572
15573MOZ_CAN_RUN_SCRIPT static bool
15574get_uint8ArrayAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
15575{
15576 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15579( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15577 "TestExampleInterface", "uint8ArrayAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15579( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15578 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject15579( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15579 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15579( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15580
15581 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15582 JS::Rooted<JSObject*> result(cx);
15583 // NOTE: This assert does NOT call the function.
15584 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetUint8ArrayAttr(cx, &result))>, "Should be returning void here");
15585 MOZ_KnownLive(self)(self)->GetUint8ArrayAttr(cx, &result);
15586 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15586); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15586; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15587 JS::ExposeObjectToActiveJS(result);
15588 args.rval().setObject(*result);
15589 if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
15590 return false;
15591 }
15592 return true;
15593}
15594
15595MOZ_CAN_RUN_SCRIPT static bool
15596set_uint8ArrayAttr(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
15597{
15598 BindingCallContext cx(cx_, "TestExampleInterface.uint8ArrayAttr setter");
15599 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15602( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15600 "TestExampleInterface", "uint8ArrayAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15602( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15601 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject15602( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15602 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15602( cx, "TestExampleInterface"
, "uint8ArrayAttr", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15603
15604 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15605 RootedSpiderMonkeyInterface<Uint8Array> arg0(cx);
15606 if (args[0].isObject()) {
15607 if (!arg0.Init(&args[0].toObject())) {
15608 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "Uint8Array");
15609 return false;
15610 }
15611 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
15612 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Value being assigned");
15613 return false;
15614 }
15615 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
15616 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value being assigned");
15617 return false;
15618 }
15619 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
15620 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value being assigned");
15621 return false;
15622 }
15623 } else {
15624 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
15625 return false;
15626 }
15627 // NOTE: This assert does NOT call the function.
15628 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetUint8ArrayAttr(Constify(arg0)))>, "Should be returning void here");
15629 MOZ_KnownLive(self)(self)->SetUint8ArrayAttr(Constify(arg0));
15630 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15630); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15630; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15631
15632 return true;
15633}
15634
15635static const JSJitInfo uint8ArrayAttr_getterinfo = {
15636 { get_uint8ArrayAttr },
15637 { prototypes::id::TestExampleInterface },
15638 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15639 JSJitInfo::Getter,
15640 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15641 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
15642 false, /* isInfallible. False in setters. */
15643 false, /* isMovable. Not relevant for setters. */
15644 false, /* isEliminatable. Not relevant for setters. */
15645 false, /* isAlwaysInSlot. Only relevant for getters. */
15646 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15647 false, /* isTypedMethod. Only relevant for methods. */
15648 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15649};
15650static const JSJitInfo uint8ArrayAttr_setterinfo = {
15651 { (JSJitGetterOp)set_uint8ArrayAttr },
15652 { prototypes::id::TestExampleInterface },
15653 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15654 JSJitInfo::Setter,
15655 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15656 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15657 false, /* isInfallible. False in setters. */
15658 false, /* isMovable. Not relevant for setters. */
15659 false, /* isEliminatable. Not relevant for setters. */
15660 false, /* isAlwaysInSlot. Only relevant for getters. */
15661 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15662 false, /* isTypedMethod. Only relevant for methods. */
15663 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15664};
15665
15666MOZ_CAN_RUN_SCRIPT static bool
15667passString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15668{
15669 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15672( cx, "TestExampleInterface"
, "passString", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15670 "TestExampleInterface", "passString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15672( cx, "TestExampleInterface"
, "passString", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15671 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15672( cx, "TestExampleInterface"
, "passString", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15672 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15672( cx, "TestExampleInterface"
, "passString", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15673
15674 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15675 if (!args.requireAtLeast(cx, "TestExampleInterface.passString", 1)) {
15676 return false;
15677 }
15678 binding_detail::FakeString<char16_t> arg0;
15679 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
15680 return false;
15681 }
15682 // NOTE: This assert does NOT call the function.
15683 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassString(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15684 MOZ_KnownLive(self)(self)->PassString(NonNullHelper(Constify(arg0)));
15685 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15685); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15685; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15686 args.rval().setUndefined();
15687 return true;
15688}
15689
15690static const JSJitInfo passString_methodinfo = {
15691 { (JSJitGetterOp)passString },
15692 { prototypes::id::TestExampleInterface },
15693 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15694 JSJitInfo::Method,
15695 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15696 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15697 false, /* isInfallible. False in setters. */
15698 false, /* isMovable. Not relevant for setters. */
15699 false, /* isEliminatable. Not relevant for setters. */
15700 false, /* isAlwaysInSlot. Only relevant for getters. */
15701 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15702 false, /* isTypedMethod. Only relevant for methods. */
15703 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15704};
15705
15706MOZ_CAN_RUN_SCRIPT static bool
15707passNullableString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15708{
15709 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15712( cx, "TestExampleInterface"
, "passNullableString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15710 "TestExampleInterface", "passNullableString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15712( cx, "TestExampleInterface"
, "passNullableString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15711 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15712( cx, "TestExampleInterface"
, "passNullableString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15712 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15712( cx, "TestExampleInterface"
, "passNullableString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15713
15714 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15715 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableString", 1)) {
15716 return false;
15717 }
15718 binding_detail::FakeString<char16_t> arg0;
15719 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
15720 return false;
15721 }
15722 // NOTE: This assert does NOT call the function.
15723 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableString(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15724 MOZ_KnownLive(self)(self)->PassNullableString(NonNullHelper(Constify(arg0)));
15725 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15725); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15725; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15726 args.rval().setUndefined();
15727 return true;
15728}
15729
15730static const JSJitInfo passNullableString_methodinfo = {
15731 { (JSJitGetterOp)passNullableString },
15732 { prototypes::id::TestExampleInterface },
15733 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15734 JSJitInfo::Method,
15735 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15736 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15737 false, /* isInfallible. False in setters. */
15738 false, /* isMovable. Not relevant for setters. */
15739 false, /* isEliminatable. Not relevant for setters. */
15740 false, /* isAlwaysInSlot. Only relevant for getters. */
15741 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15742 false, /* isTypedMethod. Only relevant for methods. */
15743 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15744};
15745
15746MOZ_CAN_RUN_SCRIPT static bool
15747passOptionalString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15748{
15749 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15752( cx, "TestExampleInterface"
, "passOptionalString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15750 "TestExampleInterface", "passOptionalString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15752( cx, "TestExampleInterface"
, "passOptionalString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15751 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15752( cx, "TestExampleInterface"
, "passOptionalString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15752 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15752( cx, "TestExampleInterface"
, "passOptionalString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15753
15754 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15755 Optional<nsAString> arg0;
15756 binding_detail::FakeString<char16_t> arg0_holder;
15757 if (args.hasDefined(0)) {
15758 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0_holder)) {
15759 return false;
15760 }
15761 arg0 = &arg0_holder;
15762 }
15763 // NOTE: This assert does NOT call the function.
15764 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalString(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15765 MOZ_KnownLive(self)(self)->PassOptionalString(NonNullHelper(Constify(arg0)));
15766 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15766); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15766; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15767 args.rval().setUndefined();
15768 return true;
15769}
15770
15771static const JSJitInfo passOptionalString_methodinfo = {
15772 { (JSJitGetterOp)passOptionalString },
15773 { prototypes::id::TestExampleInterface },
15774 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15775 JSJitInfo::Method,
15776 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15777 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15778 false, /* isInfallible. False in setters. */
15779 false, /* isMovable. Not relevant for setters. */
15780 false, /* isEliminatable. Not relevant for setters. */
15781 false, /* isAlwaysInSlot. Only relevant for getters. */
15782 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15783 false, /* isTypedMethod. Only relevant for methods. */
15784 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15785};
15786
15787MOZ_CAN_RUN_SCRIPT static bool
15788passOptionalStringWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15789{
15790 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15793( cx, "TestExampleInterface"
, "passOptionalStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15791 "TestExampleInterface", "passOptionalStringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15793( cx, "TestExampleInterface"
, "passOptionalStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15792 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15793( cx, "TestExampleInterface"
, "passOptionalStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15793 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15793( cx, "TestExampleInterface"
, "passOptionalStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15794
15795 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15796 binding_detail::FakeString<char16_t> arg0;
15797 if (args.hasDefined(0)) {
15798 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
15799 return false;
15800 }
15801 } else {
15802 arg0.AssignLiteral(u"abc");
15803 }
15804 // NOTE: This assert does NOT call the function.
15805 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalStringWithDefaultValue(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15806 MOZ_KnownLive(self)(self)->PassOptionalStringWithDefaultValue(NonNullHelper(Constify(arg0)));
15807 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15807); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15807; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15808 args.rval().setUndefined();
15809 return true;
15810}
15811
15812static const JSJitInfo passOptionalStringWithDefaultValue_methodinfo = {
15813 { (JSJitGetterOp)passOptionalStringWithDefaultValue },
15814 { prototypes::id::TestExampleInterface },
15815 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15816 JSJitInfo::Method,
15817 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15818 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15819 false, /* isInfallible. False in setters. */
15820 false, /* isMovable. Not relevant for setters. */
15821 false, /* isEliminatable. Not relevant for setters. */
15822 false, /* isAlwaysInSlot. Only relevant for getters. */
15823 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15824 false, /* isTypedMethod. Only relevant for methods. */
15825 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15826};
15827
15828MOZ_CAN_RUN_SCRIPT static bool
15829passOptionalNullableString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15830{
15831 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15834( cx, "TestExampleInterface"
, "passOptionalNullableString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15832 "TestExampleInterface", "passOptionalNullableString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15834( cx, "TestExampleInterface"
, "passOptionalNullableString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15833 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15834( cx, "TestExampleInterface"
, "passOptionalNullableString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15834 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15834( cx, "TestExampleInterface"
, "passOptionalNullableString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15835
15836 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15837 Optional<nsAString> arg0;
15838 binding_detail::FakeString<char16_t> arg0_holder;
15839 if (args.hasDefined(0)) {
15840 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0_holder)) {
15841 return false;
15842 }
15843 arg0 = &arg0_holder;
15844 }
15845 // NOTE: This assert does NOT call the function.
15846 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableString(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15847 MOZ_KnownLive(self)(self)->PassOptionalNullableString(NonNullHelper(Constify(arg0)));
15848 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15848); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15848; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15849 args.rval().setUndefined();
15850 return true;
15851}
15852
15853static const JSJitInfo passOptionalNullableString_methodinfo = {
15854 { (JSJitGetterOp)passOptionalNullableString },
15855 { prototypes::id::TestExampleInterface },
15856 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15857 JSJitInfo::Method,
15858 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15859 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15860 false, /* isInfallible. False in setters. */
15861 false, /* isMovable. Not relevant for setters. */
15862 false, /* isEliminatable. Not relevant for setters. */
15863 false, /* isAlwaysInSlot. Only relevant for getters. */
15864 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15865 false, /* isTypedMethod. Only relevant for methods. */
15866 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15867};
15868
15869MOZ_CAN_RUN_SCRIPT static bool
15870passOptionalNullableStringWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15871{
15872 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15875( cx, "TestExampleInterface"
, "passOptionalNullableStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15873 "TestExampleInterface", "passOptionalNullableStringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15875( cx, "TestExampleInterface"
, "passOptionalNullableStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15874 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15875( cx, "TestExampleInterface"
, "passOptionalNullableStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
15875 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15875( cx, "TestExampleInterface"
, "passOptionalNullableStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
15876
15877 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15878 binding_detail::FakeString<char16_t> arg0;
15879 if (args.hasDefined(0)) {
15880 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
15881 return false;
15882 }
15883 } else {
15884 arg0.SetIsVoid(true);
15885 }
15886 // NOTE: This assert does NOT call the function.
15887 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableStringWithDefaultValue(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15888 MOZ_KnownLive(self)(self)->PassOptionalNullableStringWithDefaultValue(NonNullHelper(Constify(arg0)));
15889 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15889); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15889; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15890 args.rval().setUndefined();
15891 return true;
15892}
15893
15894static const JSJitInfo passOptionalNullableStringWithDefaultValue_methodinfo = {
15895 { (JSJitGetterOp)passOptionalNullableStringWithDefaultValue },
15896 { prototypes::id::TestExampleInterface },
15897 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15898 JSJitInfo::Method,
15899 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15900 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15901 false, /* isInfallible. False in setters. */
15902 false, /* isMovable. Not relevant for setters. */
15903 false, /* isEliminatable. Not relevant for setters. */
15904 false, /* isAlwaysInSlot. Only relevant for getters. */
15905 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15906 false, /* isTypedMethod. Only relevant for methods. */
15907 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15908};
15909
15910MOZ_CAN_RUN_SCRIPT static bool
15911passVariadicString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15912{
15913 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15916( cx, "TestExampleInterface"
, "passVariadicString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15914 "TestExampleInterface", "passVariadicString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15916( cx, "TestExampleInterface"
, "passVariadicString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15915 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15916( cx, "TestExampleInterface"
, "passVariadicString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15916 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15916( cx, "TestExampleInterface"
, "passVariadicString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15917
15918 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15919 AutoSequence<nsString> arg0;
15920 if (args.length() > 0) {
15921 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
15922 JS_ReportOutOfMemory(cx);
15923 return false;
15924 }
15925 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
15926 // OK to do infallible append here, since we ensured capacity already.
15927 nsString& slot = *arg0.AppendElement();
15928 if (!ConvertJSValueToString(cx, args[variadicArg], eStringify, eStringify, slot)) {
15929 return false;
15930 }
15931 }
15932 }
15933 // NOTE: This assert does NOT call the function.
15934 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicString(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
15935 MOZ_KnownLive(self)(self)->PassVariadicString(NonNullHelper(Constify(arg0)));
15936 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15936); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15936; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15937 args.rval().setUndefined();
15938 return true;
15939}
15940
15941static const JSJitInfo passVariadicString_methodinfo = {
15942 { (JSJitGetterOp)passVariadicString },
15943 { prototypes::id::TestExampleInterface },
15944 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15945 JSJitInfo::Method,
15946 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15947 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15948 false, /* isInfallible. False in setters. */
15949 false, /* isMovable. Not relevant for setters. */
15950 false, /* isEliminatable. Not relevant for setters. */
15951 false, /* isAlwaysInSlot. Only relevant for getters. */
15952 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15953 false, /* isTypedMethod. Only relevant for methods. */
15954 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15955};
15956
15957MOZ_CAN_RUN_SCRIPT static bool
15958passByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
15959{
15960 BindingCallContext cx(cx_, "TestExampleInterface.passByteString");
15961 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject15964( cx, "TestExampleInterface"
, "passByteString", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15962 "TestExampleInterface", "passByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject15964( cx, "TestExampleInterface"
, "passByteString", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15963 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject15964( cx, "TestExampleInterface"
, "passByteString", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
15964 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject15964( cx, "TestExampleInterface"
, "passByteString", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
15965
15966 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
15967 if (!args.requireAtLeast(cx, "TestExampleInterface.passByteString", 1)) {
15968 return false;
15969 }
15970 nsCString arg0;
15971 if (!ConvertJSValueToByteString(cx, args[0], false, "argument 1", arg0)) {
15972 return false;
15973 }
15974 // NOTE: This assert does NOT call the function.
15975 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassByteString(Constify(arg0)))>, "Should be returning void here");
15976 MOZ_KnownLive(self)(self)->PassByteString(Constify(arg0));
15977 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 15977); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 15977; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
15978 args.rval().setUndefined();
15979 return true;
15980}
15981
15982static const JSJitInfo passByteString_methodinfo = {
15983 { (JSJitGetterOp)passByteString },
15984 { prototypes::id::TestExampleInterface },
15985 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
15986 JSJitInfo::Method,
15987 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
15988 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
15989 false, /* isInfallible. False in setters. */
15990 false, /* isMovable. Not relevant for setters. */
15991 false, /* isEliminatable. Not relevant for setters. */
15992 false, /* isAlwaysInSlot. Only relevant for getters. */
15993 false, /* isLazilyCachedInSlot. Only relevant for getters. */
15994 false, /* isTypedMethod. Only relevant for methods. */
15995 0 /* Reserved slot index, if we're stored in a slot, else 0. */
15996};
15997
15998MOZ_CAN_RUN_SCRIPT static bool
15999passNullableByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16000{
16001 BindingCallContext cx(cx_, "TestExampleInterface.passNullableByteString");
16002 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16005( cx, "TestExampleInterface"
, "passNullableByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16003 "TestExampleInterface", "passNullableByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16005( cx, "TestExampleInterface"
, "passNullableByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16004 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16005( cx, "TestExampleInterface"
, "passNullableByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16005 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16005( cx, "TestExampleInterface"
, "passNullableByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16006
16007 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16008 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableByteString", 1)) {
16009 return false;
16010 }
16011 nsCString arg0;
16012 if (!ConvertJSValueToByteString(cx, args[0], true, "argument 1", arg0)) {
16013 return false;
16014 }
16015 // NOTE: This assert does NOT call the function.
16016 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableByteString(Constify(arg0)))>, "Should be returning void here");
16017 MOZ_KnownLive(self)(self)->PassNullableByteString(Constify(arg0));
16018 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16018); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16018; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16019 args.rval().setUndefined();
16020 return true;
16021}
16022
16023static const JSJitInfo passNullableByteString_methodinfo = {
16024 { (JSJitGetterOp)passNullableByteString },
16025 { prototypes::id::TestExampleInterface },
16026 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16027 JSJitInfo::Method,
16028 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16029 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16030 false, /* isInfallible. False in setters. */
16031 false, /* isMovable. Not relevant for setters. */
16032 false, /* isEliminatable. Not relevant for setters. */
16033 false, /* isAlwaysInSlot. Only relevant for getters. */
16034 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16035 false, /* isTypedMethod. Only relevant for methods. */
16036 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16037};
16038
16039MOZ_CAN_RUN_SCRIPT static bool
16040passOptionalByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16041{
16042 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalByteString");
16043 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16046( cx, "TestExampleInterface"
, "passOptionalByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16044 "TestExampleInterface", "passOptionalByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16046( cx, "TestExampleInterface"
, "passOptionalByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16045 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16046( cx, "TestExampleInterface"
, "passOptionalByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16046 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16046( cx, "TestExampleInterface"
, "passOptionalByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16047
16048 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16049 Optional<nsCString> arg0;
16050 if (args.hasDefined(0)) {
16051 arg0.Construct();
16052 if (!ConvertJSValueToByteString(cx, args[0], false, "argument 1", arg0.Value())) {
16053 return false;
16054 }
16055 }
16056 // NOTE: This assert does NOT call the function.
16057 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalByteString(Constify(arg0)))>, "Should be returning void here");
16058 MOZ_KnownLive(self)(self)->PassOptionalByteString(Constify(arg0));
16059 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16059); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16059; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16060 args.rval().setUndefined();
16061 return true;
16062}
16063
16064static const JSJitInfo passOptionalByteString_methodinfo = {
16065 { (JSJitGetterOp)passOptionalByteString },
16066 { prototypes::id::TestExampleInterface },
16067 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16068 JSJitInfo::Method,
16069 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16070 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16071 false, /* isInfallible. False in setters. */
16072 false, /* isMovable. Not relevant for setters. */
16073 false, /* isEliminatable. Not relevant for setters. */
16074 false, /* isAlwaysInSlot. Only relevant for getters. */
16075 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16076 false, /* isTypedMethod. Only relevant for methods. */
16077 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16078};
16079
16080MOZ_CAN_RUN_SCRIPT static bool
16081passOptionalByteStringWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16082{
16083 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalByteStringWithDefaultValue");
16084 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16087( cx, "TestExampleInterface"
, "passOptionalByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16085 "TestExampleInterface", "passOptionalByteStringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16087( cx, "TestExampleInterface"
, "passOptionalByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16086 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16087( cx, "TestExampleInterface"
, "passOptionalByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16087 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16087( cx, "TestExampleInterface"
, "passOptionalByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16088
16089 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16090 nsCString arg0;
16091 if (args.hasDefined(0)) {
16092 if (!ConvertJSValueToByteString(cx, args[0], false, "argument 1", arg0)) {
16093 return false;
16094 }
16095 } else {
16096 arg0.AssignLiteral("abc");
16097 }
16098 // NOTE: This assert does NOT call the function.
16099 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalByteStringWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16100 MOZ_KnownLive(self)(self)->PassOptionalByteStringWithDefaultValue(Constify(arg0));
16101 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16101); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16101; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16102 args.rval().setUndefined();
16103 return true;
16104}
16105
16106static const JSJitInfo passOptionalByteStringWithDefaultValue_methodinfo = {
16107 { (JSJitGetterOp)passOptionalByteStringWithDefaultValue },
16108 { prototypes::id::TestExampleInterface },
16109 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16110 JSJitInfo::Method,
16111 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16112 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16113 false, /* isInfallible. False in setters. */
16114 false, /* isMovable. Not relevant for setters. */
16115 false, /* isEliminatable. Not relevant for setters. */
16116 false, /* isAlwaysInSlot. Only relevant for getters. */
16117 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16118 false, /* isTypedMethod. Only relevant for methods. */
16119 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16120};
16121
16122MOZ_CAN_RUN_SCRIPT static bool
16123passOptionalNullableByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16124{
16125 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableByteString");
16126 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16129( cx, "TestExampleInterface"
, "passOptionalNullableByteString", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16127 "TestExampleInterface", "passOptionalNullableByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16129( cx, "TestExampleInterface"
, "passOptionalNullableByteString", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16128 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16129( cx, "TestExampleInterface"
, "passOptionalNullableByteString", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16129 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16129( cx, "TestExampleInterface"
, "passOptionalNullableByteString", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16130
16131 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16132 Optional<nsCString> arg0;
16133 if (args.hasDefined(0)) {
16134 arg0.Construct();
16135 if (!ConvertJSValueToByteString(cx, args[0], true, "argument 1", arg0.Value())) {
16136 return false;
16137 }
16138 }
16139 // NOTE: This assert does NOT call the function.
16140 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableByteString(Constify(arg0)))>, "Should be returning void here");
16141 MOZ_KnownLive(self)(self)->PassOptionalNullableByteString(Constify(arg0));
16142 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16142); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16142; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16143 args.rval().setUndefined();
16144 return true;
16145}
16146
16147static const JSJitInfo passOptionalNullableByteString_methodinfo = {
16148 { (JSJitGetterOp)passOptionalNullableByteString },
16149 { prototypes::id::TestExampleInterface },
16150 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16151 JSJitInfo::Method,
16152 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16153 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16154 false, /* isInfallible. False in setters. */
16155 false, /* isMovable. Not relevant for setters. */
16156 false, /* isEliminatable. Not relevant for setters. */
16157 false, /* isAlwaysInSlot. Only relevant for getters. */
16158 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16159 false, /* isTypedMethod. Only relevant for methods. */
16160 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16161};
16162
16163MOZ_CAN_RUN_SCRIPT static bool
16164passOptionalNullableByteStringWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16165{
16166 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableByteStringWithDefaultValue");
16167 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16170( cx, "TestExampleInterface"
, "passOptionalNullableByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16168 "TestExampleInterface", "passOptionalNullableByteStringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16170( cx, "TestExampleInterface"
, "passOptionalNullableByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16169 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16170( cx, "TestExampleInterface"
, "passOptionalNullableByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16170 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16170( cx, "TestExampleInterface"
, "passOptionalNullableByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16171
16172 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16173 nsCString arg0;
16174 if (args.hasDefined(0)) {
16175 if (!ConvertJSValueToByteString(cx, args[0], true, "argument 1", arg0)) {
16176 return false;
16177 }
16178 } else {
16179 arg0.SetIsVoid(true);
16180 }
16181 // NOTE: This assert does NOT call the function.
16182 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableByteStringWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16183 MOZ_KnownLive(self)(self)->PassOptionalNullableByteStringWithDefaultValue(Constify(arg0));
16184 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16184); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16184; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16185 args.rval().setUndefined();
16186 return true;
16187}
16188
16189static const JSJitInfo passOptionalNullableByteStringWithDefaultValue_methodinfo = {
16190 { (JSJitGetterOp)passOptionalNullableByteStringWithDefaultValue },
16191 { prototypes::id::TestExampleInterface },
16192 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16193 JSJitInfo::Method,
16194 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16195 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16196 false, /* isInfallible. False in setters. */
16197 false, /* isMovable. Not relevant for setters. */
16198 false, /* isEliminatable. Not relevant for setters. */
16199 false, /* isAlwaysInSlot. Only relevant for getters. */
16200 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16201 false, /* isTypedMethod. Only relevant for methods. */
16202 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16203};
16204
16205MOZ_CAN_RUN_SCRIPT static bool
16206passVariadicByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16207{
16208 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicByteString");
16209 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16212( cx, "TestExampleInterface"
, "passVariadicByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16210 "TestExampleInterface", "passVariadicByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16212( cx, "TestExampleInterface"
, "passVariadicByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16211 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16212( cx, "TestExampleInterface"
, "passVariadicByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16212 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16212( cx, "TestExampleInterface"
, "passVariadicByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16213
16214 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16215 AutoSequence<nsCString> arg0;
16216 if (args.length() > 0) {
16217 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
16218 JS_ReportOutOfMemory(cx);
16219 return false;
16220 }
16221 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
16222 // OK to do infallible append here, since we ensured capacity already.
16223 nsCString& slot = *arg0.AppendElement();
16224 if (!ConvertJSValueToByteString(cx, args[variadicArg], false, "argument 1", slot)) {
16225 return false;
16226 }
16227 }
16228 }
16229 // NOTE: This assert does NOT call the function.
16230 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicByteString(Constify(arg0)))>, "Should be returning void here");
16231 MOZ_KnownLive(self)(self)->PassVariadicByteString(Constify(arg0));
16232 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16232); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16232; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16233 args.rval().setUndefined();
16234 return true;
16235}
16236
16237static const JSJitInfo passVariadicByteString_methodinfo = {
16238 { (JSJitGetterOp)passVariadicByteString },
16239 { prototypes::id::TestExampleInterface },
16240 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16241 JSJitInfo::Method,
16242 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16243 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16244 false, /* isInfallible. False in setters. */
16245 false, /* isMovable. Not relevant for setters. */
16246 false, /* isEliminatable. Not relevant for setters. */
16247 false, /* isAlwaysInSlot. Only relevant for getters. */
16248 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16249 false, /* isTypedMethod. Only relevant for methods. */
16250 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16251};
16252
16253MOZ_CAN_RUN_SCRIPT static bool
16254passUnionByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16255{
16256 BindingCallContext cx(cx_, "TestExampleInterface.passUnionByteString");
16257 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16260( cx, "TestExampleInterface"
, "passUnionByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16258 "TestExampleInterface", "passUnionByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16260( cx, "TestExampleInterface"
, "passUnionByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16259 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16260( cx, "TestExampleInterface"
, "passUnionByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16260 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16260( cx, "TestExampleInterface"
, "passUnionByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16261
16262 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16263 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionByteString", 1)) {
16264 return false;
16265 }
16266 ByteStringOrLong arg0;
16267 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
16268 return false;
16269 }
16270 // NOTE: This assert does NOT call the function.
16271 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionByteString(Constify(arg0)))>, "Should be returning void here");
16272 MOZ_KnownLive(self)(self)->PassUnionByteString(Constify(arg0));
16273 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16273); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16273; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16274 args.rval().setUndefined();
16275 return true;
16276}
16277
16278static const JSJitInfo passUnionByteString_methodinfo = {
16279 { (JSJitGetterOp)passUnionByteString },
16280 { prototypes::id::TestExampleInterface },
16281 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16282 JSJitInfo::Method,
16283 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16284 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16285 false, /* isInfallible. False in setters. */
16286 false, /* isMovable. Not relevant for setters. */
16287 false, /* isEliminatable. Not relevant for setters. */
16288 false, /* isAlwaysInSlot. Only relevant for getters. */
16289 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16290 false, /* isTypedMethod. Only relevant for methods. */
16291 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16292};
16293
16294MOZ_CAN_RUN_SCRIPT static bool
16295passOptionalUnionByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16296{
16297 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalUnionByteString");
16298 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16301( cx, "TestExampleInterface"
, "passOptionalUnionByteString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16299 "TestExampleInterface", "passOptionalUnionByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16301( cx, "TestExampleInterface"
, "passOptionalUnionByteString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16300 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16301( cx, "TestExampleInterface"
, "passOptionalUnionByteString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16301 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16301( cx, "TestExampleInterface"
, "passOptionalUnionByteString", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16302
16303 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16304 Optional<ByteStringOrLong> arg0;
16305 if (args.hasDefined(0)) {
16306 arg0.Construct();
16307 if (!arg0.Value().Init(cx, args[0], "Argument 1", false)) {
16308 return false;
16309 }
16310 }
16311 // NOTE: This assert does NOT call the function.
16312 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnionByteString(Constify(arg0)))>, "Should be returning void here");
16313 MOZ_KnownLive(self)(self)->PassOptionalUnionByteString(Constify(arg0));
16314 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16314); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16314; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16315 args.rval().setUndefined();
16316 return true;
16317}
16318
16319static const JSJitInfo passOptionalUnionByteString_methodinfo = {
16320 { (JSJitGetterOp)passOptionalUnionByteString },
16321 { prototypes::id::TestExampleInterface },
16322 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16323 JSJitInfo::Method,
16324 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16325 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16326 false, /* isInfallible. False in setters. */
16327 false, /* isMovable. Not relevant for setters. */
16328 false, /* isEliminatable. Not relevant for setters. */
16329 false, /* isAlwaysInSlot. Only relevant for getters. */
16330 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16331 false, /* isTypedMethod. Only relevant for methods. */
16332 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16333};
16334
16335MOZ_CAN_RUN_SCRIPT static bool
16336passOptionalUnionByteStringWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16337{
16338 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalUnionByteStringWithDefaultValue");
16339 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16342( cx, "TestExampleInterface"
, "passOptionalUnionByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16340 "TestExampleInterface", "passOptionalUnionByteStringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16342( cx, "TestExampleInterface"
, "passOptionalUnionByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16341 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16342( cx, "TestExampleInterface"
, "passOptionalUnionByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16342 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16342( cx, "TestExampleInterface"
, "passOptionalUnionByteStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16343
16344 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16345 ByteStringOrLong arg0;
16346 if (!(args.hasDefined(0))) {
16347 arg0.SetStringLiteral("abc");
16348 } else {
16349 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
16350 return false;
16351 }
16352 }
16353 // NOTE: This assert does NOT call the function.
16354 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnionByteStringWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16355 MOZ_KnownLive(self)(self)->PassOptionalUnionByteStringWithDefaultValue(Constify(arg0));
16356 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16356); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16356; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16357 args.rval().setUndefined();
16358 return true;
16359}
16360
16361static const JSJitInfo passOptionalUnionByteStringWithDefaultValue_methodinfo = {
16362 { (JSJitGetterOp)passOptionalUnionByteStringWithDefaultValue },
16363 { prototypes::id::TestExampleInterface },
16364 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16365 JSJitInfo::Method,
16366 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16367 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16368 false, /* isInfallible. False in setters. */
16369 false, /* isMovable. Not relevant for setters. */
16370 false, /* isEliminatable. Not relevant for setters. */
16371 false, /* isAlwaysInSlot. Only relevant for getters. */
16372 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16373 false, /* isTypedMethod. Only relevant for methods. */
16374 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16375};
16376
16377MOZ_CAN_RUN_SCRIPT static bool
16378passUTF8String(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16379{
16380 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16383( cx, "TestExampleInterface"
, "passUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16381 "TestExampleInterface", "passUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16383( cx, "TestExampleInterface"
, "passUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16382 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16383( cx, "TestExampleInterface"
, "passUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16383 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16383( cx, "TestExampleInterface"
, "passUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16384
16385 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16386 if (!args.requireAtLeast(cx, "TestExampleInterface.passUTF8String", 1)) {
16387 return false;
16388 }
16389 binding_detail::FakeString<char> arg0;
16390 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
16391 return false;
16392 }
16393 // NOTE: This assert does NOT call the function.
16394 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUTF8String(Constify(arg0)))>, "Should be returning void here");
16395 MOZ_KnownLive(self)(self)->PassUTF8String(Constify(arg0));
16396 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16396); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16396; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16397 args.rval().setUndefined();
16398 return true;
16399}
16400
16401static const JSJitInfo passUTF8String_methodinfo = {
16402 { (JSJitGetterOp)passUTF8String },
16403 { prototypes::id::TestExampleInterface },
16404 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16405 JSJitInfo::Method,
16406 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16407 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16408 false, /* isInfallible. False in setters. */
16409 false, /* isMovable. Not relevant for setters. */
16410 false, /* isEliminatable. Not relevant for setters. */
16411 false, /* isAlwaysInSlot. Only relevant for getters. */
16412 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16413 false, /* isTypedMethod. Only relevant for methods. */
16414 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16415};
16416
16417MOZ_CAN_RUN_SCRIPT static bool
16418passNullableUTF8String(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16419{
16420 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16423( cx, "TestExampleInterface"
, "passNullableUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16421 "TestExampleInterface", "passNullableUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16423( cx, "TestExampleInterface"
, "passNullableUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16422 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16423( cx, "TestExampleInterface"
, "passNullableUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16423 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16423( cx, "TestExampleInterface"
, "passNullableUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16424
16425 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16426 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableUTF8String", 1)) {
16427 return false;
16428 }
16429 binding_detail::FakeString<char> arg0;
16430 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
16431 return false;
16432 }
16433 // NOTE: This assert does NOT call the function.
16434 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUTF8String(Constify(arg0)))>, "Should be returning void here");
16435 MOZ_KnownLive(self)(self)->PassNullableUTF8String(Constify(arg0));
16436 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16436); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16436; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16437 args.rval().setUndefined();
16438 return true;
16439}
16440
16441static const JSJitInfo passNullableUTF8String_methodinfo = {
16442 { (JSJitGetterOp)passNullableUTF8String },
16443 { prototypes::id::TestExampleInterface },
16444 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16445 JSJitInfo::Method,
16446 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16447 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16448 false, /* isInfallible. False in setters. */
16449 false, /* isMovable. Not relevant for setters. */
16450 false, /* isEliminatable. Not relevant for setters. */
16451 false, /* isAlwaysInSlot. Only relevant for getters. */
16452 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16453 false, /* isTypedMethod. Only relevant for methods. */
16454 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16455};
16456
16457MOZ_CAN_RUN_SCRIPT static bool
16458passOptionalUTF8String(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16459{
16460 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16463( cx, "TestExampleInterface"
, "passOptionalUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16461 "TestExampleInterface", "passOptionalUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16463( cx, "TestExampleInterface"
, "passOptionalUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16462 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16463( cx, "TestExampleInterface"
, "passOptionalUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16463 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16463( cx, "TestExampleInterface"
, "passOptionalUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16464
16465 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16466 Optional<nsACString> arg0;
16467 binding_detail::FakeString<char> arg0_holder;
16468 if (args.hasDefined(0)) {
16469 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0_holder)) {
16470 return false;
16471 }
16472 arg0 = &arg0_holder;
16473 }
16474 // NOTE: This assert does NOT call the function.
16475 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUTF8String(Constify(arg0)))>, "Should be returning void here");
16476 MOZ_KnownLive(self)(self)->PassOptionalUTF8String(Constify(arg0));
16477 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16477); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16477; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16478 args.rval().setUndefined();
16479 return true;
16480}
16481
16482static const JSJitInfo passOptionalUTF8String_methodinfo = {
16483 { (JSJitGetterOp)passOptionalUTF8String },
16484 { prototypes::id::TestExampleInterface },
16485 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16486 JSJitInfo::Method,
16487 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16488 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16489 false, /* isInfallible. False in setters. */
16490 false, /* isMovable. Not relevant for setters. */
16491 false, /* isEliminatable. Not relevant for setters. */
16492 false, /* isAlwaysInSlot. Only relevant for getters. */
16493 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16494 false, /* isTypedMethod. Only relevant for methods. */
16495 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16496};
16497
16498MOZ_CAN_RUN_SCRIPT static bool
16499passOptionalUTF8StringWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16500{
16501 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16504( cx, "TestExampleInterface"
, "passOptionalUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16502 "TestExampleInterface", "passOptionalUTF8StringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16504( cx, "TestExampleInterface"
, "passOptionalUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16503 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16504( cx, "TestExampleInterface"
, "passOptionalUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16504 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16504( cx, "TestExampleInterface"
, "passOptionalUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16505
16506 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16507 binding_detail::FakeString<char> arg0;
16508 if (args.hasDefined(0)) {
16509 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
16510 return false;
16511 }
16512 } else {
16513 arg0.AssignLiteral("abc");
16514 }
16515 // NOTE: This assert does NOT call the function.
16516 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUTF8StringWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16517 MOZ_KnownLive(self)(self)->PassOptionalUTF8StringWithDefaultValue(Constify(arg0));
16518 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16518); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16518; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16519 args.rval().setUndefined();
16520 return true;
16521}
16522
16523static const JSJitInfo passOptionalUTF8StringWithDefaultValue_methodinfo = {
16524 { (JSJitGetterOp)passOptionalUTF8StringWithDefaultValue },
16525 { prototypes::id::TestExampleInterface },
16526 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16527 JSJitInfo::Method,
16528 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16529 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16530 false, /* isInfallible. False in setters. */
16531 false, /* isMovable. Not relevant for setters. */
16532 false, /* isEliminatable. Not relevant for setters. */
16533 false, /* isAlwaysInSlot. Only relevant for getters. */
16534 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16535 false, /* isTypedMethod. Only relevant for methods. */
16536 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16537};
16538
16539MOZ_CAN_RUN_SCRIPT static bool
16540passOptionalNullableUTF8String(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16541{
16542 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16545( cx, "TestExampleInterface"
, "passOptionalNullableUTF8String", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16543 "TestExampleInterface", "passOptionalNullableUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16545( cx, "TestExampleInterface"
, "passOptionalNullableUTF8String", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16544 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16545( cx, "TestExampleInterface"
, "passOptionalNullableUTF8String", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16545 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16545( cx, "TestExampleInterface"
, "passOptionalNullableUTF8String", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16546
16547 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16548 Optional<nsACString> arg0;
16549 binding_detail::FakeString<char> arg0_holder;
16550 if (args.hasDefined(0)) {
16551 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0_holder)) {
16552 return false;
16553 }
16554 arg0 = &arg0_holder;
16555 }
16556 // NOTE: This assert does NOT call the function.
16557 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableUTF8String(Constify(arg0)))>, "Should be returning void here");
16558 MOZ_KnownLive(self)(self)->PassOptionalNullableUTF8String(Constify(arg0));
16559 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16559); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16559; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16560 args.rval().setUndefined();
16561 return true;
16562}
16563
16564static const JSJitInfo passOptionalNullableUTF8String_methodinfo = {
16565 { (JSJitGetterOp)passOptionalNullableUTF8String },
16566 { prototypes::id::TestExampleInterface },
16567 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16568 JSJitInfo::Method,
16569 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16570 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16571 false, /* isInfallible. False in setters. */
16572 false, /* isMovable. Not relevant for setters. */
16573 false, /* isEliminatable. Not relevant for setters. */
16574 false, /* isAlwaysInSlot. Only relevant for getters. */
16575 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16576 false, /* isTypedMethod. Only relevant for methods. */
16577 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16578};
16579
16580MOZ_CAN_RUN_SCRIPT static bool
16581passOptionalNullableUTF8StringWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16582{
16583 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16586( cx, "TestExampleInterface"
, "passOptionalNullableUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16584 "TestExampleInterface", "passOptionalNullableUTF8StringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16586( cx, "TestExampleInterface"
, "passOptionalNullableUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16585 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16586( cx, "TestExampleInterface"
, "passOptionalNullableUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16586 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16586( cx, "TestExampleInterface"
, "passOptionalNullableUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16587
16588 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16589 binding_detail::FakeString<char> arg0;
16590 if (args.hasDefined(0)) {
16591 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
16592 return false;
16593 }
16594 } else {
16595 arg0.SetIsVoid(true);
16596 }
16597 // NOTE: This assert does NOT call the function.
16598 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableUTF8StringWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16599 MOZ_KnownLive(self)(self)->PassOptionalNullableUTF8StringWithDefaultValue(Constify(arg0));
16600 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16600); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16600; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16601 args.rval().setUndefined();
16602 return true;
16603}
16604
16605static const JSJitInfo passOptionalNullableUTF8StringWithDefaultValue_methodinfo = {
16606 { (JSJitGetterOp)passOptionalNullableUTF8StringWithDefaultValue },
16607 { prototypes::id::TestExampleInterface },
16608 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16609 JSJitInfo::Method,
16610 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16611 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16612 false, /* isInfallible. False in setters. */
16613 false, /* isMovable. Not relevant for setters. */
16614 false, /* isEliminatable. Not relevant for setters. */
16615 false, /* isAlwaysInSlot. Only relevant for getters. */
16616 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16617 false, /* isTypedMethod. Only relevant for methods. */
16618 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16619};
16620
16621MOZ_CAN_RUN_SCRIPT static bool
16622passVariadicUTF8String(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16623{
16624 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16627( cx, "TestExampleInterface"
, "passVariadicUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16625 "TestExampleInterface", "passVariadicUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16627( cx, "TestExampleInterface"
, "passVariadicUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16626 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16627( cx, "TestExampleInterface"
, "passVariadicUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16627 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16627( cx, "TestExampleInterface"
, "passVariadicUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16628
16629 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16630 AutoSequence<nsCString> arg0;
16631 if (args.length() > 0) {
16632 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
16633 JS_ReportOutOfMemory(cx);
16634 return false;
16635 }
16636 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
16637 // OK to do infallible append here, since we ensured capacity already.
16638 nsCString& slot = *arg0.AppendElement();
16639 if (!ConvertJSValueToString(cx, args[variadicArg], eStringify, eStringify, slot)) {
16640 return false;
16641 }
16642 }
16643 }
16644 // NOTE: This assert does NOT call the function.
16645 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicUTF8String(Constify(arg0)))>, "Should be returning void here");
16646 MOZ_KnownLive(self)(self)->PassVariadicUTF8String(Constify(arg0));
16647 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16647); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16647; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16648 args.rval().setUndefined();
16649 return true;
16650}
16651
16652static const JSJitInfo passVariadicUTF8String_methodinfo = {
16653 { (JSJitGetterOp)passVariadicUTF8String },
16654 { prototypes::id::TestExampleInterface },
16655 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16656 JSJitInfo::Method,
16657 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16658 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16659 false, /* isInfallible. False in setters. */
16660 false, /* isMovable. Not relevant for setters. */
16661 false, /* isEliminatable. Not relevant for setters. */
16662 false, /* isAlwaysInSlot. Only relevant for getters. */
16663 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16664 false, /* isTypedMethod. Only relevant for methods. */
16665 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16666};
16667
16668MOZ_CAN_RUN_SCRIPT static bool
16669passUnionUTF8String(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16670{
16671 BindingCallContext cx(cx_, "TestExampleInterface.passUnionUTF8String");
16672 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16675( cx, "TestExampleInterface"
, "passUnionUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16673 "TestExampleInterface", "passUnionUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16675( cx, "TestExampleInterface"
, "passUnionUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16674 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16675( cx, "TestExampleInterface"
, "passUnionUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16675 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16675( cx, "TestExampleInterface"
, "passUnionUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16676
16677 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16678 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionUTF8String", 1)) {
16679 return false;
16680 }
16681 UTF8StringOrLong arg0;
16682 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
16683 return false;
16684 }
16685 // NOTE: This assert does NOT call the function.
16686 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionUTF8String(Constify(arg0)))>, "Should be returning void here");
16687 MOZ_KnownLive(self)(self)->PassUnionUTF8String(Constify(arg0));
16688 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16688); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16688; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16689 args.rval().setUndefined();
16690 return true;
16691}
16692
16693static const JSJitInfo passUnionUTF8String_methodinfo = {
16694 { (JSJitGetterOp)passUnionUTF8String },
16695 { prototypes::id::TestExampleInterface },
16696 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16697 JSJitInfo::Method,
16698 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16699 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16700 false, /* isInfallible. False in setters. */
16701 false, /* isMovable. Not relevant for setters. */
16702 false, /* isEliminatable. Not relevant for setters. */
16703 false, /* isAlwaysInSlot. Only relevant for getters. */
16704 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16705 false, /* isTypedMethod. Only relevant for methods. */
16706 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16707};
16708
16709MOZ_CAN_RUN_SCRIPT static bool
16710passOptionalUnionUTF8String(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16711{
16712 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalUnionUTF8String");
16713 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16716( cx, "TestExampleInterface"
, "passOptionalUnionUTF8String", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16714 "TestExampleInterface", "passOptionalUnionUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16716( cx, "TestExampleInterface"
, "passOptionalUnionUTF8String", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16715 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16716( cx, "TestExampleInterface"
, "passOptionalUnionUTF8String", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16716 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16716( cx, "TestExampleInterface"
, "passOptionalUnionUTF8String", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16717
16718 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16719 Optional<UTF8StringOrLong> arg0;
16720 if (args.hasDefined(0)) {
16721 arg0.Construct();
16722 if (!arg0.Value().Init(cx, args[0], "Argument 1", false)) {
16723 return false;
16724 }
16725 }
16726 // NOTE: This assert does NOT call the function.
16727 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnionUTF8String(Constify(arg0)))>, "Should be returning void here");
16728 MOZ_KnownLive(self)(self)->PassOptionalUnionUTF8String(Constify(arg0));
16729 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16729); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16729; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16730 args.rval().setUndefined();
16731 return true;
16732}
16733
16734static const JSJitInfo passOptionalUnionUTF8String_methodinfo = {
16735 { (JSJitGetterOp)passOptionalUnionUTF8String },
16736 { prototypes::id::TestExampleInterface },
16737 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16738 JSJitInfo::Method,
16739 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16740 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16741 false, /* isInfallible. False in setters. */
16742 false, /* isMovable. Not relevant for setters. */
16743 false, /* isEliminatable. Not relevant for setters. */
16744 false, /* isAlwaysInSlot. Only relevant for getters. */
16745 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16746 false, /* isTypedMethod. Only relevant for methods. */
16747 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16748};
16749
16750MOZ_CAN_RUN_SCRIPT static bool
16751passOptionalUnionUTF8StringWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16752{
16753 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalUnionUTF8StringWithDefaultValue");
16754 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16757( cx, "TestExampleInterface"
, "passOptionalUnionUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16755 "TestExampleInterface", "passOptionalUnionUTF8StringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16757( cx, "TestExampleInterface"
, "passOptionalUnionUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16756 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16757( cx, "TestExampleInterface"
, "passOptionalUnionUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16757 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16757( cx, "TestExampleInterface"
, "passOptionalUnionUTF8StringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16758
16759 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16760 UTF8StringOrLong arg0;
16761 if (!(args.hasDefined(0))) {
16762 arg0.SetStringLiteral("abc");
16763 } else {
16764 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
16765 return false;
16766 }
16767 }
16768 // NOTE: This assert does NOT call the function.
16769 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnionUTF8StringWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16770 MOZ_KnownLive(self)(self)->PassOptionalUnionUTF8StringWithDefaultValue(Constify(arg0));
16771 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16771); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16771; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16772 args.rval().setUndefined();
16773 return true;
16774}
16775
16776static const JSJitInfo passOptionalUnionUTF8StringWithDefaultValue_methodinfo = {
16777 { (JSJitGetterOp)passOptionalUnionUTF8StringWithDefaultValue },
16778 { prototypes::id::TestExampleInterface },
16779 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16780 JSJitInfo::Method,
16781 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16782 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16783 false, /* isInfallible. False in setters. */
16784 false, /* isMovable. Not relevant for setters. */
16785 false, /* isEliminatable. Not relevant for setters. */
16786 false, /* isAlwaysInSlot. Only relevant for getters. */
16787 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16788 false, /* isTypedMethod. Only relevant for methods. */
16789 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16790};
16791
16792MOZ_CAN_RUN_SCRIPT static bool
16793passSVS(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16794{
16795 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16798( cx, "TestExampleInterface"
, "passSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
16796 "TestExampleInterface", "passSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16798( cx, "TestExampleInterface"
, "passSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
16797 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16798( cx, "TestExampleInterface"
, "passSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
16798 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16798( cx, "TestExampleInterface"
, "passSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
16799
16800 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16801 if (!args.requireAtLeast(cx, "TestExampleInterface.passSVS", 1)) {
16802 return false;
16803 }
16804 binding_detail::FakeString<char16_t> arg0;
16805 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
16806 return false;
16807 }
16808 if (!NormalizeUSVString(arg0)) {
16809 JS_ReportOutOfMemory(cx);
16810 return false;
16811 }
16812 // NOTE: This assert does NOT call the function.
16813 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSVS(Constify(arg0)))>, "Should be returning void here");
16814 MOZ_KnownLive(self)(self)->PassSVS(Constify(arg0));
16815 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16815); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16815; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16816 args.rval().setUndefined();
16817 return true;
16818}
16819
16820static const JSJitInfo passSVS_methodinfo = {
16821 { (JSJitGetterOp)passSVS },
16822 { prototypes::id::TestExampleInterface },
16823 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16824 JSJitInfo::Method,
16825 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16826 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16827 false, /* isInfallible. False in setters. */
16828 false, /* isMovable. Not relevant for setters. */
16829 false, /* isEliminatable. Not relevant for setters. */
16830 false, /* isAlwaysInSlot. Only relevant for getters. */
16831 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16832 false, /* isTypedMethod. Only relevant for methods. */
16833 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16834};
16835
16836MOZ_CAN_RUN_SCRIPT static bool
16837passNullableSVS(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16838{
16839 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16842( cx, "TestExampleInterface"
, "passNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16840 "TestExampleInterface", "passNullableSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16842( cx, "TestExampleInterface"
, "passNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16841 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16842( cx, "TestExampleInterface"
, "passNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16842 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16842( cx, "TestExampleInterface"
, "passNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16843
16844 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16845 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableSVS", 1)) {
16846 return false;
16847 }
16848 binding_detail::FakeString<char16_t> arg0;
16849 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
16850 return false;
16851 }
16852 if (!NormalizeUSVString(arg0)) {
16853 JS_ReportOutOfMemory(cx);
16854 return false;
16855 }
16856 // NOTE: This assert does NOT call the function.
16857 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableSVS(Constify(arg0)))>, "Should be returning void here");
16858 MOZ_KnownLive(self)(self)->PassNullableSVS(Constify(arg0));
16859 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16859); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16859; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16860 args.rval().setUndefined();
16861 return true;
16862}
16863
16864static const JSJitInfo passNullableSVS_methodinfo = {
16865 { (JSJitGetterOp)passNullableSVS },
16866 { prototypes::id::TestExampleInterface },
16867 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16868 JSJitInfo::Method,
16869 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16870 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16871 false, /* isInfallible. False in setters. */
16872 false, /* isMovable. Not relevant for setters. */
16873 false, /* isEliminatable. Not relevant for setters. */
16874 false, /* isAlwaysInSlot. Only relevant for getters. */
16875 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16876 false, /* isTypedMethod. Only relevant for methods. */
16877 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16878};
16879
16880MOZ_CAN_RUN_SCRIPT static bool
16881passOptionalSVS(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16882{
16883 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16886( cx, "TestExampleInterface"
, "passOptionalSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16884 "TestExampleInterface", "passOptionalSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16886( cx, "TestExampleInterface"
, "passOptionalSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16885 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16886( cx, "TestExampleInterface"
, "passOptionalSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16886 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16886( cx, "TestExampleInterface"
, "passOptionalSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16887
16888 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16889 Optional<nsAString> arg0;
16890 binding_detail::FakeString<char16_t> arg0_holder;
16891 if (args.hasDefined(0)) {
16892 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0_holder)) {
16893 return false;
16894 }
16895 if (!NormalizeUSVString(arg0_holder)) {
16896 JS_ReportOutOfMemory(cx);
16897 return false;
16898 }
16899 arg0 = &arg0_holder;
16900 }
16901 // NOTE: This assert does NOT call the function.
16902 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSVS(Constify(arg0)))>, "Should be returning void here");
16903 MOZ_KnownLive(self)(self)->PassOptionalSVS(Constify(arg0));
16904 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16904); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16904; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16905 args.rval().setUndefined();
16906 return true;
16907}
16908
16909static const JSJitInfo passOptionalSVS_methodinfo = {
16910 { (JSJitGetterOp)passOptionalSVS },
16911 { prototypes::id::TestExampleInterface },
16912 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16913 JSJitInfo::Method,
16914 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16915 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16916 false, /* isInfallible. False in setters. */
16917 false, /* isMovable. Not relevant for setters. */
16918 false, /* isEliminatable. Not relevant for setters. */
16919 false, /* isAlwaysInSlot. Only relevant for getters. */
16920 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16921 false, /* isTypedMethod. Only relevant for methods. */
16922 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16923};
16924
16925MOZ_CAN_RUN_SCRIPT static bool
16926passOptionalSVSWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16927{
16928 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16931( cx, "TestExampleInterface"
, "passOptionalSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16929 "TestExampleInterface", "passOptionalSVSWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16931( cx, "TestExampleInterface"
, "passOptionalSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16930 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16931( cx, "TestExampleInterface"
, "passOptionalSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
16931 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16931( cx, "TestExampleInterface"
, "passOptionalSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
16932
16933 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16934 binding_detail::FakeString<char16_t> arg0;
16935 if (args.hasDefined(0)) {
16936 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
16937 return false;
16938 }
16939 if (!NormalizeUSVString(arg0)) {
16940 JS_ReportOutOfMemory(cx);
16941 return false;
16942 }
16943 } else {
16944 arg0.AssignLiteral(u"abc");
16945 }
16946 // NOTE: This assert does NOT call the function.
16947 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSVSWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
16948 MOZ_KnownLive(self)(self)->PassOptionalSVSWithDefaultValue(Constify(arg0));
16949 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16949); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16949; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16950 args.rval().setUndefined();
16951 return true;
16952}
16953
16954static const JSJitInfo passOptionalSVSWithDefaultValue_methodinfo = {
16955 { (JSJitGetterOp)passOptionalSVSWithDefaultValue },
16956 { prototypes::id::TestExampleInterface },
16957 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
16958 JSJitInfo::Method,
16959 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
16960 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
16961 false, /* isInfallible. False in setters. */
16962 false, /* isMovable. Not relevant for setters. */
16963 false, /* isEliminatable. Not relevant for setters. */
16964 false, /* isAlwaysInSlot. Only relevant for getters. */
16965 false, /* isLazilyCachedInSlot. Only relevant for getters. */
16966 false, /* isTypedMethod. Only relevant for methods. */
16967 0 /* Reserved slot index, if we're stored in a slot, else 0. */
16968};
16969
16970MOZ_CAN_RUN_SCRIPT static bool
16971passOptionalNullableSVS(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
16972{
16973 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject16976( cx, "TestExampleInterface"
, "passOptionalNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16974 "TestExampleInterface", "passOptionalNullableSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject16976( cx, "TestExampleInterface"
, "passOptionalNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16975 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject16976( cx, "TestExampleInterface"
, "passOptionalNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
16976 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject16976( cx, "TestExampleInterface"
, "passOptionalNullableSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
16977
16978 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
16979 Optional<nsAString> arg0;
16980 binding_detail::FakeString<char16_t> arg0_holder;
16981 if (args.hasDefined(0)) {
16982 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0_holder)) {
16983 return false;
16984 }
16985 if (!NormalizeUSVString(arg0_holder)) {
16986 JS_ReportOutOfMemory(cx);
16987 return false;
16988 }
16989 arg0 = &arg0_holder;
16990 }
16991 // NOTE: This assert does NOT call the function.
16992 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSVS(Constify(arg0)))>, "Should be returning void here");
16993 MOZ_KnownLive(self)(self)->PassOptionalNullableSVS(Constify(arg0));
16994 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 16994); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 16994; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16995 args.rval().setUndefined();
16996 return true;
16997}
16998
16999static const JSJitInfo passOptionalNullableSVS_methodinfo = {
17000 { (JSJitGetterOp)passOptionalNullableSVS },
17001 { prototypes::id::TestExampleInterface },
17002 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17003 JSJitInfo::Method,
17004 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17005 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17006 false, /* isInfallible. False in setters. */
17007 false, /* isMovable. Not relevant for setters. */
17008 false, /* isEliminatable. Not relevant for setters. */
17009 false, /* isAlwaysInSlot. Only relevant for getters. */
17010 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17011 false, /* isTypedMethod. Only relevant for methods. */
17012 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17013};
17014
17015MOZ_CAN_RUN_SCRIPT static bool
17016passOptionalNullableSVSWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17017{
17018 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17021( cx, "TestExampleInterface"
, "passOptionalNullableSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17019 "TestExampleInterface", "passOptionalNullableSVSWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17021( cx, "TestExampleInterface"
, "passOptionalNullableSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17020 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17021( cx, "TestExampleInterface"
, "passOptionalNullableSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17021 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17021( cx, "TestExampleInterface"
, "passOptionalNullableSVSWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
17022
17023 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17024 binding_detail::FakeString<char16_t> arg0;
17025 if (args.hasDefined(0)) {
17026 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
17027 return false;
17028 }
17029 if (!NormalizeUSVString(arg0)) {
17030 JS_ReportOutOfMemory(cx);
17031 return false;
17032 }
17033 } else {
17034 arg0.SetIsVoid(true);
17035 }
17036 // NOTE: This assert does NOT call the function.
17037 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSVSWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
17038 MOZ_KnownLive(self)(self)->PassOptionalNullableSVSWithDefaultValue(Constify(arg0));
17039 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17039); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17039; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17040 args.rval().setUndefined();
17041 return true;
17042}
17043
17044static const JSJitInfo passOptionalNullableSVSWithDefaultValue_methodinfo = {
17045 { (JSJitGetterOp)passOptionalNullableSVSWithDefaultValue },
17046 { prototypes::id::TestExampleInterface },
17047 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17048 JSJitInfo::Method,
17049 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17050 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17051 false, /* isInfallible. False in setters. */
17052 false, /* isMovable. Not relevant for setters. */
17053 false, /* isEliminatable. Not relevant for setters. */
17054 false, /* isAlwaysInSlot. Only relevant for getters. */
17055 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17056 false, /* isTypedMethod. Only relevant for methods. */
17057 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17058};
17059
17060MOZ_CAN_RUN_SCRIPT static bool
17061passVariadicSVS(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17062{
17063 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17066( cx, "TestExampleInterface"
, "passVariadicSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17064 "TestExampleInterface", "passVariadicSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17066( cx, "TestExampleInterface"
, "passVariadicSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17065 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17066( cx, "TestExampleInterface"
, "passVariadicSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17066 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17066( cx, "TestExampleInterface"
, "passVariadicSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17067
17068 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17069 AutoSequence<nsString> arg0;
17070 if (args.length() > 0) {
17071 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
17072 JS_ReportOutOfMemory(cx);
17073 return false;
17074 }
17075 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
17076 // OK to do infallible append here, since we ensured capacity already.
17077 nsString& slot = *arg0.AppendElement();
17078 if (!ConvertJSValueToString(cx, args[variadicArg], eStringify, eStringify, slot)) {
17079 return false;
17080 }
17081 if (!NormalizeUSVString(slot)) {
17082 JS_ReportOutOfMemory(cx);
17083 return false;
17084 }
17085 }
17086 }
17087 // NOTE: This assert does NOT call the function.
17088 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicSVS(Constify(arg0)))>, "Should be returning void here");
17089 MOZ_KnownLive(self)(self)->PassVariadicSVS(Constify(arg0));
17090 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17090); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17090; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17091 args.rval().setUndefined();
17092 return true;
17093}
17094
17095static const JSJitInfo passVariadicSVS_methodinfo = {
17096 { (JSJitGetterOp)passVariadicSVS },
17097 { prototypes::id::TestExampleInterface },
17098 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17099 JSJitInfo::Method,
17100 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17101 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17102 false, /* isInfallible. False in setters. */
17103 false, /* isMovable. Not relevant for setters. */
17104 false, /* isEliminatable. Not relevant for setters. */
17105 false, /* isAlwaysInSlot. Only relevant for getters. */
17106 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17107 false, /* isTypedMethod. Only relevant for methods. */
17108 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17109};
17110
17111MOZ_CAN_RUN_SCRIPT static bool
17112receiveSVS(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17113{
17114 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17117( cx, "TestExampleInterface"
, "receiveSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17115 "TestExampleInterface", "receiveSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17117( cx, "TestExampleInterface"
, "receiveSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17116 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17117( cx, "TestExampleInterface"
, "receiveSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17117 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17117( cx, "TestExampleInterface"
, "receiveSVS", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17118
17119 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17120 DOMString result;
17121 // NOTE: This assert does NOT call the function.
17122 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveSVS(result))>, "Should be returning void here");
17123 MOZ_KnownLive(self)(self)->ReceiveSVS(result);
17124 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17124); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17124; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17125 if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
17126 return false;
17127 }
17128 return true;
17129}
17130
17131static const JSJitInfo receiveSVS_methodinfo = {
17132 { (JSJitGetterOp)receiveSVS },
17133 { prototypes::id::TestExampleInterface },
17134 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17135 JSJitInfo::Method,
17136 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17137 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17138 false, /* isInfallible. False in setters. */
17139 false, /* isMovable. Not relevant for setters. */
17140 false, /* isEliminatable. Not relevant for setters. */
17141 false, /* isAlwaysInSlot. Only relevant for getters. */
17142 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17143 false, /* isTypedMethod. Only relevant for methods. */
17144 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17145};
17146
17147MOZ_CAN_RUN_SCRIPT static bool
17148passJSString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17149{
17150 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17153( cx, "TestExampleInterface"
, "passJSString", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17151 "TestExampleInterface", "passJSString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17153( cx, "TestExampleInterface"
, "passJSString", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17152 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17153( cx, "TestExampleInterface"
, "passJSString", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17153 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17153( cx, "TestExampleInterface"
, "passJSString", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17154
17155 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17156 if (!args.requireAtLeast(cx, "TestExampleInterface.passJSString", 1)) {
17157 return false;
17158 }
17159 JS::Rooted<JSString*> arg0(cx);
17160 if (!(arg0 = ConvertJSValueToJSString(cx, args[0]))) {
17161 return false;
17162 }
17163 // NOTE: This assert does NOT call the function.
17164 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassJSString(cx, Constify(arg0)))>, "Should be returning void here");
17165 MOZ_KnownLive(self)(self)->PassJSString(cx, Constify(arg0));
17166 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17166); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17166; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17167 args.rval().setUndefined();
17168 return true;
17169}
17170
17171static const JSJitInfo passJSString_methodinfo = {
17172 { (JSJitGetterOp)passJSString },
17173 { prototypes::id::TestExampleInterface },
17174 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17175 JSJitInfo::Method,
17176 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17177 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17178 false, /* isInfallible. False in setters. */
17179 false, /* isMovable. Not relevant for setters. */
17180 false, /* isEliminatable. Not relevant for setters. */
17181 false, /* isAlwaysInSlot. Only relevant for getters. */
17182 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17183 false, /* isTypedMethod. Only relevant for methods. */
17184 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17185};
17186
17187MOZ_CAN_RUN_SCRIPT static bool
17188passOptionalJSStringWithDefaultValue(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17189{
17190 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17193( cx, "TestExampleInterface"
, "passOptionalJSStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17191 "TestExampleInterface", "passOptionalJSStringWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17193( cx, "TestExampleInterface"
, "passOptionalJSStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17192 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17193( cx, "TestExampleInterface"
, "passOptionalJSStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17193 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17193( cx, "TestExampleInterface"
, "passOptionalJSStringWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
17194
17195 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17196 JS::Rooted<JSString*> arg0(cx);
17197 if (args.hasDefined(0)) {
17198 if (!(arg0 = ConvertJSValueToJSString(cx, args[0]))) {
17199 return false;
17200 }
17201 } else {
17202 static const char data[] = { 'a', 'b', 'c', 0 };
17203 arg0 = JS_NewStringCopyN(cx, data, ArrayLength(data) - 1);
17204 if (!arg0) {
17205 return false;
17206 }
17207 }
17208 // NOTE: This assert does NOT call the function.
17209 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalJSStringWithDefaultValue(cx, Constify(arg0)))>, "Should be returning void here");
17210 MOZ_KnownLive(self)(self)->PassOptionalJSStringWithDefaultValue(cx, Constify(arg0));
17211 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17211); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17211; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17212 args.rval().setUndefined();
17213 return true;
17214}
17215
17216static const JSJitInfo passOptionalJSStringWithDefaultValue_methodinfo = {
17217 { (JSJitGetterOp)passOptionalJSStringWithDefaultValue },
17218 { prototypes::id::TestExampleInterface },
17219 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17220 JSJitInfo::Method,
17221 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17222 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17223 false, /* isInfallible. False in setters. */
17224 false, /* isMovable. Not relevant for setters. */
17225 false, /* isEliminatable. Not relevant for setters. */
17226 false, /* isAlwaysInSlot. Only relevant for getters. */
17227 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17228 false, /* isTypedMethod. Only relevant for methods. */
17229 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17230};
17231
17232MOZ_CAN_RUN_SCRIPT static bool
17233receiveJSString(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17234{
17235 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17238( cx, "TestExampleInterface"
, "receiveJSString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17236 "TestExampleInterface", "receiveJSString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17238( cx, "TestExampleInterface"
, "receiveJSString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17237 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17238( cx, "TestExampleInterface"
, "receiveJSString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17238 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17238( cx, "TestExampleInterface"
, "receiveJSString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17239
17240 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17241 JS::Rooted<JSString*> result(cx);
17242 // NOTE: This assert does NOT call the function.
17243 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveJSString(cx, &result))>, "Should be returning void here");
17244 MOZ_KnownLive(self)(self)->ReceiveJSString(cx, &result);
17245 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17245); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17245; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17246 args.rval().setString(result);
17247 if (!MaybeWrapStringValue(cx, args.rval())) {
17248 return false;
17249 }
17250 return true;
17251}
17252
17253static const JSJitInfo receiveJSString_methodinfo = {
17254 { (JSJitGetterOp)receiveJSString },
17255 { prototypes::id::TestExampleInterface },
17256 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17257 JSJitInfo::Method,
17258 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17259 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17260 false, /* isInfallible. False in setters. */
17261 false, /* isMovable. Not relevant for setters. */
17262 false, /* isEliminatable. Not relevant for setters. */
17263 false, /* isAlwaysInSlot. Only relevant for getters. */
17264 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17265 false, /* isTypedMethod. Only relevant for methods. */
17266 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17267};
17268
17269MOZ_CAN_RUN_SCRIPT static bool
17270get_readonlyJSStringAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
17271{
17272 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17275( cx, "TestExampleInterface"
, "readonlyJSStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17273 "TestExampleInterface", "readonlyJSStringAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17275( cx, "TestExampleInterface"
, "readonlyJSStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17274 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject17275( cx, "TestExampleInterface"
, "readonlyJSStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17275 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17275( cx, "TestExampleInterface"
, "readonlyJSStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17276
17277 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17278 JS::Rooted<JSString*> result(cx);
17279 // NOTE: This assert does NOT call the function.
17280 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyJSStringAttr(cx, &result))>, "Should be returning void here");
17281 MOZ_KnownLive(self)(self)->GetReadonlyJSStringAttr(cx, &result);
17282 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17282); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17282; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17283 args.rval().setString(result);
17284 if (!MaybeWrapStringValue(cx, args.rval())) {
17285 return false;
17286 }
17287 return true;
17288}
17289
17290static const JSJitInfo readonlyJSStringAttr_getterinfo = {
17291 { get_readonlyJSStringAttr },
17292 { prototypes::id::TestExampleInterface },
17293 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17294 JSJitInfo::Getter,
17295 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17296 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17297 false, /* isInfallible. False in setters. */
17298 false, /* isMovable. Not relevant for setters. */
17299 false, /* isEliminatable. Not relevant for setters. */
17300 false, /* isAlwaysInSlot. Only relevant for getters. */
17301 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17302 false, /* isTypedMethod. Only relevant for methods. */
17303 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17304};
17305
17306MOZ_CAN_RUN_SCRIPT static bool
17307get_jsStringAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
17308{
17309 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17312( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17310 "TestExampleInterface", "jsStringAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17312( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17311 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject17312( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17312 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17312( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17313
17314 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17315 JS::Rooted<JSString*> result(cx);
17316 // NOTE: This assert does NOT call the function.
17317 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetJsStringAttr(cx, &result))>, "Should be returning void here");
17318 MOZ_KnownLive(self)(self)->GetJsStringAttr(cx, &result);
17319 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17319); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17319; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17320 args.rval().setString(result);
17321 if (!MaybeWrapStringValue(cx, args.rval())) {
17322 return false;
17323 }
17324 return true;
17325}
17326
17327MOZ_CAN_RUN_SCRIPT static bool
17328set_jsStringAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
17329{
17330 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17333( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17331 "TestExampleInterface", "jsStringAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17333( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17332 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject17333( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17333 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17333( cx, "TestExampleInterface"
, "jsStringAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17334
17335 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17336 JS::Rooted<JSString*> arg0(cx);
17337 if (!(arg0 = ConvertJSValueToJSString(cx, args[0]))) {
17338 return false;
17339 }
17340 // NOTE: This assert does NOT call the function.
17341 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetJsStringAttr(cx, Constify(arg0)))>, "Should be returning void here");
17342 MOZ_KnownLive(self)(self)->SetJsStringAttr(cx, Constify(arg0));
17343 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17343); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17343; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17344
17345 return true;
17346}
17347
17348static const JSJitInfo jsStringAttr_getterinfo = {
17349 { get_jsStringAttr },
17350 { prototypes::id::TestExampleInterface },
17351 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17352 JSJitInfo::Getter,
17353 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17354 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17355 false, /* isInfallible. False in setters. */
17356 false, /* isMovable. Not relevant for setters. */
17357 false, /* isEliminatable. Not relevant for setters. */
17358 false, /* isAlwaysInSlot. Only relevant for getters. */
17359 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17360 false, /* isTypedMethod. Only relevant for methods. */
17361 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17362};
17363static const JSJitInfo jsStringAttr_setterinfo = {
17364 { (JSJitGetterOp)set_jsStringAttr },
17365 { prototypes::id::TestExampleInterface },
17366 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17367 JSJitInfo::Setter,
17368 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17369 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17370 false, /* isInfallible. False in setters. */
17371 false, /* isMovable. Not relevant for setters. */
17372 false, /* isEliminatable. Not relevant for setters. */
17373 false, /* isAlwaysInSlot. Only relevant for getters. */
17374 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17375 false, /* isTypedMethod. Only relevant for methods. */
17376 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17377};
17378
17379MOZ_CAN_RUN_SCRIPT static bool
17380passEnum(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17381{
17382 BindingCallContext cx(cx_, "TestExampleInterface.passEnum");
17383 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17386( cx, "TestExampleInterface"
, "passEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
17384 "TestExampleInterface", "passEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17386( cx, "TestExampleInterface"
, "passEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
17385 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17386( cx, "TestExampleInterface"
, "passEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
17386 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17386( cx, "TestExampleInterface"
, "passEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
17387
17388 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17389 if (!args.requireAtLeast(cx, "TestExampleInterface.passEnum", 1)) {
17390 return false;
17391 }
17392 TestEnum arg0;
17393 {
17394 int index;
17395 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17396 binding_detail::EnumStrings<TestEnum>::Values,
17397 "TestEnum", "argument 1",
17398 &index)) {
17399 return false;
17400 }
17401 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17401); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17401; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17402 arg0 = static_cast<TestEnum>(index);
17403 }
17404 // NOTE: This assert does NOT call the function.
17405 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassEnum(arg0))>, "Should be returning void here");
17406 MOZ_KnownLive(self)(self)->PassEnum(arg0);
17407 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17407); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17407; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17408 args.rval().setUndefined();
17409 return true;
17410}
17411
17412static const JSJitInfo passEnum_methodinfo = {
17413 { (JSJitGetterOp)passEnum },
17414 { prototypes::id::TestExampleInterface },
17415 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17416 JSJitInfo::Method,
17417 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17418 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17419 false, /* isInfallible. False in setters. */
17420 false, /* isMovable. Not relevant for setters. */
17421 false, /* isEliminatable. Not relevant for setters. */
17422 false, /* isAlwaysInSlot. Only relevant for getters. */
17423 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17424 false, /* isTypedMethod. Only relevant for methods. */
17425 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17426};
17427
17428MOZ_CAN_RUN_SCRIPT static bool
17429passNullableEnum(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17430{
17431 BindingCallContext cx(cx_, "TestExampleInterface.passNullableEnum");
17432 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17435( cx, "TestExampleInterface"
, "passNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17433 "TestExampleInterface", "passNullableEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17435( cx, "TestExampleInterface"
, "passNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17434 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17435( cx, "TestExampleInterface"
, "passNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17435 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17435( cx, "TestExampleInterface"
, "passNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17436
17437 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17438 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableEnum", 1)) {
17439 return false;
17440 }
17441 Nullable<TestEnum> arg0;
17442 if (args[0].isNullOrUndefined()) {
17443 arg0.SetNull();
17444 } else {
17445 {
17446 int index;
17447 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17448 binding_detail::EnumStrings<TestEnum>::Values,
17449 "TestEnum", "argument 1",
17450 &index)) {
17451 return false;
17452 }
17453 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17453); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17453; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17454 arg0.SetValue() = static_cast<TestEnum>(index);
17455 }
17456 }
17457 // NOTE: This assert does NOT call the function.
17458 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableEnum(Constify(arg0)))>, "Should be returning void here");
17459 MOZ_KnownLive(self)(self)->PassNullableEnum(Constify(arg0));
17460 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17460); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17460; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17461 args.rval().setUndefined();
17462 return true;
17463}
17464
17465static const JSJitInfo passNullableEnum_methodinfo = {
17466 { (JSJitGetterOp)passNullableEnum },
17467 { prototypes::id::TestExampleInterface },
17468 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17469 JSJitInfo::Method,
17470 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17471 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17472 false, /* isInfallible. False in setters. */
17473 false, /* isMovable. Not relevant for setters. */
17474 false, /* isEliminatable. Not relevant for setters. */
17475 false, /* isAlwaysInSlot. Only relevant for getters. */
17476 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17477 false, /* isTypedMethod. Only relevant for methods. */
17478 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17479};
17480
17481MOZ_CAN_RUN_SCRIPT static bool
17482passOptionalEnum(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17483{
17484 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalEnum");
17485 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17488( cx, "TestExampleInterface"
, "passOptionalEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17486 "TestExampleInterface", "passOptionalEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17488( cx, "TestExampleInterface"
, "passOptionalEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17487 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17488( cx, "TestExampleInterface"
, "passOptionalEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17488 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17488( cx, "TestExampleInterface"
, "passOptionalEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17489
17490 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17491 Optional<TestEnum> arg0;
17492 if (args.hasDefined(0)) {
17493 arg0.Construct();
17494 {
17495 int index;
17496 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17497 binding_detail::EnumStrings<TestEnum>::Values,
17498 "TestEnum", "argument 1",
17499 &index)) {
17500 return false;
17501 }
17502 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17502); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17502; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17503 arg0.Value() = static_cast<TestEnum>(index);
17504 }
17505 }
17506 // NOTE: This assert does NOT call the function.
17507 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalEnum(Constify(arg0)))>, "Should be returning void here");
17508 MOZ_KnownLive(self)(self)->PassOptionalEnum(Constify(arg0));
17509 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17509); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17509; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17510 args.rval().setUndefined();
17511 return true;
17512}
17513
17514static const JSJitInfo passOptionalEnum_methodinfo = {
17515 { (JSJitGetterOp)passOptionalEnum },
17516 { prototypes::id::TestExampleInterface },
17517 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17518 JSJitInfo::Method,
17519 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17520 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17521 false, /* isInfallible. False in setters. */
17522 false, /* isMovable. Not relevant for setters. */
17523 false, /* isEliminatable. Not relevant for setters. */
17524 false, /* isAlwaysInSlot. Only relevant for getters. */
17525 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17526 false, /* isTypedMethod. Only relevant for methods. */
17527 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17528};
17529
17530MOZ_CAN_RUN_SCRIPT static bool
17531passEnumWithDefault(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17532{
17533 BindingCallContext cx(cx_, "TestExampleInterface.passEnumWithDefault");
17534 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17537( cx, "TestExampleInterface"
, "passEnumWithDefault", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17535 "TestExampleInterface", "passEnumWithDefault", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17537( cx, "TestExampleInterface"
, "passEnumWithDefault", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17536 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17537( cx, "TestExampleInterface"
, "passEnumWithDefault", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17537 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17537( cx, "TestExampleInterface"
, "passEnumWithDefault", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17538
17539 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17540 TestEnum arg0;
17541 if (args.hasDefined(0)) {
17542 {
17543 int index;
17544 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17545 binding_detail::EnumStrings<TestEnum>::Values,
17546 "TestEnum", "argument 1",
17547 &index)) {
17548 return false;
17549 }
17550 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17550); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17550; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17551 arg0 = static_cast<TestEnum>(index);
17552 }
17553 } else {
17554 arg0 = TestEnum::A;
17555 }
17556 // NOTE: This assert does NOT call the function.
17557 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassEnumWithDefault(arg0))>, "Should be returning void here");
17558 MOZ_KnownLive(self)(self)->PassEnumWithDefault(arg0);
17559 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17559); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17559; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17560 args.rval().setUndefined();
17561 return true;
17562}
17563
17564static const JSJitInfo passEnumWithDefault_methodinfo = {
17565 { (JSJitGetterOp)passEnumWithDefault },
17566 { prototypes::id::TestExampleInterface },
17567 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17568 JSJitInfo::Method,
17569 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17570 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17571 false, /* isInfallible. False in setters. */
17572 false, /* isMovable. Not relevant for setters. */
17573 false, /* isEliminatable. Not relevant for setters. */
17574 false, /* isAlwaysInSlot. Only relevant for getters. */
17575 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17576 false, /* isTypedMethod. Only relevant for methods. */
17577 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17578};
17579
17580MOZ_CAN_RUN_SCRIPT static bool
17581passOptionalNullableEnum(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17582{
17583 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableEnum");
17584 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17587( cx, "TestExampleInterface"
, "passOptionalNullableEnum", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17585 "TestExampleInterface", "passOptionalNullableEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17587( cx, "TestExampleInterface"
, "passOptionalNullableEnum", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17586 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17587( cx, "TestExampleInterface"
, "passOptionalNullableEnum", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17587 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17587( cx, "TestExampleInterface"
, "passOptionalNullableEnum", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
17588
17589 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17590 Optional<Nullable<TestEnum>> arg0;
17591 if (args.hasDefined(0)) {
17592 arg0.Construct();
17593 if (args[0].isNullOrUndefined()) {
17594 arg0.Value().SetNull();
17595 } else {
17596 {
17597 int index;
17598 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17599 binding_detail::EnumStrings<TestEnum>::Values,
17600 "TestEnum", "argument 1",
17601 &index)) {
17602 return false;
17603 }
17604 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17604); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17604; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17605 arg0.Value().SetValue() = static_cast<TestEnum>(index);
17606 }
17607 }
17608 }
17609 // NOTE: This assert does NOT call the function.
17610 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableEnum(Constify(arg0)))>, "Should be returning void here");
17611 MOZ_KnownLive(self)(self)->PassOptionalNullableEnum(Constify(arg0));
17612 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17612); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17612; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17613 args.rval().setUndefined();
17614 return true;
17615}
17616
17617static const JSJitInfo passOptionalNullableEnum_methodinfo = {
17618 { (JSJitGetterOp)passOptionalNullableEnum },
17619 { prototypes::id::TestExampleInterface },
17620 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17621 JSJitInfo::Method,
17622 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17623 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17624 false, /* isInfallible. False in setters. */
17625 false, /* isMovable. Not relevant for setters. */
17626 false, /* isEliminatable. Not relevant for setters. */
17627 false, /* isAlwaysInSlot. Only relevant for getters. */
17628 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17629 false, /* isTypedMethod. Only relevant for methods. */
17630 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17631};
17632
17633MOZ_CAN_RUN_SCRIPT static bool
17634passOptionalNullableEnumWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17635{
17636 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableEnumWithDefaultValue");
17637 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17640( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17638 "TestExampleInterface", "passOptionalNullableEnumWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17640( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17639 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17640( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17640 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17640( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
17641
17642 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17643 Nullable<TestEnum> arg0;
17644 if (args.hasDefined(0)) {
17645 if (args[0].isNullOrUndefined()) {
17646 arg0.SetNull();
17647 } else {
17648 {
17649 int index;
17650 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17651 binding_detail::EnumStrings<TestEnum>::Values,
17652 "TestEnum", "argument 1",
17653 &index)) {
17654 return false;
17655 }
17656 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17656); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17656; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17657 arg0.SetValue() = static_cast<TestEnum>(index);
17658 }
17659 }
17660 } else {
17661 arg0.SetNull();
17662 }
17663 // NOTE: This assert does NOT call the function.
17664 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableEnumWithDefaultValue(Constify(arg0)))>, "Should be returning void here");
17665 MOZ_KnownLive(self)(self)->PassOptionalNullableEnumWithDefaultValue(Constify(arg0));
17666 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17666); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17666; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17667 args.rval().setUndefined();
17668 return true;
17669}
17670
17671static const JSJitInfo passOptionalNullableEnumWithDefaultValue_methodinfo = {
17672 { (JSJitGetterOp)passOptionalNullableEnumWithDefaultValue },
17673 { prototypes::id::TestExampleInterface },
17674 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17675 JSJitInfo::Method,
17676 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17677 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17678 false, /* isInfallible. False in setters. */
17679 false, /* isMovable. Not relevant for setters. */
17680 false, /* isEliminatable. Not relevant for setters. */
17681 false, /* isAlwaysInSlot. Only relevant for getters. */
17682 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17683 false, /* isTypedMethod. Only relevant for methods. */
17684 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17685};
17686
17687MOZ_CAN_RUN_SCRIPT static bool
17688passOptionalNullableEnumWithDefaultValue2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17689{
17690 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableEnumWithDefaultValue2");
17691 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17694( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17692 "TestExampleInterface", "passOptionalNullableEnumWithDefaultValue2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17694( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17693 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17694( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
17694 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17694( cx, "TestExampleInterface"
, "passOptionalNullableEnumWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
17695
17696 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17697 Nullable<TestEnum> arg0;
17698 if (args.hasDefined(0)) {
17699 if (args[0].isNullOrUndefined()) {
17700 arg0.SetNull();
17701 } else {
17702 {
17703 int index;
17704 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
17705 binding_detail::EnumStrings<TestEnum>::Values,
17706 "TestEnum", "argument 1",
17707 &index)) {
17708 return false;
17709 }
17710 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 17710); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 17710; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
17711 arg0.SetValue() = static_cast<TestEnum>(index);
17712 }
17713 }
17714 } else {
17715 arg0.SetValue() = TestEnum::A;
17716 }
17717 // NOTE: This assert does NOT call the function.
17718 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableEnumWithDefaultValue2(Constify(arg0)))>, "Should be returning void here");
17719 MOZ_KnownLive(self)(self)->PassOptionalNullableEnumWithDefaultValue2(Constify(arg0));
17720 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17720); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17720; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17721 args.rval().setUndefined();
17722 return true;
17723}
17724
17725static const JSJitInfo passOptionalNullableEnumWithDefaultValue2_methodinfo = {
17726 { (JSJitGetterOp)passOptionalNullableEnumWithDefaultValue2 },
17727 { prototypes::id::TestExampleInterface },
17728 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17729 JSJitInfo::Method,
17730 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17731 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17732 false, /* isInfallible. False in setters. */
17733 false, /* isMovable. Not relevant for setters. */
17734 false, /* isEliminatable. Not relevant for setters. */
17735 false, /* isAlwaysInSlot. Only relevant for getters. */
17736 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17737 false, /* isTypedMethod. Only relevant for methods. */
17738 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17739};
17740
17741MOZ_CAN_RUN_SCRIPT static bool
17742receiveEnum(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17743{
17744 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17747( cx, "TestExampleInterface"
, "receiveEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17745 "TestExampleInterface", "receiveEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17747( cx, "TestExampleInterface"
, "receiveEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17746 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17747( cx, "TestExampleInterface"
, "receiveEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17747 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17747( cx, "TestExampleInterface"
, "receiveEnum", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17748
17749 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17750 TestEnum result(MOZ_KnownLive(self)(self)->ReceiveEnum());
17751 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17751); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17751; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17752 if (!ToJSValue(cx, result, args.rval())) {
17753 return false;
17754 }
17755 return true;
17756}
17757
17758static const JSJitInfo receiveEnum_methodinfo = {
17759 { (JSJitGetterOp)receiveEnum },
17760 { prototypes::id::TestExampleInterface },
17761 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17762 JSJitInfo::Method,
17763 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17764 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17765 false, /* isInfallible. False in setters. */
17766 false, /* isMovable. Not relevant for setters. */
17767 false, /* isEliminatable. Not relevant for setters. */
17768 false, /* isAlwaysInSlot. Only relevant for getters. */
17769 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17770 false, /* isTypedMethod. Only relevant for methods. */
17771 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17772};
17773
17774MOZ_CAN_RUN_SCRIPT static bool
17775receiveNullableEnum(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17776{
17777 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17780( cx, "TestExampleInterface"
, "receiveNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17778 "TestExampleInterface", "receiveNullableEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17780( cx, "TestExampleInterface"
, "receiveNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17779 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17780( cx, "TestExampleInterface"
, "receiveNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17780 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17780( cx, "TestExampleInterface"
, "receiveNullableEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17781
17782 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17783 Nullable<TestEnum> result(MOZ_KnownLive(self)(self)->ReceiveNullableEnum());
17784 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17784); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17784; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17785 if (result.IsNull()) {
17786 args.rval().setNull();
17787 return true;
17788 } else {
17789 if (!ToJSValue(cx, result.Value(), args.rval())) {
17790 return false;
17791 }
17792 return true;
17793 }
17794}
17795
17796static const JSJitInfo receiveNullableEnum_methodinfo = {
17797 { (JSJitGetterOp)receiveNullableEnum },
17798 { prototypes::id::TestExampleInterface },
17799 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17800 JSJitInfo::Method,
17801 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17802 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
17803 false, /* isInfallible. False in setters. */
17804 false, /* isMovable. Not relevant for setters. */
17805 false, /* isEliminatable. Not relevant for setters. */
17806 false, /* isAlwaysInSlot. Only relevant for getters. */
17807 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17808 false, /* isTypedMethod. Only relevant for methods. */
17809 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17810};
17811
17812MOZ_CAN_RUN_SCRIPT static bool
17813get_enumAttribute(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
17814{
17815 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17818( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17816 "TestExampleInterface", "enumAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17818( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17817 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject17818( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17818 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17818( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17819
17820 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17821 TestEnum result(MOZ_KnownLive(self)(self)->EnumAttribute());
17822 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17822); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17822; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17823 if (!ToJSValue(cx, result, args.rval())) {
17824 return false;
17825 }
17826 return true;
17827}
17828
17829MOZ_CAN_RUN_SCRIPT static bool
17830set_enumAttribute(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
17831{
17832 BindingCallContext cx(cx_, "TestExampleInterface.enumAttribute setter");
17833 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17836( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17834 "TestExampleInterface", "enumAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17836( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17835 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject17836( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17836 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17836( cx, "TestExampleInterface"
, "enumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17837
17838 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17839 TestEnum arg0;
17840 {
17841 int index;
17842 if (!binding_detail::FindEnumStringIndex<false>(cx, args[0],
17843 binding_detail::EnumStrings<TestEnum>::Values,
17844 "TestEnum", "value being assigned",
17845 &index)) {
17846 return false;
17847 }
17848 if (index < 0) {
17849 return true;
17850 }
17851 arg0 = static_cast<TestEnum>(index);
17852 }
17853 // NOTE: This assert does NOT call the function.
17854 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetEnumAttribute(arg0))>, "Should be returning void here");
17855 MOZ_KnownLive(self)(self)->SetEnumAttribute(arg0);
17856 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17856); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17856; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17857
17858 return true;
17859}
17860
17861static const JSJitInfo enumAttribute_getterinfo = {
17862 { get_enumAttribute },
17863 { prototypes::id::TestExampleInterface },
17864 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17865 JSJitInfo::Getter,
17866 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17867 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17868 false, /* isInfallible. False in setters. */
17869 false, /* isMovable. Not relevant for setters. */
17870 false, /* isEliminatable. Not relevant for setters. */
17871 false, /* isAlwaysInSlot. Only relevant for getters. */
17872 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17873 false, /* isTypedMethod. Only relevant for methods. */
17874 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17875};
17876static const JSJitInfo enumAttribute_setterinfo = {
17877 { (JSJitGetterOp)set_enumAttribute },
17878 { prototypes::id::TestExampleInterface },
17879 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17880 JSJitInfo::Setter,
17881 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17882 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17883 false, /* isInfallible. False in setters. */
17884 false, /* isMovable. Not relevant for setters. */
17885 false, /* isEliminatable. Not relevant for setters. */
17886 false, /* isAlwaysInSlot. Only relevant for getters. */
17887 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17888 false, /* isTypedMethod. Only relevant for methods. */
17889 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17890};
17891
17892MOZ_CAN_RUN_SCRIPT static bool
17893get_readonlyEnumAttribute(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
17894{
17895 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17898( cx, "TestExampleInterface"
, "readonlyEnumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17896 "TestExampleInterface", "readonlyEnumAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17898( cx, "TestExampleInterface"
, "readonlyEnumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17897 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject17898( cx, "TestExampleInterface"
, "readonlyEnumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17898 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17898( cx, "TestExampleInterface"
, "readonlyEnumAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17899
17900 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17901 TestEnum result(MOZ_KnownLive(self)(self)->ReadonlyEnumAttribute());
17902 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17902); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17902; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17903 if (!ToJSValue(cx, result, args.rval())) {
17904 return false;
17905 }
17906 return true;
17907}
17908
17909static const JSJitInfo readonlyEnumAttribute_getterinfo = {
17910 { get_readonlyEnumAttribute },
17911 { prototypes::id::TestExampleInterface },
17912 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17913 JSJitInfo::Getter,
17914 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17915 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
17916 false, /* isInfallible. False in setters. */
17917 false, /* isMovable. Not relevant for setters. */
17918 false, /* isEliminatable. Not relevant for setters. */
17919 false, /* isAlwaysInSlot. Only relevant for getters. */
17920 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17921 false, /* isTypedMethod. Only relevant for methods. */
17922 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17923};
17924
17925MOZ_CAN_RUN_SCRIPT static bool
17926passCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17927{
17928 BindingCallContext cx(cx_, "TestExampleInterface.passCallback");
17929 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17932( cx, "TestExampleInterface"
, "passCallback", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17930 "TestExampleInterface", "passCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17932( cx, "TestExampleInterface"
, "passCallback", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17931 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17932( cx, "TestExampleInterface"
, "passCallback", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17932 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17932( cx, "TestExampleInterface"
, "passCallback", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17933
17934 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17935 if (!args.requireAtLeast(cx, "TestExampleInterface.passCallback", 1)) {
17936 return false;
17937 }
17938 RootedCallback<OwningNonNull<binding_detail::FastTestCallback>> arg0(cx);
17939 if (args[0].isObject()) {
17940 if (JS::IsCallable(&args[0].toObject())) {
17941 { // scope for tempRoot and tempGlobalRoot if needed
17942 arg0 = new binding_detail::FastTestCallback(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
17943 }
17944 } else {
17945 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
17946 return false;
17947 }
17948 } else {
17949 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
17950 return false;
17951 }
17952 // NOTE: This assert does NOT call the function.
17953 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassCallback(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
17954 MOZ_KnownLive(self)(self)->PassCallback(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
17955 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 17955); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 17955; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
17956 args.rval().setUndefined();
17957 return true;
17958}
17959
17960static const JSJitInfo passCallback_methodinfo = {
17961 { (JSJitGetterOp)passCallback },
17962 { prototypes::id::TestExampleInterface },
17963 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
17964 JSJitInfo::Method,
17965 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
17966 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
17967 false, /* isInfallible. False in setters. */
17968 false, /* isMovable. Not relevant for setters. */
17969 false, /* isEliminatable. Not relevant for setters. */
17970 false, /* isAlwaysInSlot. Only relevant for getters. */
17971 false, /* isLazilyCachedInSlot. Only relevant for getters. */
17972 false, /* isTypedMethod. Only relevant for methods. */
17973 0 /* Reserved slot index, if we're stored in a slot, else 0. */
17974};
17975
17976MOZ_CAN_RUN_SCRIPT static bool
17977passNullableCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
17978{
17979 BindingCallContext cx(cx_, "TestExampleInterface.passNullableCallback");
17980 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject17983( cx, "TestExampleInterface"
, "passNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17981 "TestExampleInterface", "passNullableCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject17983( cx, "TestExampleInterface"
, "passNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17982 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject17983( cx, "TestExampleInterface"
, "passNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
17983 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject17983( cx, "TestExampleInterface"
, "passNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
17984
17985 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
17986 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableCallback", 1)) {
17987 return false;
17988 }
17989 RootedCallback<RefPtr<binding_detail::FastTestCallback>> arg0(cx);
17990 if (args[0].isObject()) {
17991 if (JS::IsCallable(&args[0].toObject())) {
17992 { // scope for tempRoot and tempGlobalRoot if needed
17993 arg0 = new binding_detail::FastTestCallback(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
17994 }
17995 } else {
17996 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
17997 return false;
17998 }
17999 } else if (args[0].isNullOrUndefined()) {
18000 arg0 = nullptr;
18001 } else {
18002 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18003 return false;
18004 }
18005 // NOTE: This assert does NOT call the function.
18006 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
18007 MOZ_KnownLive(self)(self)->PassNullableCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
18008 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18008); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18008; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18009 args.rval().setUndefined();
18010 return true;
18011}
18012
18013static const JSJitInfo passNullableCallback_methodinfo = {
18014 { (JSJitGetterOp)passNullableCallback },
18015 { prototypes::id::TestExampleInterface },
18016 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18017 JSJitInfo::Method,
18018 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18019 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18020 false, /* isInfallible. False in setters. */
18021 false, /* isMovable. Not relevant for setters. */
18022 false, /* isEliminatable. Not relevant for setters. */
18023 false, /* isAlwaysInSlot. Only relevant for getters. */
18024 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18025 false, /* isTypedMethod. Only relevant for methods. */
18026 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18027};
18028
18029MOZ_CAN_RUN_SCRIPT static bool
18030passOptionalCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18031{
18032 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalCallback");
18033 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18036( cx, "TestExampleInterface"
, "passOptionalCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18034 "TestExampleInterface", "passOptionalCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18036( cx, "TestExampleInterface"
, "passOptionalCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18035 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18036( cx, "TestExampleInterface"
, "passOptionalCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18036 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18036( cx, "TestExampleInterface"
, "passOptionalCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18037
18038 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18039 Optional<OwningNonNull<TestCallback>> arg0;
18040 if (args.hasDefined(0)) {
18041 arg0.Construct();
18042 if (args[0].isObject()) {
18043 if (JS::IsCallable(&args[0].toObject())) {
18044 { // scope for tempRoot and tempGlobalRoot if needed
18045 JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
18046 JS::Rooted<JSObject*> tempGlobalRoot(cx, JS::CurrentGlobalOrNull(cx));
18047 arg0.Value() = new TestCallback(cx, tempRoot, tempGlobalRoot, GetIncumbentGlobal());
18048 }
18049 } else {
18050 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
18051 return false;
18052 }
18053 } else {
18054 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18055 return false;
18056 }
18057 }
18058 // NOTE: This assert does NOT call the function.
18059 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalCallback(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
18060 MOZ_KnownLive(self)(self)->PassOptionalCallback(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
18061 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18061); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18061; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18062 args.rval().setUndefined();
18063 return true;
18064}
18065
18066static const JSJitInfo passOptionalCallback_methodinfo = {
18067 { (JSJitGetterOp)passOptionalCallback },
18068 { prototypes::id::TestExampleInterface },
18069 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18070 JSJitInfo::Method,
18071 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18072 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18073 false, /* isInfallible. False in setters. */
18074 false, /* isMovable. Not relevant for setters. */
18075 false, /* isEliminatable. Not relevant for setters. */
18076 false, /* isAlwaysInSlot. Only relevant for getters. */
18077 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18078 false, /* isTypedMethod. Only relevant for methods. */
18079 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18080};
18081
18082MOZ_CAN_RUN_SCRIPT static bool
18083passOptionalNullableCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18084{
18085 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableCallback");
18086 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18089( cx, "TestExampleInterface"
, "passOptionalNullableCallback", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18087 "TestExampleInterface", "passOptionalNullableCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18089( cx, "TestExampleInterface"
, "passOptionalNullableCallback", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18088 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18089( cx, "TestExampleInterface"
, "passOptionalNullableCallback", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18089 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18089( cx, "TestExampleInterface"
, "passOptionalNullableCallback", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18090
18091 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18092 Optional<RefPtr<TestCallback>> arg0;
18093 if (args.hasDefined(0)) {
18094 arg0.Construct();
18095 if (args[0].isObject()) {
18096 if (JS::IsCallable(&args[0].toObject())) {
18097 { // scope for tempRoot and tempGlobalRoot if needed
18098 JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
18099 JS::Rooted<JSObject*> tempGlobalRoot(cx, JS::CurrentGlobalOrNull(cx));
18100 arg0.Value() = new TestCallback(cx, tempRoot, tempGlobalRoot, GetIncumbentGlobal());
18101 }
18102 } else {
18103 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
18104 return false;
18105 }
18106 } else if (args[0].isNullOrUndefined()) {
18107 arg0.Value() = nullptr;
18108 } else {
18109 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18110 return false;
18111 }
18112 }
18113 // NOTE: This assert does NOT call the function.
18114 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
18115 MOZ_KnownLive(self)(self)->PassOptionalNullableCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
18116 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18116); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18116; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18117 args.rval().setUndefined();
18118 return true;
18119}
18120
18121static const JSJitInfo passOptionalNullableCallback_methodinfo = {
18122 { (JSJitGetterOp)passOptionalNullableCallback },
18123 { prototypes::id::TestExampleInterface },
18124 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18125 JSJitInfo::Method,
18126 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18127 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18128 false, /* isInfallible. False in setters. */
18129 false, /* isMovable. Not relevant for setters. */
18130 false, /* isEliminatable. Not relevant for setters. */
18131 false, /* isAlwaysInSlot. Only relevant for getters. */
18132 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18133 false, /* isTypedMethod. Only relevant for methods. */
18134 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18135};
18136
18137MOZ_CAN_RUN_SCRIPT static bool
18138passOptionalNullableCallbackWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18139{
18140 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableCallbackWithDefaultValue");
18141 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18144( cx, "TestExampleInterface"
, "passOptionalNullableCallbackWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18142 "TestExampleInterface", "passOptionalNullableCallbackWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18144( cx, "TestExampleInterface"
, "passOptionalNullableCallbackWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18143 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18144( cx, "TestExampleInterface"
, "passOptionalNullableCallbackWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18144 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18144( cx, "TestExampleInterface"
, "passOptionalNullableCallbackWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18145
18146 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18147 RootedCallback<RefPtr<binding_detail::FastTestCallback>> arg0(cx);
18148 if (args.hasDefined(0)) {
18149 if (args[0].isObject()) {
18150 if (JS::IsCallable(&args[0].toObject())) {
18151 { // scope for tempRoot and tempGlobalRoot if needed
18152 arg0 = new binding_detail::FastTestCallback(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
18153 }
18154 } else {
18155 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
18156 return false;
18157 }
18158 } else if (args[0].isNullOrUndefined()) {
18159 arg0 = nullptr;
18160 } else {
18161 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18162 return false;
18163 }
18164 } else {
18165 arg0 = nullptr;
18166 }
18167 // NOTE: This assert does NOT call the function.
18168 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableCallbackWithDefaultValue(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
18169 MOZ_KnownLive(self)(self)->PassOptionalNullableCallbackWithDefaultValue(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
18170 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18170); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18170; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18171 args.rval().setUndefined();
18172 return true;
18173}
18174
18175static const JSJitInfo passOptionalNullableCallbackWithDefaultValue_methodinfo = {
18176 { (JSJitGetterOp)passOptionalNullableCallbackWithDefaultValue },
18177 { prototypes::id::TestExampleInterface },
18178 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18179 JSJitInfo::Method,
18180 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18181 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18182 false, /* isInfallible. False in setters. */
18183 false, /* isMovable. Not relevant for setters. */
18184 false, /* isEliminatable. Not relevant for setters. */
18185 false, /* isAlwaysInSlot. Only relevant for getters. */
18186 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18187 false, /* isTypedMethod. Only relevant for methods. */
18188 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18189};
18190
18191MOZ_CAN_RUN_SCRIPT static bool
18192receiveCallback(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18193{
18194 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18197( cx, "TestExampleInterface"
, "receiveCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18195 "TestExampleInterface", "receiveCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18197( cx, "TestExampleInterface"
, "receiveCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18196 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18197( cx, "TestExampleInterface"
, "receiveCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18197 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18197( cx, "TestExampleInterface"
, "receiveCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18198
18199 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18200 RefPtr<TestCallback> result(MOZ_KnownLive(self)(self)->ReceiveCallback());
18201 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18201); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18201; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18202 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
18203 if (!MaybeWrapObjectValue(cx, args.rval())) {
18204 return false;
18205 }
18206 return true;
18207}
18208
18209static const JSJitInfo receiveCallback_methodinfo = {
18210 { (JSJitGetterOp)receiveCallback },
18211 { prototypes::id::TestExampleInterface },
18212 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18213 JSJitInfo::Method,
18214 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18215 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
18216 false, /* isInfallible. False in setters. */
18217 false, /* isMovable. Not relevant for setters. */
18218 false, /* isEliminatable. Not relevant for setters. */
18219 false, /* isAlwaysInSlot. Only relevant for getters. */
18220 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18221 false, /* isTypedMethod. Only relevant for methods. */
18222 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18223};
18224
18225MOZ_CAN_RUN_SCRIPT static bool
18226receiveNullableCallback(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18227{
18228 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18231( cx, "TestExampleInterface"
, "receiveNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18229 "TestExampleInterface", "receiveNullableCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18231( cx, "TestExampleInterface"
, "receiveNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18230 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18231( cx, "TestExampleInterface"
, "receiveNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18231 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18231( cx, "TestExampleInterface"
, "receiveNullableCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18232
18233 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18234 RefPtr<TestCallback> result(MOZ_KnownLive(self)(self)->ReceiveNullableCallback());
18235 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18235); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18235; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18236 if (result) {
18237 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
18238 if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
18239 return false;
18240 }
18241 return true;
18242 } else {
18243 args.rval().setNull();
18244 return true;
18245 }
18246}
18247
18248static const JSJitInfo receiveNullableCallback_methodinfo = {
18249 { (JSJitGetterOp)receiveNullableCallback },
18250 { prototypes::id::TestExampleInterface },
18251 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18252 JSJitInfo::Method,
18253 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18254 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
18255 false, /* isInfallible. False in setters. */
18256 false, /* isMovable. Not relevant for setters. */
18257 false, /* isEliminatable. Not relevant for setters. */
18258 false, /* isAlwaysInSlot. Only relevant for getters. */
18259 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18260 false, /* isTypedMethod. Only relevant for methods. */
18261 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18262};
18263
18264MOZ_CAN_RUN_SCRIPT static bool
18265passNullableTreatAsNullCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18266{
18267 BindingCallContext cx(cx_, "TestExampleInterface.passNullableTreatAsNullCallback");
18268 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18271( cx, "TestExampleInterface"
, "passNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18269 "TestExampleInterface", "passNullableTreatAsNullCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18271( cx, "TestExampleInterface"
, "passNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18270 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18271( cx, "TestExampleInterface"
, "passNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18271 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18271( cx, "TestExampleInterface"
, "passNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18272
18273 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18274 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableTreatAsNullCallback", 1)) {
18275 return false;
18276 }
18277 RootedCallback<RefPtr<binding_detail::FastTestTreatAsNullCallback>> arg0(cx);
18278 if (args[0].isObject()) {
18279 if (JS::IsCallable(&args[0].toObject())) {
18280 { // scope for tempRoot and tempGlobalRoot if needed
18281 arg0 = new binding_detail::FastTestTreatAsNullCallback(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
18282 }
18283 } else {
18284 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
18285 return false;
18286 }
18287 } else if (args[0].isNullOrUndefined()) {
18288 arg0 = nullptr;
18289 } else {
18290 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18291 return false;
18292 }
18293 // NOTE: This assert does NOT call the function.
18294 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableTreatAsNullCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
18295 MOZ_KnownLive(self)(self)->PassNullableTreatAsNullCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
18296 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18296); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18296; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18297 args.rval().setUndefined();
18298 return true;
18299}
18300
18301static const JSJitInfo passNullableTreatAsNullCallback_methodinfo = {
18302 { (JSJitGetterOp)passNullableTreatAsNullCallback },
18303 { prototypes::id::TestExampleInterface },
18304 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18305 JSJitInfo::Method,
18306 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18307 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18308 false, /* isInfallible. False in setters. */
18309 false, /* isMovable. Not relevant for setters. */
18310 false, /* isEliminatable. Not relevant for setters. */
18311 false, /* isAlwaysInSlot. Only relevant for getters. */
18312 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18313 false, /* isTypedMethod. Only relevant for methods. */
18314 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18315};
18316
18317MOZ_CAN_RUN_SCRIPT static bool
18318passOptionalNullableTreatAsNullCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18319{
18320 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableTreatAsNullCallback");
18321 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18324( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18322 "TestExampleInterface", "passOptionalNullableTreatAsNullCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18324( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18323 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18324( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18324 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18324( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallback", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18325
18326 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18327 Optional<RefPtr<TestTreatAsNullCallback>> arg0;
18328 if (args.hasDefined(0)) {
18329 arg0.Construct();
18330 if (args[0].isObject()) {
18331 if (JS::IsCallable(&args[0].toObject())) {
18332 { // scope for tempRoot and tempGlobalRoot if needed
18333 JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
18334 JS::Rooted<JSObject*> tempGlobalRoot(cx, JS::CurrentGlobalOrNull(cx));
18335 arg0.Value() = new TestTreatAsNullCallback(cx, tempRoot, tempGlobalRoot, GetIncumbentGlobal());
18336 }
18337 } else {
18338 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
18339 return false;
18340 }
18341 } else if (args[0].isNullOrUndefined()) {
18342 arg0.Value() = nullptr;
18343 } else {
18344 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18345 return false;
18346 }
18347 }
18348 // NOTE: This assert does NOT call the function.
18349 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableTreatAsNullCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
18350 MOZ_KnownLive(self)(self)->PassOptionalNullableTreatAsNullCallback(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
18351 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18351); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18351; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18352 args.rval().setUndefined();
18353 return true;
18354}
18355
18356static const JSJitInfo passOptionalNullableTreatAsNullCallback_methodinfo = {
18357 { (JSJitGetterOp)passOptionalNullableTreatAsNullCallback },
18358 { prototypes::id::TestExampleInterface },
18359 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18360 JSJitInfo::Method,
18361 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18362 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18363 false, /* isInfallible. False in setters. */
18364 false, /* isMovable. Not relevant for setters. */
18365 false, /* isEliminatable. Not relevant for setters. */
18366 false, /* isAlwaysInSlot. Only relevant for getters. */
18367 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18368 false, /* isTypedMethod. Only relevant for methods. */
18369 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18370};
18371
18372MOZ_CAN_RUN_SCRIPT static bool
18373passOptionalNullableTreatAsNullCallbackWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18374{
18375 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableTreatAsNullCallbackWithDefaultValue");
18376 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18379( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallbackWithDefaultValue", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
18377 "TestExampleInterface", "passOptionalNullableTreatAsNullCallbackWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18379( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallbackWithDefaultValue", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
18378 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18379( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallbackWithDefaultValue", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
18379 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18379( cx, "TestExampleInterface"
, "passOptionalNullableTreatAsNullCallbackWithDefaultValue", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
18380
18381 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18382 RootedCallback<RefPtr<binding_detail::FastTestTreatAsNullCallback>> arg0(cx);
18383 if (args.hasDefined(0)) {
18384 if (args[0].isObject()) {
18385 if (JS::IsCallable(&args[0].toObject())) {
18386 { // scope for tempRoot and tempGlobalRoot if needed
18387 arg0 = new binding_detail::FastTestTreatAsNullCallback(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
18388 }
18389 } else {
18390 cx.ThrowErrorMessage<MSG_NOT_CALLABLE>("Argument 1");
18391 return false;
18392 }
18393 } else if (args[0].isNullOrUndefined()) {
18394 arg0 = nullptr;
18395 } else {
18396 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
18397 return false;
18398 }
18399 } else {
18400 arg0 = nullptr;
18401 }
18402 // NOTE: This assert does NOT call the function.
18403 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableTreatAsNullCallbackWithDefaultValue(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
18404 MOZ_KnownLive(self)(self)->PassOptionalNullableTreatAsNullCallbackWithDefaultValue(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
18405 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18405); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18405; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18406 args.rval().setUndefined();
18407 return true;
18408}
18409
18410static const JSJitInfo passOptionalNullableTreatAsNullCallbackWithDefaultValue_methodinfo = {
18411 { (JSJitGetterOp)passOptionalNullableTreatAsNullCallbackWithDefaultValue },
18412 { prototypes::id::TestExampleInterface },
18413 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18414 JSJitInfo::Method,
18415 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18416 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18417 false, /* isInfallible. False in setters. */
18418 false, /* isMovable. Not relevant for setters. */
18419 false, /* isEliminatable. Not relevant for setters. */
18420 false, /* isAlwaysInSlot. Only relevant for getters. */
18421 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18422 false, /* isTypedMethod. Only relevant for methods. */
18423 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18424};
18425
18426MOZ_CAN_RUN_SCRIPT static bool
18427passAny(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18428{
18429 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18432( cx, "TestExampleInterface"
, "passAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
18430 "TestExampleInterface", "passAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18432( cx, "TestExampleInterface"
, "passAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
18431 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18432( cx, "TestExampleInterface"
, "passAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
18432 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18432( cx, "TestExampleInterface"
, "passAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
18433
18434 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18435 if (!args.requireAtLeast(cx, "TestExampleInterface.passAny", 1)) {
18436 return false;
18437 }
18438 JS::Rooted<JS::Value> arg0(cx);
18439 arg0 = args[0];
18440 // NOTE: This assert does NOT call the function.
18441 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAny(cx, arg0))>, "Should be returning void here");
18442 MOZ_KnownLive(self)(self)->PassAny(cx, arg0);
18443 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18443); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18443; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18444 args.rval().setUndefined();
18445 return true;
18446}
18447
18448static const JSJitInfo passAny_methodinfo = {
18449 { (JSJitGetterOp)passAny },
18450 { prototypes::id::TestExampleInterface },
18451 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18452 JSJitInfo::Method,
18453 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18454 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18455 false, /* isInfallible. False in setters. */
18456 false, /* isMovable. Not relevant for setters. */
18457 false, /* isEliminatable. Not relevant for setters. */
18458 false, /* isAlwaysInSlot. Only relevant for getters. */
18459 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18460 false, /* isTypedMethod. Only relevant for methods. */
18461 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18462};
18463
18464MOZ_CAN_RUN_SCRIPT static bool
18465passVariadicAny(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18466{
18467 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18470( cx, "TestExampleInterface"
, "passVariadicAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18468 "TestExampleInterface", "passVariadicAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18470( cx, "TestExampleInterface"
, "passVariadicAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18469 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18470( cx, "TestExampleInterface"
, "passVariadicAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18470 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18470( cx, "TestExampleInterface"
, "passVariadicAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18471
18472 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18473 AutoSequence<JS::Value> arg0;
18474 SequenceRooter<JS::Value> arg0_holder(cx, &arg0);
18475 if (args.length() > 0) {
18476 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
18477 JS_ReportOutOfMemory(cx);
18478 return false;
18479 }
18480 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
18481 // OK to do infallible append here, since we ensured capacity already.
18482 JS::Value& slot = *arg0.AppendElement();
18483 slot = args[variadicArg];
18484 }
18485 }
18486 // NOTE: This assert does NOT call the function.
18487 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicAny(cx, Constify(arg0)))>, "Should be returning void here");
18488 MOZ_KnownLive(self)(self)->PassVariadicAny(cx, Constify(arg0));
18489 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18489); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18489; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18490 args.rval().setUndefined();
18491 return true;
18492}
18493
18494static const JSJitInfo passVariadicAny_methodinfo = {
18495 { (JSJitGetterOp)passVariadicAny },
18496 { prototypes::id::TestExampleInterface },
18497 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18498 JSJitInfo::Method,
18499 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18500 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18501 false, /* isInfallible. False in setters. */
18502 false, /* isMovable. Not relevant for setters. */
18503 false, /* isEliminatable. Not relevant for setters. */
18504 false, /* isAlwaysInSlot. Only relevant for getters. */
18505 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18506 false, /* isTypedMethod. Only relevant for methods. */
18507 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18508};
18509
18510MOZ_CAN_RUN_SCRIPT static bool
18511passOptionalAny(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18512{
18513 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18516( cx, "TestExampleInterface"
, "passOptionalAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18514 "TestExampleInterface", "passOptionalAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18516( cx, "TestExampleInterface"
, "passOptionalAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18515 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18516( cx, "TestExampleInterface"
, "passOptionalAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18516 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18516( cx, "TestExampleInterface"
, "passOptionalAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18517
18518 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18519 JS::Rooted<JS::Value> arg0(cx);
18520 if (args.hasDefined(0)) {
18521 arg0 = args[0];
18522 } else {
18523 arg0 = JS::UndefinedValue();
18524 }
18525 // NOTE: This assert does NOT call the function.
18526 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalAny(cx, arg0))>, "Should be returning void here");
18527 MOZ_KnownLive(self)(self)->PassOptionalAny(cx, arg0);
18528 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18528); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18528; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18529 args.rval().setUndefined();
18530 return true;
18531}
18532
18533static const JSJitInfo passOptionalAny_methodinfo = {
18534 { (JSJitGetterOp)passOptionalAny },
18535 { prototypes::id::TestExampleInterface },
18536 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18537 JSJitInfo::Method,
18538 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18539 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18540 false, /* isInfallible. False in setters. */
18541 false, /* isMovable. Not relevant for setters. */
18542 false, /* isEliminatable. Not relevant for setters. */
18543 false, /* isAlwaysInSlot. Only relevant for getters. */
18544 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18545 false, /* isTypedMethod. Only relevant for methods. */
18546 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18547};
18548
18549MOZ_CAN_RUN_SCRIPT static bool
18550passAnyDefaultNull(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18551{
18552 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18555( cx, "TestExampleInterface"
, "passAnyDefaultNull", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18553 "TestExampleInterface", "passAnyDefaultNull", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18555( cx, "TestExampleInterface"
, "passAnyDefaultNull", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18554 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18555( cx, "TestExampleInterface"
, "passAnyDefaultNull", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18555 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18555( cx, "TestExampleInterface"
, "passAnyDefaultNull", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18556
18557 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18558 JS::Rooted<JS::Value> arg0(cx);
18559 if (args.hasDefined(0)) {
18560 arg0 = args[0];
18561 } else {
18562 arg0 = JS::NullValue();
18563 }
18564 // NOTE: This assert does NOT call the function.
18565 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAnyDefaultNull(cx, arg0))>, "Should be returning void here");
18566 MOZ_KnownLive(self)(self)->PassAnyDefaultNull(cx, arg0);
18567 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18567); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18567; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18568 args.rval().setUndefined();
18569 return true;
18570}
18571
18572static const JSJitInfo passAnyDefaultNull_methodinfo = {
18573 { (JSJitGetterOp)passAnyDefaultNull },
18574 { prototypes::id::TestExampleInterface },
18575 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18576 JSJitInfo::Method,
18577 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18578 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18579 false, /* isInfallible. False in setters. */
18580 false, /* isMovable. Not relevant for setters. */
18581 false, /* isEliminatable. Not relevant for setters. */
18582 false, /* isAlwaysInSlot. Only relevant for getters. */
18583 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18584 false, /* isTypedMethod. Only relevant for methods. */
18585 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18586};
18587
18588MOZ_CAN_RUN_SCRIPT static bool
18589passSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18590{
18591 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfAny");
18592 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18595( cx, "TestExampleInterface"
, "passSequenceOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18593 "TestExampleInterface", "passSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18595( cx, "TestExampleInterface"
, "passSequenceOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18594 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18595( cx, "TestExampleInterface"
, "passSequenceOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
18595 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18595( cx, "TestExampleInterface"
, "passSequenceOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
18596
18597 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18598 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfAny", 1)) {
18599 return false;
18600 }
18601 binding_detail::AutoSequence<JS::Value> arg0;
18602 SequenceRooter<JS::Value> arg0_holder(cx, &arg0);
18603 if (args[0].isObject()) {
18604 JS::ForOfIterator iter(cx);
18605 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
18606 return false;
18607 }
18608 if (!iter.valueIsIterable()) {
18609 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18610 return false;
18611 }
18612 binding_detail::AutoSequence<JS::Value> &arr = arg0;
18613 JS::Rooted<JS::Value> temp(cx);
18614 while (true) {
18615 bool done;
18616 if (!iter.next(&temp, &done)) {
18617 return false;
18618 }
18619 if (done) {
18620 break;
18621 }
18622 JS::Value* slotPtr = arr.AppendElement(mozilla::fallible);
18623 if (!slotPtr) {
18624 JS_ReportOutOfMemory(cx);
18625 return false;
18626 }
18627 JS::Value& slot = *slotPtr;
18628 slot = temp;
18629 }
18630 } else {
18631 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18632 return false;
18633 }
18634 // NOTE: This assert does NOT call the function.
18635 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
18636 MOZ_KnownLive(self)(self)->PassSequenceOfAny(cx, Constify(arg0));
18637 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18637); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18637; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18638 args.rval().setUndefined();
18639 return true;
18640}
18641
18642static const JSJitInfo passSequenceOfAny_methodinfo = {
18643 { (JSJitGetterOp)passSequenceOfAny },
18644 { prototypes::id::TestExampleInterface },
18645 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18646 JSJitInfo::Method,
18647 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18648 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18649 false, /* isInfallible. False in setters. */
18650 false, /* isMovable. Not relevant for setters. */
18651 false, /* isEliminatable. Not relevant for setters. */
18652 false, /* isAlwaysInSlot. Only relevant for getters. */
18653 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18654 false, /* isTypedMethod. Only relevant for methods. */
18655 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18656};
18657
18658MOZ_CAN_RUN_SCRIPT static bool
18659passNullableSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18660{
18661 BindingCallContext cx(cx_, "TestExampleInterface.passNullableSequenceOfAny");
18662 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18665( cx, "TestExampleInterface"
, "passNullableSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18663 "TestExampleInterface", "passNullableSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18665( cx, "TestExampleInterface"
, "passNullableSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18664 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18665( cx, "TestExampleInterface"
, "passNullableSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18665 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18665( cx, "TestExampleInterface"
, "passNullableSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18666
18667 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18668 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableSequenceOfAny", 1)) {
18669 return false;
18670 }
18671 Nullable<Sequence<JS::Value>> arg0;
18672 SequenceRooter<JS::Value> arg0_holder(cx, &arg0.SetValue());
18673 if (args[0].isObject()) {
18674 JS::ForOfIterator iter(cx);
18675 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
18676 return false;
18677 }
18678 if (!iter.valueIsIterable()) {
18679 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18680 return false;
18681 }
18682 Sequence<JS::Value> &arr = arg0.SetValue();
18683 JS::Rooted<JS::Value> temp(cx);
18684 while (true) {
18685 bool done;
18686 if (!iter.next(&temp, &done)) {
18687 return false;
18688 }
18689 if (done) {
18690 break;
18691 }
18692 JS::Value* slotPtr = arr.AppendElement(mozilla::fallible);
18693 if (!slotPtr) {
18694 JS_ReportOutOfMemory(cx);
18695 return false;
18696 }
18697 JS::Value& slot = *slotPtr;
18698 slot = temp;
18699 }
18700 } else if (args[0].isNullOrUndefined()) {
18701 arg0.SetNull();
18702 } else {
18703 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18704 return false;
18705 }
18706 // NOTE: This assert does NOT call the function.
18707 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
18708 MOZ_KnownLive(self)(self)->PassNullableSequenceOfAny(cx, Constify(arg0));
18709 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18709); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18709; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18710 args.rval().setUndefined();
18711 return true;
18712}
18713
18714static const JSJitInfo passNullableSequenceOfAny_methodinfo = {
18715 { (JSJitGetterOp)passNullableSequenceOfAny },
18716 { prototypes::id::TestExampleInterface },
18717 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18718 JSJitInfo::Method,
18719 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18720 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18721 false, /* isInfallible. False in setters. */
18722 false, /* isMovable. Not relevant for setters. */
18723 false, /* isEliminatable. Not relevant for setters. */
18724 false, /* isAlwaysInSlot. Only relevant for getters. */
18725 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18726 false, /* isTypedMethod. Only relevant for methods. */
18727 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18728};
18729
18730MOZ_CAN_RUN_SCRIPT static bool
18731passOptionalSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18732{
18733 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSequenceOfAny");
18734 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18737( cx, "TestExampleInterface"
, "passOptionalSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18735 "TestExampleInterface", "passOptionalSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18737( cx, "TestExampleInterface"
, "passOptionalSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18736 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18737( cx, "TestExampleInterface"
, "passOptionalSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18737 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18737( cx, "TestExampleInterface"
, "passOptionalSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18738
18739 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18740 Optional<Sequence<JS::Value>> arg0;
18741 Maybe<SequenceRooter<JS::Value>> arg0_holder;
18742 if (args.hasDefined(0)) {
18743 arg0.Construct();
18744 arg0_holder.emplace(cx, &arg0.Value());
18745 if (args[0].isObject()) {
18746 JS::ForOfIterator iter(cx);
18747 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
18748 return false;
18749 }
18750 if (!iter.valueIsIterable()) {
18751 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18752 return false;
18753 }
18754 Sequence<JS::Value> &arr = arg0.Value();
18755 JS::Rooted<JS::Value> temp(cx);
18756 while (true) {
18757 bool done;
18758 if (!iter.next(&temp, &done)) {
18759 return false;
18760 }
18761 if (done) {
18762 break;
18763 }
18764 JS::Value* slotPtr = arr.AppendElement(mozilla::fallible);
18765 if (!slotPtr) {
18766 JS_ReportOutOfMemory(cx);
18767 return false;
18768 }
18769 JS::Value& slot = *slotPtr;
18770 slot = temp;
18771 }
18772 } else {
18773 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18774 return false;
18775 }
18776 }
18777 // NOTE: This assert does NOT call the function.
18778 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
18779 MOZ_KnownLive(self)(self)->PassOptionalSequenceOfAny(cx, Constify(arg0));
18780 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18780); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18780; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18781 args.rval().setUndefined();
18782 return true;
18783}
18784
18785static const JSJitInfo passOptionalSequenceOfAny_methodinfo = {
18786 { (JSJitGetterOp)passOptionalSequenceOfAny },
18787 { prototypes::id::TestExampleInterface },
18788 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18789 JSJitInfo::Method,
18790 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18791 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18792 false, /* isInfallible. False in setters. */
18793 false, /* isMovable. Not relevant for setters. */
18794 false, /* isEliminatable. Not relevant for setters. */
18795 false, /* isAlwaysInSlot. Only relevant for getters. */
18796 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18797 false, /* isTypedMethod. Only relevant for methods. */
18798 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18799};
18800
18801MOZ_CAN_RUN_SCRIPT static bool
18802passOptionalNullableSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18803{
18804 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceOfAny");
18805 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18808( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18806 "TestExampleInterface", "passOptionalNullableSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18808( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18807 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18808( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18808 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18808( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18809
18810 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18811 Optional<Nullable<Sequence<JS::Value>>> arg0;
18812 Maybe<SequenceRooter<JS::Value>> arg0_holder;
18813 if (args.hasDefined(0)) {
18814 arg0.Construct();
18815 arg0_holder.emplace(cx, &arg0.Value().SetValue());
18816 if (args[0].isObject()) {
18817 JS::ForOfIterator iter(cx);
18818 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
18819 return false;
18820 }
18821 if (!iter.valueIsIterable()) {
18822 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18823 return false;
18824 }
18825 Sequence<JS::Value> &arr = arg0.Value().SetValue();
18826 JS::Rooted<JS::Value> temp(cx);
18827 while (true) {
18828 bool done;
18829 if (!iter.next(&temp, &done)) {
18830 return false;
18831 }
18832 if (done) {
18833 break;
18834 }
18835 JS::Value* slotPtr = arr.AppendElement(mozilla::fallible);
18836 if (!slotPtr) {
18837 JS_ReportOutOfMemory(cx);
18838 return false;
18839 }
18840 JS::Value& slot = *slotPtr;
18841 slot = temp;
18842 }
18843 } else if (args[0].isNullOrUndefined()) {
18844 arg0.Value().SetNull();
18845 } else {
18846 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18847 return false;
18848 }
18849 }
18850 // NOTE: This assert does NOT call the function.
18851 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
18852 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfAny(cx, Constify(arg0));
18853 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18853); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18853; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18854 args.rval().setUndefined();
18855 return true;
18856}
18857
18858static const JSJitInfo passOptionalNullableSequenceOfAny_methodinfo = {
18859 { (JSJitGetterOp)passOptionalNullableSequenceOfAny },
18860 { prototypes::id::TestExampleInterface },
18861 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18862 JSJitInfo::Method,
18863 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18864 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18865 false, /* isInfallible. False in setters. */
18866 false, /* isMovable. Not relevant for setters. */
18867 false, /* isEliminatable. Not relevant for setters. */
18868 false, /* isAlwaysInSlot. Only relevant for getters. */
18869 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18870 false, /* isTypedMethod. Only relevant for methods. */
18871 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18872};
18873
18874MOZ_CAN_RUN_SCRIPT static bool
18875passOptionalSequenceOfAnyWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18876{
18877 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalSequenceOfAnyWithDefaultValue");
18878 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18881( cx, "TestExampleInterface"
, "passOptionalSequenceOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18879 "TestExampleInterface", "passOptionalSequenceOfAnyWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18881( cx, "TestExampleInterface"
, "passOptionalSequenceOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18880 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18881( cx, "TestExampleInterface"
, "passOptionalSequenceOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18881 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18881( cx, "TestExampleInterface"
, "passOptionalSequenceOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18882
18883 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18884 Nullable<Sequence<JS::Value>> arg0;
18885 SequenceRooter<JS::Value> arg0_holder(cx, &arg0.SetValue());
18886 if (args.hasDefined(0)) {
18887 if (args[0].isObject()) {
18888 JS::ForOfIterator iter(cx);
18889 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
18890 return false;
18891 }
18892 if (!iter.valueIsIterable()) {
18893 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18894 return false;
18895 }
18896 Sequence<JS::Value> &arr = arg0.SetValue();
18897 JS::Rooted<JS::Value> temp(cx);
18898 while (true) {
18899 bool done;
18900 if (!iter.next(&temp, &done)) {
18901 return false;
18902 }
18903 if (done) {
18904 break;
18905 }
18906 JS::Value* slotPtr = arr.AppendElement(mozilla::fallible);
18907 if (!slotPtr) {
18908 JS_ReportOutOfMemory(cx);
18909 return false;
18910 }
18911 JS::Value& slot = *slotPtr;
18912 slot = temp;
18913 }
18914 } else if (args[0].isNullOrUndefined()) {
18915 arg0.SetNull();
18916 } else {
18917 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18918 return false;
18919 }
18920 } else {
18921 arg0.SetNull();
18922 }
18923 // NOTE: This assert does NOT call the function.
18924 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalSequenceOfAnyWithDefaultValue(cx, Constify(arg0)))>, "Should be returning void here");
18925 MOZ_KnownLive(self)(self)->PassOptionalSequenceOfAnyWithDefaultValue(cx, Constify(arg0));
18926 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 18926); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 18926; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
18927 args.rval().setUndefined();
18928 return true;
18929}
18930
18931static const JSJitInfo passOptionalSequenceOfAnyWithDefaultValue_methodinfo = {
18932 { (JSJitGetterOp)passOptionalSequenceOfAnyWithDefaultValue },
18933 { prototypes::id::TestExampleInterface },
18934 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
18935 JSJitInfo::Method,
18936 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
18937 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
18938 false, /* isInfallible. False in setters. */
18939 false, /* isMovable. Not relevant for setters. */
18940 false, /* isEliminatable. Not relevant for setters. */
18941 false, /* isAlwaysInSlot. Only relevant for getters. */
18942 false, /* isLazilyCachedInSlot. Only relevant for getters. */
18943 false, /* isTypedMethod. Only relevant for methods. */
18944 0 /* Reserved slot index, if we're stored in a slot, else 0. */
18945};
18946
18947MOZ_CAN_RUN_SCRIPT static bool
18948passSequenceOfSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
18949{
18950 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfSequenceOfAny");
18951 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject18954( cx, "TestExampleInterface"
, "passSequenceOfSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18952 "TestExampleInterface", "passSequenceOfSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject18954( cx, "TestExampleInterface"
, "passSequenceOfSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18953 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject18954( cx, "TestExampleInterface"
, "passSequenceOfSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
18954 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject18954( cx, "TestExampleInterface"
, "passSequenceOfSequenceOfAny", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
18955
18956 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
18957 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfSequenceOfAny", 1)) {
18958 return false;
18959 }
18960 binding_detail::AutoSequence<Sequence<JS::Value>> arg0;
18961 SequenceRooter<Sequence<JS::Value>> arg0_holder(cx, &arg0);
18962 if (args[0].isObject()) {
18963 JS::ForOfIterator iter(cx);
18964 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
18965 return false;
18966 }
18967 if (!iter.valueIsIterable()) {
18968 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
18969 return false;
18970 }
18971 binding_detail::AutoSequence<Sequence<JS::Value>> &arr = arg0;
18972 JS::Rooted<JS::Value> temp(cx);
18973 while (true) {
18974 bool done;
18975 if (!iter.next(&temp, &done)) {
18976 return false;
18977 }
18978 if (done) {
18979 break;
18980 }
18981 Sequence<JS::Value>* slotPtr = arr.AppendElement(mozilla::fallible);
18982 if (!slotPtr) {
18983 JS_ReportOutOfMemory(cx);
18984 return false;
18985 }
18986 Sequence<JS::Value>& slot = *slotPtr;
18987 if (temp.isObject()) {
18988 JS::ForOfIterator iter1(cx);
18989 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
18990 return false;
18991 }
18992 if (!iter1.valueIsIterable()) {
18993 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
18994 return false;
18995 }
18996 Sequence<JS::Value> &arr1 = slot;
18997 JS::Rooted<JS::Value> temp1(cx);
18998 while (true) {
18999 bool done1;
19000 if (!iter1.next(&temp1, &done1)) {
19001 return false;
19002 }
19003 if (done1) {
19004 break;
19005 }
19006 JS::Value* slotPtr1 = arr1.AppendElement(mozilla::fallible);
19007 if (!slotPtr1) {
19008 JS_ReportOutOfMemory(cx);
19009 return false;
19010 }
19011 JS::Value& slot1 = *slotPtr1;
19012 slot1 = temp1;
19013 }
19014 } else {
19015 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19016 return false;
19017 }
19018 }
19019 } else {
19020 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19021 return false;
19022 }
19023 // NOTE: This assert does NOT call the function.
19024 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19025 MOZ_KnownLive(self)(self)->PassSequenceOfSequenceOfAny(cx, Constify(arg0));
19026 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19026); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19026; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19027 args.rval().setUndefined();
19028 return true;
19029}
19030
19031static const JSJitInfo passSequenceOfSequenceOfAny_methodinfo = {
19032 { (JSJitGetterOp)passSequenceOfSequenceOfAny },
19033 { prototypes::id::TestExampleInterface },
19034 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19035 JSJitInfo::Method,
19036 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19037 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19038 false, /* isInfallible. False in setters. */
19039 false, /* isMovable. Not relevant for setters. */
19040 false, /* isEliminatable. Not relevant for setters. */
19041 false, /* isAlwaysInSlot. Only relevant for getters. */
19042 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19043 false, /* isTypedMethod. Only relevant for methods. */
19044 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19045};
19046
19047MOZ_CAN_RUN_SCRIPT static bool
19048passSequenceOfNullableSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19049{
19050 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfNullableSequenceOfAny");
19051 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19054( cx, "TestExampleInterface"
, "passSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19052 "TestExampleInterface", "passSequenceOfNullableSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19054( cx, "TestExampleInterface"
, "passSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19053 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19054( cx, "TestExampleInterface"
, "passSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19054 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19054( cx, "TestExampleInterface"
, "passSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
19055
19056 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19057 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfNullableSequenceOfAny", 1)) {
19058 return false;
19059 }
19060 binding_detail::AutoSequence<Nullable<Sequence<JS::Value>>> arg0;
19061 SequenceRooter<Nullable<Sequence<JS::Value>>> arg0_holder(cx, &arg0);
19062 if (args[0].isObject()) {
19063 JS::ForOfIterator iter(cx);
19064 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
19065 return false;
19066 }
19067 if (!iter.valueIsIterable()) {
19068 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19069 return false;
19070 }
19071 binding_detail::AutoSequence<Nullable<Sequence<JS::Value>>> &arr = arg0;
19072 JS::Rooted<JS::Value> temp(cx);
19073 while (true) {
19074 bool done;
19075 if (!iter.next(&temp, &done)) {
19076 return false;
19077 }
19078 if (done) {
19079 break;
19080 }
19081 Nullable<Sequence<JS::Value>>* slotPtr = arr.AppendElement(mozilla::fallible);
19082 if (!slotPtr) {
19083 JS_ReportOutOfMemory(cx);
19084 return false;
19085 }
19086 Nullable<Sequence<JS::Value>>& slot = *slotPtr;
19087 if (temp.isObject()) {
19088 JS::ForOfIterator iter1(cx);
19089 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
19090 return false;
19091 }
19092 if (!iter1.valueIsIterable()) {
19093 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19094 return false;
19095 }
19096 Sequence<JS::Value> &arr1 = slot.SetValue();
19097 JS::Rooted<JS::Value> temp1(cx);
19098 while (true) {
19099 bool done1;
19100 if (!iter1.next(&temp1, &done1)) {
19101 return false;
19102 }
19103 if (done1) {
19104 break;
19105 }
19106 JS::Value* slotPtr1 = arr1.AppendElement(mozilla::fallible);
19107 if (!slotPtr1) {
19108 JS_ReportOutOfMemory(cx);
19109 return false;
19110 }
19111 JS::Value& slot1 = *slotPtr1;
19112 slot1 = temp1;
19113 }
19114 } else if (temp.isNullOrUndefined()) {
19115 slot.SetNull();
19116 } else {
19117 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19118 return false;
19119 }
19120 }
19121 } else {
19122 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19123 return false;
19124 }
19125 // NOTE: This assert does NOT call the function.
19126 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfNullableSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19127 MOZ_KnownLive(self)(self)->PassSequenceOfNullableSequenceOfAny(cx, Constify(arg0));
19128 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19128); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19128; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19129 args.rval().setUndefined();
19130 return true;
19131}
19132
19133static const JSJitInfo passSequenceOfNullableSequenceOfAny_methodinfo = {
19134 { (JSJitGetterOp)passSequenceOfNullableSequenceOfAny },
19135 { prototypes::id::TestExampleInterface },
19136 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19137 JSJitInfo::Method,
19138 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19139 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19140 false, /* isInfallible. False in setters. */
19141 false, /* isMovable. Not relevant for setters. */
19142 false, /* isEliminatable. Not relevant for setters. */
19143 false, /* isAlwaysInSlot. Only relevant for getters. */
19144 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19145 false, /* isTypedMethod. Only relevant for methods. */
19146 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19147};
19148
19149MOZ_CAN_RUN_SCRIPT static bool
19150passNullableSequenceOfNullableSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19151{
19152 BindingCallContext cx(cx_, "TestExampleInterface.passNullableSequenceOfNullableSequenceOfAny");
19153 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19156( cx, "TestExampleInterface"
, "passNullableSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19154 "TestExampleInterface", "passNullableSequenceOfNullableSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19156( cx, "TestExampleInterface"
, "passNullableSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19155 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19156( cx, "TestExampleInterface"
, "passNullableSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19156 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19156( cx, "TestExampleInterface"
, "passNullableSequenceOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
19157
19158 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19159 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableSequenceOfNullableSequenceOfAny", 1)) {
19160 return false;
19161 }
19162 Nullable<Sequence<Nullable<Sequence<JS::Value>>>> arg0;
19163 SequenceRooter<Nullable<Sequence<JS::Value>>> arg0_holder(cx, &arg0.SetValue());
19164 if (args[0].isObject()) {
19165 JS::ForOfIterator iter(cx);
19166 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
19167 return false;
19168 }
19169 if (!iter.valueIsIterable()) {
19170 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19171 return false;
19172 }
19173 Sequence<Nullable<Sequence<JS::Value>>> &arr = arg0.SetValue();
19174 JS::Rooted<JS::Value> temp(cx);
19175 while (true) {
19176 bool done;
19177 if (!iter.next(&temp, &done)) {
19178 return false;
19179 }
19180 if (done) {
19181 break;
19182 }
19183 Nullable<Sequence<JS::Value>>* slotPtr = arr.AppendElement(mozilla::fallible);
19184 if (!slotPtr) {
19185 JS_ReportOutOfMemory(cx);
19186 return false;
19187 }
19188 Nullable<Sequence<JS::Value>>& slot = *slotPtr;
19189 if (temp.isObject()) {
19190 JS::ForOfIterator iter1(cx);
19191 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
19192 return false;
19193 }
19194 if (!iter1.valueIsIterable()) {
19195 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19196 return false;
19197 }
19198 Sequence<JS::Value> &arr1 = slot.SetValue();
19199 JS::Rooted<JS::Value> temp1(cx);
19200 while (true) {
19201 bool done1;
19202 if (!iter1.next(&temp1, &done1)) {
19203 return false;
19204 }
19205 if (done1) {
19206 break;
19207 }
19208 JS::Value* slotPtr1 = arr1.AppendElement(mozilla::fallible);
19209 if (!slotPtr1) {
19210 JS_ReportOutOfMemory(cx);
19211 return false;
19212 }
19213 JS::Value& slot1 = *slotPtr1;
19214 slot1 = temp1;
19215 }
19216 } else if (temp.isNullOrUndefined()) {
19217 slot.SetNull();
19218 } else {
19219 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19220 return false;
19221 }
19222 }
19223 } else if (args[0].isNullOrUndefined()) {
19224 arg0.SetNull();
19225 } else {
19226 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19227 return false;
19228 }
19229 // NOTE: This assert does NOT call the function.
19230 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableSequenceOfNullableSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19231 MOZ_KnownLive(self)(self)->PassNullableSequenceOfNullableSequenceOfAny(cx, Constify(arg0));
19232 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19232); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19232; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19233 args.rval().setUndefined();
19234 return true;
19235}
19236
19237static const JSJitInfo passNullableSequenceOfNullableSequenceOfAny_methodinfo = {
19238 { (JSJitGetterOp)passNullableSequenceOfNullableSequenceOfAny },
19239 { prototypes::id::TestExampleInterface },
19240 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19241 JSJitInfo::Method,
19242 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19243 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19244 false, /* isInfallible. False in setters. */
19245 false, /* isMovable. Not relevant for setters. */
19246 false, /* isEliminatable. Not relevant for setters. */
19247 false, /* isAlwaysInSlot. Only relevant for getters. */
19248 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19249 false, /* isTypedMethod. Only relevant for methods. */
19250 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19251};
19252
19253MOZ_CAN_RUN_SCRIPT static bool
19254passOptionalNullableSequenceOfNullableSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19255{
19256 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceOfNullableSequenceOfAny");
19257 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19260( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfAny", JS::
ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame::
Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
19258 "TestExampleInterface", "passOptionalNullableSequenceOfNullableSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19260( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfAny", JS::
ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame::
Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
19259 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19260( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfAny", JS::
ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame::
Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
19260 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19260( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfAny", JS::
ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame::
Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
19261
19262 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19263 Optional<Nullable<Sequence<Nullable<Sequence<JS::Value>>>>> arg0;
19264 Maybe<SequenceRooter<Nullable<Sequence<JS::Value>>>> arg0_holder;
19265 if (args.hasDefined(0)) {
19266 arg0.Construct();
19267 arg0_holder.emplace(cx, &arg0.Value().SetValue());
19268 if (args[0].isObject()) {
19269 JS::ForOfIterator iter(cx);
19270 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
19271 return false;
19272 }
19273 if (!iter.valueIsIterable()) {
19274 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19275 return false;
19276 }
19277 Sequence<Nullable<Sequence<JS::Value>>> &arr = arg0.Value().SetValue();
19278 JS::Rooted<JS::Value> temp(cx);
19279 while (true) {
19280 bool done;
19281 if (!iter.next(&temp, &done)) {
19282 return false;
19283 }
19284 if (done) {
19285 break;
19286 }
19287 Nullable<Sequence<JS::Value>>* slotPtr = arr.AppendElement(mozilla::fallible);
19288 if (!slotPtr) {
19289 JS_ReportOutOfMemory(cx);
19290 return false;
19291 }
19292 Nullable<Sequence<JS::Value>>& slot = *slotPtr;
19293 if (temp.isObject()) {
19294 JS::ForOfIterator iter1(cx);
19295 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
19296 return false;
19297 }
19298 if (!iter1.valueIsIterable()) {
19299 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19300 return false;
19301 }
19302 Sequence<JS::Value> &arr1 = slot.SetValue();
19303 JS::Rooted<JS::Value> temp1(cx);
19304 while (true) {
19305 bool done1;
19306 if (!iter1.next(&temp1, &done1)) {
19307 return false;
19308 }
19309 if (done1) {
19310 break;
19311 }
19312 JS::Value* slotPtr1 = arr1.AppendElement(mozilla::fallible);
19313 if (!slotPtr1) {
19314 JS_ReportOutOfMemory(cx);
19315 return false;
19316 }
19317 JS::Value& slot1 = *slotPtr1;
19318 slot1 = temp1;
19319 }
19320 } else if (temp.isNullOrUndefined()) {
19321 slot.SetNull();
19322 } else {
19323 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
19324 return false;
19325 }
19326 }
19327 } else if (args[0].isNullOrUndefined()) {
19328 arg0.Value().SetNull();
19329 } else {
19330 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
19331 return false;
19332 }
19333 }
19334 // NOTE: This assert does NOT call the function.
19335 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19336 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableSequenceOfAny(cx, Constify(arg0));
19337 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19337); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19337; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19338 args.rval().setUndefined();
19339 return true;
19340}
19341
19342static const JSJitInfo passOptionalNullableSequenceOfNullableSequenceOfAny_methodinfo = {
19343 { (JSJitGetterOp)passOptionalNullableSequenceOfNullableSequenceOfAny },
19344 { prototypes::id::TestExampleInterface },
19345 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19346 JSJitInfo::Method,
19347 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19348 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19349 false, /* isInfallible. False in setters. */
19350 false, /* isMovable. Not relevant for setters. */
19351 false, /* isEliminatable. Not relevant for setters. */
19352 false, /* isAlwaysInSlot. Only relevant for getters. */
19353 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19354 false, /* isTypedMethod. Only relevant for methods. */
19355 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19356};
19357
19358MOZ_CAN_RUN_SCRIPT static bool
19359passRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19360{
19361 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfAny");
19362 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19365( cx, "TestExampleInterface"
, "passRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19363 "TestExampleInterface", "passRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19365( cx, "TestExampleInterface"
, "passRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19364 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19365( cx, "TestExampleInterface"
, "passRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19365 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19365( cx, "TestExampleInterface"
, "passRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
19366
19367 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19368 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfAny", 1)) {
19369 return false;
19370 }
19371 Record<nsString, JS::Value> arg0;
19372 RecordRooter<nsString, JS::Value> arg0_holder(cx, &arg0);
19373 if (args[0].isObject()) {
19374 auto& recordEntries = arg0.Entries();
19375
19376 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
19377 JS::RootedVector<jsid> ids(cx);
19378 if (!js::GetPropertyKeys(cx, recordObj,
19379 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
19380 return false;
19381 }
19382 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
19383 JS_ReportOutOfMemory(cx);
19384 return false;
19385 }
19386 JS::Rooted<JS::Value> propNameValue(cx);
19387 JS::Rooted<JS::Value> temp(cx);
19388 JS::Rooted<jsid> curId(cx);
19389 JS::Rooted<JS::Value> idVal(cx);
19390 // Use a hashset to keep track of ids seen, to avoid
19391 // introducing nasty O(N^2) behavior scanning for them all the
19392 // time. Ideally we'd use a data structure with O(1) lookup
19393 // _and_ ordering for the MozMap, but we don't have one lying
19394 // around.
19395 nsTHashtable<nsStringHashKey> idsSeen;
19396 for (size_t i = 0; i < ids.length(); ++i) {
19397 curId = ids[i];
19398
19399 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
19400 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
19401 &desc)) {
19402 return false;
19403 }
19404
19405 if (desc.isNothing() || !desc->enumerable()) {
19406 continue;
19407 }
19408
19409 idVal = js::IdToValue(curId);
19410 nsString propName;
19411 // This will just throw if idVal is a Symbol, like the spec says
19412 // to do.
19413 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
19414 return false;
19415 }
19416
19417 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
19418 return false;
19419 }
19420
19421 Record<nsString, JS::Value>::EntryType* entry;
19422 if (!idsSeen.EnsureInserted(propName)) {
19423 // Find the existing entry.
19424 auto idx = recordEntries.IndexOf(propName);
19425 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19426); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19426; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
19426 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19426); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19426; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
19427 // Now blow it away to make it look like it was just added
19428 // to the array, because it's not obvious that it's
19429 // safe to write to its already-initialized mValue via our
19430 // normal codegen conversions. For example, the value
19431 // could be a union and this would change its type, but
19432 // codegen assumes we won't do that.
19433 entry = recordEntries.ReconstructElementAt(idx);
19434 } else {
19435 // Safe to do an infallible append here, because we did a
19436 // SetCapacity above to the right capacity.
19437 entry = recordEntries.AppendElement();
19438 }
19439 entry->mKey = propName;
19440 JS::Value& slot = entry->mValue;
19441 slot = temp;
19442 }
19443 } else {
19444 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
19445 return false;
19446 }
19447 // NOTE: This assert does NOT call the function.
19448 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19449 MOZ_KnownLive(self)(self)->PassRecordOfAny(cx, Constify(arg0));
19450 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19450); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19450; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19451 args.rval().setUndefined();
19452 return true;
19453}
19454
19455static const JSJitInfo passRecordOfAny_methodinfo = {
19456 { (JSJitGetterOp)passRecordOfAny },
19457 { prototypes::id::TestExampleInterface },
19458 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19459 JSJitInfo::Method,
19460 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19461 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19462 false, /* isInfallible. False in setters. */
19463 false, /* isMovable. Not relevant for setters. */
19464 false, /* isEliminatable. Not relevant for setters. */
19465 false, /* isAlwaysInSlot. Only relevant for getters. */
19466 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19467 false, /* isTypedMethod. Only relevant for methods. */
19468 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19469};
19470
19471MOZ_CAN_RUN_SCRIPT static bool
19472passNullableRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19473{
19474 BindingCallContext cx(cx_, "TestExampleInterface.passNullableRecordOfAny");
19475 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19478( cx, "TestExampleInterface"
, "passNullableRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19476 "TestExampleInterface", "passNullableRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19478( cx, "TestExampleInterface"
, "passNullableRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19477 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19478( cx, "TestExampleInterface"
, "passNullableRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19478 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19478( cx, "TestExampleInterface"
, "passNullableRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
19479
19480 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19481 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableRecordOfAny", 1)) {
19482 return false;
19483 }
19484 Nullable<Record<nsString, JS::Value>> arg0;
19485 RecordRooter<nsString, JS::Value> arg0_holder(cx, &arg0.SetValue());
19486 if (args[0].isObject()) {
19487 auto& recordEntries = arg0.SetValue().Entries();
19488
19489 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
19490 JS::RootedVector<jsid> ids(cx);
19491 if (!js::GetPropertyKeys(cx, recordObj,
19492 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
19493 return false;
19494 }
19495 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
19496 JS_ReportOutOfMemory(cx);
19497 return false;
19498 }
19499 JS::Rooted<JS::Value> propNameValue(cx);
19500 JS::Rooted<JS::Value> temp(cx);
19501 JS::Rooted<jsid> curId(cx);
19502 JS::Rooted<JS::Value> idVal(cx);
19503 // Use a hashset to keep track of ids seen, to avoid
19504 // introducing nasty O(N^2) behavior scanning for them all the
19505 // time. Ideally we'd use a data structure with O(1) lookup
19506 // _and_ ordering for the MozMap, but we don't have one lying
19507 // around.
19508 nsTHashtable<nsStringHashKey> idsSeen;
19509 for (size_t i = 0; i < ids.length(); ++i) {
19510 curId = ids[i];
19511
19512 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
19513 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
19514 &desc)) {
19515 return false;
19516 }
19517
19518 if (desc.isNothing() || !desc->enumerable()) {
19519 continue;
19520 }
19521
19522 idVal = js::IdToValue(curId);
19523 nsString propName;
19524 // This will just throw if idVal is a Symbol, like the spec says
19525 // to do.
19526 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
19527 return false;
19528 }
19529
19530 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
19531 return false;
19532 }
19533
19534 Record<nsString, JS::Value>::EntryType* entry;
19535 if (!idsSeen.EnsureInserted(propName)) {
19536 // Find the existing entry.
19537 auto idx = recordEntries.IndexOf(propName);
19538 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19539); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19539; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
19539 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19539); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19539; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
19540 // Now blow it away to make it look like it was just added
19541 // to the array, because it's not obvious that it's
19542 // safe to write to its already-initialized mValue via our
19543 // normal codegen conversions. For example, the value
19544 // could be a union and this would change its type, but
19545 // codegen assumes we won't do that.
19546 entry = recordEntries.ReconstructElementAt(idx);
19547 } else {
19548 // Safe to do an infallible append here, because we did a
19549 // SetCapacity above to the right capacity.
19550 entry = recordEntries.AppendElement();
19551 }
19552 entry->mKey = propName;
19553 JS::Value& slot = entry->mValue;
19554 slot = temp;
19555 }
19556 } else if (args[0].isNullOrUndefined()) {
19557 arg0.SetNull();
19558 } else {
19559 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
19560 return false;
19561 }
19562 // NOTE: This assert does NOT call the function.
19563 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19564 MOZ_KnownLive(self)(self)->PassNullableRecordOfAny(cx, Constify(arg0));
19565 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19565); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19565; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19566 args.rval().setUndefined();
19567 return true;
19568}
19569
19570static const JSJitInfo passNullableRecordOfAny_methodinfo = {
19571 { (JSJitGetterOp)passNullableRecordOfAny },
19572 { prototypes::id::TestExampleInterface },
19573 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19574 JSJitInfo::Method,
19575 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19576 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19577 false, /* isInfallible. False in setters. */
19578 false, /* isMovable. Not relevant for setters. */
19579 false, /* isEliminatable. Not relevant for setters. */
19580 false, /* isAlwaysInSlot. Only relevant for getters. */
19581 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19582 false, /* isTypedMethod. Only relevant for methods. */
19583 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19584};
19585
19586MOZ_CAN_RUN_SCRIPT static bool
19587passOptionalRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19588{
19589 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalRecordOfAny");
19590 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19593( cx, "TestExampleInterface"
, "passOptionalRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19591 "TestExampleInterface", "passOptionalRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19593( cx, "TestExampleInterface"
, "passOptionalRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19592 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19593( cx, "TestExampleInterface"
, "passOptionalRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19593 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19593( cx, "TestExampleInterface"
, "passOptionalRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
19594
19595 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19596 Optional<Record<nsString, JS::Value>> arg0;
19597 Maybe<RecordRooter<nsString, JS::Value>> arg0_holder;
19598 if (args.hasDefined(0)) {
19599 arg0.Construct();
19600 arg0_holder.emplace(cx, &arg0.Value());
19601 if (args[0].isObject()) {
19602 auto& recordEntries = arg0.Value().Entries();
19603
19604 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
19605 JS::RootedVector<jsid> ids(cx);
19606 if (!js::GetPropertyKeys(cx, recordObj,
19607 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
19608 return false;
19609 }
19610 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
19611 JS_ReportOutOfMemory(cx);
19612 return false;
19613 }
19614 JS::Rooted<JS::Value> propNameValue(cx);
19615 JS::Rooted<JS::Value> temp(cx);
19616 JS::Rooted<jsid> curId(cx);
19617 JS::Rooted<JS::Value> idVal(cx);
19618 // Use a hashset to keep track of ids seen, to avoid
19619 // introducing nasty O(N^2) behavior scanning for them all the
19620 // time. Ideally we'd use a data structure with O(1) lookup
19621 // _and_ ordering for the MozMap, but we don't have one lying
19622 // around.
19623 nsTHashtable<nsStringHashKey> idsSeen;
19624 for (size_t i = 0; i < ids.length(); ++i) {
19625 curId = ids[i];
19626
19627 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
19628 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
19629 &desc)) {
19630 return false;
19631 }
19632
19633 if (desc.isNothing() || !desc->enumerable()) {
19634 continue;
19635 }
19636
19637 idVal = js::IdToValue(curId);
19638 nsString propName;
19639 // This will just throw if idVal is a Symbol, like the spec says
19640 // to do.
19641 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
19642 return false;
19643 }
19644
19645 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
19646 return false;
19647 }
19648
19649 Record<nsString, JS::Value>::EntryType* entry;
19650 if (!idsSeen.EnsureInserted(propName)) {
19651 // Find the existing entry.
19652 auto idx = recordEntries.IndexOf(propName);
19653 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19654); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19654; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
19654 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19654); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19654; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
19655 // Now blow it away to make it look like it was just added
19656 // to the array, because it's not obvious that it's
19657 // safe to write to its already-initialized mValue via our
19658 // normal codegen conversions. For example, the value
19659 // could be a union and this would change its type, but
19660 // codegen assumes we won't do that.
19661 entry = recordEntries.ReconstructElementAt(idx);
19662 } else {
19663 // Safe to do an infallible append here, because we did a
19664 // SetCapacity above to the right capacity.
19665 entry = recordEntries.AppendElement();
19666 }
19667 entry->mKey = propName;
19668 JS::Value& slot = entry->mValue;
19669 slot = temp;
19670 }
19671 } else {
19672 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
19673 return false;
19674 }
19675 }
19676 // NOTE: This assert does NOT call the function.
19677 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19678 MOZ_KnownLive(self)(self)->PassOptionalRecordOfAny(cx, Constify(arg0));
19679 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19679); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19679; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19680 args.rval().setUndefined();
19681 return true;
19682}
19683
19684static const JSJitInfo passOptionalRecordOfAny_methodinfo = {
19685 { (JSJitGetterOp)passOptionalRecordOfAny },
19686 { prototypes::id::TestExampleInterface },
19687 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19688 JSJitInfo::Method,
19689 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19690 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19691 false, /* isInfallible. False in setters. */
19692 false, /* isMovable. Not relevant for setters. */
19693 false, /* isEliminatable. Not relevant for setters. */
19694 false, /* isAlwaysInSlot. Only relevant for getters. */
19695 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19696 false, /* isTypedMethod. Only relevant for methods. */
19697 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19698};
19699
19700MOZ_CAN_RUN_SCRIPT static bool
19701passOptionalNullableRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19702{
19703 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableRecordOfAny");
19704 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19707( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19705 "TestExampleInterface", "passOptionalNullableRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19707( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19706 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19707( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19707 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19707( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
19708
19709 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19710 Optional<Nullable<Record<nsString, JS::Value>>> arg0;
19711 Maybe<RecordRooter<nsString, JS::Value>> arg0_holder;
19712 if (args.hasDefined(0)) {
19713 arg0.Construct();
19714 arg0_holder.emplace(cx, &arg0.Value().SetValue());
19715 if (args[0].isObject()) {
19716 auto& recordEntries = arg0.Value().SetValue().Entries();
19717
19718 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
19719 JS::RootedVector<jsid> ids(cx);
19720 if (!js::GetPropertyKeys(cx, recordObj,
19721 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
19722 return false;
19723 }
19724 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
19725 JS_ReportOutOfMemory(cx);
19726 return false;
19727 }
19728 JS::Rooted<JS::Value> propNameValue(cx);
19729 JS::Rooted<JS::Value> temp(cx);
19730 JS::Rooted<jsid> curId(cx);
19731 JS::Rooted<JS::Value> idVal(cx);
19732 // Use a hashset to keep track of ids seen, to avoid
19733 // introducing nasty O(N^2) behavior scanning for them all the
19734 // time. Ideally we'd use a data structure with O(1) lookup
19735 // _and_ ordering for the MozMap, but we don't have one lying
19736 // around.
19737 nsTHashtable<nsStringHashKey> idsSeen;
19738 for (size_t i = 0; i < ids.length(); ++i) {
19739 curId = ids[i];
19740
19741 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
19742 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
19743 &desc)) {
19744 return false;
19745 }
19746
19747 if (desc.isNothing() || !desc->enumerable()) {
19748 continue;
19749 }
19750
19751 idVal = js::IdToValue(curId);
19752 nsString propName;
19753 // This will just throw if idVal is a Symbol, like the spec says
19754 // to do.
19755 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
19756 return false;
19757 }
19758
19759 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
19760 return false;
19761 }
19762
19763 Record<nsString, JS::Value>::EntryType* entry;
19764 if (!idsSeen.EnsureInserted(propName)) {
19765 // Find the existing entry.
19766 auto idx = recordEntries.IndexOf(propName);
19767 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19768); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19768; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
19768 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19768); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19768; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
19769 // Now blow it away to make it look like it was just added
19770 // to the array, because it's not obvious that it's
19771 // safe to write to its already-initialized mValue via our
19772 // normal codegen conversions. For example, the value
19773 // could be a union and this would change its type, but
19774 // codegen assumes we won't do that.
19775 entry = recordEntries.ReconstructElementAt(idx);
19776 } else {
19777 // Safe to do an infallible append here, because we did a
19778 // SetCapacity above to the right capacity.
19779 entry = recordEntries.AppendElement();
19780 }
19781 entry->mKey = propName;
19782 JS::Value& slot = entry->mValue;
19783 slot = temp;
19784 }
19785 } else if (args[0].isNullOrUndefined()) {
19786 arg0.Value().SetNull();
19787 } else {
19788 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
19789 return false;
19790 }
19791 }
19792 // NOTE: This assert does NOT call the function.
19793 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
19794 MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfAny(cx, Constify(arg0));
19795 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19795); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19795; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19796 args.rval().setUndefined();
19797 return true;
19798}
19799
19800static const JSJitInfo passOptionalNullableRecordOfAny_methodinfo = {
19801 { (JSJitGetterOp)passOptionalNullableRecordOfAny },
19802 { prototypes::id::TestExampleInterface },
19803 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19804 JSJitInfo::Method,
19805 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19806 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19807 false, /* isInfallible. False in setters. */
19808 false, /* isMovable. Not relevant for setters. */
19809 false, /* isEliminatable. Not relevant for setters. */
19810 false, /* isAlwaysInSlot. Only relevant for getters. */
19811 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19812 false, /* isTypedMethod. Only relevant for methods. */
19813 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19814};
19815
19816MOZ_CAN_RUN_SCRIPT static bool
19817passOptionalRecordOfAnyWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19818{
19819 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalRecordOfAnyWithDefaultValue");
19820 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19823( cx, "TestExampleInterface"
, "passOptionalRecordOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19821 "TestExampleInterface", "passOptionalRecordOfAnyWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19823( cx, "TestExampleInterface"
, "passOptionalRecordOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19822 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19823( cx, "TestExampleInterface"
, "passOptionalRecordOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
19823 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19823( cx, "TestExampleInterface"
, "passOptionalRecordOfAnyWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
19824
19825 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19826 Nullable<Record<nsString, JS::Value>> arg0;
19827 RecordRooter<nsString, JS::Value> arg0_holder(cx, &arg0.SetValue());
19828 if (args.hasDefined(0)) {
19829 if (args[0].isObject()) {
19830 auto& recordEntries = arg0.SetValue().Entries();
19831
19832 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
19833 JS::RootedVector<jsid> ids(cx);
19834 if (!js::GetPropertyKeys(cx, recordObj,
19835 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
19836 return false;
19837 }
19838 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
19839 JS_ReportOutOfMemory(cx);
19840 return false;
19841 }
19842 JS::Rooted<JS::Value> propNameValue(cx);
19843 JS::Rooted<JS::Value> temp(cx);
19844 JS::Rooted<jsid> curId(cx);
19845 JS::Rooted<JS::Value> idVal(cx);
19846 // Use a hashset to keep track of ids seen, to avoid
19847 // introducing nasty O(N^2) behavior scanning for them all the
19848 // time. Ideally we'd use a data structure with O(1) lookup
19849 // _and_ ordering for the MozMap, but we don't have one lying
19850 // around.
19851 nsTHashtable<nsStringHashKey> idsSeen;
19852 for (size_t i = 0; i < ids.length(); ++i) {
19853 curId = ids[i];
19854
19855 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
19856 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
19857 &desc)) {
19858 return false;
19859 }
19860
19861 if (desc.isNothing() || !desc->enumerable()) {
19862 continue;
19863 }
19864
19865 idVal = js::IdToValue(curId);
19866 nsString propName;
19867 // This will just throw if idVal is a Symbol, like the spec says
19868 // to do.
19869 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
19870 return false;
19871 }
19872
19873 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
19874 return false;
19875 }
19876
19877 Record<nsString, JS::Value>::EntryType* entry;
19878 if (!idsSeen.EnsureInserted(propName)) {
19879 // Find the existing entry.
19880 auto idx = recordEntries.IndexOf(propName);
19881 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19882); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19882; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
19882 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 19882); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 19882; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
19883 // Now blow it away to make it look like it was just added
19884 // to the array, because it's not obvious that it's
19885 // safe to write to its already-initialized mValue via our
19886 // normal codegen conversions. For example, the value
19887 // could be a union and this would change its type, but
19888 // codegen assumes we won't do that.
19889 entry = recordEntries.ReconstructElementAt(idx);
19890 } else {
19891 // Safe to do an infallible append here, because we did a
19892 // SetCapacity above to the right capacity.
19893 entry = recordEntries.AppendElement();
19894 }
19895 entry->mKey = propName;
19896 JS::Value& slot = entry->mValue;
19897 slot = temp;
19898 }
19899 } else if (args[0].isNullOrUndefined()) {
19900 arg0.SetNull();
19901 } else {
19902 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
19903 return false;
19904 }
19905 } else {
19906 arg0.SetNull();
19907 }
19908 // NOTE: This assert does NOT call the function.
19909 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalRecordOfAnyWithDefaultValue(cx, Constify(arg0)))>, "Should be returning void here");
19910 MOZ_KnownLive(self)(self)->PassOptionalRecordOfAnyWithDefaultValue(cx, Constify(arg0));
19911 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 19911); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 19911; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
19912 args.rval().setUndefined();
19913 return true;
19914}
19915
19916static const JSJitInfo passOptionalRecordOfAnyWithDefaultValue_methodinfo = {
19917 { (JSJitGetterOp)passOptionalRecordOfAnyWithDefaultValue },
19918 { prototypes::id::TestExampleInterface },
19919 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
19920 JSJitInfo::Method,
19921 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
19922 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
19923 false, /* isInfallible. False in setters. */
19924 false, /* isMovable. Not relevant for setters. */
19925 false, /* isEliminatable. Not relevant for setters. */
19926 false, /* isAlwaysInSlot. Only relevant for getters. */
19927 false, /* isLazilyCachedInSlot. Only relevant for getters. */
19928 false, /* isTypedMethod. Only relevant for methods. */
19929 0 /* Reserved slot index, if we're stored in a slot, else 0. */
19930};
19931
19932MOZ_CAN_RUN_SCRIPT static bool
19933passRecordOfRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
19934{
19935 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfRecordOfAny");
19936 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject19939( cx, "TestExampleInterface"
, "passRecordOfRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19937 "TestExampleInterface", "passRecordOfRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject19939( cx, "TestExampleInterface"
, "passRecordOfRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19938 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject19939( cx, "TestExampleInterface"
, "passRecordOfRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
19939 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject19939( cx, "TestExampleInterface"
, "passRecordOfRecordOfAny", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
19940
19941 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
19942 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfRecordOfAny", 1)) {
19943 return false;
19944 }
19945 Record<nsString, Record<nsString, JS::Value>> arg0;
19946 RecordRooter<nsString, Record<nsString, JS::Value>> arg0_holder(cx, &arg0);
19947 if (args[0].isObject()) {
19948 auto& recordEntries = arg0.Entries();
19949
19950 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
19951 JS::RootedVector<jsid> ids(cx);
19952 if (!js::GetPropertyKeys(cx, recordObj,
19953 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
19954 return false;
19955 }
19956 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
19957 JS_ReportOutOfMemory(cx);
19958 return false;
19959 }
19960 JS::Rooted<JS::Value> propNameValue(cx);
19961 JS::Rooted<JS::Value> temp(cx);
19962 JS::Rooted<jsid> curId(cx);
19963 JS::Rooted<JS::Value> idVal(cx);
19964 // Use a hashset to keep track of ids seen, to avoid
19965 // introducing nasty O(N^2) behavior scanning for them all the
19966 // time. Ideally we'd use a data structure with O(1) lookup
19967 // _and_ ordering for the MozMap, but we don't have one lying
19968 // around.
19969 nsTHashtable<nsStringHashKey> idsSeen;
19970 for (size_t i = 0; i < ids.length(); ++i) {
19971 curId = ids[i];
19972
19973 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
19974 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
19975 &desc)) {
19976 return false;
19977 }
19978
19979 if (desc.isNothing() || !desc->enumerable()) {
19980 continue;
19981 }
19982
19983 idVal = js::IdToValue(curId);
19984 nsString propName;
19985 // This will just throw if idVal is a Symbol, like the spec says
19986 // to do.
19987 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
19988 return false;
19989 }
19990
19991 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
19992 return false;
19993 }
19994
19995 Record<nsString, Record<nsString, JS::Value>>::EntryType* entry;
19996 if (!idsSeen.EnsureInserted(propName)) {
19997 // Find the existing entry.
19998 auto idx = recordEntries.IndexOf(propName);
19999 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20000); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20000; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20000 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20000); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20000; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20001 // Now blow it away to make it look like it was just added
20002 // to the array, because it's not obvious that it's
20003 // safe to write to its already-initialized mValue via our
20004 // normal codegen conversions. For example, the value
20005 // could be a union and this would change its type, but
20006 // codegen assumes we won't do that.
20007 entry = recordEntries.ReconstructElementAt(idx);
20008 } else {
20009 // Safe to do an infallible append here, because we did a
20010 // SetCapacity above to the right capacity.
20011 entry = recordEntries.AppendElement();
20012 }
20013 entry->mKey = propName;
20014 Record<nsString, JS::Value>& slot = entry->mValue;
20015 if (temp.isObject()) {
20016 auto& recordEntries = slot.Entries();
20017
20018 JS::Rooted<JSObject*> recordObj(cx, &temp.toObject());
20019 JS::RootedVector<jsid> ids(cx);
20020 if (!js::GetPropertyKeys(cx, recordObj,
20021 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20022 return false;
20023 }
20024 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20025 JS_ReportOutOfMemory(cx);
20026 return false;
20027 }
20028 JS::Rooted<JS::Value> propNameValue(cx);
20029 JS::Rooted<JS::Value> temp(cx);
20030 JS::Rooted<jsid> curId(cx);
20031 JS::Rooted<JS::Value> idVal(cx);
20032 // Use a hashset to keep track of ids seen, to avoid
20033 // introducing nasty O(N^2) behavior scanning for them all the
20034 // time. Ideally we'd use a data structure with O(1) lookup
20035 // _and_ ordering for the MozMap, but we don't have one lying
20036 // around.
20037 nsTHashtable<nsStringHashKey> idsSeen;
20038 for (size_t i = 0; i < ids.length(); ++i) {
20039 curId = ids[i];
20040
20041 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20042 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20043 &desc)) {
20044 return false;
20045 }
20046
20047 if (desc.isNothing() || !desc->enumerable()) {
20048 continue;
20049 }
20050
20051 idVal = js::IdToValue(curId);
20052 nsString propName;
20053 // This will just throw if idVal is a Symbol, like the spec says
20054 // to do.
20055 if (!ConvertJSValueToString(cx, idVal, "key of value in argument 1", propName)) {
20056 return false;
20057 }
20058
20059 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20060 return false;
20061 }
20062
20063 Record<nsString, JS::Value>::EntryType* entry;
20064 if (!idsSeen.EnsureInserted(propName)) {
20065 // Find the existing entry.
20066 auto idx = recordEntries.IndexOf(propName);
20067 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20068); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20068; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20068 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20068); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20068; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20069 // Now blow it away to make it look like it was just added
20070 // to the array, because it's not obvious that it's
20071 // safe to write to its already-initialized mValue via our
20072 // normal codegen conversions. For example, the value
20073 // could be a union and this would change its type, but
20074 // codegen assumes we won't do that.
20075 entry = recordEntries.ReconstructElementAt(idx);
20076 } else {
20077 // Safe to do an infallible append here, because we did a
20078 // SetCapacity above to the right capacity.
20079 entry = recordEntries.AppendElement();
20080 }
20081 entry->mKey = propName;
20082 JS::Value& slot = entry->mValue;
20083 slot = temp;
20084 }
20085 } else {
20086 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
20087 return false;
20088 }
20089 }
20090 } else {
20091 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
20092 return false;
20093 }
20094 // NOTE: This assert does NOT call the function.
20095 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
20096 MOZ_KnownLive(self)(self)->PassRecordOfRecordOfAny(cx, Constify(arg0));
20097 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20097); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20097; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20098 args.rval().setUndefined();
20099 return true;
20100}
20101
20102static const JSJitInfo passRecordOfRecordOfAny_methodinfo = {
20103 { (JSJitGetterOp)passRecordOfRecordOfAny },
20104 { prototypes::id::TestExampleInterface },
20105 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
20106 JSJitInfo::Method,
20107 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
20108 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
20109 false, /* isInfallible. False in setters. */
20110 false, /* isMovable. Not relevant for setters. */
20111 false, /* isEliminatable. Not relevant for setters. */
20112 false, /* isAlwaysInSlot. Only relevant for getters. */
20113 false, /* isLazilyCachedInSlot. Only relevant for getters. */
20114 false, /* isTypedMethod. Only relevant for methods. */
20115 0 /* Reserved slot index, if we're stored in a slot, else 0. */
20116};
20117
20118MOZ_CAN_RUN_SCRIPT static bool
20119passRecordOfNullableRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
20120{
20121 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfNullableRecordOfAny");
20122 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject20125( cx, "TestExampleInterface"
, "passRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20123 "TestExampleInterface", "passRecordOfNullableRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject20125( cx, "TestExampleInterface"
, "passRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20124 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject20125( cx, "TestExampleInterface"
, "passRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20125 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject20125( cx, "TestExampleInterface"
, "passRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
20126
20127 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
20128 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfNullableRecordOfAny", 1)) {
20129 return false;
20130 }
20131 Record<nsString, Nullable<Record<nsString, JS::Value>>> arg0;
20132 RecordRooter<nsString, Nullable<Record<nsString, JS::Value>>> arg0_holder(cx, &arg0);
20133 if (args[0].isObject()) {
20134 auto& recordEntries = arg0.Entries();
20135
20136 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
20137 JS::RootedVector<jsid> ids(cx);
20138 if (!js::GetPropertyKeys(cx, recordObj,
20139 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20140 return false;
20141 }
20142 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20143 JS_ReportOutOfMemory(cx);
20144 return false;
20145 }
20146 JS::Rooted<JS::Value> propNameValue(cx);
20147 JS::Rooted<JS::Value> temp(cx);
20148 JS::Rooted<jsid> curId(cx);
20149 JS::Rooted<JS::Value> idVal(cx);
20150 // Use a hashset to keep track of ids seen, to avoid
20151 // introducing nasty O(N^2) behavior scanning for them all the
20152 // time. Ideally we'd use a data structure with O(1) lookup
20153 // _and_ ordering for the MozMap, but we don't have one lying
20154 // around.
20155 nsTHashtable<nsStringHashKey> idsSeen;
20156 for (size_t i = 0; i < ids.length(); ++i) {
20157 curId = ids[i];
20158
20159 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20160 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20161 &desc)) {
20162 return false;
20163 }
20164
20165 if (desc.isNothing() || !desc->enumerable()) {
20166 continue;
20167 }
20168
20169 idVal = js::IdToValue(curId);
20170 nsString propName;
20171 // This will just throw if idVal is a Symbol, like the spec says
20172 // to do.
20173 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
20174 return false;
20175 }
20176
20177 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20178 return false;
20179 }
20180
20181 Record<nsString, Nullable<Record<nsString, JS::Value>>>::EntryType* entry;
20182 if (!idsSeen.EnsureInserted(propName)) {
20183 // Find the existing entry.
20184 auto idx = recordEntries.IndexOf(propName);
20185 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20186); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20186; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20186 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20186); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20186; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20187 // Now blow it away to make it look like it was just added
20188 // to the array, because it's not obvious that it's
20189 // safe to write to its already-initialized mValue via our
20190 // normal codegen conversions. For example, the value
20191 // could be a union and this would change its type, but
20192 // codegen assumes we won't do that.
20193 entry = recordEntries.ReconstructElementAt(idx);
20194 } else {
20195 // Safe to do an infallible append here, because we did a
20196 // SetCapacity above to the right capacity.
20197 entry = recordEntries.AppendElement();
20198 }
20199 entry->mKey = propName;
20200 Nullable<Record<nsString, JS::Value>>& slot = entry->mValue;
20201 if (temp.isObject()) {
20202 auto& recordEntries = slot.SetValue().Entries();
20203
20204 JS::Rooted<JSObject*> recordObj(cx, &temp.toObject());
20205 JS::RootedVector<jsid> ids(cx);
20206 if (!js::GetPropertyKeys(cx, recordObj,
20207 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20208 return false;
20209 }
20210 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20211 JS_ReportOutOfMemory(cx);
20212 return false;
20213 }
20214 JS::Rooted<JS::Value> propNameValue(cx);
20215 JS::Rooted<JS::Value> temp(cx);
20216 JS::Rooted<jsid> curId(cx);
20217 JS::Rooted<JS::Value> idVal(cx);
20218 // Use a hashset to keep track of ids seen, to avoid
20219 // introducing nasty O(N^2) behavior scanning for them all the
20220 // time. Ideally we'd use a data structure with O(1) lookup
20221 // _and_ ordering for the MozMap, but we don't have one lying
20222 // around.
20223 nsTHashtable<nsStringHashKey> idsSeen;
20224 for (size_t i = 0; i < ids.length(); ++i) {
20225 curId = ids[i];
20226
20227 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20228 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20229 &desc)) {
20230 return false;
20231 }
20232
20233 if (desc.isNothing() || !desc->enumerable()) {
20234 continue;
20235 }
20236
20237 idVal = js::IdToValue(curId);
20238 nsString propName;
20239 // This will just throw if idVal is a Symbol, like the spec says
20240 // to do.
20241 if (!ConvertJSValueToString(cx, idVal, "key of value in argument 1", propName)) {
20242 return false;
20243 }
20244
20245 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20246 return false;
20247 }
20248
20249 Record<nsString, JS::Value>::EntryType* entry;
20250 if (!idsSeen.EnsureInserted(propName)) {
20251 // Find the existing entry.
20252 auto idx = recordEntries.IndexOf(propName);
20253 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20254); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20254; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20254 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20254); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20254; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20255 // Now blow it away to make it look like it was just added
20256 // to the array, because it's not obvious that it's
20257 // safe to write to its already-initialized mValue via our
20258 // normal codegen conversions. For example, the value
20259 // could be a union and this would change its type, but
20260 // codegen assumes we won't do that.
20261 entry = recordEntries.ReconstructElementAt(idx);
20262 } else {
20263 // Safe to do an infallible append here, because we did a
20264 // SetCapacity above to the right capacity.
20265 entry = recordEntries.AppendElement();
20266 }
20267 entry->mKey = propName;
20268 JS::Value& slot = entry->mValue;
20269 slot = temp;
20270 }
20271 } else if (temp.isNullOrUndefined()) {
20272 slot.SetNull();
20273 } else {
20274 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
20275 return false;
20276 }
20277 }
20278 } else {
20279 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
20280 return false;
20281 }
20282 // NOTE: This assert does NOT call the function.
20283 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfNullableRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
20284 MOZ_KnownLive(self)(self)->PassRecordOfNullableRecordOfAny(cx, Constify(arg0));
20285 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20285); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20285; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20286 args.rval().setUndefined();
20287 return true;
20288}
20289
20290static const JSJitInfo passRecordOfNullableRecordOfAny_methodinfo = {
20291 { (JSJitGetterOp)passRecordOfNullableRecordOfAny },
20292 { prototypes::id::TestExampleInterface },
20293 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
20294 JSJitInfo::Method,
20295 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
20296 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
20297 false, /* isInfallible. False in setters. */
20298 false, /* isMovable. Not relevant for setters. */
20299 false, /* isEliminatable. Not relevant for setters. */
20300 false, /* isAlwaysInSlot. Only relevant for getters. */
20301 false, /* isLazilyCachedInSlot. Only relevant for getters. */
20302 false, /* isTypedMethod. Only relevant for methods. */
20303 0 /* Reserved slot index, if we're stored in a slot, else 0. */
20304};
20305
20306MOZ_CAN_RUN_SCRIPT static bool
20307passNullableRecordOfNullableRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
20308{
20309 BindingCallContext cx(cx_, "TestExampleInterface.passNullableRecordOfNullableRecordOfAny");
20310 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject20313( cx, "TestExampleInterface"
, "passNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20311 "TestExampleInterface", "passNullableRecordOfNullableRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject20313( cx, "TestExampleInterface"
, "passNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20312 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject20313( cx, "TestExampleInterface"
, "passNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20313 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject20313( cx, "TestExampleInterface"
, "passNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
20314
20315 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
20316 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableRecordOfNullableRecordOfAny", 1)) {
20317 return false;
20318 }
20319 Nullable<Record<nsString, Nullable<Record<nsString, JS::Value>>>> arg0;
20320 RecordRooter<nsString, Nullable<Record<nsString, JS::Value>>> arg0_holder(cx, &arg0.SetValue());
20321 if (args[0].isObject()) {
20322 auto& recordEntries = arg0.SetValue().Entries();
20323
20324 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
20325 JS::RootedVector<jsid> ids(cx);
20326 if (!js::GetPropertyKeys(cx, recordObj,
20327 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20328 return false;
20329 }
20330 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20331 JS_ReportOutOfMemory(cx);
20332 return false;
20333 }
20334 JS::Rooted<JS::Value> propNameValue(cx);
20335 JS::Rooted<JS::Value> temp(cx);
20336 JS::Rooted<jsid> curId(cx);
20337 JS::Rooted<JS::Value> idVal(cx);
20338 // Use a hashset to keep track of ids seen, to avoid
20339 // introducing nasty O(N^2) behavior scanning for them all the
20340 // time. Ideally we'd use a data structure with O(1) lookup
20341 // _and_ ordering for the MozMap, but we don't have one lying
20342 // around.
20343 nsTHashtable<nsStringHashKey> idsSeen;
20344 for (size_t i = 0; i < ids.length(); ++i) {
20345 curId = ids[i];
20346
20347 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20348 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20349 &desc)) {
20350 return false;
20351 }
20352
20353 if (desc.isNothing() || !desc->enumerable()) {
20354 continue;
20355 }
20356
20357 idVal = js::IdToValue(curId);
20358 nsString propName;
20359 // This will just throw if idVal is a Symbol, like the spec says
20360 // to do.
20361 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
20362 return false;
20363 }
20364
20365 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20366 return false;
20367 }
20368
20369 Record<nsString, Nullable<Record<nsString, JS::Value>>>::EntryType* entry;
20370 if (!idsSeen.EnsureInserted(propName)) {
20371 // Find the existing entry.
20372 auto idx = recordEntries.IndexOf(propName);
20373 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20374); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20374; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20374 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20374); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20374; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20375 // Now blow it away to make it look like it was just added
20376 // to the array, because it's not obvious that it's
20377 // safe to write to its already-initialized mValue via our
20378 // normal codegen conversions. For example, the value
20379 // could be a union and this would change its type, but
20380 // codegen assumes we won't do that.
20381 entry = recordEntries.ReconstructElementAt(idx);
20382 } else {
20383 // Safe to do an infallible append here, because we did a
20384 // SetCapacity above to the right capacity.
20385 entry = recordEntries.AppendElement();
20386 }
20387 entry->mKey = propName;
20388 Nullable<Record<nsString, JS::Value>>& slot = entry->mValue;
20389 if (temp.isObject()) {
20390 auto& recordEntries = slot.SetValue().Entries();
20391
20392 JS::Rooted<JSObject*> recordObj(cx, &temp.toObject());
20393 JS::RootedVector<jsid> ids(cx);
20394 if (!js::GetPropertyKeys(cx, recordObj,
20395 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20396 return false;
20397 }
20398 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20399 JS_ReportOutOfMemory(cx);
20400 return false;
20401 }
20402 JS::Rooted<JS::Value> propNameValue(cx);
20403 JS::Rooted<JS::Value> temp(cx);
20404 JS::Rooted<jsid> curId(cx);
20405 JS::Rooted<JS::Value> idVal(cx);
20406 // Use a hashset to keep track of ids seen, to avoid
20407 // introducing nasty O(N^2) behavior scanning for them all the
20408 // time. Ideally we'd use a data structure with O(1) lookup
20409 // _and_ ordering for the MozMap, but we don't have one lying
20410 // around.
20411 nsTHashtable<nsStringHashKey> idsSeen;
20412 for (size_t i = 0; i < ids.length(); ++i) {
20413 curId = ids[i];
20414
20415 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20416 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20417 &desc)) {
20418 return false;
20419 }
20420
20421 if (desc.isNothing() || !desc->enumerable()) {
20422 continue;
20423 }
20424
20425 idVal = js::IdToValue(curId);
20426 nsString propName;
20427 // This will just throw if idVal is a Symbol, like the spec says
20428 // to do.
20429 if (!ConvertJSValueToString(cx, idVal, "key of value in argument 1", propName)) {
20430 return false;
20431 }
20432
20433 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20434 return false;
20435 }
20436
20437 Record<nsString, JS::Value>::EntryType* entry;
20438 if (!idsSeen.EnsureInserted(propName)) {
20439 // Find the existing entry.
20440 auto idx = recordEntries.IndexOf(propName);
20441 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20442); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20442; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20442 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20442); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20442; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20443 // Now blow it away to make it look like it was just added
20444 // to the array, because it's not obvious that it's
20445 // safe to write to its already-initialized mValue via our
20446 // normal codegen conversions. For example, the value
20447 // could be a union and this would change its type, but
20448 // codegen assumes we won't do that.
20449 entry = recordEntries.ReconstructElementAt(idx);
20450 } else {
20451 // Safe to do an infallible append here, because we did a
20452 // SetCapacity above to the right capacity.
20453 entry = recordEntries.AppendElement();
20454 }
20455 entry->mKey = propName;
20456 JS::Value& slot = entry->mValue;
20457 slot = temp;
20458 }
20459 } else if (temp.isNullOrUndefined()) {
20460 slot.SetNull();
20461 } else {
20462 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
20463 return false;
20464 }
20465 }
20466 } else if (args[0].isNullOrUndefined()) {
20467 arg0.SetNull();
20468 } else {
20469 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
20470 return false;
20471 }
20472 // NOTE: This assert does NOT call the function.
20473 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableRecordOfNullableRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
20474 MOZ_KnownLive(self)(self)->PassNullableRecordOfNullableRecordOfAny(cx, Constify(arg0));
20475 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20475); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20475; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20476 args.rval().setUndefined();
20477 return true;
20478}
20479
20480static const JSJitInfo passNullableRecordOfNullableRecordOfAny_methodinfo = {
20481 { (JSJitGetterOp)passNullableRecordOfNullableRecordOfAny },
20482 { prototypes::id::TestExampleInterface },
20483 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
20484 JSJitInfo::Method,
20485 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
20486 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
20487 false, /* isInfallible. False in setters. */
20488 false, /* isMovable. Not relevant for setters. */
20489 false, /* isEliminatable. Not relevant for setters. */
20490 false, /* isAlwaysInSlot. Only relevant for getters. */
20491 false, /* isLazilyCachedInSlot. Only relevant for getters. */
20492 false, /* isTypedMethod. Only relevant for methods. */
20493 0 /* Reserved slot index, if we're stored in a slot, else 0. */
20494};
20495
20496MOZ_CAN_RUN_SCRIPT static bool
20497passOptionalNullableRecordOfNullableRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
20498{
20499 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableRecordOfNullableRecordOfAny");
20500 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject20503( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20501 "TestExampleInterface", "passOptionalNullableRecordOfNullableRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject20503( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20502 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject20503( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20503 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject20503( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
20504
20505 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
20506 Optional<Nullable<Record<nsString, Nullable<Record<nsString, JS::Value>>>>> arg0;
20507 Maybe<RecordRooter<nsString, Nullable<Record<nsString, JS::Value>>>> arg0_holder;
20508 if (args.hasDefined(0)) {
20509 arg0.Construct();
20510 arg0_holder.emplace(cx, &arg0.Value().SetValue());
20511 if (args[0].isObject()) {
20512 auto& recordEntries = arg0.Value().SetValue().Entries();
20513
20514 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
20515 JS::RootedVector<jsid> ids(cx);
20516 if (!js::GetPropertyKeys(cx, recordObj,
20517 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20518 return false;
20519 }
20520 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20521 JS_ReportOutOfMemory(cx);
20522 return false;
20523 }
20524 JS::Rooted<JS::Value> propNameValue(cx);
20525 JS::Rooted<JS::Value> temp(cx);
20526 JS::Rooted<jsid> curId(cx);
20527 JS::Rooted<JS::Value> idVal(cx);
20528 // Use a hashset to keep track of ids seen, to avoid
20529 // introducing nasty O(N^2) behavior scanning for them all the
20530 // time. Ideally we'd use a data structure with O(1) lookup
20531 // _and_ ordering for the MozMap, but we don't have one lying
20532 // around.
20533 nsTHashtable<nsStringHashKey> idsSeen;
20534 for (size_t i = 0; i < ids.length(); ++i) {
20535 curId = ids[i];
20536
20537 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20538 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20539 &desc)) {
20540 return false;
20541 }
20542
20543 if (desc.isNothing() || !desc->enumerable()) {
20544 continue;
20545 }
20546
20547 idVal = js::IdToValue(curId);
20548 nsString propName;
20549 // This will just throw if idVal is a Symbol, like the spec says
20550 // to do.
20551 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
20552 return false;
20553 }
20554
20555 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20556 return false;
20557 }
20558
20559 Record<nsString, Nullable<Record<nsString, JS::Value>>>::EntryType* entry;
20560 if (!idsSeen.EnsureInserted(propName)) {
20561 // Find the existing entry.
20562 auto idx = recordEntries.IndexOf(propName);
20563 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20564); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20564; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20564 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20564); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20564; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20565 // Now blow it away to make it look like it was just added
20566 // to the array, because it's not obvious that it's
20567 // safe to write to its already-initialized mValue via our
20568 // normal codegen conversions. For example, the value
20569 // could be a union and this would change its type, but
20570 // codegen assumes we won't do that.
20571 entry = recordEntries.ReconstructElementAt(idx);
20572 } else {
20573 // Safe to do an infallible append here, because we did a
20574 // SetCapacity above to the right capacity.
20575 entry = recordEntries.AppendElement();
20576 }
20577 entry->mKey = propName;
20578 Nullable<Record<nsString, JS::Value>>& slot = entry->mValue;
20579 if (temp.isObject()) {
20580 auto& recordEntries = slot.SetValue().Entries();
20581
20582 JS::Rooted<JSObject*> recordObj(cx, &temp.toObject());
20583 JS::RootedVector<jsid> ids(cx);
20584 if (!js::GetPropertyKeys(cx, recordObj,
20585 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20586 return false;
20587 }
20588 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20589 JS_ReportOutOfMemory(cx);
20590 return false;
20591 }
20592 JS::Rooted<JS::Value> propNameValue(cx);
20593 JS::Rooted<JS::Value> temp(cx);
20594 JS::Rooted<jsid> curId(cx);
20595 JS::Rooted<JS::Value> idVal(cx);
20596 // Use a hashset to keep track of ids seen, to avoid
20597 // introducing nasty O(N^2) behavior scanning for them all the
20598 // time. Ideally we'd use a data structure with O(1) lookup
20599 // _and_ ordering for the MozMap, but we don't have one lying
20600 // around.
20601 nsTHashtable<nsStringHashKey> idsSeen;
20602 for (size_t i = 0; i < ids.length(); ++i) {
20603 curId = ids[i];
20604
20605 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20606 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20607 &desc)) {
20608 return false;
20609 }
20610
20611 if (desc.isNothing() || !desc->enumerable()) {
20612 continue;
20613 }
20614
20615 idVal = js::IdToValue(curId);
20616 nsString propName;
20617 // This will just throw if idVal is a Symbol, like the spec says
20618 // to do.
20619 if (!ConvertJSValueToString(cx, idVal, "key of value in argument 1", propName)) {
20620 return false;
20621 }
20622
20623 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20624 return false;
20625 }
20626
20627 Record<nsString, JS::Value>::EntryType* entry;
20628 if (!idsSeen.EnsureInserted(propName)) {
20629 // Find the existing entry.
20630 auto idx = recordEntries.IndexOf(propName);
20631 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20632); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20632; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20632 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20632); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20632; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20633 // Now blow it away to make it look like it was just added
20634 // to the array, because it's not obvious that it's
20635 // safe to write to its already-initialized mValue via our
20636 // normal codegen conversions. For example, the value
20637 // could be a union and this would change its type, but
20638 // codegen assumes we won't do that.
20639 entry = recordEntries.ReconstructElementAt(idx);
20640 } else {
20641 // Safe to do an infallible append here, because we did a
20642 // SetCapacity above to the right capacity.
20643 entry = recordEntries.AppendElement();
20644 }
20645 entry->mKey = propName;
20646 JS::Value& slot = entry->mValue;
20647 slot = temp;
20648 }
20649 } else if (temp.isNullOrUndefined()) {
20650 slot.SetNull();
20651 } else {
20652 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
20653 return false;
20654 }
20655 }
20656 } else if (args[0].isNullOrUndefined()) {
20657 arg0.Value().SetNull();
20658 } else {
20659 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
20660 return false;
20661 }
20662 }
20663 // NOTE: This assert does NOT call the function.
20664 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfNullableRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
20665 MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfNullableRecordOfAny(cx, Constify(arg0));
20666 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20666); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20666; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20667 args.rval().setUndefined();
20668 return true;
20669}
20670
20671static const JSJitInfo passOptionalNullableRecordOfNullableRecordOfAny_methodinfo = {
20672 { (JSJitGetterOp)passOptionalNullableRecordOfNullableRecordOfAny },
20673 { prototypes::id::TestExampleInterface },
20674 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
20675 JSJitInfo::Method,
20676 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
20677 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
20678 false, /* isInfallible. False in setters. */
20679 false, /* isMovable. Not relevant for setters. */
20680 false, /* isEliminatable. Not relevant for setters. */
20681 false, /* isAlwaysInSlot. Only relevant for getters. */
20682 false, /* isLazilyCachedInSlot. Only relevant for getters. */
20683 false, /* isTypedMethod. Only relevant for methods. */
20684 0 /* Reserved slot index, if we're stored in a slot, else 0. */
20685};
20686
20687MOZ_CAN_RUN_SCRIPT static bool
20688passOptionalNullableRecordOfNullableSequenceOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
20689{
20690 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableRecordOfNullableSequenceOfAny");
20691 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject20694( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20692 "TestExampleInterface", "passOptionalNullableRecordOfNullableSequenceOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject20694( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20693 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject20694( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20694 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject20694( cx, "TestExampleInterface"
, "passOptionalNullableRecordOfNullableSequenceOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
20695
20696 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
20697 Optional<Nullable<Record<nsString, Nullable<Sequence<JS::Value>>>>> arg0;
20698 Maybe<RecordRooter<nsString, Nullable<Sequence<JS::Value>>>> arg0_holder;
20699 if (args.hasDefined(0)) {
20700 arg0.Construct();
20701 arg0_holder.emplace(cx, &arg0.Value().SetValue());
20702 if (args[0].isObject()) {
20703 auto& recordEntries = arg0.Value().SetValue().Entries();
20704
20705 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
20706 JS::RootedVector<jsid> ids(cx);
20707 if (!js::GetPropertyKeys(cx, recordObj,
20708 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20709 return false;
20710 }
20711 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20712 JS_ReportOutOfMemory(cx);
20713 return false;
20714 }
20715 JS::Rooted<JS::Value> propNameValue(cx);
20716 JS::Rooted<JS::Value> temp(cx);
20717 JS::Rooted<jsid> curId(cx);
20718 JS::Rooted<JS::Value> idVal(cx);
20719 // Use a hashset to keep track of ids seen, to avoid
20720 // introducing nasty O(N^2) behavior scanning for them all the
20721 // time. Ideally we'd use a data structure with O(1) lookup
20722 // _and_ ordering for the MozMap, but we don't have one lying
20723 // around.
20724 nsTHashtable<nsStringHashKey> idsSeen;
20725 for (size_t i = 0; i < ids.length(); ++i) {
20726 curId = ids[i];
20727
20728 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20729 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20730 &desc)) {
20731 return false;
20732 }
20733
20734 if (desc.isNothing() || !desc->enumerable()) {
20735 continue;
20736 }
20737
20738 idVal = js::IdToValue(curId);
20739 nsString propName;
20740 // This will just throw if idVal is a Symbol, like the spec says
20741 // to do.
20742 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
20743 return false;
20744 }
20745
20746 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20747 return false;
20748 }
20749
20750 Record<nsString, Nullable<Sequence<JS::Value>>>::EntryType* entry;
20751 if (!idsSeen.EnsureInserted(propName)) {
20752 // Find the existing entry.
20753 auto idx = recordEntries.IndexOf(propName);
20754 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20755); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20755; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20755 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20755); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20755; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20756 // Now blow it away to make it look like it was just added
20757 // to the array, because it's not obvious that it's
20758 // safe to write to its already-initialized mValue via our
20759 // normal codegen conversions. For example, the value
20760 // could be a union and this would change its type, but
20761 // codegen assumes we won't do that.
20762 entry = recordEntries.ReconstructElementAt(idx);
20763 } else {
20764 // Safe to do an infallible append here, because we did a
20765 // SetCapacity above to the right capacity.
20766 entry = recordEntries.AppendElement();
20767 }
20768 entry->mKey = propName;
20769 Nullable<Sequence<JS::Value>>& slot = entry->mValue;
20770 if (temp.isObject()) {
20771 JS::ForOfIterator iter1(cx);
20772 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
20773 return false;
20774 }
20775 if (!iter1.valueIsIterable()) {
20776 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value in argument 1", "sequence");
20777 return false;
20778 }
20779 Sequence<JS::Value> &arr1 = slot.SetValue();
20780 JS::Rooted<JS::Value> temp1(cx);
20781 while (true) {
20782 bool done1;
20783 if (!iter1.next(&temp1, &done1)) {
20784 return false;
20785 }
20786 if (done1) {
20787 break;
20788 }
20789 JS::Value* slotPtr1 = arr1.AppendElement(mozilla::fallible);
20790 if (!slotPtr1) {
20791 JS_ReportOutOfMemory(cx);
20792 return false;
20793 }
20794 JS::Value& slot1 = *slotPtr1;
20795 slot1 = temp1;
20796 }
20797 } else if (temp.isNullOrUndefined()) {
20798 slot.SetNull();
20799 } else {
20800 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value in argument 1", "sequence");
20801 return false;
20802 }
20803 }
20804 } else if (args[0].isNullOrUndefined()) {
20805 arg0.Value().SetNull();
20806 } else {
20807 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
20808 return false;
20809 }
20810 }
20811 // NOTE: This assert does NOT call the function.
20812 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfNullableSequenceOfAny(cx, Constify(arg0)))>, "Should be returning void here");
20813 MOZ_KnownLive(self)(self)->PassOptionalNullableRecordOfNullableSequenceOfAny(cx, Constify(arg0));
20814 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20814); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20814; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20815 args.rval().setUndefined();
20816 return true;
20817}
20818
20819static const JSJitInfo passOptionalNullableRecordOfNullableSequenceOfAny_methodinfo = {
20820 { (JSJitGetterOp)passOptionalNullableRecordOfNullableSequenceOfAny },
20821 { prototypes::id::TestExampleInterface },
20822 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
20823 JSJitInfo::Method,
20824 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
20825 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
20826 false, /* isInfallible. False in setters. */
20827 false, /* isMovable. Not relevant for setters. */
20828 false, /* isEliminatable. Not relevant for setters. */
20829 false, /* isAlwaysInSlot. Only relevant for getters. */
20830 false, /* isLazilyCachedInSlot. Only relevant for getters. */
20831 false, /* isTypedMethod. Only relevant for methods. */
20832 0 /* Reserved slot index, if we're stored in a slot, else 0. */
20833};
20834
20835MOZ_CAN_RUN_SCRIPT static bool
20836passOptionalNullableSequenceOfNullableRecordOfAny(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
20837{
20838 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceOfNullableRecordOfAny");
20839 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject20842( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20840 "TestExampleInterface", "passOptionalNullableSequenceOfNullableRecordOfAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject20842( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20841 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject20842( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
20842 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject20842( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableRecordOfAny", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
20843
20844 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
20845 Optional<Nullable<Sequence<Nullable<Record<nsString, JS::Value>>>>> arg0;
20846 Maybe<SequenceRooter<Nullable<Record<nsString, JS::Value>>>> arg0_holder;
20847 if (args.hasDefined(0)) {
20848 arg0.Construct();
20849 arg0_holder.emplace(cx, &arg0.Value().SetValue());
20850 if (args[0].isObject()) {
20851 JS::ForOfIterator iter(cx);
20852 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
20853 return false;
20854 }
20855 if (!iter.valueIsIterable()) {
20856 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
20857 return false;
20858 }
20859 Sequence<Nullable<Record<nsString, JS::Value>>> &arr = arg0.Value().SetValue();
20860 JS::Rooted<JS::Value> temp(cx);
20861 while (true) {
20862 bool done;
20863 if (!iter.next(&temp, &done)) {
20864 return false;
20865 }
20866 if (done) {
20867 break;
20868 }
20869 Nullable<Record<nsString, JS::Value>>* slotPtr = arr.AppendElement(mozilla::fallible);
20870 if (!slotPtr) {
20871 JS_ReportOutOfMemory(cx);
20872 return false;
20873 }
20874 Nullable<Record<nsString, JS::Value>>& slot = *slotPtr;
20875 if (temp.isObject()) {
20876 auto& recordEntries = slot.SetValue().Entries();
20877
20878 JS::Rooted<JSObject*> recordObj(cx, &temp.toObject());
20879 JS::RootedVector<jsid> ids(cx);
20880 if (!js::GetPropertyKeys(cx, recordObj,
20881 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
20882 return false;
20883 }
20884 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
20885 JS_ReportOutOfMemory(cx);
20886 return false;
20887 }
20888 JS::Rooted<JS::Value> propNameValue(cx);
20889 JS::Rooted<JS::Value> temp(cx);
20890 JS::Rooted<jsid> curId(cx);
20891 JS::Rooted<JS::Value> idVal(cx);
20892 // Use a hashset to keep track of ids seen, to avoid
20893 // introducing nasty O(N^2) behavior scanning for them all the
20894 // time. Ideally we'd use a data structure with O(1) lookup
20895 // _and_ ordering for the MozMap, but we don't have one lying
20896 // around.
20897 nsTHashtable<nsStringHashKey> idsSeen;
20898 for (size_t i = 0; i < ids.length(); ++i) {
20899 curId = ids[i];
20900
20901 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
20902 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
20903 &desc)) {
20904 return false;
20905 }
20906
20907 if (desc.isNothing() || !desc->enumerable()) {
20908 continue;
20909 }
20910
20911 idVal = js::IdToValue(curId);
20912 nsString propName;
20913 // This will just throw if idVal is a Symbol, like the spec says
20914 // to do.
20915 if (!ConvertJSValueToString(cx, idVal, "key of element of argument 1", propName)) {
20916 return false;
20917 }
20918
20919 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
20920 return false;
20921 }
20922
20923 Record<nsString, JS::Value>::EntryType* entry;
20924 if (!idsSeen.EnsureInserted(propName)) {
20925 // Find the existing entry.
20926 auto idx = recordEntries.IndexOf(propName);
20927 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20928); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20928; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
20928 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 20928); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 20928; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
20929 // Now blow it away to make it look like it was just added
20930 // to the array, because it's not obvious that it's
20931 // safe to write to its already-initialized mValue via our
20932 // normal codegen conversions. For example, the value
20933 // could be a union and this would change its type, but
20934 // codegen assumes we won't do that.
20935 entry = recordEntries.ReconstructElementAt(idx);
20936 } else {
20937 // Safe to do an infallible append here, because we did a
20938 // SetCapacity above to the right capacity.
20939 entry = recordEntries.AppendElement();
20940 }
20941 entry->mKey = propName;
20942 JS::Value& slot = entry->mValue;
20943 slot = temp;
20944 }
20945 } else if (temp.isNullOrUndefined()) {
20946 slot.SetNull();
20947 } else {
20948 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
20949 return false;
20950 }
20951 }
20952 } else if (args[0].isNullOrUndefined()) {
20953 arg0.Value().SetNull();
20954 } else {
20955 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
20956 return false;
20957 }
20958 }
20959 // NOTE: This assert does NOT call the function.
20960 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableRecordOfAny(cx, Constify(arg0)))>, "Should be returning void here");
20961 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableRecordOfAny(cx, Constify(arg0));
20962 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20962); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20962; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20963 args.rval().setUndefined();
20964 return true;
20965}
20966
20967static const JSJitInfo passOptionalNullableSequenceOfNullableRecordOfAny_methodinfo = {
20968 { (JSJitGetterOp)passOptionalNullableSequenceOfNullableRecordOfAny },
20969 { prototypes::id::TestExampleInterface },
20970 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
20971 JSJitInfo::Method,
20972 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
20973 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
20974 false, /* isInfallible. False in setters. */
20975 false, /* isMovable. Not relevant for setters. */
20976 false, /* isEliminatable. Not relevant for setters. */
20977 false, /* isAlwaysInSlot. Only relevant for getters. */
20978 false, /* isLazilyCachedInSlot. Only relevant for getters. */
20979 false, /* isTypedMethod. Only relevant for methods. */
20980 0 /* Reserved slot index, if we're stored in a slot, else 0. */
20981};
20982
20983MOZ_CAN_RUN_SCRIPT static bool
20984receiveAny(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
20985{
20986 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject20989( cx, "TestExampleInterface"
, "receiveAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
20987 "TestExampleInterface", "receiveAny", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject20989( cx, "TestExampleInterface"
, "receiveAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
20988 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject20989( cx, "TestExampleInterface"
, "receiveAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
20989 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject20989( cx, "TestExampleInterface"
, "receiveAny", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
20990
20991 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
20992 JS::Rooted<JS::Value> result(cx);
20993 // NOTE: This assert does NOT call the function.
20994 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveAny(cx, &result))>, "Should be returning void here");
20995 MOZ_KnownLive(self)(self)->ReceiveAny(cx, &result);
20996 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 20996); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 20996; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
20997 JS::ExposeValueToActiveJS(result);
20998 args.rval().set(result);
20999 if (!MaybeWrapValue(cx, args.rval())) {
21000 return false;
21001 }
21002 return true;
21003}
21004
21005static const JSJitInfo receiveAny_methodinfo = {
21006 { (JSJitGetterOp)receiveAny },
21007 { prototypes::id::TestExampleInterface },
21008 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21009 JSJitInfo::Method,
21010 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21011 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
21012 false, /* isInfallible. False in setters. */
21013 false, /* isMovable. Not relevant for setters. */
21014 false, /* isEliminatable. Not relevant for setters. */
21015 false, /* isAlwaysInSlot. Only relevant for getters. */
21016 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21017 false, /* isTypedMethod. Only relevant for methods. */
21018 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21019};
21020
21021MOZ_CAN_RUN_SCRIPT static bool
21022passObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21023{
21024 BindingCallContext cx(cx_, "TestExampleInterface.passObject");
21025 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21028( cx, "TestExampleInterface"
, "passObject", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21026 "TestExampleInterface", "passObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21028( cx, "TestExampleInterface"
, "passObject", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21027 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21028( cx, "TestExampleInterface"
, "passObject", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21028 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21028( cx, "TestExampleInterface"
, "passObject", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21029
21030 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21031 if (!args.requireAtLeast(cx, "TestExampleInterface.passObject", 1)) {
21032 return false;
21033 }
21034 JS::Rooted<JSObject*> arg0(cx);
21035 if (args[0].isObject()) {
21036 arg0 = &args[0].toObject();
21037 } else {
21038 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21039 return false;
21040 }
21041 // NOTE: This assert does NOT call the function.
21042 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassObject(cx, arg0))>, "Should be returning void here");
21043 MOZ_KnownLive(self)(self)->PassObject(cx, arg0);
21044 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21044); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21044; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21045 args.rval().setUndefined();
21046 return true;
21047}
21048
21049static const JSJitInfo passObject_methodinfo = {
21050 { (JSJitGetterOp)passObject },
21051 { prototypes::id::TestExampleInterface },
21052 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21053 JSJitInfo::Method,
21054 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21055 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21056 false, /* isInfallible. False in setters. */
21057 false, /* isMovable. Not relevant for setters. */
21058 false, /* isEliminatable. Not relevant for setters. */
21059 false, /* isAlwaysInSlot. Only relevant for getters. */
21060 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21061 false, /* isTypedMethod. Only relevant for methods. */
21062 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21063};
21064
21065MOZ_CAN_RUN_SCRIPT static bool
21066passVariadicObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21067{
21068 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicObject");
21069 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21072( cx, "TestExampleInterface"
, "passVariadicObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21070 "TestExampleInterface", "passVariadicObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21072( cx, "TestExampleInterface"
, "passVariadicObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21071 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21072( cx, "TestExampleInterface"
, "passVariadicObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21072 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21072( cx, "TestExampleInterface"
, "passVariadicObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21073
21074 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21075 AutoSequence<JSObject*> arg0;
21076 SequenceRooter<JSObject*> arg0_holder(cx, &arg0);
21077 if (args.length() > 0) {
21078 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
21079 JS_ReportOutOfMemory(cx);
21080 return false;
21081 }
21082 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
21083 // OK to do infallible append here, since we ensured capacity already.
21084 JSObject*& slot = *arg0.AppendElement(nullptr);
21085 if (args[variadicArg].isObject()) {
21086 slot = &args[variadicArg].toObject();
21087 } else {
21088 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21089 return false;
21090 }
21091 }
21092 }
21093 // NOTE: This assert does NOT call the function.
21094 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicObject(cx, Constify(arg0)))>, "Should be returning void here");
21095 MOZ_KnownLive(self)(self)->PassVariadicObject(cx, Constify(arg0));
21096 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21096); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21096; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21097 args.rval().setUndefined();
21098 return true;
21099}
21100
21101static const JSJitInfo passVariadicObject_methodinfo = {
21102 { (JSJitGetterOp)passVariadicObject },
21103 { prototypes::id::TestExampleInterface },
21104 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21105 JSJitInfo::Method,
21106 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21107 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21108 false, /* isInfallible. False in setters. */
21109 false, /* isMovable. Not relevant for setters. */
21110 false, /* isEliminatable. Not relevant for setters. */
21111 false, /* isAlwaysInSlot. Only relevant for getters. */
21112 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21113 false, /* isTypedMethod. Only relevant for methods. */
21114 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21115};
21116
21117MOZ_CAN_RUN_SCRIPT static bool
21118passNullableObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21119{
21120 BindingCallContext cx(cx_, "TestExampleInterface.passNullableObject");
21121 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21124( cx, "TestExampleInterface"
, "passNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21122 "TestExampleInterface", "passNullableObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21124( cx, "TestExampleInterface"
, "passNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21123 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21124( cx, "TestExampleInterface"
, "passNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21124 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21124( cx, "TestExampleInterface"
, "passNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21125
21126 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21127 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableObject", 1)) {
21128 return false;
21129 }
21130 JS::Rooted<JSObject*> arg0(cx);
21131 if (args[0].isObject()) {
21132 arg0 = &args[0].toObject();
21133 } else if (args[0].isNullOrUndefined()) {
21134 arg0 = nullptr;
21135 } else {
21136 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21137 return false;
21138 }
21139 // NOTE: This assert does NOT call the function.
21140 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableObject(cx, arg0))>, "Should be returning void here");
21141 MOZ_KnownLive(self)(self)->PassNullableObject(cx, arg0);
21142 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21142); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21142; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21143 args.rval().setUndefined();
21144 return true;
21145}
21146
21147static const JSJitInfo passNullableObject_methodinfo = {
21148 { (JSJitGetterOp)passNullableObject },
21149 { prototypes::id::TestExampleInterface },
21150 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21151 JSJitInfo::Method,
21152 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21153 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21154 false, /* isInfallible. False in setters. */
21155 false, /* isMovable. Not relevant for setters. */
21156 false, /* isEliminatable. Not relevant for setters. */
21157 false, /* isAlwaysInSlot. Only relevant for getters. */
21158 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21159 false, /* isTypedMethod. Only relevant for methods. */
21160 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21161};
21162
21163MOZ_CAN_RUN_SCRIPT static bool
21164passVariadicNullableObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21165{
21166 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicNullableObject");
21167 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21170( cx, "TestExampleInterface"
, "passVariadicNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21168 "TestExampleInterface", "passVariadicNullableObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21170( cx, "TestExampleInterface"
, "passVariadicNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21169 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21170( cx, "TestExampleInterface"
, "passVariadicNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21170 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21170( cx, "TestExampleInterface"
, "passVariadicNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
21171
21172 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21173 AutoSequence<JSObject*> arg0;
21174 SequenceRooter<JSObject*> arg0_holder(cx, &arg0);
21175 if (args.length() > 0) {
21176 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
21177 JS_ReportOutOfMemory(cx);
21178 return false;
21179 }
21180 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
21181 // OK to do infallible append here, since we ensured capacity already.
21182 JSObject*& slot = *arg0.AppendElement(nullptr);
21183 if (args[variadicArg].isObject()) {
21184 slot = &args[variadicArg].toObject();
21185 } else {
21186 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21187 return false;
21188 }
21189 }
21190 }
21191 // NOTE: This assert does NOT call the function.
21192 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicNullableObject(cx, Constify(arg0)))>, "Should be returning void here");
21193 MOZ_KnownLive(self)(self)->PassVariadicNullableObject(cx, Constify(arg0));
21194 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21194); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21194; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21195 args.rval().setUndefined();
21196 return true;
21197}
21198
21199static const JSJitInfo passVariadicNullableObject_methodinfo = {
21200 { (JSJitGetterOp)passVariadicNullableObject },
21201 { prototypes::id::TestExampleInterface },
21202 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21203 JSJitInfo::Method,
21204 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21205 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21206 false, /* isInfallible. False in setters. */
21207 false, /* isMovable. Not relevant for setters. */
21208 false, /* isEliminatable. Not relevant for setters. */
21209 false, /* isAlwaysInSlot. Only relevant for getters. */
21210 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21211 false, /* isTypedMethod. Only relevant for methods. */
21212 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21213};
21214
21215MOZ_CAN_RUN_SCRIPT static bool
21216passOptionalObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21217{
21218 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalObject");
21219 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21222( cx, "TestExampleInterface"
, "passOptionalObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21220 "TestExampleInterface", "passOptionalObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21222( cx, "TestExampleInterface"
, "passOptionalObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21221 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21222( cx, "TestExampleInterface"
, "passOptionalObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21222 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21222( cx, "TestExampleInterface"
, "passOptionalObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21223
21224 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21225 Optional<JS::Handle<JSObject*>> arg0;
21226 if (args.hasDefined(0)) {
21227 arg0.Construct(cx);
21228 if (args[0].isObject()) {
21229 arg0.Value() = &args[0].toObject();
21230 } else {
21231 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21232 return false;
21233 }
21234 }
21235 // NOTE: This assert does NOT call the function.
21236 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalObject(cx, Constify(arg0)))>, "Should be returning void here");
21237 MOZ_KnownLive(self)(self)->PassOptionalObject(cx, Constify(arg0));
21238 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21238); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21238; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21239 args.rval().setUndefined();
21240 return true;
21241}
21242
21243static const JSJitInfo passOptionalObject_methodinfo = {
21244 { (JSJitGetterOp)passOptionalObject },
21245 { prototypes::id::TestExampleInterface },
21246 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21247 JSJitInfo::Method,
21248 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21249 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21250 false, /* isInfallible. False in setters. */
21251 false, /* isMovable. Not relevant for setters. */
21252 false, /* isEliminatable. Not relevant for setters. */
21253 false, /* isAlwaysInSlot. Only relevant for getters. */
21254 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21255 false, /* isTypedMethod. Only relevant for methods. */
21256 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21257};
21258
21259MOZ_CAN_RUN_SCRIPT static bool
21260passOptionalNullableObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21261{
21262 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableObject");
21263 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21266( cx, "TestExampleInterface"
, "passOptionalNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21264 "TestExampleInterface", "passOptionalNullableObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21266( cx, "TestExampleInterface"
, "passOptionalNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21265 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21266( cx, "TestExampleInterface"
, "passOptionalNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21266 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21266( cx, "TestExampleInterface"
, "passOptionalNullableObject", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
21267
21268 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21269 Optional<JS::Handle<JSObject*>> arg0;
21270 if (args.hasDefined(0)) {
21271 arg0.Construct(cx);
21272 if (args[0].isObject()) {
21273 arg0.Value() = &args[0].toObject();
21274 } else if (args[0].isNullOrUndefined()) {
21275 arg0.Value() = nullptr;
21276 } else {
21277 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21278 return false;
21279 }
21280 }
21281 // NOTE: This assert does NOT call the function.
21282 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableObject(cx, Constify(arg0)))>, "Should be returning void here");
21283 MOZ_KnownLive(self)(self)->PassOptionalNullableObject(cx, Constify(arg0));
21284 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21284); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21284; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21285 args.rval().setUndefined();
21286 return true;
21287}
21288
21289static const JSJitInfo passOptionalNullableObject_methodinfo = {
21290 { (JSJitGetterOp)passOptionalNullableObject },
21291 { prototypes::id::TestExampleInterface },
21292 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21293 JSJitInfo::Method,
21294 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21295 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21296 false, /* isInfallible. False in setters. */
21297 false, /* isMovable. Not relevant for setters. */
21298 false, /* isEliminatable. Not relevant for setters. */
21299 false, /* isAlwaysInSlot. Only relevant for getters. */
21300 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21301 false, /* isTypedMethod. Only relevant for methods. */
21302 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21303};
21304
21305MOZ_CAN_RUN_SCRIPT static bool
21306passOptionalNullableObjectWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21307{
21308 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableObjectWithDefaultValue");
21309 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21312( cx, "TestExampleInterface"
, "passOptionalNullableObjectWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21310 "TestExampleInterface", "passOptionalNullableObjectWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21312( cx, "TestExampleInterface"
, "passOptionalNullableObjectWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21311 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21312( cx, "TestExampleInterface"
, "passOptionalNullableObjectWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21312 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21312( cx, "TestExampleInterface"
, "passOptionalNullableObjectWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
21313
21314 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21315 JS::Rooted<JSObject*> arg0(cx);
21316 if (args.hasDefined(0)) {
21317 if (args[0].isObject()) {
21318 arg0 = &args[0].toObject();
21319 } else if (args[0].isNullOrUndefined()) {
21320 arg0 = nullptr;
21321 } else {
21322 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21323 return false;
21324 }
21325 } else {
21326 arg0 = nullptr;
21327 }
21328 // NOTE: This assert does NOT call the function.
21329 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableObjectWithDefaultValue(cx, arg0))>, "Should be returning void here");
21330 MOZ_KnownLive(self)(self)->PassOptionalNullableObjectWithDefaultValue(cx, arg0);
21331 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21331); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21331; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21332 args.rval().setUndefined();
21333 return true;
21334}
21335
21336static const JSJitInfo passOptionalNullableObjectWithDefaultValue_methodinfo = {
21337 { (JSJitGetterOp)passOptionalNullableObjectWithDefaultValue },
21338 { prototypes::id::TestExampleInterface },
21339 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21340 JSJitInfo::Method,
21341 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21342 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21343 false, /* isInfallible. False in setters. */
21344 false, /* isMovable. Not relevant for setters. */
21345 false, /* isEliminatable. Not relevant for setters. */
21346 false, /* isAlwaysInSlot. Only relevant for getters. */
21347 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21348 false, /* isTypedMethod. Only relevant for methods. */
21349 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21350};
21351
21352MOZ_CAN_RUN_SCRIPT static bool
21353passSequenceOfObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21354{
21355 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfObject");
21356 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21359( cx, "TestExampleInterface"
, "passSequenceOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21357 "TestExampleInterface", "passSequenceOfObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21359( cx, "TestExampleInterface"
, "passSequenceOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21358 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21359( cx, "TestExampleInterface"
, "passSequenceOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21359 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21359( cx, "TestExampleInterface"
, "passSequenceOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21360
21361 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21362 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfObject", 1)) {
21363 return false;
21364 }
21365 binding_detail::AutoSequence<JSObject*> arg0;
21366 SequenceRooter<JSObject*> arg0_holder(cx, &arg0);
21367 if (args[0].isObject()) {
21368 JS::ForOfIterator iter(cx);
21369 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
21370 return false;
21371 }
21372 if (!iter.valueIsIterable()) {
21373 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21374 return false;
21375 }
21376 binding_detail::AutoSequence<JSObject*> &arr = arg0;
21377 JS::Rooted<JS::Value> temp(cx);
21378 while (true) {
21379 bool done;
21380 if (!iter.next(&temp, &done)) {
21381 return false;
21382 }
21383 if (done) {
21384 break;
21385 }
21386 JSObject** slotPtr = arr.AppendElement(nullptr, mozilla::fallible);
21387 if (!slotPtr) {
21388 JS_ReportOutOfMemory(cx);
21389 return false;
21390 }
21391 JSObject*& slot = *slotPtr;
21392 if (temp.isObject()) {
21393 slot = &temp.toObject();
21394 } else {
21395 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
21396 return false;
21397 }
21398 }
21399 } else {
21400 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21401 return false;
21402 }
21403 // NOTE: This assert does NOT call the function.
21404 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfObject(cx, Constify(arg0)))>, "Should be returning void here");
21405 MOZ_KnownLive(self)(self)->PassSequenceOfObject(cx, Constify(arg0));
21406 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21406); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21406; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21407 args.rval().setUndefined();
21408 return true;
21409}
21410
21411static const JSJitInfo passSequenceOfObject_methodinfo = {
21412 { (JSJitGetterOp)passSequenceOfObject },
21413 { prototypes::id::TestExampleInterface },
21414 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21415 JSJitInfo::Method,
21416 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21417 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21418 false, /* isInfallible. False in setters. */
21419 false, /* isMovable. Not relevant for setters. */
21420 false, /* isEliminatable. Not relevant for setters. */
21421 false, /* isAlwaysInSlot. Only relevant for getters. */
21422 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21423 false, /* isTypedMethod. Only relevant for methods. */
21424 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21425};
21426
21427MOZ_CAN_RUN_SCRIPT static bool
21428passSequenceOfNullableObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21429{
21430 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfNullableObject");
21431 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21434( cx, "TestExampleInterface"
, "passSequenceOfNullableObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21432 "TestExampleInterface", "passSequenceOfNullableObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21434( cx, "TestExampleInterface"
, "passSequenceOfNullableObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21433 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21434( cx, "TestExampleInterface"
, "passSequenceOfNullableObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21434 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21434( cx, "TestExampleInterface"
, "passSequenceOfNullableObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
21435
21436 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21437 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfNullableObject", 1)) {
21438 return false;
21439 }
21440 binding_detail::AutoSequence<JSObject*> arg0;
21441 SequenceRooter<JSObject*> arg0_holder(cx, &arg0);
21442 if (args[0].isObject()) {
21443 JS::ForOfIterator iter(cx);
21444 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
21445 return false;
21446 }
21447 if (!iter.valueIsIterable()) {
21448 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21449 return false;
21450 }
21451 binding_detail::AutoSequence<JSObject*> &arr = arg0;
21452 JS::Rooted<JS::Value> temp(cx);
21453 while (true) {
21454 bool done;
21455 if (!iter.next(&temp, &done)) {
21456 return false;
21457 }
21458 if (done) {
21459 break;
21460 }
21461 JSObject** slotPtr = arr.AppendElement(nullptr, mozilla::fallible);
21462 if (!slotPtr) {
21463 JS_ReportOutOfMemory(cx);
21464 return false;
21465 }
21466 JSObject*& slot = *slotPtr;
21467 if (temp.isObject()) {
21468 slot = &temp.toObject();
21469 } else if (temp.isNullOrUndefined()) {
21470 slot = nullptr;
21471 } else {
21472 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
21473 return false;
21474 }
21475 }
21476 } else {
21477 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21478 return false;
21479 }
21480 // NOTE: This assert does NOT call the function.
21481 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfNullableObject(cx, Constify(arg0)))>, "Should be returning void here");
21482 MOZ_KnownLive(self)(self)->PassSequenceOfNullableObject(cx, Constify(arg0));
21483 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21483); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21483; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21484 args.rval().setUndefined();
21485 return true;
21486}
21487
21488static const JSJitInfo passSequenceOfNullableObject_methodinfo = {
21489 { (JSJitGetterOp)passSequenceOfNullableObject },
21490 { prototypes::id::TestExampleInterface },
21491 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21492 JSJitInfo::Method,
21493 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21494 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21495 false, /* isInfallible. False in setters. */
21496 false, /* isMovable. Not relevant for setters. */
21497 false, /* isEliminatable. Not relevant for setters. */
21498 false, /* isAlwaysInSlot. Only relevant for getters. */
21499 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21500 false, /* isTypedMethod. Only relevant for methods. */
21501 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21502};
21503
21504MOZ_CAN_RUN_SCRIPT static bool
21505passNullableSequenceOfObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21506{
21507 BindingCallContext cx(cx_, "TestExampleInterface.passNullableSequenceOfObject");
21508 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21511( cx, "TestExampleInterface"
, "passNullableSequenceOfObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21509 "TestExampleInterface", "passNullableSequenceOfObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21511( cx, "TestExampleInterface"
, "passNullableSequenceOfObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21510 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21511( cx, "TestExampleInterface"
, "passNullableSequenceOfObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
21511 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21511( cx, "TestExampleInterface"
, "passNullableSequenceOfObject", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
21512
21513 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21514 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableSequenceOfObject", 1)) {
21515 return false;
21516 }
21517 Nullable<Sequence<JSObject*>> arg0;
21518 SequenceRooter<JSObject*> arg0_holder(cx, &arg0.SetValue());
21519 if (args[0].isObject()) {
21520 JS::ForOfIterator iter(cx);
21521 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
21522 return false;
21523 }
21524 if (!iter.valueIsIterable()) {
21525 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21526 return false;
21527 }
21528 Sequence<JSObject*> &arr = arg0.SetValue();
21529 JS::Rooted<JS::Value> temp(cx);
21530 while (true) {
21531 bool done;
21532 if (!iter.next(&temp, &done)) {
21533 return false;
21534 }
21535 if (done) {
21536 break;
21537 }
21538 JSObject** slotPtr = arr.AppendElement(nullptr, mozilla::fallible);
21539 if (!slotPtr) {
21540 JS_ReportOutOfMemory(cx);
21541 return false;
21542 }
21543 JSObject*& slot = *slotPtr;
21544 if (temp.isObject()) {
21545 slot = &temp.toObject();
21546 } else {
21547 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of argument 1");
21548 return false;
21549 }
21550 }
21551 } else if (args[0].isNullOrUndefined()) {
21552 arg0.SetNull();
21553 } else {
21554 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21555 return false;
21556 }
21557 // NOTE: This assert does NOT call the function.
21558 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableSequenceOfObject(cx, Constify(arg0)))>, "Should be returning void here");
21559 MOZ_KnownLive(self)(self)->PassNullableSequenceOfObject(cx, Constify(arg0));
21560 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21560); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21560; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21561 args.rval().setUndefined();
21562 return true;
21563}
21564
21565static const JSJitInfo passNullableSequenceOfObject_methodinfo = {
21566 { (JSJitGetterOp)passNullableSequenceOfObject },
21567 { prototypes::id::TestExampleInterface },
21568 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21569 JSJitInfo::Method,
21570 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21571 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21572 false, /* isInfallible. False in setters. */
21573 false, /* isMovable. Not relevant for setters. */
21574 false, /* isEliminatable. Not relevant for setters. */
21575 false, /* isAlwaysInSlot. Only relevant for getters. */
21576 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21577 false, /* isTypedMethod. Only relevant for methods. */
21578 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21579};
21580
21581MOZ_CAN_RUN_SCRIPT static bool
21582passOptionalNullableSequenceOfNullableSequenceOfObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21583{
21584 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceOfNullableSequenceOfObject");
21585 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21588( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfObject", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
21586 "TestExampleInterface", "passOptionalNullableSequenceOfNullableSequenceOfObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21588( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfObject", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
21587 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21588( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfObject", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
21588 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21588( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfObject", JS
::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
21589
21590 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21591 Optional<Nullable<Sequence<Nullable<Sequence<JSObject*>>>>> arg0;
21592 Maybe<SequenceRooter<Nullable<Sequence<JSObject*>>>> arg0_holder;
21593 if (args.hasDefined(0)) {
21594 arg0.Construct();
21595 arg0_holder.emplace(cx, &arg0.Value().SetValue());
21596 if (args[0].isObject()) {
21597 JS::ForOfIterator iter(cx);
21598 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
21599 return false;
21600 }
21601 if (!iter.valueIsIterable()) {
21602 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21603 return false;
21604 }
21605 Sequence<Nullable<Sequence<JSObject*>>> &arr = arg0.Value().SetValue();
21606 JS::Rooted<JS::Value> temp(cx);
21607 while (true) {
21608 bool done;
21609 if (!iter.next(&temp, &done)) {
21610 return false;
21611 }
21612 if (done) {
21613 break;
21614 }
21615 Nullable<Sequence<JSObject*>>* slotPtr = arr.AppendElement(mozilla::fallible);
21616 if (!slotPtr) {
21617 JS_ReportOutOfMemory(cx);
21618 return false;
21619 }
21620 Nullable<Sequence<JSObject*>>& slot = *slotPtr;
21621 if (temp.isObject()) {
21622 JS::ForOfIterator iter1(cx);
21623 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
21624 return false;
21625 }
21626 if (!iter1.valueIsIterable()) {
21627 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
21628 return false;
21629 }
21630 Sequence<JSObject*> &arr1 = slot.SetValue();
21631 JS::Rooted<JS::Value> temp1(cx);
21632 while (true) {
21633 bool done1;
21634 if (!iter1.next(&temp1, &done1)) {
21635 return false;
21636 }
21637 if (done1) {
21638 break;
21639 }
21640 JSObject** slotPtr1 = arr1.AppendElement(nullptr, mozilla::fallible);
21641 if (!slotPtr1) {
21642 JS_ReportOutOfMemory(cx);
21643 return false;
21644 }
21645 JSObject*& slot1 = *slotPtr1;
21646 if (temp1.isObject()) {
21647 slot1 = &temp1.toObject();
21648 } else {
21649 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of element of argument 1");
21650 return false;
21651 }
21652 }
21653 } else if (temp.isNullOrUndefined()) {
21654 slot.SetNull();
21655 } else {
21656 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
21657 return false;
21658 }
21659 }
21660 } else if (args[0].isNullOrUndefined()) {
21661 arg0.Value().SetNull();
21662 } else {
21663 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21664 return false;
21665 }
21666 }
21667 // NOTE: This assert does NOT call the function.
21668 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableSequenceOfObject(cx, Constify(arg0)))>, "Should be returning void here");
21669 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableSequenceOfObject(cx, Constify(arg0));
21670 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21670); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21670; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21671 args.rval().setUndefined();
21672 return true;
21673}
21674
21675static const JSJitInfo passOptionalNullableSequenceOfNullableSequenceOfObject_methodinfo = {
21676 { (JSJitGetterOp)passOptionalNullableSequenceOfNullableSequenceOfObject },
21677 { prototypes::id::TestExampleInterface },
21678 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21679 JSJitInfo::Method,
21680 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21681 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21682 false, /* isInfallible. False in setters. */
21683 false, /* isMovable. Not relevant for setters. */
21684 false, /* isEliminatable. Not relevant for setters. */
21685 false, /* isAlwaysInSlot. Only relevant for getters. */
21686 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21687 false, /* isTypedMethod. Only relevant for methods. */
21688 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21689};
21690
21691MOZ_CAN_RUN_SCRIPT static bool
21692passOptionalNullableSequenceOfNullableSequenceOfNullableObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21693{
21694 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableSequenceOfNullableSequenceOfNullableObject");
21695 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21698( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfNullableObject"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
21696 "TestExampleInterface", "passOptionalNullableSequenceOfNullableSequenceOfNullableObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21698( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfNullableObject"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
21697 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21698( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfNullableObject"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
21698 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21698( cx, "TestExampleInterface"
, "passOptionalNullableSequenceOfNullableSequenceOfNullableObject"
, JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
21699
21700 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21701 Optional<Nullable<Sequence<Nullable<Sequence<JSObject*>>>>> arg0;
21702 Maybe<SequenceRooter<Nullable<Sequence<JSObject*>>>> arg0_holder;
21703 if (args.hasDefined(0)) {
21704 arg0.Construct();
21705 arg0_holder.emplace(cx, &arg0.Value().SetValue());
21706 if (args[0].isObject()) {
21707 JS::ForOfIterator iter(cx);
21708 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
21709 return false;
21710 }
21711 if (!iter.valueIsIterable()) {
21712 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21713 return false;
21714 }
21715 Sequence<Nullable<Sequence<JSObject*>>> &arr = arg0.Value().SetValue();
21716 JS::Rooted<JS::Value> temp(cx);
21717 while (true) {
21718 bool done;
21719 if (!iter.next(&temp, &done)) {
21720 return false;
21721 }
21722 if (done) {
21723 break;
21724 }
21725 Nullable<Sequence<JSObject*>>* slotPtr = arr.AppendElement(mozilla::fallible);
21726 if (!slotPtr) {
21727 JS_ReportOutOfMemory(cx);
21728 return false;
21729 }
21730 Nullable<Sequence<JSObject*>>& slot = *slotPtr;
21731 if (temp.isObject()) {
21732 JS::ForOfIterator iter1(cx);
21733 if (!iter1.init(temp, JS::ForOfIterator::AllowNonIterable)) {
21734 return false;
21735 }
21736 if (!iter1.valueIsIterable()) {
21737 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
21738 return false;
21739 }
21740 Sequence<JSObject*> &arr1 = slot.SetValue();
21741 JS::Rooted<JS::Value> temp1(cx);
21742 while (true) {
21743 bool done1;
21744 if (!iter1.next(&temp1, &done1)) {
21745 return false;
21746 }
21747 if (done1) {
21748 break;
21749 }
21750 JSObject** slotPtr1 = arr1.AppendElement(nullptr, mozilla::fallible);
21751 if (!slotPtr1) {
21752 JS_ReportOutOfMemory(cx);
21753 return false;
21754 }
21755 JSObject*& slot1 = *slotPtr1;
21756 if (temp1.isObject()) {
21757 slot1 = &temp1.toObject();
21758 } else if (temp1.isNullOrUndefined()) {
21759 slot1 = nullptr;
21760 } else {
21761 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of element of argument 1");
21762 return false;
21763 }
21764 }
21765 } else if (temp.isNullOrUndefined()) {
21766 slot.SetNull();
21767 } else {
21768 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Element of argument 1", "sequence");
21769 return false;
21770 }
21771 }
21772 } else if (args[0].isNullOrUndefined()) {
21773 arg0.Value().SetNull();
21774 } else {
21775 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
21776 return false;
21777 }
21778 }
21779 // NOTE: This assert does NOT call the function.
21780 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableSequenceOfNullableObject(cx, Constify(arg0)))>, "Should be returning void here");
21781 MOZ_KnownLive(self)(self)->PassOptionalNullableSequenceOfNullableSequenceOfNullableObject(cx, Constify(arg0));
21782 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21782); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21782; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21783 args.rval().setUndefined();
21784 return true;
21785}
21786
21787static const JSJitInfo passOptionalNullableSequenceOfNullableSequenceOfNullableObject_methodinfo = {
21788 { (JSJitGetterOp)passOptionalNullableSequenceOfNullableSequenceOfNullableObject },
21789 { prototypes::id::TestExampleInterface },
21790 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21791 JSJitInfo::Method,
21792 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21793 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21794 false, /* isInfallible. False in setters. */
21795 false, /* isMovable. Not relevant for setters. */
21796 false, /* isEliminatable. Not relevant for setters. */
21797 false, /* isAlwaysInSlot. Only relevant for getters. */
21798 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21799 false, /* isTypedMethod. Only relevant for methods. */
21800 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21801};
21802
21803MOZ_CAN_RUN_SCRIPT static bool
21804passRecordOfObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21805{
21806 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfObject");
21807 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21810( cx, "TestExampleInterface"
, "passRecordOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21808 "TestExampleInterface", "passRecordOfObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21810( cx, "TestExampleInterface"
, "passRecordOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21809 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21810( cx, "TestExampleInterface"
, "passRecordOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21810 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21810( cx, "TestExampleInterface"
, "passRecordOfObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21811
21812 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21813 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfObject", 1)) {
21814 return false;
21815 }
21816 Record<nsString, JSObject*> arg0;
21817 RecordRooter<nsString, JSObject*> arg0_holder(cx, &arg0);
21818 if (args[0].isObject()) {
21819 auto& recordEntries = arg0.Entries();
21820
21821 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
21822 JS::RootedVector<jsid> ids(cx);
21823 if (!js::GetPropertyKeys(cx, recordObj,
21824 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
21825 return false;
21826 }
21827 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
21828 JS_ReportOutOfMemory(cx);
21829 return false;
21830 }
21831 JS::Rooted<JS::Value> propNameValue(cx);
21832 JS::Rooted<JS::Value> temp(cx);
21833 JS::Rooted<jsid> curId(cx);
21834 JS::Rooted<JS::Value> idVal(cx);
21835 // Use a hashset to keep track of ids seen, to avoid
21836 // introducing nasty O(N^2) behavior scanning for them all the
21837 // time. Ideally we'd use a data structure with O(1) lookup
21838 // _and_ ordering for the MozMap, but we don't have one lying
21839 // around.
21840 nsTHashtable<nsStringHashKey> idsSeen;
21841 for (size_t i = 0; i < ids.length(); ++i) {
21842 curId = ids[i];
21843
21844 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
21845 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
21846 &desc)) {
21847 return false;
21848 }
21849
21850 if (desc.isNothing() || !desc->enumerable()) {
21851 continue;
21852 }
21853
21854 idVal = js::IdToValue(curId);
21855 nsString propName;
21856 // This will just throw if idVal is a Symbol, like the spec says
21857 // to do.
21858 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
21859 return false;
21860 }
21861
21862 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
21863 return false;
21864 }
21865
21866 Record<nsString, JSObject*>::EntryType* entry;
21867 if (!idsSeen.EnsureInserted(propName)) {
21868 // Find the existing entry.
21869 auto idx = recordEntries.IndexOf(propName);
21870 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 21871); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 21871; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
21871 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 21871); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 21871; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
21872 // Now blow it away to make it look like it was just added
21873 // to the array, because it's not obvious that it's
21874 // safe to write to its already-initialized mValue via our
21875 // normal codegen conversions. For example, the value
21876 // could be a union and this would change its type, but
21877 // codegen assumes we won't do that.
21878 entry = recordEntries.ReconstructElementAt(idx);
21879 } else {
21880 // Safe to do an infallible append here, because we did a
21881 // SetCapacity above to the right capacity.
21882 entry = recordEntries.AppendElement();
21883 }
21884 entry->mKey = propName;
21885 JSObject*& slot = entry->mValue;
21886 if (temp.isObject()) {
21887 slot = &temp.toObject();
21888 } else {
21889 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value in argument 1");
21890 return false;
21891 }
21892 }
21893 } else {
21894 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
21895 return false;
21896 }
21897 // NOTE: This assert does NOT call the function.
21898 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfObject(cx, Constify(arg0)))>, "Should be returning void here");
21899 MOZ_KnownLive(self)(self)->PassRecordOfObject(cx, Constify(arg0));
21900 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21900); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21900; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21901 args.rval().setUndefined();
21902 return true;
21903}
21904
21905static const JSJitInfo passRecordOfObject_methodinfo = {
21906 { (JSJitGetterOp)passRecordOfObject },
21907 { prototypes::id::TestExampleInterface },
21908 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21909 JSJitInfo::Method,
21910 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21911 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
21912 false, /* isInfallible. False in setters. */
21913 false, /* isMovable. Not relevant for setters. */
21914 false, /* isEliminatable. Not relevant for setters. */
21915 false, /* isAlwaysInSlot. Only relevant for getters. */
21916 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21917 false, /* isTypedMethod. Only relevant for methods. */
21918 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21919};
21920
21921MOZ_CAN_RUN_SCRIPT static bool
21922receiveObject(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21923{
21924 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21927( cx, "TestExampleInterface"
, "receiveObject", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21925 "TestExampleInterface", "receiveObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21927( cx, "TestExampleInterface"
, "receiveObject", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21926 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21927( cx, "TestExampleInterface"
, "receiveObject", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21927 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21927( cx, "TestExampleInterface"
, "receiveObject", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21928
21929 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21930 JS::Rooted<JSObject*> result(cx);
21931 // NOTE: This assert does NOT call the function.
21932 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveObject(cx, &result))>, "Should be returning void here");
21933 MOZ_KnownLive(self)(self)->ReceiveObject(cx, &result);
21934 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21934); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21934; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21935 JS::ExposeObjectToActiveJS(result);
21936 args.rval().setObject(*result);
21937 if (!MaybeWrapObjectValue(cx, args.rval())) {
21938 return false;
21939 }
21940 return true;
21941}
21942
21943static const JSJitInfo receiveObject_methodinfo = {
21944 { (JSJitGetterOp)receiveObject },
21945 { prototypes::id::TestExampleInterface },
21946 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21947 JSJitInfo::Method,
21948 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21949 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
21950 false, /* isInfallible. False in setters. */
21951 false, /* isMovable. Not relevant for setters. */
21952 false, /* isEliminatable. Not relevant for setters. */
21953 false, /* isAlwaysInSlot. Only relevant for getters. */
21954 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21955 false, /* isTypedMethod. Only relevant for methods. */
21956 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21957};
21958
21959MOZ_CAN_RUN_SCRIPT static bool
21960receiveNullableObject(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
21961{
21962 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject21965( cx, "TestExampleInterface"
, "receiveNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21963 "TestExampleInterface", "receiveNullableObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject21965( cx, "TestExampleInterface"
, "receiveNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21964 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject21965( cx, "TestExampleInterface"
, "receiveNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
21965 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject21965( cx, "TestExampleInterface"
, "receiveNullableObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
21966
21967 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
21968 JS::Rooted<JSObject*> result(cx);
21969 // NOTE: This assert does NOT call the function.
21970 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableObject(cx, &result))>, "Should be returning void here");
21971 MOZ_KnownLive(self)(self)->ReceiveNullableObject(cx, &result);
21972 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 21972); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 21972; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
21973 if (result) {
21974 JS::ExposeObjectToActiveJS(result);
21975 }
21976 args.rval().setObjectOrNull(result);
21977 if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
21978 return false;
21979 }
21980 return true;
21981}
21982
21983static const JSJitInfo receiveNullableObject_methodinfo = {
21984 { (JSJitGetterOp)receiveNullableObject },
21985 { prototypes::id::TestExampleInterface },
21986 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
21987 JSJitInfo::Method,
21988 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
21989 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
21990 false, /* isInfallible. False in setters. */
21991 false, /* isMovable. Not relevant for setters. */
21992 false, /* isEliminatable. Not relevant for setters. */
21993 false, /* isAlwaysInSlot. Only relevant for getters. */
21994 false, /* isLazilyCachedInSlot. Only relevant for getters. */
21995 false, /* isTypedMethod. Only relevant for methods. */
21996 0 /* Reserved slot index, if we're stored in a slot, else 0. */
21997};
21998
21999MOZ_CAN_RUN_SCRIPT static bool
22000passUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22001{
22002 BindingCallContext cx(cx_, "TestExampleInterface.passUnion");
22003 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22006( cx, "TestExampleInterface"
, "passUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
22004 "TestExampleInterface", "passUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22006( cx, "TestExampleInterface"
, "passUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
22005 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22006( cx, "TestExampleInterface"
, "passUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
22006 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22006( cx, "TestExampleInterface"
, "passUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
22007
22008 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22009 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion", 1)) {
22010 return false;
22011 }
22012 ObjectOrLong arg0;
22013 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22014 return false;
22015 }
22016 // NOTE: This assert does NOT call the function.
22017 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion(cx, Constify(arg0)))>, "Should be returning void here");
22018 MOZ_KnownLive(self)(self)->PassUnion(cx, Constify(arg0));
22019 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22019); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22019; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22020 args.rval().setUndefined();
22021 return true;
22022}
22023
22024static const JSJitInfo passUnion_methodinfo = {
22025 { (JSJitGetterOp)passUnion },
22026 { prototypes::id::TestExampleInterface },
22027 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22028 JSJitInfo::Method,
22029 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22030 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22031 false, /* isInfallible. False in setters. */
22032 false, /* isMovable. Not relevant for setters. */
22033 false, /* isEliminatable. Not relevant for setters. */
22034 false, /* isAlwaysInSlot. Only relevant for getters. */
22035 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22036 false, /* isTypedMethod. Only relevant for methods. */
22037 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22038};
22039
22040MOZ_CAN_RUN_SCRIPT static bool
22041passUnion2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22042{
22043 BindingCallContext cx(cx_, "TestExampleInterface.passUnion2");
22044 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22047( cx, "TestExampleInterface"
, "passUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22045 "TestExampleInterface", "passUnion2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22047( cx, "TestExampleInterface"
, "passUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22046 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22047( cx, "TestExampleInterface"
, "passUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22047 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22047( cx, "TestExampleInterface"
, "passUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22048
22049 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22050 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion2", 1)) {
22051 return false;
22052 }
22053 LongOrBoolean arg0;
22054 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22055 return false;
22056 }
22057 // NOTE: This assert does NOT call the function.
22058 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion2(Constify(arg0)))>, "Should be returning void here");
22059 MOZ_KnownLive(self)(self)->PassUnion2(Constify(arg0));
22060 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22060); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22060; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22061 args.rval().setUndefined();
22062 return true;
22063}
22064
22065static const JSJitInfo passUnion2_methodinfo = {
22066 { (JSJitGetterOp)passUnion2 },
22067 { prototypes::id::TestExampleInterface },
22068 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22069 JSJitInfo::Method,
22070 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22071 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22072 false, /* isInfallible. False in setters. */
22073 false, /* isMovable. Not relevant for setters. */
22074 false, /* isEliminatable. Not relevant for setters. */
22075 false, /* isAlwaysInSlot. Only relevant for getters. */
22076 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22077 false, /* isTypedMethod. Only relevant for methods. */
22078 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22079};
22080
22081MOZ_CAN_RUN_SCRIPT static bool
22082passUnion3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22083{
22084 BindingCallContext cx(cx_, "TestExampleInterface.passUnion3");
22085 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22088( cx, "TestExampleInterface"
, "passUnion3", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22086 "TestExampleInterface", "passUnion3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22088( cx, "TestExampleInterface"
, "passUnion3", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22087 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22088( cx, "TestExampleInterface"
, "passUnion3", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22088 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22088( cx, "TestExampleInterface"
, "passUnion3", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22089
22090 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22091 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion3", 1)) {
22092 return false;
22093 }
22094 ObjectOrLongOrBoolean arg0;
22095 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22096 return false;
22097 }
22098 // NOTE: This assert does NOT call the function.
22099 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion3(cx, Constify(arg0)))>, "Should be returning void here");
22100 MOZ_KnownLive(self)(self)->PassUnion3(cx, Constify(arg0));
22101 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22101); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22101; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22102 args.rval().setUndefined();
22103 return true;
22104}
22105
22106static const JSJitInfo passUnion3_methodinfo = {
22107 { (JSJitGetterOp)passUnion3 },
22108 { prototypes::id::TestExampleInterface },
22109 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22110 JSJitInfo::Method,
22111 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22112 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22113 false, /* isInfallible. False in setters. */
22114 false, /* isMovable. Not relevant for setters. */
22115 false, /* isEliminatable. Not relevant for setters. */
22116 false, /* isAlwaysInSlot. Only relevant for getters. */
22117 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22118 false, /* isTypedMethod. Only relevant for methods. */
22119 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22120};
22121
22122MOZ_CAN_RUN_SCRIPT static bool
22123passUnion4(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22124{
22125 BindingCallContext cx(cx_, "TestExampleInterface.passUnion4");
22126 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22129( cx, "TestExampleInterface"
, "passUnion4", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22127 "TestExampleInterface", "passUnion4", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22129( cx, "TestExampleInterface"
, "passUnion4", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22128 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22129( cx, "TestExampleInterface"
, "passUnion4", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22129 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22129( cx, "TestExampleInterface"
, "passUnion4", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22130
22131 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22132 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion4", 1)) {
22133 return false;
22134 }
22135 NodeOrLongOrBoolean arg0;
22136 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22137 return false;
22138 }
22139 // NOTE: This assert does NOT call the function.
22140 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion4(Constify(arg0)))>, "Should be returning void here");
22141 MOZ_KnownLive(self)(self)->PassUnion4(Constify(arg0));
22142 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22142); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22142; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22143 args.rval().setUndefined();
22144 return true;
22145}
22146
22147static const JSJitInfo passUnion4_methodinfo = {
22148 { (JSJitGetterOp)passUnion4 },
22149 { prototypes::id::TestExampleInterface },
22150 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22151 JSJitInfo::Method,
22152 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22153 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22154 false, /* isInfallible. False in setters. */
22155 false, /* isMovable. Not relevant for setters. */
22156 false, /* isEliminatable. Not relevant for setters. */
22157 false, /* isAlwaysInSlot. Only relevant for getters. */
22158 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22159 false, /* isTypedMethod. Only relevant for methods. */
22160 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22161};
22162
22163MOZ_CAN_RUN_SCRIPT static bool
22164passUnion5(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22165{
22166 BindingCallContext cx(cx_, "TestExampleInterface.passUnion5");
22167 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22170( cx, "TestExampleInterface"
, "passUnion5", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22168 "TestExampleInterface", "passUnion5", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22170( cx, "TestExampleInterface"
, "passUnion5", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22169 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22170( cx, "TestExampleInterface"
, "passUnion5", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22170 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22170( cx, "TestExampleInterface"
, "passUnion5", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22171
22172 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22173 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion5", 1)) {
22174 return false;
22175 }
22176 ObjectOrBoolean arg0;
22177 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22178 return false;
22179 }
22180 // NOTE: This assert does NOT call the function.
22181 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion5(cx, Constify(arg0)))>, "Should be returning void here");
22182 MOZ_KnownLive(self)(self)->PassUnion5(cx, Constify(arg0));
22183 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22183); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22183; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22184 args.rval().setUndefined();
22185 return true;
22186}
22187
22188static const JSJitInfo passUnion5_methodinfo = {
22189 { (JSJitGetterOp)passUnion5 },
22190 { prototypes::id::TestExampleInterface },
22191 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22192 JSJitInfo::Method,
22193 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22194 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22195 false, /* isInfallible. False in setters. */
22196 false, /* isMovable. Not relevant for setters. */
22197 false, /* isEliminatable. Not relevant for setters. */
22198 false, /* isAlwaysInSlot. Only relevant for getters. */
22199 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22200 false, /* isTypedMethod. Only relevant for methods. */
22201 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22202};
22203
22204MOZ_CAN_RUN_SCRIPT static bool
22205passUnion6(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22206{
22207 BindingCallContext cx(cx_, "TestExampleInterface.passUnion6");
22208 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22211( cx, "TestExampleInterface"
, "passUnion6", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22209 "TestExampleInterface", "passUnion6", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22211( cx, "TestExampleInterface"
, "passUnion6", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22210 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22211( cx, "TestExampleInterface"
, "passUnion6", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22211 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22211( cx, "TestExampleInterface"
, "passUnion6", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22212
22213 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22214 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion6", 1)) {
22215 return false;
22216 }
22217 ObjectOrString arg0;
22218 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22219 return false;
22220 }
22221 // NOTE: This assert does NOT call the function.
22222 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion6(cx, Constify(arg0)))>, "Should be returning void here");
22223 MOZ_KnownLive(self)(self)->PassUnion6(cx, Constify(arg0));
22224 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22224); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22224; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22225 args.rval().setUndefined();
22226 return true;
22227}
22228
22229static const JSJitInfo passUnion6_methodinfo = {
22230 { (JSJitGetterOp)passUnion6 },
22231 { prototypes::id::TestExampleInterface },
22232 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22233 JSJitInfo::Method,
22234 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22235 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22236 false, /* isInfallible. False in setters. */
22237 false, /* isMovable. Not relevant for setters. */
22238 false, /* isEliminatable. Not relevant for setters. */
22239 false, /* isAlwaysInSlot. Only relevant for getters. */
22240 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22241 false, /* isTypedMethod. Only relevant for methods. */
22242 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22243};
22244
22245MOZ_CAN_RUN_SCRIPT static bool
22246passUnion7(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22247{
22248 BindingCallContext cx(cx_, "TestExampleInterface.passUnion7");
22249 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22252( cx, "TestExampleInterface"
, "passUnion7", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22250 "TestExampleInterface", "passUnion7", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22252( cx, "TestExampleInterface"
, "passUnion7", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22251 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22252( cx, "TestExampleInterface"
, "passUnion7", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22252 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22252( cx, "TestExampleInterface"
, "passUnion7", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22253
22254 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22255 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion7", 1)) {
22256 return false;
22257 }
22258 ObjectOrStringOrLong arg0;
22259 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22260 return false;
22261 }
22262 // NOTE: This assert does NOT call the function.
22263 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion7(cx, Constify(arg0)))>, "Should be returning void here");
22264 MOZ_KnownLive(self)(self)->PassUnion7(cx, Constify(arg0));
22265 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22265); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22265; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22266 args.rval().setUndefined();
22267 return true;
22268}
22269
22270static const JSJitInfo passUnion7_methodinfo = {
22271 { (JSJitGetterOp)passUnion7 },
22272 { prototypes::id::TestExampleInterface },
22273 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22274 JSJitInfo::Method,
22275 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22276 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22277 false, /* isInfallible. False in setters. */
22278 false, /* isMovable. Not relevant for setters. */
22279 false, /* isEliminatable. Not relevant for setters. */
22280 false, /* isAlwaysInSlot. Only relevant for getters. */
22281 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22282 false, /* isTypedMethod. Only relevant for methods. */
22283 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22284};
22285
22286MOZ_CAN_RUN_SCRIPT static bool
22287passUnion8(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22288{
22289 BindingCallContext cx(cx_, "TestExampleInterface.passUnion8");
22290 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22293( cx, "TestExampleInterface"
, "passUnion8", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22291 "TestExampleInterface", "passUnion8", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22293( cx, "TestExampleInterface"
, "passUnion8", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22292 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22293( cx, "TestExampleInterface"
, "passUnion8", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22293 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22293( cx, "TestExampleInterface"
, "passUnion8", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22294
22295 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22296 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion8", 1)) {
22297 return false;
22298 }
22299 ObjectOrStringOrBoolean arg0;
22300 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22301 return false;
22302 }
22303 // NOTE: This assert does NOT call the function.
22304 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion8(cx, Constify(arg0)))>, "Should be returning void here");
22305 MOZ_KnownLive(self)(self)->PassUnion8(cx, Constify(arg0));
22306 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22306); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22306; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22307 args.rval().setUndefined();
22308 return true;
22309}
22310
22311static const JSJitInfo passUnion8_methodinfo = {
22312 { (JSJitGetterOp)passUnion8 },
22313 { prototypes::id::TestExampleInterface },
22314 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22315 JSJitInfo::Method,
22316 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22317 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22318 false, /* isInfallible. False in setters. */
22319 false, /* isMovable. Not relevant for setters. */
22320 false, /* isEliminatable. Not relevant for setters. */
22321 false, /* isAlwaysInSlot. Only relevant for getters. */
22322 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22323 false, /* isTypedMethod. Only relevant for methods. */
22324 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22325};
22326
22327MOZ_CAN_RUN_SCRIPT static bool
22328passUnion9(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22329{
22330 BindingCallContext cx(cx_, "TestExampleInterface.passUnion9");
22331 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22334( cx, "TestExampleInterface"
, "passUnion9", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22332 "TestExampleInterface", "passUnion9", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22334( cx, "TestExampleInterface"
, "passUnion9", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22333 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22334( cx, "TestExampleInterface"
, "passUnion9", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22334 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22334( cx, "TestExampleInterface"
, "passUnion9", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22335
22336 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22337 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion9", 1)) {
22338 return false;
22339 }
22340 ObjectOrStringOrLongOrBoolean arg0;
22341 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22342 return false;
22343 }
22344 // NOTE: This assert does NOT call the function.
22345 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion9(cx, Constify(arg0)))>, "Should be returning void here");
22346 MOZ_KnownLive(self)(self)->PassUnion9(cx, Constify(arg0));
22347 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22347); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22347; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22348 args.rval().setUndefined();
22349 return true;
22350}
22351
22352static const JSJitInfo passUnion9_methodinfo = {
22353 { (JSJitGetterOp)passUnion9 },
22354 { prototypes::id::TestExampleInterface },
22355 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22356 JSJitInfo::Method,
22357 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22358 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22359 false, /* isInfallible. False in setters. */
22360 false, /* isMovable. Not relevant for setters. */
22361 false, /* isEliminatable. Not relevant for setters. */
22362 false, /* isAlwaysInSlot. Only relevant for getters. */
22363 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22364 false, /* isTypedMethod. Only relevant for methods. */
22365 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22366};
22367
22368MOZ_CAN_RUN_SCRIPT static bool
22369passUnion10(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22370{
22371 BindingCallContext cx(cx_, "TestExampleInterface.passUnion10");
22372 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22375( cx, "TestExampleInterface"
, "passUnion10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22373 "TestExampleInterface", "passUnion10", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22375( cx, "TestExampleInterface"
, "passUnion10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22374 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22375( cx, "TestExampleInterface"
, "passUnion10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22375 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22375( cx, "TestExampleInterface"
, "passUnion10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22376
22377 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22378 EventInitOrLong arg0;
22379 if (!(args.hasDefined(0))) {
22380 if (!arg0.RawSetAsEventInit().Init(cx, JS::NullHandleValue, "Member of (EventInit or long)")) {
22381 return false;
22382 }
22383 } else {
22384 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22385 return false;
22386 }
22387 }
22388 // NOTE: This assert does NOT call the function.
22389 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion10(Constify(arg0)))>, "Should be returning void here");
22390 MOZ_KnownLive(self)(self)->PassUnion10(Constify(arg0));
22391 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22391); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22391; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22392 args.rval().setUndefined();
22393 return true;
22394}
22395
22396static const JSJitInfo passUnion10_methodinfo = {
22397 { (JSJitGetterOp)passUnion10 },
22398 { prototypes::id::TestExampleInterface },
22399 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22400 JSJitInfo::Method,
22401 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22402 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22403 false, /* isInfallible. False in setters. */
22404 false, /* isMovable. Not relevant for setters. */
22405 false, /* isEliminatable. Not relevant for setters. */
22406 false, /* isAlwaysInSlot. Only relevant for getters. */
22407 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22408 false, /* isTypedMethod. Only relevant for methods. */
22409 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22410};
22411
22412MOZ_CAN_RUN_SCRIPT static bool
22413passUnion11(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22414{
22415 BindingCallContext cx(cx_, "TestExampleInterface.passUnion11");
22416 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22419( cx, "TestExampleInterface"
, "passUnion11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22417 "TestExampleInterface", "passUnion11", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22419( cx, "TestExampleInterface"
, "passUnion11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22418 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22419( cx, "TestExampleInterface"
, "passUnion11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22419 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22419( cx, "TestExampleInterface"
, "passUnion11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22420
22421 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22422 CustomEventInitOrLong arg0;
22423 if (!(args.hasDefined(0))) {
22424 if (!arg0.RawSetAsCustomEventInit(cx).Init(cx, JS::NullHandleValue, "Member of (CustomEventInit or long)")) {
22425 return false;
22426 }
22427 } else {
22428 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22429 return false;
22430 }
22431 }
22432 // NOTE: This assert does NOT call the function.
22433 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion11(cx, Constify(arg0)))>, "Should be returning void here");
22434 MOZ_KnownLive(self)(self)->PassUnion11(cx, Constify(arg0));
22435 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22435); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22435; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22436 args.rval().setUndefined();
22437 return true;
22438}
22439
22440static const JSJitInfo passUnion11_methodinfo = {
22441 { (JSJitGetterOp)passUnion11 },
22442 { prototypes::id::TestExampleInterface },
22443 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22444 JSJitInfo::Method,
22445 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22446 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22447 false, /* isInfallible. False in setters. */
22448 false, /* isMovable. Not relevant for setters. */
22449 false, /* isEliminatable. Not relevant for setters. */
22450 false, /* isAlwaysInSlot. Only relevant for getters. */
22451 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22452 false, /* isTypedMethod. Only relevant for methods. */
22453 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22454};
22455
22456MOZ_CAN_RUN_SCRIPT static bool
22457passUnion12(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22458{
22459 BindingCallContext cx(cx_, "TestExampleInterface.passUnion12");
22460 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22463( cx, "TestExampleInterface"
, "passUnion12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22461 "TestExampleInterface", "passUnion12", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22463( cx, "TestExampleInterface"
, "passUnion12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22462 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22463( cx, "TestExampleInterface"
, "passUnion12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22463 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22463( cx, "TestExampleInterface"
, "passUnion12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22464
22465 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22466 EventInitOrLong arg0;
22467 if (!(args.hasDefined(0))) {
22468 arg0.RawSetAsLong() = 5;
22469 } else {
22470 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22471 return false;
22472 }
22473 }
22474 // NOTE: This assert does NOT call the function.
22475 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion12(Constify(arg0)))>, "Should be returning void here");
22476 MOZ_KnownLive(self)(self)->PassUnion12(Constify(arg0));
22477 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22477); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22477; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22478 args.rval().setUndefined();
22479 return true;
22480}
22481
22482static const JSJitInfo passUnion12_methodinfo = {
22483 { (JSJitGetterOp)passUnion12 },
22484 { prototypes::id::TestExampleInterface },
22485 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22486 JSJitInfo::Method,
22487 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22488 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22489 false, /* isInfallible. False in setters. */
22490 false, /* isMovable. Not relevant for setters. */
22491 false, /* isEliminatable. Not relevant for setters. */
22492 false, /* isAlwaysInSlot. Only relevant for getters. */
22493 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22494 false, /* isTypedMethod. Only relevant for methods. */
22495 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22496};
22497
22498MOZ_CAN_RUN_SCRIPT static bool
22499passUnion13(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22500{
22501 BindingCallContext cx(cx_, "TestExampleInterface.passUnion13");
22502 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22505( cx, "TestExampleInterface"
, "passUnion13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22503 "TestExampleInterface", "passUnion13", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22505( cx, "TestExampleInterface"
, "passUnion13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22504 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22505( cx, "TestExampleInterface"
, "passUnion13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22505 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22505( cx, "TestExampleInterface"
, "passUnion13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22506
22507 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22508 ObjectOrLongOrNull arg0;
22509 if (!(args.hasDefined(0))) {
22510 arg0.SetNull();
22511 } else {
22512 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22513 return false;
22514 }
22515 }
22516 // NOTE: This assert does NOT call the function.
22517 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion13(cx, Constify(arg0)))>, "Should be returning void here");
22518 MOZ_KnownLive(self)(self)->PassUnion13(cx, Constify(arg0));
22519 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22519); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22519; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22520 args.rval().setUndefined();
22521 return true;
22522}
22523
22524static const JSJitInfo passUnion13_methodinfo = {
22525 { (JSJitGetterOp)passUnion13 },
22526 { prototypes::id::TestExampleInterface },
22527 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22528 JSJitInfo::Method,
22529 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22530 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22531 false, /* isInfallible. False in setters. */
22532 false, /* isMovable. Not relevant for setters. */
22533 false, /* isEliminatable. Not relevant for setters. */
22534 false, /* isAlwaysInSlot. Only relevant for getters. */
22535 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22536 false, /* isTypedMethod. Only relevant for methods. */
22537 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22538};
22539
22540MOZ_CAN_RUN_SCRIPT static bool
22541passUnion14(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22542{
22543 BindingCallContext cx(cx_, "TestExampleInterface.passUnion14");
22544 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22547( cx, "TestExampleInterface"
, "passUnion14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22545 "TestExampleInterface", "passUnion14", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22547( cx, "TestExampleInterface"
, "passUnion14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22546 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22547( cx, "TestExampleInterface"
, "passUnion14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22547 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22547( cx, "TestExampleInterface"
, "passUnion14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22548
22549 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22550 ObjectOrLongOrNull arg0;
22551 if (!(args.hasDefined(0))) {
22552 arg0.RawSetAsLong() = 5;
22553 } else {
22554 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22555 return false;
22556 }
22557 }
22558 // NOTE: This assert does NOT call the function.
22559 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion14(cx, Constify(arg0)))>, "Should be returning void here");
22560 MOZ_KnownLive(self)(self)->PassUnion14(cx, Constify(arg0));
22561 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22561); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22561; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22562 args.rval().setUndefined();
22563 return true;
22564}
22565
22566static const JSJitInfo passUnion14_methodinfo = {
22567 { (JSJitGetterOp)passUnion14 },
22568 { prototypes::id::TestExampleInterface },
22569 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22570 JSJitInfo::Method,
22571 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22572 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22573 false, /* isInfallible. False in setters. */
22574 false, /* isMovable. Not relevant for setters. */
22575 false, /* isEliminatable. Not relevant for setters. */
22576 false, /* isAlwaysInSlot. Only relevant for getters. */
22577 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22578 false, /* isTypedMethod. Only relevant for methods. */
22579 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22580};
22581
22582MOZ_CAN_RUN_SCRIPT static bool
22583passUnion15(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22584{
22585 BindingCallContext cx(cx_, "TestExampleInterface.passUnion15");
22586 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22589( cx, "TestExampleInterface"
, "passUnion15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22587 "TestExampleInterface", "passUnion15", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22589( cx, "TestExampleInterface"
, "passUnion15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22588 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22589( cx, "TestExampleInterface"
, "passUnion15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22589 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22589( cx, "TestExampleInterface"
, "passUnion15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22590
22591 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22592 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion15", 1)) {
22593 return false;
22594 }
22595 LongSequenceOrLong arg0;
22596 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22597 return false;
22598 }
22599 // NOTE: This assert does NOT call the function.
22600 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion15(Constify(arg0)))>, "Should be returning void here");
22601 MOZ_KnownLive(self)(self)->PassUnion15(Constify(arg0));
22602 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22602); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22602; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22603 args.rval().setUndefined();
22604 return true;
22605}
22606
22607static const JSJitInfo passUnion15_methodinfo = {
22608 { (JSJitGetterOp)passUnion15 },
22609 { prototypes::id::TestExampleInterface },
22610 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22611 JSJitInfo::Method,
22612 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22613 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22614 false, /* isInfallible. False in setters. */
22615 false, /* isMovable. Not relevant for setters. */
22616 false, /* isEliminatable. Not relevant for setters. */
22617 false, /* isAlwaysInSlot. Only relevant for getters. */
22618 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22619 false, /* isTypedMethod. Only relevant for methods. */
22620 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22621};
22622
22623MOZ_CAN_RUN_SCRIPT static bool
22624passUnion16(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22625{
22626 BindingCallContext cx(cx_, "TestExampleInterface.passUnion16");
22627 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22630( cx, "TestExampleInterface"
, "passUnion16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22628 "TestExampleInterface", "passUnion16", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22630( cx, "TestExampleInterface"
, "passUnion16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22629 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22630( cx, "TestExampleInterface"
, "passUnion16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22630 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22630( cx, "TestExampleInterface"
, "passUnion16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22631
22632 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22633 Optional<LongSequenceOrLong> arg0;
22634 if (args.hasDefined(0)) {
22635 arg0.Construct();
22636 if (!arg0.Value().Init(cx, args[0], "Argument 1", false)) {
22637 return false;
22638 }
22639 }
22640 // NOTE: This assert does NOT call the function.
22641 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion16(Constify(arg0)))>, "Should be returning void here");
22642 MOZ_KnownLive(self)(self)->PassUnion16(Constify(arg0));
22643 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22643); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22643; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22644 args.rval().setUndefined();
22645 return true;
22646}
22647
22648static const JSJitInfo passUnion16_methodinfo = {
22649 { (JSJitGetterOp)passUnion16 },
22650 { prototypes::id::TestExampleInterface },
22651 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22652 JSJitInfo::Method,
22653 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22654 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22655 false, /* isInfallible. False in setters. */
22656 false, /* isMovable. Not relevant for setters. */
22657 false, /* isEliminatable. Not relevant for setters. */
22658 false, /* isAlwaysInSlot. Only relevant for getters. */
22659 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22660 false, /* isTypedMethod. Only relevant for methods. */
22661 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22662};
22663
22664MOZ_CAN_RUN_SCRIPT static bool
22665passUnion17(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22666{
22667 BindingCallContext cx(cx_, "TestExampleInterface.passUnion17");
22668 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22671( cx, "TestExampleInterface"
, "passUnion17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22669 "TestExampleInterface", "passUnion17", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22671( cx, "TestExampleInterface"
, "passUnion17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22670 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22671( cx, "TestExampleInterface"
, "passUnion17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22671 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22671( cx, "TestExampleInterface"
, "passUnion17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22672
22673 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22674 LongSequenceOrNullOrLong arg0;
22675 if (!(args.hasDefined(0))) {
22676 arg0.RawSetAsLong() = 5;
22677 } else {
22678 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22679 return false;
22680 }
22681 }
22682 // NOTE: This assert does NOT call the function.
22683 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion17(Constify(arg0)))>, "Should be returning void here");
22684 MOZ_KnownLive(self)(self)->PassUnion17(Constify(arg0));
22685 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22685); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22685; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22686 args.rval().setUndefined();
22687 return true;
22688}
22689
22690static const JSJitInfo passUnion17_methodinfo = {
22691 { (JSJitGetterOp)passUnion17 },
22692 { prototypes::id::TestExampleInterface },
22693 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22694 JSJitInfo::Method,
22695 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22696 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22697 false, /* isInfallible. False in setters. */
22698 false, /* isMovable. Not relevant for setters. */
22699 false, /* isEliminatable. Not relevant for setters. */
22700 false, /* isAlwaysInSlot. Only relevant for getters. */
22701 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22702 false, /* isTypedMethod. Only relevant for methods. */
22703 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22704};
22705
22706MOZ_CAN_RUN_SCRIPT static bool
22707passUnion18(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22708{
22709 BindingCallContext cx(cx_, "TestExampleInterface.passUnion18");
22710 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22713( cx, "TestExampleInterface"
, "passUnion18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22711 "TestExampleInterface", "passUnion18", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22713( cx, "TestExampleInterface"
, "passUnion18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22712 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22713( cx, "TestExampleInterface"
, "passUnion18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22713 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22713( cx, "TestExampleInterface"
, "passUnion18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22714
22715 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22716 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion18", 1)) {
22717 return false;
22718 }
22719 ObjectSequenceOrLong arg0;
22720 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22721 return false;
22722 }
22723 // NOTE: This assert does NOT call the function.
22724 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion18(cx, Constify(arg0)))>, "Should be returning void here");
22725 MOZ_KnownLive(self)(self)->PassUnion18(cx, Constify(arg0));
22726 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22726); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22726; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22727 args.rval().setUndefined();
22728 return true;
22729}
22730
22731static const JSJitInfo passUnion18_methodinfo = {
22732 { (JSJitGetterOp)passUnion18 },
22733 { prototypes::id::TestExampleInterface },
22734 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22735 JSJitInfo::Method,
22736 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22737 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22738 false, /* isInfallible. False in setters. */
22739 false, /* isMovable. Not relevant for setters. */
22740 false, /* isEliminatable. Not relevant for setters. */
22741 false, /* isAlwaysInSlot. Only relevant for getters. */
22742 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22743 false, /* isTypedMethod. Only relevant for methods. */
22744 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22745};
22746
22747MOZ_CAN_RUN_SCRIPT static bool
22748passUnion19(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22749{
22750 BindingCallContext cx(cx_, "TestExampleInterface.passUnion19");
22751 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22754( cx, "TestExampleInterface"
, "passUnion19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22752 "TestExampleInterface", "passUnion19", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22754( cx, "TestExampleInterface"
, "passUnion19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22753 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22754( cx, "TestExampleInterface"
, "passUnion19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22754 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22754( cx, "TestExampleInterface"
, "passUnion19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22755
22756 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22757 Optional<ObjectSequenceOrLong> arg0;
22758 if (args.hasDefined(0)) {
22759 arg0.Construct();
22760 if (!arg0.Value().Init(cx, args[0], "Argument 1", false)) {
22761 return false;
22762 }
22763 }
22764 // NOTE: This assert does NOT call the function.
22765 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion19(cx, Constify(arg0)))>, "Should be returning void here");
22766 MOZ_KnownLive(self)(self)->PassUnion19(cx, Constify(arg0));
22767 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22767); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22767; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22768 args.rval().setUndefined();
22769 return true;
22770}
22771
22772static const JSJitInfo passUnion19_methodinfo = {
22773 { (JSJitGetterOp)passUnion19 },
22774 { prototypes::id::TestExampleInterface },
22775 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22776 JSJitInfo::Method,
22777 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22778 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22779 false, /* isInfallible. False in setters. */
22780 false, /* isMovable. Not relevant for setters. */
22781 false, /* isEliminatable. Not relevant for setters. */
22782 false, /* isAlwaysInSlot. Only relevant for getters. */
22783 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22784 false, /* isTypedMethod. Only relevant for methods. */
22785 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22786};
22787
22788MOZ_CAN_RUN_SCRIPT static bool
22789passUnion20(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22790{
22791 BindingCallContext cx(cx_, "TestExampleInterface.passUnion20");
22792 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22795( cx, "TestExampleInterface"
, "passUnion20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22793 "TestExampleInterface", "passUnion20", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22795( cx, "TestExampleInterface"
, "passUnion20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22794 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22795( cx, "TestExampleInterface"
, "passUnion20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22795 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22795( cx, "TestExampleInterface"
, "passUnion20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22796
22797 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22798 ObjectSequenceOrLong arg0;
22799 if (!(args.hasDefined(0))) {
22800 Unused << arg0.RawSetAsObjectSequence(cx);
22801 } else {
22802 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22803 return false;
22804 }
22805 }
22806 // NOTE: This assert does NOT call the function.
22807 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion20(cx, Constify(arg0)))>, "Should be returning void here");
22808 MOZ_KnownLive(self)(self)->PassUnion20(cx, Constify(arg0));
22809 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22809); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22809; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22810 args.rval().setUndefined();
22811 return true;
22812}
22813
22814static const JSJitInfo passUnion20_methodinfo = {
22815 { (JSJitGetterOp)passUnion20 },
22816 { prototypes::id::TestExampleInterface },
22817 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22818 JSJitInfo::Method,
22819 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22820 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22821 false, /* isInfallible. False in setters. */
22822 false, /* isMovable. Not relevant for setters. */
22823 false, /* isEliminatable. Not relevant for setters. */
22824 false, /* isAlwaysInSlot. Only relevant for getters. */
22825 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22826 false, /* isTypedMethod. Only relevant for methods. */
22827 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22828};
22829
22830MOZ_CAN_RUN_SCRIPT static bool
22831passUnion21(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22832{
22833 BindingCallContext cx(cx_, "TestExampleInterface.passUnion21");
22834 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22837( cx, "TestExampleInterface"
, "passUnion21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22835 "TestExampleInterface", "passUnion21", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22837( cx, "TestExampleInterface"
, "passUnion21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22836 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22837( cx, "TestExampleInterface"
, "passUnion21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22837 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22837( cx, "TestExampleInterface"
, "passUnion21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22838
22839 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22840 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion21", 1)) {
22841 return false;
22842 }
22843 StringLongRecordOrLong arg0;
22844 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22845 return false;
22846 }
22847 // NOTE: This assert does NOT call the function.
22848 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion21(Constify(arg0)))>, "Should be returning void here");
22849 MOZ_KnownLive(self)(self)->PassUnion21(Constify(arg0));
22850 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22850); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22850; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22851 args.rval().setUndefined();
22852 return true;
22853}
22854
22855static const JSJitInfo passUnion21_methodinfo = {
22856 { (JSJitGetterOp)passUnion21 },
22857 { prototypes::id::TestExampleInterface },
22858 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22859 JSJitInfo::Method,
22860 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22861 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22862 false, /* isInfallible. False in setters. */
22863 false, /* isMovable. Not relevant for setters. */
22864 false, /* isEliminatable. Not relevant for setters. */
22865 false, /* isAlwaysInSlot. Only relevant for getters. */
22866 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22867 false, /* isTypedMethod. Only relevant for methods. */
22868 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22869};
22870
22871MOZ_CAN_RUN_SCRIPT static bool
22872passUnion22(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22873{
22874 BindingCallContext cx(cx_, "TestExampleInterface.passUnion22");
22875 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22878( cx, "TestExampleInterface"
, "passUnion22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22876 "TestExampleInterface", "passUnion22", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22878( cx, "TestExampleInterface"
, "passUnion22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22877 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22878( cx, "TestExampleInterface"
, "passUnion22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22878 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22878( cx, "TestExampleInterface"
, "passUnion22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22879
22880 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22881 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion22", 1)) {
22882 return false;
22883 }
22884 StringObjectRecordOrLong arg0;
22885 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22886 return false;
22887 }
22888 // NOTE: This assert does NOT call the function.
22889 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion22(cx, Constify(arg0)))>, "Should be returning void here");
22890 MOZ_KnownLive(self)(self)->PassUnion22(cx, Constify(arg0));
22891 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22891); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22891; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22892 args.rval().setUndefined();
22893 return true;
22894}
22895
22896static const JSJitInfo passUnion22_methodinfo = {
22897 { (JSJitGetterOp)passUnion22 },
22898 { prototypes::id::TestExampleInterface },
22899 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22900 JSJitInfo::Method,
22901 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22902 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22903 false, /* isInfallible. False in setters. */
22904 false, /* isMovable. Not relevant for setters. */
22905 false, /* isEliminatable. Not relevant for setters. */
22906 false, /* isAlwaysInSlot. Only relevant for getters. */
22907 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22908 false, /* isTypedMethod. Only relevant for methods. */
22909 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22910};
22911
22912MOZ_CAN_RUN_SCRIPT static bool
22913passUnion23(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22914{
22915 BindingCallContext cx(cx_, "TestExampleInterface.passUnion23");
22916 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22919( cx, "TestExampleInterface"
, "passUnion23", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22917 "TestExampleInterface", "passUnion23", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22919( cx, "TestExampleInterface"
, "passUnion23", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22918 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22919( cx, "TestExampleInterface"
, "passUnion23", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22919 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22919( cx, "TestExampleInterface"
, "passUnion23", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22920
22921 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22922 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion23", 1)) {
22923 return false;
22924 }
22925 ImageDataSequenceOrLong arg0;
22926 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22927 return false;
22928 }
22929 // NOTE: This assert does NOT call the function.
22930 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion23(Constify(arg0)))>, "Should be returning void here");
22931 MOZ_KnownLive(self)(self)->PassUnion23(Constify(arg0));
22932 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22932); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22932; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22933 args.rval().setUndefined();
22934 return true;
22935}
22936
22937static const JSJitInfo passUnion23_methodinfo = {
22938 { (JSJitGetterOp)passUnion23 },
22939 { prototypes::id::TestExampleInterface },
22940 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22941 JSJitInfo::Method,
22942 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22943 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22944 false, /* isInfallible. False in setters. */
22945 false, /* isMovable. Not relevant for setters. */
22946 false, /* isEliminatable. Not relevant for setters. */
22947 false, /* isAlwaysInSlot. Only relevant for getters. */
22948 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22949 false, /* isTypedMethod. Only relevant for methods. */
22950 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22951};
22952
22953MOZ_CAN_RUN_SCRIPT static bool
22954passUnion24(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22955{
22956 BindingCallContext cx(cx_, "TestExampleInterface.passUnion24");
22957 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject22960( cx, "TestExampleInterface"
, "passUnion24", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22958 "TestExampleInterface", "passUnion24", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject22960( cx, "TestExampleInterface"
, "passUnion24", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22959 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject22960( cx, "TestExampleInterface"
, "passUnion24", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22960 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject22960( cx, "TestExampleInterface"
, "passUnion24", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
22961
22962 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
22963 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion24", 1)) {
22964 return false;
22965 }
22966 ImageDataOrNullSequenceOrLong arg0;
22967 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
22968 return false;
22969 }
22970 // NOTE: This assert does NOT call the function.
22971 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion24(Constify(arg0)))>, "Should be returning void here");
22972 MOZ_KnownLive(self)(self)->PassUnion24(Constify(arg0));
22973 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 22973); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 22973; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
22974 args.rval().setUndefined();
22975 return true;
22976}
22977
22978static const JSJitInfo passUnion24_methodinfo = {
22979 { (JSJitGetterOp)passUnion24 },
22980 { prototypes::id::TestExampleInterface },
22981 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
22982 JSJitInfo::Method,
22983 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
22984 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
22985 false, /* isInfallible. False in setters. */
22986 false, /* isMovable. Not relevant for setters. */
22987 false, /* isEliminatable. Not relevant for setters. */
22988 false, /* isAlwaysInSlot. Only relevant for getters. */
22989 false, /* isLazilyCachedInSlot. Only relevant for getters. */
22990 false, /* isTypedMethod. Only relevant for methods. */
22991 0 /* Reserved slot index, if we're stored in a slot, else 0. */
22992};
22993
22994MOZ_CAN_RUN_SCRIPT static bool
22995passUnion25(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
22996{
22997 BindingCallContext cx(cx_, "TestExampleInterface.passUnion25");
22998 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23001( cx, "TestExampleInterface"
, "passUnion25", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
22999 "TestExampleInterface", "passUnion25", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23001( cx, "TestExampleInterface"
, "passUnion25", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23000 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23001( cx, "TestExampleInterface"
, "passUnion25", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23001 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23001( cx, "TestExampleInterface"
, "passUnion25", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23002
23003 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23004 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion25", 1)) {
23005 return false;
23006 }
23007 ImageDataSequenceSequenceOrLong arg0;
23008 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23009 return false;
23010 }
23011 // NOTE: This assert does NOT call the function.
23012 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion25(Constify(arg0)))>, "Should be returning void here");
23013 MOZ_KnownLive(self)(self)->PassUnion25(Constify(arg0));
23014 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23014); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23014; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23015 args.rval().setUndefined();
23016 return true;
23017}
23018
23019static const JSJitInfo passUnion25_methodinfo = {
23020 { (JSJitGetterOp)passUnion25 },
23021 { prototypes::id::TestExampleInterface },
23022 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23023 JSJitInfo::Method,
23024 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23025 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23026 false, /* isInfallible. False in setters. */
23027 false, /* isMovable. Not relevant for setters. */
23028 false, /* isEliminatable. Not relevant for setters. */
23029 false, /* isAlwaysInSlot. Only relevant for getters. */
23030 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23031 false, /* isTypedMethod. Only relevant for methods. */
23032 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23033};
23034
23035MOZ_CAN_RUN_SCRIPT static bool
23036passUnion26(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23037{
23038 BindingCallContext cx(cx_, "TestExampleInterface.passUnion26");
23039 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23042( cx, "TestExampleInterface"
, "passUnion26", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23040 "TestExampleInterface", "passUnion26", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23042( cx, "TestExampleInterface"
, "passUnion26", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23041 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23042( cx, "TestExampleInterface"
, "passUnion26", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23042 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23042( cx, "TestExampleInterface"
, "passUnion26", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23043
23044 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23045 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnion26", 1)) {
23046 return false;
23047 }
23048 ImageDataOrNullSequenceSequenceOrLong arg0;
23049 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23050 return false;
23051 }
23052 // NOTE: This assert does NOT call the function.
23053 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion26(Constify(arg0)))>, "Should be returning void here");
23054 MOZ_KnownLive(self)(self)->PassUnion26(Constify(arg0));
23055 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23055); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23055; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23056 args.rval().setUndefined();
23057 return true;
23058}
23059
23060static const JSJitInfo passUnion26_methodinfo = {
23061 { (JSJitGetterOp)passUnion26 },
23062 { prototypes::id::TestExampleInterface },
23063 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23064 JSJitInfo::Method,
23065 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23066 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23067 false, /* isInfallible. False in setters. */
23068 false, /* isMovable. Not relevant for setters. */
23069 false, /* isEliminatable. Not relevant for setters. */
23070 false, /* isAlwaysInSlot. Only relevant for getters. */
23071 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23072 false, /* isTypedMethod. Only relevant for methods. */
23073 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23074};
23075
23076MOZ_CAN_RUN_SCRIPT static bool
23077passUnion27(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23078{
23079 BindingCallContext cx(cx_, "TestExampleInterface.passUnion27");
23080 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23083( cx, "TestExampleInterface"
, "passUnion27", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23081 "TestExampleInterface", "passUnion27", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23083( cx, "TestExampleInterface"
, "passUnion27", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23082 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23083( cx, "TestExampleInterface"
, "passUnion27", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23083 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23083( cx, "TestExampleInterface"
, "passUnion27", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23084
23085 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23086 StringSequenceOrEventInit arg0;
23087 if (!(args.hasDefined(0))) {
23088 if (!arg0.RawSetAsEventInit().Init(cx, JS::NullHandleValue, "Member of (sequence<DOMString> or EventInit)")) {
23089 return false;
23090 }
23091 } else {
23092 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23093 return false;
23094 }
23095 }
23096 // NOTE: This assert does NOT call the function.
23097 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion27(Constify(arg0)))>, "Should be returning void here");
23098 MOZ_KnownLive(self)(self)->PassUnion27(Constify(arg0));
23099 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23099); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23099; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23100 args.rval().setUndefined();
23101 return true;
23102}
23103
23104static const JSJitInfo passUnion27_methodinfo = {
23105 { (JSJitGetterOp)passUnion27 },
23106 { prototypes::id::TestExampleInterface },
23107 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23108 JSJitInfo::Method,
23109 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23110 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23111 false, /* isInfallible. False in setters. */
23112 false, /* isMovable. Not relevant for setters. */
23113 false, /* isEliminatable. Not relevant for setters. */
23114 false, /* isAlwaysInSlot. Only relevant for getters. */
23115 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23116 false, /* isTypedMethod. Only relevant for methods. */
23117 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23118};
23119
23120MOZ_CAN_RUN_SCRIPT static bool
23121passUnion28(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23122{
23123 BindingCallContext cx(cx_, "TestExampleInterface.passUnion28");
23124 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23127( cx, "TestExampleInterface"
, "passUnion28", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23125 "TestExampleInterface", "passUnion28", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23127( cx, "TestExampleInterface"
, "passUnion28", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23126 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23127( cx, "TestExampleInterface"
, "passUnion28", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23127 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23127( cx, "TestExampleInterface"
, "passUnion28", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23128
23129 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23130 EventInitOrStringSequence arg0;
23131 if (!(args.hasDefined(0))) {
23132 if (!arg0.RawSetAsEventInit().Init(cx, JS::NullHandleValue, "Member of (EventInit or sequence<DOMString>)")) {
23133 return false;
23134 }
23135 } else {
23136 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23137 return false;
23138 }
23139 }
23140 // NOTE: This assert does NOT call the function.
23141 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnion28(Constify(arg0)))>, "Should be returning void here");
23142 MOZ_KnownLive(self)(self)->PassUnion28(Constify(arg0));
23143 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23143); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23143; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23144 args.rval().setUndefined();
23145 return true;
23146}
23147
23148static const JSJitInfo passUnion28_methodinfo = {
23149 { (JSJitGetterOp)passUnion28 },
23150 { prototypes::id::TestExampleInterface },
23151 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23152 JSJitInfo::Method,
23153 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23154 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23155 false, /* isInfallible. False in setters. */
23156 false, /* isMovable. Not relevant for setters. */
23157 false, /* isEliminatable. Not relevant for setters. */
23158 false, /* isAlwaysInSlot. Only relevant for getters. */
23159 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23160 false, /* isTypedMethod. Only relevant for methods. */
23161 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23162};
23163
23164MOZ_CAN_RUN_SCRIPT static bool
23165passUnionWithCallback(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23166{
23167 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithCallback");
23168 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23171( cx, "TestExampleInterface"
, "passUnionWithCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23169 "TestExampleInterface", "passUnionWithCallback", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23171( cx, "TestExampleInterface"
, "passUnionWithCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23170 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23171( cx, "TestExampleInterface"
, "passUnionWithCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23171 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23171( cx, "TestExampleInterface"
, "passUnionWithCallback", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23172
23173 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23174 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithCallback", 1)) {
23175 return false;
23176 }
23177 EventHandlerNonNullOrNullOrLong arg0;
23178 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23179 return false;
23180 }
23181 // NOTE: This assert does NOT call the function.
23182 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithCallback(Constify(arg0)))>, "Should be returning void here");
23183 MOZ_KnownLive(self)(self)->PassUnionWithCallback(Constify(arg0));
23184 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23184); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23184; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23185 args.rval().setUndefined();
23186 return true;
23187}
23188
23189static const JSJitInfo passUnionWithCallback_methodinfo = {
23190 { (JSJitGetterOp)passUnionWithCallback },
23191 { prototypes::id::TestExampleInterface },
23192 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23193 JSJitInfo::Method,
23194 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23195 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23196 false, /* isInfallible. False in setters. */
23197 false, /* isMovable. Not relevant for setters. */
23198 false, /* isEliminatable. Not relevant for setters. */
23199 false, /* isAlwaysInSlot. Only relevant for getters. */
23200 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23201 false, /* isTypedMethod. Only relevant for methods. */
23202 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23203};
23204
23205MOZ_CAN_RUN_SCRIPT static bool
23206passUnionWithByteString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23207{
23208 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithByteString");
23209 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23212( cx, "TestExampleInterface"
, "passUnionWithByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23210 "TestExampleInterface", "passUnionWithByteString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23212( cx, "TestExampleInterface"
, "passUnionWithByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23211 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23212( cx, "TestExampleInterface"
, "passUnionWithByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23212 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23212( cx, "TestExampleInterface"
, "passUnionWithByteString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23213
23214 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23215 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithByteString", 1)) {
23216 return false;
23217 }
23218 ByteStringOrLong arg0;
23219 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23220 return false;
23221 }
23222 // NOTE: This assert does NOT call the function.
23223 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithByteString(Constify(arg0)))>, "Should be returning void here");
23224 MOZ_KnownLive(self)(self)->PassUnionWithByteString(Constify(arg0));
23225 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23225); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23225; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23226 args.rval().setUndefined();
23227 return true;
23228}
23229
23230static const JSJitInfo passUnionWithByteString_methodinfo = {
23231 { (JSJitGetterOp)passUnionWithByteString },
23232 { prototypes::id::TestExampleInterface },
23233 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23234 JSJitInfo::Method,
23235 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23236 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23237 false, /* isInfallible. False in setters. */
23238 false, /* isMovable. Not relevant for setters. */
23239 false, /* isEliminatable. Not relevant for setters. */
23240 false, /* isAlwaysInSlot. Only relevant for getters. */
23241 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23242 false, /* isTypedMethod. Only relevant for methods. */
23243 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23244};
23245
23246MOZ_CAN_RUN_SCRIPT static bool
23247passUnionWithUTF8String(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23248{
23249 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithUTF8String");
23250 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23253( cx, "TestExampleInterface"
, "passUnionWithUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23251 "TestExampleInterface", "passUnionWithUTF8String", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23253( cx, "TestExampleInterface"
, "passUnionWithUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23252 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23253( cx, "TestExampleInterface"
, "passUnionWithUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23253 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23253( cx, "TestExampleInterface"
, "passUnionWithUTF8String", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23254
23255 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23256 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithUTF8String", 1)) {
23257 return false;
23258 }
23259 UTF8StringOrLong arg0;
23260 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23261 return false;
23262 }
23263 // NOTE: This assert does NOT call the function.
23264 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithUTF8String(Constify(arg0)))>, "Should be returning void here");
23265 MOZ_KnownLive(self)(self)->PassUnionWithUTF8String(Constify(arg0));
23266 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23266); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23266; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23267 args.rval().setUndefined();
23268 return true;
23269}
23270
23271static const JSJitInfo passUnionWithUTF8String_methodinfo = {
23272 { (JSJitGetterOp)passUnionWithUTF8String },
23273 { prototypes::id::TestExampleInterface },
23274 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23275 JSJitInfo::Method,
23276 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23277 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23278 false, /* isInfallible. False in setters. */
23279 false, /* isMovable. Not relevant for setters. */
23280 false, /* isEliminatable. Not relevant for setters. */
23281 false, /* isAlwaysInSlot. Only relevant for getters. */
23282 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23283 false, /* isTypedMethod. Only relevant for methods. */
23284 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23285};
23286
23287MOZ_CAN_RUN_SCRIPT static bool
23288passUnionWithRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23289{
23290 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithRecord");
23291 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23294( cx, "TestExampleInterface"
, "passUnionWithRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23292 "TestExampleInterface", "passUnionWithRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23294( cx, "TestExampleInterface"
, "passUnionWithRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23293 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23294( cx, "TestExampleInterface"
, "passUnionWithRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23294 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23294( cx, "TestExampleInterface"
, "passUnionWithRecord", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23295
23296 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23297 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithRecord", 1)) {
23298 return false;
23299 }
23300 StringStringRecordOrString arg0;
23301 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23302 return false;
23303 }
23304 // NOTE: This assert does NOT call the function.
23305 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithRecord(Constify(arg0)))>, "Should be returning void here");
23306 MOZ_KnownLive(self)(self)->PassUnionWithRecord(Constify(arg0));
23307 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23307); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23307; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23308 args.rval().setUndefined();
23309 return true;
23310}
23311
23312static const JSJitInfo passUnionWithRecord_methodinfo = {
23313 { (JSJitGetterOp)passUnionWithRecord },
23314 { prototypes::id::TestExampleInterface },
23315 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23316 JSJitInfo::Method,
23317 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23318 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23319 false, /* isInfallible. False in setters. */
23320 false, /* isMovable. Not relevant for setters. */
23321 false, /* isEliminatable. Not relevant for setters. */
23322 false, /* isAlwaysInSlot. Only relevant for getters. */
23323 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23324 false, /* isTypedMethod. Only relevant for methods. */
23325 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23326};
23327
23328MOZ_CAN_RUN_SCRIPT static bool
23329passUnionWithRecordAndSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23330{
23331 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithRecordAndSequence");
23332 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23335( cx, "TestExampleInterface"
, "passUnionWithRecordAndSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23333 "TestExampleInterface", "passUnionWithRecordAndSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23335( cx, "TestExampleInterface"
, "passUnionWithRecordAndSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23334 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23335( cx, "TestExampleInterface"
, "passUnionWithRecordAndSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23335 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23335( cx, "TestExampleInterface"
, "passUnionWithRecordAndSequence", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23336
23337 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23338 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithRecordAndSequence", 1)) {
23339 return false;
23340 }
23341 StringStringRecordOrStringSequence arg0;
23342 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23343 return false;
23344 }
23345 // NOTE: This assert does NOT call the function.
23346 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithRecordAndSequence(Constify(arg0)))>, "Should be returning void here");
23347 MOZ_KnownLive(self)(self)->PassUnionWithRecordAndSequence(Constify(arg0));
23348 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23348); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23348; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23349 args.rval().setUndefined();
23350 return true;
23351}
23352
23353static const JSJitInfo passUnionWithRecordAndSequence_methodinfo = {
23354 { (JSJitGetterOp)passUnionWithRecordAndSequence },
23355 { prototypes::id::TestExampleInterface },
23356 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23357 JSJitInfo::Method,
23358 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23359 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23360 false, /* isInfallible. False in setters. */
23361 false, /* isMovable. Not relevant for setters. */
23362 false, /* isEliminatable. Not relevant for setters. */
23363 false, /* isAlwaysInSlot. Only relevant for getters. */
23364 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23365 false, /* isTypedMethod. Only relevant for methods. */
23366 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23367};
23368
23369MOZ_CAN_RUN_SCRIPT static bool
23370passUnionWithSequenceAndRecord(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23371{
23372 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithSequenceAndRecord");
23373 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23376( cx, "TestExampleInterface"
, "passUnionWithSequenceAndRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23374 "TestExampleInterface", "passUnionWithSequenceAndRecord", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23376( cx, "TestExampleInterface"
, "passUnionWithSequenceAndRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23375 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23376( cx, "TestExampleInterface"
, "passUnionWithSequenceAndRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23376 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23376( cx, "TestExampleInterface"
, "passUnionWithSequenceAndRecord", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23377
23378 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23379 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithSequenceAndRecord", 1)) {
23380 return false;
23381 }
23382 StringSequenceOrStringStringRecord arg0;
23383 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23384 return false;
23385 }
23386 // NOTE: This assert does NOT call the function.
23387 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithSequenceAndRecord(Constify(arg0)))>, "Should be returning void here");
23388 MOZ_KnownLive(self)(self)->PassUnionWithSequenceAndRecord(Constify(arg0));
23389 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23389); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23389; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23390 args.rval().setUndefined();
23391 return true;
23392}
23393
23394static const JSJitInfo passUnionWithSequenceAndRecord_methodinfo = {
23395 { (JSJitGetterOp)passUnionWithSequenceAndRecord },
23396 { prototypes::id::TestExampleInterface },
23397 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23398 JSJitInfo::Method,
23399 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23400 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23401 false, /* isInfallible. False in setters. */
23402 false, /* isMovable. Not relevant for setters. */
23403 false, /* isEliminatable. Not relevant for setters. */
23404 false, /* isAlwaysInSlot. Only relevant for getters. */
23405 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23406 false, /* isTypedMethod. Only relevant for methods. */
23407 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23408};
23409
23410MOZ_CAN_RUN_SCRIPT static bool
23411passUnionWithSVS(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23412{
23413 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithSVS");
23414 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23417( cx, "TestExampleInterface"
, "passUnionWithSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23415 "TestExampleInterface", "passUnionWithSVS", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23417( cx, "TestExampleInterface"
, "passUnionWithSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23416 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23417( cx, "TestExampleInterface"
, "passUnionWithSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23417 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23417( cx, "TestExampleInterface"
, "passUnionWithSVS", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23418
23419 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23420 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithSVS", 1)) {
23421 return false;
23422 }
23423 USVStringOrLong arg0;
23424 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23425 return false;
23426 }
23427 // NOTE: This assert does NOT call the function.
23428 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithSVS(Constify(arg0)))>, "Should be returning void here");
23429 MOZ_KnownLive(self)(self)->PassUnionWithSVS(Constify(arg0));
23430 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23430); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23430; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23431 args.rval().setUndefined();
23432 return true;
23433}
23434
23435static const JSJitInfo passUnionWithSVS_methodinfo = {
23436 { (JSJitGetterOp)passUnionWithSVS },
23437 { prototypes::id::TestExampleInterface },
23438 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23439 JSJitInfo::Method,
23440 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23441 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23442 false, /* isInfallible. False in setters. */
23443 false, /* isMovable. Not relevant for setters. */
23444 false, /* isEliminatable. Not relevant for setters. */
23445 false, /* isAlwaysInSlot. Only relevant for getters. */
23446 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23447 false, /* isTypedMethod. Only relevant for methods. */
23448 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23449};
23450
23451MOZ_CAN_RUN_SCRIPT static bool
23452passUnionWithNullable(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23453{
23454 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithNullable");
23455 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23458( cx, "TestExampleInterface"
, "passUnionWithNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23456 "TestExampleInterface", "passUnionWithNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23458( cx, "TestExampleInterface"
, "passUnionWithNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23457 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23458( cx, "TestExampleInterface"
, "passUnionWithNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23458 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23458( cx, "TestExampleInterface"
, "passUnionWithNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23459
23460 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23461 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithNullable", 1)) {
23462 return false;
23463 }
23464 ObjectOrNullOrLong arg0;
23465 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23466 return false;
23467 }
23468 // NOTE: This assert does NOT call the function.
23469 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithNullable(cx, Constify(arg0)))>, "Should be returning void here");
23470 MOZ_KnownLive(self)(self)->PassUnionWithNullable(cx, Constify(arg0));
23471 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23471); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23471; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23472 args.rval().setUndefined();
23473 return true;
23474}
23475
23476static const JSJitInfo passUnionWithNullable_methodinfo = {
23477 { (JSJitGetterOp)passUnionWithNullable },
23478 { prototypes::id::TestExampleInterface },
23479 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23480 JSJitInfo::Method,
23481 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23482 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23483 false, /* isInfallible. False in setters. */
23484 false, /* isMovable. Not relevant for setters. */
23485 false, /* isEliminatable. Not relevant for setters. */
23486 false, /* isAlwaysInSlot. Only relevant for getters. */
23487 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23488 false, /* isTypedMethod. Only relevant for methods. */
23489 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23490};
23491
23492MOZ_CAN_RUN_SCRIPT static bool
23493passNullableUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23494{
23495 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnion");
23496 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23499( cx, "TestExampleInterface"
, "passNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23497 "TestExampleInterface", "passNullableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23499( cx, "TestExampleInterface"
, "passNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23498 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23499( cx, "TestExampleInterface"
, "passNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23499 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23499( cx, "TestExampleInterface"
, "passNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23500
23501 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23502 if (!args.requireAtLeast(cx, "TestExampleInterface.passNullableUnion", 1)) {
23503 return false;
23504 }
23505 Nullable<ObjectOrLong > arg0;
23506 if (args[0].isNullOrUndefined()) {
23507 arg0.SetNull();
23508 } else {
23509 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
23510 return false;
23511 }
23512 }
23513 // NOTE: This assert does NOT call the function.
23514 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnion(cx, Constify(arg0)))>, "Should be returning void here");
23515 MOZ_KnownLive(self)(self)->PassNullableUnion(cx, Constify(arg0));
23516 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23516); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23516; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23517 args.rval().setUndefined();
23518 return true;
23519}
23520
23521static const JSJitInfo passNullableUnion_methodinfo = {
23522 { (JSJitGetterOp)passNullableUnion },
23523 { prototypes::id::TestExampleInterface },
23524 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23525 JSJitInfo::Method,
23526 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23527 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23528 false, /* isInfallible. False in setters. */
23529 false, /* isMovable. Not relevant for setters. */
23530 false, /* isEliminatable. Not relevant for setters. */
23531 false, /* isAlwaysInSlot. Only relevant for getters. */
23532 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23533 false, /* isTypedMethod. Only relevant for methods. */
23534 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23535};
23536
23537MOZ_CAN_RUN_SCRIPT static bool
23538passOptionalUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23539{
23540 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalUnion");
23541 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23544( cx, "TestExampleInterface"
, "passOptionalUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23542 "TestExampleInterface", "passOptionalUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23544( cx, "TestExampleInterface"
, "passOptionalUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23543 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23544( cx, "TestExampleInterface"
, "passOptionalUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23544 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23544( cx, "TestExampleInterface"
, "passOptionalUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23545
23546 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23547 Optional<ObjectOrLong> arg0;
23548 if (args.hasDefined(0)) {
23549 arg0.Construct();
23550 if (!arg0.Value().Init(cx, args[0], "Argument 1", false)) {
23551 return false;
23552 }
23553 }
23554 // NOTE: This assert does NOT call the function.
23555 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalUnion(cx, Constify(arg0)))>, "Should be returning void here");
23556 MOZ_KnownLive(self)(self)->PassOptionalUnion(cx, Constify(arg0));
23557 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23557); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23557; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23558 args.rval().setUndefined();
23559 return true;
23560}
23561
23562static const JSJitInfo passOptionalUnion_methodinfo = {
23563 { (JSJitGetterOp)passOptionalUnion },
23564 { prototypes::id::TestExampleInterface },
23565 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23566 JSJitInfo::Method,
23567 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23568 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23569 false, /* isInfallible. False in setters. */
23570 false, /* isMovable. Not relevant for setters. */
23571 false, /* isEliminatable. Not relevant for setters. */
23572 false, /* isAlwaysInSlot. Only relevant for getters. */
23573 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23574 false, /* isTypedMethod. Only relevant for methods. */
23575 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23576};
23577
23578MOZ_CAN_RUN_SCRIPT static bool
23579passOptionalNullableUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23580{
23581 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableUnion");
23582 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23585( cx, "TestExampleInterface"
, "passOptionalNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23583 "TestExampleInterface", "passOptionalNullableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23585( cx, "TestExampleInterface"
, "passOptionalNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23584 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23585( cx, "TestExampleInterface"
, "passOptionalNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23585 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23585( cx, "TestExampleInterface"
, "passOptionalNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23586
23587 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23588 Optional<Nullable<ObjectOrLong >> arg0;
23589 if (args.hasDefined(0)) {
23590 arg0.Construct();
23591 if (args[0].isNullOrUndefined()) {
23592 arg0.Value().SetNull();
23593 } else {
23594 if (!arg0.Value().SetValue().Init(cx, args[0], "Argument 1", false)) {
23595 return false;
23596 }
23597 }
23598 }
23599 // NOTE: This assert does NOT call the function.
23600 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableUnion(cx, Constify(arg0)))>, "Should be returning void here");
23601 MOZ_KnownLive(self)(self)->PassOptionalNullableUnion(cx, Constify(arg0));
23602 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23602); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23602; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23603 args.rval().setUndefined();
23604 return true;
23605}
23606
23607static const JSJitInfo passOptionalNullableUnion_methodinfo = {
23608 { (JSJitGetterOp)passOptionalNullableUnion },
23609 { prototypes::id::TestExampleInterface },
23610 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23611 JSJitInfo::Method,
23612 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23613 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23614 false, /* isInfallible. False in setters. */
23615 false, /* isMovable. Not relevant for setters. */
23616 false, /* isEliminatable. Not relevant for setters. */
23617 false, /* isAlwaysInSlot. Only relevant for getters. */
23618 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23619 false, /* isTypedMethod. Only relevant for methods. */
23620 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23621};
23622
23623MOZ_CAN_RUN_SCRIPT static bool
23624passOptionalNullableUnionWithDefaultValue(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23625{
23626 BindingCallContext cx(cx_, "TestExampleInterface.passOptionalNullableUnionWithDefaultValue");
23627 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23630( cx, "TestExampleInterface"
, "passOptionalNullableUnionWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23628 "TestExampleInterface", "passOptionalNullableUnionWithDefaultValue", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23630( cx, "TestExampleInterface"
, "passOptionalNullableUnionWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23629 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23630( cx, "TestExampleInterface"
, "passOptionalNullableUnionWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23630 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23630( cx, "TestExampleInterface"
, "passOptionalNullableUnionWithDefaultValue", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23631
23632 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23633 Nullable<ObjectOrLong > arg0;
23634 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
23635 arg0.SetNull();
23636 } else {
23637 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
23638 return false;
23639 }
23640 }
23641 // NOTE: This assert does NOT call the function.
23642 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalNullableUnionWithDefaultValue(cx, Constify(arg0)))>, "Should be returning void here");
23643 MOZ_KnownLive(self)(self)->PassOptionalNullableUnionWithDefaultValue(cx, Constify(arg0));
23644 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23644); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23644; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23645 args.rval().setUndefined();
23646 return true;
23647}
23648
23649static const JSJitInfo passOptionalNullableUnionWithDefaultValue_methodinfo = {
23650 { (JSJitGetterOp)passOptionalNullableUnionWithDefaultValue },
23651 { prototypes::id::TestExampleInterface },
23652 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23653 JSJitInfo::Method,
23654 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23655 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23656 false, /* isInfallible. False in setters. */
23657 false, /* isMovable. Not relevant for setters. */
23658 false, /* isEliminatable. Not relevant for setters. */
23659 false, /* isAlwaysInSlot. Only relevant for getters. */
23660 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23661 false, /* isTypedMethod. Only relevant for methods. */
23662 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23663};
23664
23665MOZ_CAN_RUN_SCRIPT static bool
23666passUnionWithArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23667{
23668 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithArrayBuffer");
23669 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23672( cx, "TestExampleInterface"
, "passUnionWithArrayBuffer", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23670 "TestExampleInterface", "passUnionWithArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23672( cx, "TestExampleInterface"
, "passUnionWithArrayBuffer", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23671 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23672( cx, "TestExampleInterface"
, "passUnionWithArrayBuffer", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23672 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23672( cx, "TestExampleInterface"
, "passUnionWithArrayBuffer", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23673
23674 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23675 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithArrayBuffer", 1)) {
23676 return false;
23677 }
23678 UTF8StringOrArrayBuffer arg0;
23679 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23680 return false;
23681 }
23682 // NOTE: This assert does NOT call the function.
23683 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithArrayBuffer(Constify(arg0)))>, "Should be returning void here");
23684 MOZ_KnownLive(self)(self)->PassUnionWithArrayBuffer(Constify(arg0));
23685 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23685); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23685; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23686 args.rval().setUndefined();
23687 return true;
23688}
23689
23690static const JSJitInfo passUnionWithArrayBuffer_methodinfo = {
23691 { (JSJitGetterOp)passUnionWithArrayBuffer },
23692 { prototypes::id::TestExampleInterface },
23693 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23694 JSJitInfo::Method,
23695 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23696 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23697 false, /* isInfallible. False in setters. */
23698 false, /* isMovable. Not relevant for setters. */
23699 false, /* isEliminatable. Not relevant for setters. */
23700 false, /* isAlwaysInSlot. Only relevant for getters. */
23701 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23702 false, /* isTypedMethod. Only relevant for methods. */
23703 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23704};
23705
23706MOZ_CAN_RUN_SCRIPT static bool
23707passUnionWithArrayBufferOrNull(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23708{
23709 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithArrayBufferOrNull");
23710 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23713( cx, "TestExampleInterface"
, "passUnionWithArrayBufferOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23711 "TestExampleInterface", "passUnionWithArrayBufferOrNull", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23713( cx, "TestExampleInterface"
, "passUnionWithArrayBufferOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23712 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23713( cx, "TestExampleInterface"
, "passUnionWithArrayBufferOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23713 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23713( cx, "TestExampleInterface"
, "passUnionWithArrayBufferOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23714
23715 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23716 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithArrayBufferOrNull", 1)) {
23717 return false;
23718 }
23719 UTF8StringOrArrayBufferOrNull arg0;
23720 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23721 return false;
23722 }
23723 // NOTE: This assert does NOT call the function.
23724 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithArrayBufferOrNull(Constify(arg0)))>, "Should be returning void here");
23725 MOZ_KnownLive(self)(self)->PassUnionWithArrayBufferOrNull(Constify(arg0));
23726 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23726); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23726; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23727 args.rval().setUndefined();
23728 return true;
23729}
23730
23731static const JSJitInfo passUnionWithArrayBufferOrNull_methodinfo = {
23732 { (JSJitGetterOp)passUnionWithArrayBufferOrNull },
23733 { prototypes::id::TestExampleInterface },
23734 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23735 JSJitInfo::Method,
23736 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23737 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23738 false, /* isInfallible. False in setters. */
23739 false, /* isMovable. Not relevant for setters. */
23740 false, /* isEliminatable. Not relevant for setters. */
23741 false, /* isAlwaysInSlot. Only relevant for getters. */
23742 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23743 false, /* isTypedMethod. Only relevant for methods. */
23744 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23745};
23746
23747MOZ_CAN_RUN_SCRIPT static bool
23748passUnionWithTypedArrays(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23749{
23750 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithTypedArrays");
23751 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23754( cx, "TestExampleInterface"
, "passUnionWithTypedArrays", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23752 "TestExampleInterface", "passUnionWithTypedArrays", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23754( cx, "TestExampleInterface"
, "passUnionWithTypedArrays", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23753 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23754( cx, "TestExampleInterface"
, "passUnionWithTypedArrays", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23754 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23754( cx, "TestExampleInterface"
, "passUnionWithTypedArrays", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23755
23756 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23757 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithTypedArrays", 1)) {
23758 return false;
23759 }
23760 ArrayBufferViewOrArrayBuffer arg0;
23761 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23762 return false;
23763 }
23764 // NOTE: This assert does NOT call the function.
23765 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithTypedArrays(Constify(arg0)))>, "Should be returning void here");
23766 MOZ_KnownLive(self)(self)->PassUnionWithTypedArrays(Constify(arg0));
23767 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23767); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23767; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23768 args.rval().setUndefined();
23769 return true;
23770}
23771
23772static const JSJitInfo passUnionWithTypedArrays_methodinfo = {
23773 { (JSJitGetterOp)passUnionWithTypedArrays },
23774 { prototypes::id::TestExampleInterface },
23775 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23776 JSJitInfo::Method,
23777 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23778 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23779 false, /* isInfallible. False in setters. */
23780 false, /* isMovable. Not relevant for setters. */
23781 false, /* isEliminatable. Not relevant for setters. */
23782 false, /* isAlwaysInSlot. Only relevant for getters. */
23783 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23784 false, /* isTypedMethod. Only relevant for methods. */
23785 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23786};
23787
23788MOZ_CAN_RUN_SCRIPT static bool
23789passUnionWithTypedArraysOrNull(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23790{
23791 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithTypedArraysOrNull");
23792 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23795( cx, "TestExampleInterface"
, "passUnionWithTypedArraysOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23793 "TestExampleInterface", "passUnionWithTypedArraysOrNull", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23795( cx, "TestExampleInterface"
, "passUnionWithTypedArraysOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23794 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23795( cx, "TestExampleInterface"
, "passUnionWithTypedArraysOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23795 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23795( cx, "TestExampleInterface"
, "passUnionWithTypedArraysOrNull", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23796
23797 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23798 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithTypedArraysOrNull", 1)) {
23799 return false;
23800 }
23801 ArrayBufferViewOrArrayBufferOrNull arg0;
23802 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23803 return false;
23804 }
23805 // NOTE: This assert does NOT call the function.
23806 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithTypedArraysOrNull(Constify(arg0)))>, "Should be returning void here");
23807 MOZ_KnownLive(self)(self)->PassUnionWithTypedArraysOrNull(Constify(arg0));
23808 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23808); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23808; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23809 args.rval().setUndefined();
23810 return true;
23811}
23812
23813static const JSJitInfo passUnionWithTypedArraysOrNull_methodinfo = {
23814 { (JSJitGetterOp)passUnionWithTypedArraysOrNull },
23815 { prototypes::id::TestExampleInterface },
23816 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23817 JSJitInfo::Method,
23818 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23819 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23820 false, /* isInfallible. False in setters. */
23821 false, /* isMovable. Not relevant for setters. */
23822 false, /* isEliminatable. Not relevant for setters. */
23823 false, /* isAlwaysInSlot. Only relevant for getters. */
23824 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23825 false, /* isTypedMethod. Only relevant for methods. */
23826 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23827};
23828
23829MOZ_CAN_RUN_SCRIPT static bool
23830passUnionWithString(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23831{
23832 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithString");
23833 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23836( cx, "TestExampleInterface"
, "passUnionWithString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23834 "TestExampleInterface", "passUnionWithString", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23836( cx, "TestExampleInterface"
, "passUnionWithString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23835 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23836( cx, "TestExampleInterface"
, "passUnionWithString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23836 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23836( cx, "TestExampleInterface"
, "passUnionWithString", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23837
23838 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23839 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithString", 1)) {
23840 return false;
23841 }
23842 StringOrObject arg0;
23843 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23844 return false;
23845 }
23846 // NOTE: This assert does NOT call the function.
23847 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithString(cx, Constify(arg0)))>, "Should be returning void here");
23848 MOZ_KnownLive(self)(self)->PassUnionWithString(cx, Constify(arg0));
23849 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23849); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23849; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23850 args.rval().setUndefined();
23851 return true;
23852}
23853
23854static const JSJitInfo passUnionWithString_methodinfo = {
23855 { (JSJitGetterOp)passUnionWithString },
23856 { prototypes::id::TestExampleInterface },
23857 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23858 JSJitInfo::Method,
23859 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23860 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23861 false, /* isInfallible. False in setters. */
23862 false, /* isMovable. Not relevant for setters. */
23863 false, /* isEliminatable. Not relevant for setters. */
23864 false, /* isAlwaysInSlot. Only relevant for getters. */
23865 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23866 false, /* isTypedMethod. Only relevant for methods. */
23867 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23868};
23869
23870MOZ_CAN_RUN_SCRIPT static bool
23871passUnionWithEnum(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23872{
23873 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithEnum");
23874 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23877( cx, "TestExampleInterface"
, "passUnionWithEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23875 "TestExampleInterface", "passUnionWithEnum", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23877( cx, "TestExampleInterface"
, "passUnionWithEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23876 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23877( cx, "TestExampleInterface"
, "passUnionWithEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23877 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23877( cx, "TestExampleInterface"
, "passUnionWithEnum", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23878
23879 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23880 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithEnum", 1)) {
23881 return false;
23882 }
23883 SupportedTypeOrObject arg0;
23884 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23885 return false;
23886 }
23887 // NOTE: This assert does NOT call the function.
23888 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithEnum(cx, Constify(arg0)))>, "Should be returning void here");
23889 MOZ_KnownLive(self)(self)->PassUnionWithEnum(cx, Constify(arg0));
23890 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23890); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23890; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23891 args.rval().setUndefined();
23892 return true;
23893}
23894
23895static const JSJitInfo passUnionWithEnum_methodinfo = {
23896 { (JSJitGetterOp)passUnionWithEnum },
23897 { prototypes::id::TestExampleInterface },
23898 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23899 JSJitInfo::Method,
23900 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23901 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23902 false, /* isInfallible. False in setters. */
23903 false, /* isMovable. Not relevant for setters. */
23904 false, /* isEliminatable. Not relevant for setters. */
23905 false, /* isAlwaysInSlot. Only relevant for getters. */
23906 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23907 false, /* isTypedMethod. Only relevant for methods. */
23908 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23909};
23910
23911MOZ_CAN_RUN_SCRIPT static bool
23912passUnionWithObject(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23913{
23914 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithObject");
23915 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23918( cx, "TestExampleInterface"
, "passUnionWithObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23916 "TestExampleInterface", "passUnionWithObject", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23918( cx, "TestExampleInterface"
, "passUnionWithObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23917 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23918( cx, "TestExampleInterface"
, "passUnionWithObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
23918 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23918( cx, "TestExampleInterface"
, "passUnionWithObject", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
23919
23920 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23921 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionWithObject", 1)) {
23922 return false;
23923 }
23924 ObjectOrLong arg0;
23925 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23926 return false;
23927 }
23928 // NOTE: This assert does NOT call the function.
23929 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithObject(cx, Constify(arg0)))>, "Should be returning void here");
23930 MOZ_KnownLive(self)(self)->PassUnionWithObject(cx, Constify(arg0));
23931 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23931); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23931; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23932 args.rval().setUndefined();
23933 return true;
23934}
23935
23936static const JSJitInfo passUnionWithObject_methodinfo = {
23937 { (JSJitGetterOp)passUnionWithObject },
23938 { prototypes::id::TestExampleInterface },
23939 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23940 JSJitInfo::Method,
23941 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23942 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23943 false, /* isInfallible. False in setters. */
23944 false, /* isMovable. Not relevant for setters. */
23945 false, /* isEliminatable. Not relevant for setters. */
23946 false, /* isAlwaysInSlot. Only relevant for getters. */
23947 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23948 false, /* isTypedMethod. Only relevant for methods. */
23949 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23950};
23951
23952MOZ_CAN_RUN_SCRIPT static bool
23953passUnionWithDefaultValue1(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23954{
23955 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue1");
23956 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject23959( cx, "TestExampleInterface"
, "passUnionWithDefaultValue1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23957 "TestExampleInterface", "passUnionWithDefaultValue1", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject23959( cx, "TestExampleInterface"
, "passUnionWithDefaultValue1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23958 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject23959( cx, "TestExampleInterface"
, "passUnionWithDefaultValue1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23959 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject23959( cx, "TestExampleInterface"
, "passUnionWithDefaultValue1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
23960
23961 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
23962 DoubleOrString arg0;
23963 if (!(args.hasDefined(0))) {
23964 arg0.SetStringLiteral(u"");
23965 } else {
23966 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
23967 return false;
23968 }
23969 }
23970 // NOTE: This assert does NOT call the function.
23971 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue1(Constify(arg0)))>, "Should be returning void here");
23972 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue1(Constify(arg0));
23973 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 23973); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 23973; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
23974 args.rval().setUndefined();
23975 return true;
23976}
23977
23978static const JSJitInfo passUnionWithDefaultValue1_methodinfo = {
23979 { (JSJitGetterOp)passUnionWithDefaultValue1 },
23980 { prototypes::id::TestExampleInterface },
23981 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
23982 JSJitInfo::Method,
23983 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
23984 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
23985 false, /* isInfallible. False in setters. */
23986 false, /* isMovable. Not relevant for setters. */
23987 false, /* isEliminatable. Not relevant for setters. */
23988 false, /* isAlwaysInSlot. Only relevant for getters. */
23989 false, /* isLazilyCachedInSlot. Only relevant for getters. */
23990 false, /* isTypedMethod. Only relevant for methods. */
23991 0 /* Reserved slot index, if we're stored in a slot, else 0. */
23992};
23993
23994MOZ_CAN_RUN_SCRIPT static bool
23995passUnionWithDefaultValue2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
23996{
23997 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue2");
23998 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24001( cx, "TestExampleInterface"
, "passUnionWithDefaultValue2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
23999 "TestExampleInterface", "passUnionWithDefaultValue2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24001( cx, "TestExampleInterface"
, "passUnionWithDefaultValue2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24000 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24001( cx, "TestExampleInterface"
, "passUnionWithDefaultValue2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24001 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24001( cx, "TestExampleInterface"
, "passUnionWithDefaultValue2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24002
24003 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24004 DoubleOrString arg0;
24005 if (!(args.hasDefined(0))) {
24006 arg0.RawSetAsDouble() = 1.0;
24007 } else {
24008 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24009 return false;
24010 }
24011 }
24012 // NOTE: This assert does NOT call the function.
24013 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue2(Constify(arg0)))>, "Should be returning void here");
24014 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue2(Constify(arg0));
24015 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24015); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24015; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24016 args.rval().setUndefined();
24017 return true;
24018}
24019
24020static const JSJitInfo passUnionWithDefaultValue2_methodinfo = {
24021 { (JSJitGetterOp)passUnionWithDefaultValue2 },
24022 { prototypes::id::TestExampleInterface },
24023 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24024 JSJitInfo::Method,
24025 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24026 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24027 false, /* isInfallible. False in setters. */
24028 false, /* isMovable. Not relevant for setters. */
24029 false, /* isEliminatable. Not relevant for setters. */
24030 false, /* isAlwaysInSlot. Only relevant for getters. */
24031 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24032 false, /* isTypedMethod. Only relevant for methods. */
24033 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24034};
24035
24036MOZ_CAN_RUN_SCRIPT static bool
24037passUnionWithDefaultValue3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24038{
24039 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue3");
24040 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24043( cx, "TestExampleInterface"
, "passUnionWithDefaultValue3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24041 "TestExampleInterface", "passUnionWithDefaultValue3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24043( cx, "TestExampleInterface"
, "passUnionWithDefaultValue3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24042 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24043( cx, "TestExampleInterface"
, "passUnionWithDefaultValue3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24043 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24043( cx, "TestExampleInterface"
, "passUnionWithDefaultValue3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24044
24045 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24046 DoubleOrString arg0;
24047 if (!(args.hasDefined(0))) {
24048 arg0.RawSetAsDouble() = 1.5;
24049 } else {
24050 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24051 return false;
24052 }
24053 }
24054 // NOTE: This assert does NOT call the function.
24055 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue3(Constify(arg0)))>, "Should be returning void here");
24056 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue3(Constify(arg0));
24057 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24057); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24057; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24058 args.rval().setUndefined();
24059 return true;
24060}
24061
24062static const JSJitInfo passUnionWithDefaultValue3_methodinfo = {
24063 { (JSJitGetterOp)passUnionWithDefaultValue3 },
24064 { prototypes::id::TestExampleInterface },
24065 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24066 JSJitInfo::Method,
24067 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24068 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24069 false, /* isInfallible. False in setters. */
24070 false, /* isMovable. Not relevant for setters. */
24071 false, /* isEliminatable. Not relevant for setters. */
24072 false, /* isAlwaysInSlot. Only relevant for getters. */
24073 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24074 false, /* isTypedMethod. Only relevant for methods. */
24075 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24076};
24077
24078MOZ_CAN_RUN_SCRIPT static bool
24079passUnionWithDefaultValue4(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24080{
24081 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue4");
24082 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24085( cx, "TestExampleInterface"
, "passUnionWithDefaultValue4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24083 "TestExampleInterface", "passUnionWithDefaultValue4", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24085( cx, "TestExampleInterface"
, "passUnionWithDefaultValue4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24084 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24085( cx, "TestExampleInterface"
, "passUnionWithDefaultValue4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24085 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24085( cx, "TestExampleInterface"
, "passUnionWithDefaultValue4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24086
24087 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24088 FloatOrString arg0;
24089 if (!(args.hasDefined(0))) {
24090 arg0.SetStringLiteral(u"");
24091 } else {
24092 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24093 return false;
24094 }
24095 }
24096 // NOTE: This assert does NOT call the function.
24097 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue4(Constify(arg0)))>, "Should be returning void here");
24098 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue4(Constify(arg0));
24099 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24099); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24099; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24100 args.rval().setUndefined();
24101 return true;
24102}
24103
24104static const JSJitInfo passUnionWithDefaultValue4_methodinfo = {
24105 { (JSJitGetterOp)passUnionWithDefaultValue4 },
24106 { prototypes::id::TestExampleInterface },
24107 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24108 JSJitInfo::Method,
24109 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24110 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24111 false, /* isInfallible. False in setters. */
24112 false, /* isMovable. Not relevant for setters. */
24113 false, /* isEliminatable. Not relevant for setters. */
24114 false, /* isAlwaysInSlot. Only relevant for getters. */
24115 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24116 false, /* isTypedMethod. Only relevant for methods. */
24117 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24118};
24119
24120MOZ_CAN_RUN_SCRIPT static bool
24121passUnionWithDefaultValue5(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24122{
24123 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue5");
24124 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24127( cx, "TestExampleInterface"
, "passUnionWithDefaultValue5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24125 "TestExampleInterface", "passUnionWithDefaultValue5", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24127( cx, "TestExampleInterface"
, "passUnionWithDefaultValue5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24126 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24127( cx, "TestExampleInterface"
, "passUnionWithDefaultValue5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24127 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24127( cx, "TestExampleInterface"
, "passUnionWithDefaultValue5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24128
24129 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24130 FloatOrString arg0;
24131 if (!(args.hasDefined(0))) {
24132 arg0.RawSetAsFloat() = 1.0F;
24133 } else {
24134 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24135 return false;
24136 }
24137 }
24138 // NOTE: This assert does NOT call the function.
24139 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue5(Constify(arg0)))>, "Should be returning void here");
24140 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue5(Constify(arg0));
24141 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24141); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24141; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24142 args.rval().setUndefined();
24143 return true;
24144}
24145
24146static const JSJitInfo passUnionWithDefaultValue5_methodinfo = {
24147 { (JSJitGetterOp)passUnionWithDefaultValue5 },
24148 { prototypes::id::TestExampleInterface },
24149 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24150 JSJitInfo::Method,
24151 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24152 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24153 false, /* isInfallible. False in setters. */
24154 false, /* isMovable. Not relevant for setters. */
24155 false, /* isEliminatable. Not relevant for setters. */
24156 false, /* isAlwaysInSlot. Only relevant for getters. */
24157 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24158 false, /* isTypedMethod. Only relevant for methods. */
24159 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24160};
24161
24162MOZ_CAN_RUN_SCRIPT static bool
24163passUnionWithDefaultValue6(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24164{
24165 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue6");
24166 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24169( cx, "TestExampleInterface"
, "passUnionWithDefaultValue6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24167 "TestExampleInterface", "passUnionWithDefaultValue6", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24169( cx, "TestExampleInterface"
, "passUnionWithDefaultValue6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24168 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24169( cx, "TestExampleInterface"
, "passUnionWithDefaultValue6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24169 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24169( cx, "TestExampleInterface"
, "passUnionWithDefaultValue6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24170
24171 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24172 FloatOrString arg0;
24173 if (!(args.hasDefined(0))) {
24174 arg0.RawSetAsFloat() = 1.5F;
24175 } else {
24176 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24177 return false;
24178 }
24179 }
24180 // NOTE: This assert does NOT call the function.
24181 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue6(Constify(arg0)))>, "Should be returning void here");
24182 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue6(Constify(arg0));
24183 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24183); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24183; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24184 args.rval().setUndefined();
24185 return true;
24186}
24187
24188static const JSJitInfo passUnionWithDefaultValue6_methodinfo = {
24189 { (JSJitGetterOp)passUnionWithDefaultValue6 },
24190 { prototypes::id::TestExampleInterface },
24191 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24192 JSJitInfo::Method,
24193 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24194 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24195 false, /* isInfallible. False in setters. */
24196 false, /* isMovable. Not relevant for setters. */
24197 false, /* isEliminatable. Not relevant for setters. */
24198 false, /* isAlwaysInSlot. Only relevant for getters. */
24199 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24200 false, /* isTypedMethod. Only relevant for methods. */
24201 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24202};
24203
24204MOZ_CAN_RUN_SCRIPT static bool
24205passUnionWithDefaultValue7(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24206{
24207 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue7");
24208 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24211( cx, "TestExampleInterface"
, "passUnionWithDefaultValue7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24209 "TestExampleInterface", "passUnionWithDefaultValue7", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24211( cx, "TestExampleInterface"
, "passUnionWithDefaultValue7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24210 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24211( cx, "TestExampleInterface"
, "passUnionWithDefaultValue7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24211 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24211( cx, "TestExampleInterface"
, "passUnionWithDefaultValue7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24212
24213 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24214 UnrestrictedDoubleOrString arg0;
24215 if (!(args.hasDefined(0))) {
24216 arg0.SetStringLiteral(u"");
24217 } else {
24218 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24219 return false;
24220 }
24221 }
24222 // NOTE: This assert does NOT call the function.
24223 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue7(Constify(arg0)))>, "Should be returning void here");
24224 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue7(Constify(arg0));
24225 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24225); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24225; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24226 args.rval().setUndefined();
24227 return true;
24228}
24229
24230static const JSJitInfo passUnionWithDefaultValue7_methodinfo = {
24231 { (JSJitGetterOp)passUnionWithDefaultValue7 },
24232 { prototypes::id::TestExampleInterface },
24233 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24234 JSJitInfo::Method,
24235 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24236 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24237 false, /* isInfallible. False in setters. */
24238 false, /* isMovable. Not relevant for setters. */
24239 false, /* isEliminatable. Not relevant for setters. */
24240 false, /* isAlwaysInSlot. Only relevant for getters. */
24241 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24242 false, /* isTypedMethod. Only relevant for methods. */
24243 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24244};
24245
24246MOZ_CAN_RUN_SCRIPT static bool
24247passUnionWithDefaultValue8(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24248{
24249 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue8");
24250 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24253( cx, "TestExampleInterface"
, "passUnionWithDefaultValue8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24251 "TestExampleInterface", "passUnionWithDefaultValue8", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24253( cx, "TestExampleInterface"
, "passUnionWithDefaultValue8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24252 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24253( cx, "TestExampleInterface"
, "passUnionWithDefaultValue8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24253 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24253( cx, "TestExampleInterface"
, "passUnionWithDefaultValue8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24254
24255 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24256 UnrestrictedDoubleOrString arg0;
24257 if (!(args.hasDefined(0))) {
24258 arg0.RawSetAsUnrestrictedDouble() = 1.0;
24259 } else {
24260 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24261 return false;
24262 }
24263 }
24264 // NOTE: This assert does NOT call the function.
24265 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue8(Constify(arg0)))>, "Should be returning void here");
24266 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue8(Constify(arg0));
24267 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24267); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24267; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24268 args.rval().setUndefined();
24269 return true;
24270}
24271
24272static const JSJitInfo passUnionWithDefaultValue8_methodinfo = {
24273 { (JSJitGetterOp)passUnionWithDefaultValue8 },
24274 { prototypes::id::TestExampleInterface },
24275 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24276 JSJitInfo::Method,
24277 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24278 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24279 false, /* isInfallible. False in setters. */
24280 false, /* isMovable. Not relevant for setters. */
24281 false, /* isEliminatable. Not relevant for setters. */
24282 false, /* isAlwaysInSlot. Only relevant for getters. */
24283 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24284 false, /* isTypedMethod. Only relevant for methods. */
24285 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24286};
24287
24288MOZ_CAN_RUN_SCRIPT static bool
24289passUnionWithDefaultValue9(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24290{
24291 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue9");
24292 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24295( cx, "TestExampleInterface"
, "passUnionWithDefaultValue9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24293 "TestExampleInterface", "passUnionWithDefaultValue9", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24295( cx, "TestExampleInterface"
, "passUnionWithDefaultValue9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24294 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24295( cx, "TestExampleInterface"
, "passUnionWithDefaultValue9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24295 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24295( cx, "TestExampleInterface"
, "passUnionWithDefaultValue9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24296
24297 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24298 UnrestrictedDoubleOrString arg0;
24299 if (!(args.hasDefined(0))) {
24300 arg0.RawSetAsUnrestrictedDouble() = 1.5;
24301 } else {
24302 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24303 return false;
24304 }
24305 }
24306 // NOTE: This assert does NOT call the function.
24307 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue9(Constify(arg0)))>, "Should be returning void here");
24308 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue9(Constify(arg0));
24309 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24309); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24309; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24310 args.rval().setUndefined();
24311 return true;
24312}
24313
24314static const JSJitInfo passUnionWithDefaultValue9_methodinfo = {
24315 { (JSJitGetterOp)passUnionWithDefaultValue9 },
24316 { prototypes::id::TestExampleInterface },
24317 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24318 JSJitInfo::Method,
24319 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24320 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24321 false, /* isInfallible. False in setters. */
24322 false, /* isMovable. Not relevant for setters. */
24323 false, /* isEliminatable. Not relevant for setters. */
24324 false, /* isAlwaysInSlot. Only relevant for getters. */
24325 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24326 false, /* isTypedMethod. Only relevant for methods. */
24327 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24328};
24329
24330MOZ_CAN_RUN_SCRIPT static bool
24331passUnionWithDefaultValue10(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24332{
24333 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue10");
24334 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24337( cx, "TestExampleInterface"
, "passUnionWithDefaultValue10", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24335 "TestExampleInterface", "passUnionWithDefaultValue10", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24337( cx, "TestExampleInterface"
, "passUnionWithDefaultValue10", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24336 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24337( cx, "TestExampleInterface"
, "passUnionWithDefaultValue10", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24337 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24337( cx, "TestExampleInterface"
, "passUnionWithDefaultValue10", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24338
24339 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24340 UnrestrictedDoubleOrString arg0;
24341 if (!(args.hasDefined(0))) {
24342 arg0.RawSetAsUnrestrictedDouble() = mozilla::PositiveInfinity<double>();
24343 } else {
24344 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24345 return false;
24346 }
24347 }
24348 // NOTE: This assert does NOT call the function.
24349 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue10(Constify(arg0)))>, "Should be returning void here");
24350 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue10(Constify(arg0));
24351 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24351); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24351; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24352 args.rval().setUndefined();
24353 return true;
24354}
24355
24356static const JSJitInfo passUnionWithDefaultValue10_methodinfo = {
24357 { (JSJitGetterOp)passUnionWithDefaultValue10 },
24358 { prototypes::id::TestExampleInterface },
24359 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24360 JSJitInfo::Method,
24361 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24362 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24363 false, /* isInfallible. False in setters. */
24364 false, /* isMovable. Not relevant for setters. */
24365 false, /* isEliminatable. Not relevant for setters. */
24366 false, /* isAlwaysInSlot. Only relevant for getters. */
24367 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24368 false, /* isTypedMethod. Only relevant for methods. */
24369 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24370};
24371
24372MOZ_CAN_RUN_SCRIPT static bool
24373passUnionWithDefaultValue11(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24374{
24375 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue11");
24376 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24379( cx, "TestExampleInterface"
, "passUnionWithDefaultValue11", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24377 "TestExampleInterface", "passUnionWithDefaultValue11", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24379( cx, "TestExampleInterface"
, "passUnionWithDefaultValue11", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24378 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24379( cx, "TestExampleInterface"
, "passUnionWithDefaultValue11", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24379 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24379( cx, "TestExampleInterface"
, "passUnionWithDefaultValue11", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24380
24381 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24382 UnrestrictedFloatOrString arg0;
24383 if (!(args.hasDefined(0))) {
24384 arg0.SetStringLiteral(u"");
24385 } else {
24386 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24387 return false;
24388 }
24389 }
24390 // NOTE: This assert does NOT call the function.
24391 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue11(Constify(arg0)))>, "Should be returning void here");
24392 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue11(Constify(arg0));
24393 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24393); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24393; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24394 args.rval().setUndefined();
24395 return true;
24396}
24397
24398static const JSJitInfo passUnionWithDefaultValue11_methodinfo = {
24399 { (JSJitGetterOp)passUnionWithDefaultValue11 },
24400 { prototypes::id::TestExampleInterface },
24401 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24402 JSJitInfo::Method,
24403 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24404 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24405 false, /* isInfallible. False in setters. */
24406 false, /* isMovable. Not relevant for setters. */
24407 false, /* isEliminatable. Not relevant for setters. */
24408 false, /* isAlwaysInSlot. Only relevant for getters. */
24409 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24410 false, /* isTypedMethod. Only relevant for methods. */
24411 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24412};
24413
24414MOZ_CAN_RUN_SCRIPT static bool
24415passUnionWithDefaultValue12(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24416{
24417 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue12");
24418 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24421( cx, "TestExampleInterface"
, "passUnionWithDefaultValue12", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24419 "TestExampleInterface", "passUnionWithDefaultValue12", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24421( cx, "TestExampleInterface"
, "passUnionWithDefaultValue12", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24420 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24421( cx, "TestExampleInterface"
, "passUnionWithDefaultValue12", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24421 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24421( cx, "TestExampleInterface"
, "passUnionWithDefaultValue12", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24422
24423 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24424 UnrestrictedFloatOrString arg0;
24425 if (!(args.hasDefined(0))) {
24426 arg0.RawSetAsUnrestrictedFloat() = 1.0F;
24427 } else {
24428 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24429 return false;
24430 }
24431 }
24432 // NOTE: This assert does NOT call the function.
24433 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue12(Constify(arg0)))>, "Should be returning void here");
24434 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue12(Constify(arg0));
24435 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24435); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24435; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24436 args.rval().setUndefined();
24437 return true;
24438}
24439
24440static const JSJitInfo passUnionWithDefaultValue12_methodinfo = {
24441 { (JSJitGetterOp)passUnionWithDefaultValue12 },
24442 { prototypes::id::TestExampleInterface },
24443 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24444 JSJitInfo::Method,
24445 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24446 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24447 false, /* isInfallible. False in setters. */
24448 false, /* isMovable. Not relevant for setters. */
24449 false, /* isEliminatable. Not relevant for setters. */
24450 false, /* isAlwaysInSlot. Only relevant for getters. */
24451 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24452 false, /* isTypedMethod. Only relevant for methods. */
24453 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24454};
24455
24456MOZ_CAN_RUN_SCRIPT static bool
24457passUnionWithDefaultValue13(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24458{
24459 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue13");
24460 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24463( cx, "TestExampleInterface"
, "passUnionWithDefaultValue13", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24461 "TestExampleInterface", "passUnionWithDefaultValue13", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24463( cx, "TestExampleInterface"
, "passUnionWithDefaultValue13", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24462 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24463( cx, "TestExampleInterface"
, "passUnionWithDefaultValue13", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24463 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24463( cx, "TestExampleInterface"
, "passUnionWithDefaultValue13", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24464
24465 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24466 UnrestrictedFloatOrString arg0;
24467 if (!(args.hasDefined(0))) {
24468 arg0.RawSetAsUnrestrictedFloat() = mozilla::PositiveInfinity<float>();
24469 } else {
24470 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24471 return false;
24472 }
24473 }
24474 // NOTE: This assert does NOT call the function.
24475 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue13(Constify(arg0)))>, "Should be returning void here");
24476 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue13(Constify(arg0));
24477 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24477); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24477; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24478 args.rval().setUndefined();
24479 return true;
24480}
24481
24482static const JSJitInfo passUnionWithDefaultValue13_methodinfo = {
24483 { (JSJitGetterOp)passUnionWithDefaultValue13 },
24484 { prototypes::id::TestExampleInterface },
24485 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24486 JSJitInfo::Method,
24487 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24488 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24489 false, /* isInfallible. False in setters. */
24490 false, /* isMovable. Not relevant for setters. */
24491 false, /* isEliminatable. Not relevant for setters. */
24492 false, /* isAlwaysInSlot. Only relevant for getters. */
24493 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24494 false, /* isTypedMethod. Only relevant for methods. */
24495 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24496};
24497
24498MOZ_CAN_RUN_SCRIPT static bool
24499passUnionWithDefaultValue14(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24500{
24501 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue14");
24502 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24505( cx, "TestExampleInterface"
, "passUnionWithDefaultValue14", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24503 "TestExampleInterface", "passUnionWithDefaultValue14", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24505( cx, "TestExampleInterface"
, "passUnionWithDefaultValue14", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24504 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24505( cx, "TestExampleInterface"
, "passUnionWithDefaultValue14", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24505 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24505( cx, "TestExampleInterface"
, "passUnionWithDefaultValue14", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24506
24507 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24508 DoubleOrByteString arg0;
24509 if (!(args.hasDefined(0))) {
24510 arg0.SetStringLiteral("");
24511 } else {
24512 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24513 return false;
24514 }
24515 }
24516 // NOTE: This assert does NOT call the function.
24517 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue14(Constify(arg0)))>, "Should be returning void here");
24518 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue14(Constify(arg0));
24519 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24519); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24519; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24520 args.rval().setUndefined();
24521 return true;
24522}
24523
24524static const JSJitInfo passUnionWithDefaultValue14_methodinfo = {
24525 { (JSJitGetterOp)passUnionWithDefaultValue14 },
24526 { prototypes::id::TestExampleInterface },
24527 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24528 JSJitInfo::Method,
24529 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24530 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24531 false, /* isInfallible. False in setters. */
24532 false, /* isMovable. Not relevant for setters. */
24533 false, /* isEliminatable. Not relevant for setters. */
24534 false, /* isAlwaysInSlot. Only relevant for getters. */
24535 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24536 false, /* isTypedMethod. Only relevant for methods. */
24537 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24538};
24539
24540MOZ_CAN_RUN_SCRIPT static bool
24541passUnionWithDefaultValue15(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24542{
24543 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue15");
24544 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24547( cx, "TestExampleInterface"
, "passUnionWithDefaultValue15", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24545 "TestExampleInterface", "passUnionWithDefaultValue15", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24547( cx, "TestExampleInterface"
, "passUnionWithDefaultValue15", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24546 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24547( cx, "TestExampleInterface"
, "passUnionWithDefaultValue15", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24547 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24547( cx, "TestExampleInterface"
, "passUnionWithDefaultValue15", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24548
24549 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24550 DoubleOrByteString arg0;
24551 if (!(args.hasDefined(0))) {
24552 arg0.RawSetAsDouble() = 1.0;
24553 } else {
24554 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24555 return false;
24556 }
24557 }
24558 // NOTE: This assert does NOT call the function.
24559 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue15(Constify(arg0)))>, "Should be returning void here");
24560 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue15(Constify(arg0));
24561 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24561); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24561; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24562 args.rval().setUndefined();
24563 return true;
24564}
24565
24566static const JSJitInfo passUnionWithDefaultValue15_methodinfo = {
24567 { (JSJitGetterOp)passUnionWithDefaultValue15 },
24568 { prototypes::id::TestExampleInterface },
24569 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24570 JSJitInfo::Method,
24571 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24572 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24573 false, /* isInfallible. False in setters. */
24574 false, /* isMovable. Not relevant for setters. */
24575 false, /* isEliminatable. Not relevant for setters. */
24576 false, /* isAlwaysInSlot. Only relevant for getters. */
24577 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24578 false, /* isTypedMethod. Only relevant for methods. */
24579 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24580};
24581
24582MOZ_CAN_RUN_SCRIPT static bool
24583passUnionWithDefaultValue16(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24584{
24585 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue16");
24586 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24589( cx, "TestExampleInterface"
, "passUnionWithDefaultValue16", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24587 "TestExampleInterface", "passUnionWithDefaultValue16", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24589( cx, "TestExampleInterface"
, "passUnionWithDefaultValue16", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24588 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24589( cx, "TestExampleInterface"
, "passUnionWithDefaultValue16", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24589 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24589( cx, "TestExampleInterface"
, "passUnionWithDefaultValue16", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24590
24591 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24592 DoubleOrByteString arg0;
24593 if (!(args.hasDefined(0))) {
24594 arg0.RawSetAsDouble() = 1.5;
24595 } else {
24596 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24597 return false;
24598 }
24599 }
24600 // NOTE: This assert does NOT call the function.
24601 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue16(Constify(arg0)))>, "Should be returning void here");
24602 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue16(Constify(arg0));
24603 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24603); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24603; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24604 args.rval().setUndefined();
24605 return true;
24606}
24607
24608static const JSJitInfo passUnionWithDefaultValue16_methodinfo = {
24609 { (JSJitGetterOp)passUnionWithDefaultValue16 },
24610 { prototypes::id::TestExampleInterface },
24611 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24612 JSJitInfo::Method,
24613 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24614 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24615 false, /* isInfallible. False in setters. */
24616 false, /* isMovable. Not relevant for setters. */
24617 false, /* isEliminatable. Not relevant for setters. */
24618 false, /* isAlwaysInSlot. Only relevant for getters. */
24619 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24620 false, /* isTypedMethod. Only relevant for methods. */
24621 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24622};
24623
24624MOZ_CAN_RUN_SCRIPT static bool
24625passUnionWithDefaultValue17(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24626{
24627 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue17");
24628 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24631( cx, "TestExampleInterface"
, "passUnionWithDefaultValue17", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24629 "TestExampleInterface", "passUnionWithDefaultValue17", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24631( cx, "TestExampleInterface"
, "passUnionWithDefaultValue17", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24630 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24631( cx, "TestExampleInterface"
, "passUnionWithDefaultValue17", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24631 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24631( cx, "TestExampleInterface"
, "passUnionWithDefaultValue17", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24632
24633 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24634 DoubleOrSupportedType arg0;
24635 if (!(args.hasDefined(0))) {
24636 arg0.RawSetAsSupportedType() = SupportedType::Text_html;
24637 } else {
24638 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24639 return false;
24640 }
24641 }
24642 // NOTE: This assert does NOT call the function.
24643 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue17(Constify(arg0)))>, "Should be returning void here");
24644 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue17(Constify(arg0));
24645 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24645); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24645; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24646 args.rval().setUndefined();
24647 return true;
24648}
24649
24650static const JSJitInfo passUnionWithDefaultValue17_methodinfo = {
24651 { (JSJitGetterOp)passUnionWithDefaultValue17 },
24652 { prototypes::id::TestExampleInterface },
24653 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24654 JSJitInfo::Method,
24655 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24656 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24657 false, /* isInfallible. False in setters. */
24658 false, /* isMovable. Not relevant for setters. */
24659 false, /* isEliminatable. Not relevant for setters. */
24660 false, /* isAlwaysInSlot. Only relevant for getters. */
24661 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24662 false, /* isTypedMethod. Only relevant for methods. */
24663 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24664};
24665
24666MOZ_CAN_RUN_SCRIPT static bool
24667passUnionWithDefaultValue18(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24668{
24669 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue18");
24670 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24673( cx, "TestExampleInterface"
, "passUnionWithDefaultValue18", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24671 "TestExampleInterface", "passUnionWithDefaultValue18", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24673( cx, "TestExampleInterface"
, "passUnionWithDefaultValue18", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24672 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24673( cx, "TestExampleInterface"
, "passUnionWithDefaultValue18", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24673 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24673( cx, "TestExampleInterface"
, "passUnionWithDefaultValue18", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24674
24675 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24676 DoubleOrSupportedType arg0;
24677 if (!(args.hasDefined(0))) {
24678 arg0.RawSetAsDouble() = 1.0;
24679 } else {
24680 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24681 return false;
24682 }
24683 }
24684 // NOTE: This assert does NOT call the function.
24685 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue18(Constify(arg0)))>, "Should be returning void here");
24686 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue18(Constify(arg0));
24687 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24687); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24687; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24688 args.rval().setUndefined();
24689 return true;
24690}
24691
24692static const JSJitInfo passUnionWithDefaultValue18_methodinfo = {
24693 { (JSJitGetterOp)passUnionWithDefaultValue18 },
24694 { prototypes::id::TestExampleInterface },
24695 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24696 JSJitInfo::Method,
24697 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24698 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24699 false, /* isInfallible. False in setters. */
24700 false, /* isMovable. Not relevant for setters. */
24701 false, /* isEliminatable. Not relevant for setters. */
24702 false, /* isAlwaysInSlot. Only relevant for getters. */
24703 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24704 false, /* isTypedMethod. Only relevant for methods. */
24705 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24706};
24707
24708MOZ_CAN_RUN_SCRIPT static bool
24709passUnionWithDefaultValue19(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24710{
24711 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue19");
24712 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24715( cx, "TestExampleInterface"
, "passUnionWithDefaultValue19", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24713 "TestExampleInterface", "passUnionWithDefaultValue19", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24715( cx, "TestExampleInterface"
, "passUnionWithDefaultValue19", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24714 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24715( cx, "TestExampleInterface"
, "passUnionWithDefaultValue19", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24715 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24715( cx, "TestExampleInterface"
, "passUnionWithDefaultValue19", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24716
24717 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24718 DoubleOrSupportedType arg0;
24719 if (!(args.hasDefined(0))) {
24720 arg0.RawSetAsDouble() = 1.5;
24721 } else {
24722 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24723 return false;
24724 }
24725 }
24726 // NOTE: This assert does NOT call the function.
24727 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue19(Constify(arg0)))>, "Should be returning void here");
24728 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue19(Constify(arg0));
24729 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24729); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24729; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24730 args.rval().setUndefined();
24731 return true;
24732}
24733
24734static const JSJitInfo passUnionWithDefaultValue19_methodinfo = {
24735 { (JSJitGetterOp)passUnionWithDefaultValue19 },
24736 { prototypes::id::TestExampleInterface },
24737 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24738 JSJitInfo::Method,
24739 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24740 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24741 false, /* isInfallible. False in setters. */
24742 false, /* isMovable. Not relevant for setters. */
24743 false, /* isEliminatable. Not relevant for setters. */
24744 false, /* isAlwaysInSlot. Only relevant for getters. */
24745 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24746 false, /* isTypedMethod. Only relevant for methods. */
24747 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24748};
24749
24750MOZ_CAN_RUN_SCRIPT static bool
24751passUnionWithDefaultValue20(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24752{
24753 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue20");
24754 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24757( cx, "TestExampleInterface"
, "passUnionWithDefaultValue20", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24755 "TestExampleInterface", "passUnionWithDefaultValue20", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24757( cx, "TestExampleInterface"
, "passUnionWithDefaultValue20", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24756 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24757( cx, "TestExampleInterface"
, "passUnionWithDefaultValue20", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24757 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24757( cx, "TestExampleInterface"
, "passUnionWithDefaultValue20", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24758
24759 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24760 DoubleOrUSVString arg0;
24761 if (!(args.hasDefined(0))) {
24762 arg0.SetStringLiteral(u"abc");
24763 } else {
24764 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24765 return false;
24766 }
24767 }
24768 // NOTE: This assert does NOT call the function.
24769 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue20(Constify(arg0)))>, "Should be returning void here");
24770 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue20(Constify(arg0));
24771 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24771); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24771; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24772 args.rval().setUndefined();
24773 return true;
24774}
24775
24776static const JSJitInfo passUnionWithDefaultValue20_methodinfo = {
24777 { (JSJitGetterOp)passUnionWithDefaultValue20 },
24778 { prototypes::id::TestExampleInterface },
24779 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24780 JSJitInfo::Method,
24781 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24782 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24783 false, /* isInfallible. False in setters. */
24784 false, /* isMovable. Not relevant for setters. */
24785 false, /* isEliminatable. Not relevant for setters. */
24786 false, /* isAlwaysInSlot. Only relevant for getters. */
24787 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24788 false, /* isTypedMethod. Only relevant for methods. */
24789 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24790};
24791
24792MOZ_CAN_RUN_SCRIPT static bool
24793passUnionWithDefaultValue21(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24794{
24795 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue21");
24796 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24799( cx, "TestExampleInterface"
, "passUnionWithDefaultValue21", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24797 "TestExampleInterface", "passUnionWithDefaultValue21", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24799( cx, "TestExampleInterface"
, "passUnionWithDefaultValue21", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24798 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24799( cx, "TestExampleInterface"
, "passUnionWithDefaultValue21", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24799 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24799( cx, "TestExampleInterface"
, "passUnionWithDefaultValue21", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24800
24801 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24802 DoubleOrUSVString arg0;
24803 if (!(args.hasDefined(0))) {
24804 arg0.RawSetAsDouble() = 1.0;
24805 } else {
24806 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24807 return false;
24808 }
24809 }
24810 // NOTE: This assert does NOT call the function.
24811 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue21(Constify(arg0)))>, "Should be returning void here");
24812 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue21(Constify(arg0));
24813 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24813); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24813; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24814 args.rval().setUndefined();
24815 return true;
24816}
24817
24818static const JSJitInfo passUnionWithDefaultValue21_methodinfo = {
24819 { (JSJitGetterOp)passUnionWithDefaultValue21 },
24820 { prototypes::id::TestExampleInterface },
24821 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24822 JSJitInfo::Method,
24823 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24824 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24825 false, /* isInfallible. False in setters. */
24826 false, /* isMovable. Not relevant for setters. */
24827 false, /* isEliminatable. Not relevant for setters. */
24828 false, /* isAlwaysInSlot. Only relevant for getters. */
24829 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24830 false, /* isTypedMethod. Only relevant for methods. */
24831 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24832};
24833
24834MOZ_CAN_RUN_SCRIPT static bool
24835passUnionWithDefaultValue22(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24836{
24837 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue22");
24838 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24841( cx, "TestExampleInterface"
, "passUnionWithDefaultValue22", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24839 "TestExampleInterface", "passUnionWithDefaultValue22", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24841( cx, "TestExampleInterface"
, "passUnionWithDefaultValue22", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24840 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24841( cx, "TestExampleInterface"
, "passUnionWithDefaultValue22", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24841 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24841( cx, "TestExampleInterface"
, "passUnionWithDefaultValue22", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24842
24843 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24844 DoubleOrUSVString arg0;
24845 if (!(args.hasDefined(0))) {
24846 arg0.RawSetAsDouble() = 1.5;
24847 } else {
24848 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24849 return false;
24850 }
24851 }
24852 // NOTE: This assert does NOT call the function.
24853 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue22(Constify(arg0)))>, "Should be returning void here");
24854 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue22(Constify(arg0));
24855 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24855); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24855; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24856 args.rval().setUndefined();
24857 return true;
24858}
24859
24860static const JSJitInfo passUnionWithDefaultValue22_methodinfo = {
24861 { (JSJitGetterOp)passUnionWithDefaultValue22 },
24862 { prototypes::id::TestExampleInterface },
24863 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24864 JSJitInfo::Method,
24865 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24866 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24867 false, /* isInfallible. False in setters. */
24868 false, /* isMovable. Not relevant for setters. */
24869 false, /* isEliminatable. Not relevant for setters. */
24870 false, /* isAlwaysInSlot. Only relevant for getters. */
24871 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24872 false, /* isTypedMethod. Only relevant for methods. */
24873 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24874};
24875
24876MOZ_CAN_RUN_SCRIPT static bool
24877passUnionWithDefaultValue23(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24878{
24879 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue23");
24880 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24883( cx, "TestExampleInterface"
, "passUnionWithDefaultValue23", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24881 "TestExampleInterface", "passUnionWithDefaultValue23", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24883( cx, "TestExampleInterface"
, "passUnionWithDefaultValue23", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24882 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24883( cx, "TestExampleInterface"
, "passUnionWithDefaultValue23", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24883 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24883( cx, "TestExampleInterface"
, "passUnionWithDefaultValue23", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24884
24885 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24886 DoubleOrUTF8String arg0;
24887 if (!(args.hasDefined(0))) {
24888 arg0.SetStringLiteral("");
24889 } else {
24890 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24891 return false;
24892 }
24893 }
24894 // NOTE: This assert does NOT call the function.
24895 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue23(Constify(arg0)))>, "Should be returning void here");
24896 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue23(Constify(arg0));
24897 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24897); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24897; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24898 args.rval().setUndefined();
24899 return true;
24900}
24901
24902static const JSJitInfo passUnionWithDefaultValue23_methodinfo = {
24903 { (JSJitGetterOp)passUnionWithDefaultValue23 },
24904 { prototypes::id::TestExampleInterface },
24905 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24906 JSJitInfo::Method,
24907 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24908 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24909 false, /* isInfallible. False in setters. */
24910 false, /* isMovable. Not relevant for setters. */
24911 false, /* isEliminatable. Not relevant for setters. */
24912 false, /* isAlwaysInSlot. Only relevant for getters. */
24913 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24914 false, /* isTypedMethod. Only relevant for methods. */
24915 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24916};
24917
24918MOZ_CAN_RUN_SCRIPT static bool
24919passUnionWithDefaultValue24(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24920{
24921 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue24");
24922 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24925( cx, "TestExampleInterface"
, "passUnionWithDefaultValue24", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24923 "TestExampleInterface", "passUnionWithDefaultValue24", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24925( cx, "TestExampleInterface"
, "passUnionWithDefaultValue24", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24924 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24925( cx, "TestExampleInterface"
, "passUnionWithDefaultValue24", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24925 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24925( cx, "TestExampleInterface"
, "passUnionWithDefaultValue24", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24926
24927 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24928 DoubleOrUTF8String arg0;
24929 if (!(args.hasDefined(0))) {
24930 arg0.RawSetAsDouble() = 1.0;
24931 } else {
24932 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24933 return false;
24934 }
24935 }
24936 // NOTE: This assert does NOT call the function.
24937 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue24(Constify(arg0)))>, "Should be returning void here");
24938 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue24(Constify(arg0));
24939 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24939); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24939; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24940 args.rval().setUndefined();
24941 return true;
24942}
24943
24944static const JSJitInfo passUnionWithDefaultValue24_methodinfo = {
24945 { (JSJitGetterOp)passUnionWithDefaultValue24 },
24946 { prototypes::id::TestExampleInterface },
24947 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24948 JSJitInfo::Method,
24949 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24950 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24951 false, /* isInfallible. False in setters. */
24952 false, /* isMovable. Not relevant for setters. */
24953 false, /* isEliminatable. Not relevant for setters. */
24954 false, /* isAlwaysInSlot. Only relevant for getters. */
24955 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24956 false, /* isTypedMethod. Only relevant for methods. */
24957 0 /* Reserved slot index, if we're stored in a slot, else 0. */
24958};
24959
24960MOZ_CAN_RUN_SCRIPT static bool
24961passUnionWithDefaultValue25(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
24962{
24963 BindingCallContext cx(cx_, "TestExampleInterface.passUnionWithDefaultValue25");
24964 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject24967( cx, "TestExampleInterface"
, "passUnionWithDefaultValue25", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24965 "TestExampleInterface", "passUnionWithDefaultValue25", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject24967( cx, "TestExampleInterface"
, "passUnionWithDefaultValue25", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24966 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject24967( cx, "TestExampleInterface"
, "passUnionWithDefaultValue25", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
24967 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject24967( cx, "TestExampleInterface"
, "passUnionWithDefaultValue25", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
24968
24969 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
24970 DoubleOrUTF8String arg0;
24971 if (!(args.hasDefined(0))) {
24972 arg0.RawSetAsDouble() = 1.5;
24973 } else {
24974 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
24975 return false;
24976 }
24977 }
24978 // NOTE: This assert does NOT call the function.
24979 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue25(Constify(arg0)))>, "Should be returning void here");
24980 MOZ_KnownLive(self)(self)->PassUnionWithDefaultValue25(Constify(arg0));
24981 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 24981); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 24981; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
24982 args.rval().setUndefined();
24983 return true;
24984}
24985
24986static const JSJitInfo passUnionWithDefaultValue25_methodinfo = {
24987 { (JSJitGetterOp)passUnionWithDefaultValue25 },
24988 { prototypes::id::TestExampleInterface },
24989 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
24990 JSJitInfo::Method,
24991 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
24992 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
24993 false, /* isInfallible. False in setters. */
24994 false, /* isMovable. Not relevant for setters. */
24995 false, /* isEliminatable. Not relevant for setters. */
24996 false, /* isAlwaysInSlot. Only relevant for getters. */
24997 false, /* isLazilyCachedInSlot. Only relevant for getters. */
24998 false, /* isTypedMethod. Only relevant for methods. */
24999 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25000};
25001
25002MOZ_CAN_RUN_SCRIPT static bool
25003passNullableUnionWithDefaultValue1(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25004{
25005 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue1");
25006 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25009( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue1", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25007 "TestExampleInterface", "passNullableUnionWithDefaultValue1", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25009( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue1", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25008 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25009( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue1", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25009 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25009( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue1", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25010
25011 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25012 Nullable<DoubleOrString > arg0;
25013 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25014 arg0.SetNull();
25015 } else {
25016 if (!(args.hasDefined(0))) {
25017 arg0.SetValue().SetStringLiteral(u"");
25018 } else {
25019 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25020 return false;
25021 }
25022 }
25023 }
25024 // NOTE: This assert does NOT call the function.
25025 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue1(Constify(arg0)))>, "Should be returning void here");
25026 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue1(Constify(arg0));
25027 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25027); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25027; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25028 args.rval().setUndefined();
25029 return true;
25030}
25031
25032static const JSJitInfo passNullableUnionWithDefaultValue1_methodinfo = {
25033 { (JSJitGetterOp)passNullableUnionWithDefaultValue1 },
25034 { prototypes::id::TestExampleInterface },
25035 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25036 JSJitInfo::Method,
25037 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25038 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25039 false, /* isInfallible. False in setters. */
25040 false, /* isMovable. Not relevant for setters. */
25041 false, /* isEliminatable. Not relevant for setters. */
25042 false, /* isAlwaysInSlot. Only relevant for getters. */
25043 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25044 false, /* isTypedMethod. Only relevant for methods. */
25045 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25046};
25047
25048MOZ_CAN_RUN_SCRIPT static bool
25049passNullableUnionWithDefaultValue2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25050{
25051 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue2");
25052 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25055( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25053 "TestExampleInterface", "passNullableUnionWithDefaultValue2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25055( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25054 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25055( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25055 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25055( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue2", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25056
25057 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25058 Nullable<DoubleOrString > arg0;
25059 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25060 arg0.SetNull();
25061 } else {
25062 if (!(args.hasDefined(0))) {
25063 arg0.SetValue().RawSetAsDouble() = 1.0;
25064 } else {
25065 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25066 return false;
25067 }
25068 }
25069 }
25070 // NOTE: This assert does NOT call the function.
25071 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue2(Constify(arg0)))>, "Should be returning void here");
25072 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue2(Constify(arg0));
25073 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25073); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25073; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25074 args.rval().setUndefined();
25075 return true;
25076}
25077
25078static const JSJitInfo passNullableUnionWithDefaultValue2_methodinfo = {
25079 { (JSJitGetterOp)passNullableUnionWithDefaultValue2 },
25080 { prototypes::id::TestExampleInterface },
25081 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25082 JSJitInfo::Method,
25083 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25084 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25085 false, /* isInfallible. False in setters. */
25086 false, /* isMovable. Not relevant for setters. */
25087 false, /* isEliminatable. Not relevant for setters. */
25088 false, /* isAlwaysInSlot. Only relevant for getters. */
25089 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25090 false, /* isTypedMethod. Only relevant for methods. */
25091 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25092};
25093
25094MOZ_CAN_RUN_SCRIPT static bool
25095passNullableUnionWithDefaultValue3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25096{
25097 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue3");
25098 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25101( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue3", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25099 "TestExampleInterface", "passNullableUnionWithDefaultValue3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25101( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue3", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25100 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25101( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue3", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25101 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25101( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue3", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25102
25103 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25104 Nullable<DoubleOrString > arg0;
25105 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
25106 arg0.SetNull();
25107 } else {
25108 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25109 return false;
25110 }
25111 }
25112 // NOTE: This assert does NOT call the function.
25113 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue3(Constify(arg0)))>, "Should be returning void here");
25114 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue3(Constify(arg0));
25115 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25115); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25115; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25116 args.rval().setUndefined();
25117 return true;
25118}
25119
25120static const JSJitInfo passNullableUnionWithDefaultValue3_methodinfo = {
25121 { (JSJitGetterOp)passNullableUnionWithDefaultValue3 },
25122 { prototypes::id::TestExampleInterface },
25123 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25124 JSJitInfo::Method,
25125 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25126 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25127 false, /* isInfallible. False in setters. */
25128 false, /* isMovable. Not relevant for setters. */
25129 false, /* isEliminatable. Not relevant for setters. */
25130 false, /* isAlwaysInSlot. Only relevant for getters. */
25131 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25132 false, /* isTypedMethod. Only relevant for methods. */
25133 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25134};
25135
25136MOZ_CAN_RUN_SCRIPT static bool
25137passNullableUnionWithDefaultValue4(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25138{
25139 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue4");
25140 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25143( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue4", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25141 "TestExampleInterface", "passNullableUnionWithDefaultValue4", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25143( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue4", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25142 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25143( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue4", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25143 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25143( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue4", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25144
25145 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25146 Nullable<FloatOrString > arg0;
25147 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25148 arg0.SetNull();
25149 } else {
25150 if (!(args.hasDefined(0))) {
25151 arg0.SetValue().SetStringLiteral(u"");
25152 } else {
25153 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25154 return false;
25155 }
25156 }
25157 }
25158 // NOTE: This assert does NOT call the function.
25159 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue4(Constify(arg0)))>, "Should be returning void here");
25160 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue4(Constify(arg0));
25161 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25161); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25161; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25162 args.rval().setUndefined();
25163 return true;
25164}
25165
25166static const JSJitInfo passNullableUnionWithDefaultValue4_methodinfo = {
25167 { (JSJitGetterOp)passNullableUnionWithDefaultValue4 },
25168 { prototypes::id::TestExampleInterface },
25169 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25170 JSJitInfo::Method,
25171 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25172 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25173 false, /* isInfallible. False in setters. */
25174 false, /* isMovable. Not relevant for setters. */
25175 false, /* isEliminatable. Not relevant for setters. */
25176 false, /* isAlwaysInSlot. Only relevant for getters. */
25177 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25178 false, /* isTypedMethod. Only relevant for methods. */
25179 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25180};
25181
25182MOZ_CAN_RUN_SCRIPT static bool
25183passNullableUnionWithDefaultValue5(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25184{
25185 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue5");
25186 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25189( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue5", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25187 "TestExampleInterface", "passNullableUnionWithDefaultValue5", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25189( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue5", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25188 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25189( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue5", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25189 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25189( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue5", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25190
25191 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25192 Nullable<FloatOrString > arg0;
25193 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25194 arg0.SetNull();
25195 } else {
25196 if (!(args.hasDefined(0))) {
25197 arg0.SetValue().RawSetAsFloat() = 1.0F;
25198 } else {
25199 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25200 return false;
25201 }
25202 }
25203 }
25204 // NOTE: This assert does NOT call the function.
25205 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue5(Constify(arg0)))>, "Should be returning void here");
25206 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue5(Constify(arg0));
25207 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25207); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25207; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25208 args.rval().setUndefined();
25209 return true;
25210}
25211
25212static const JSJitInfo passNullableUnionWithDefaultValue5_methodinfo = {
25213 { (JSJitGetterOp)passNullableUnionWithDefaultValue5 },
25214 { prototypes::id::TestExampleInterface },
25215 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25216 JSJitInfo::Method,
25217 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25218 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25219 false, /* isInfallible. False in setters. */
25220 false, /* isMovable. Not relevant for setters. */
25221 false, /* isEliminatable. Not relevant for setters. */
25222 false, /* isAlwaysInSlot. Only relevant for getters. */
25223 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25224 false, /* isTypedMethod. Only relevant for methods. */
25225 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25226};
25227
25228MOZ_CAN_RUN_SCRIPT static bool
25229passNullableUnionWithDefaultValue6(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25230{
25231 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue6");
25232 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25235( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue6", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25233 "TestExampleInterface", "passNullableUnionWithDefaultValue6", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25235( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue6", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25234 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25235( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue6", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25235 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25235( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue6", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25236
25237 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25238 Nullable<FloatOrString > arg0;
25239 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
25240 arg0.SetNull();
25241 } else {
25242 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25243 return false;
25244 }
25245 }
25246 // NOTE: This assert does NOT call the function.
25247 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue6(Constify(arg0)))>, "Should be returning void here");
25248 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue6(Constify(arg0));
25249 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25249); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25249; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25250 args.rval().setUndefined();
25251 return true;
25252}
25253
25254static const JSJitInfo passNullableUnionWithDefaultValue6_methodinfo = {
25255 { (JSJitGetterOp)passNullableUnionWithDefaultValue6 },
25256 { prototypes::id::TestExampleInterface },
25257 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25258 JSJitInfo::Method,
25259 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25260 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25261 false, /* isInfallible. False in setters. */
25262 false, /* isMovable. Not relevant for setters. */
25263 false, /* isEliminatable. Not relevant for setters. */
25264 false, /* isAlwaysInSlot. Only relevant for getters. */
25265 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25266 false, /* isTypedMethod. Only relevant for methods. */
25267 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25268};
25269
25270MOZ_CAN_RUN_SCRIPT static bool
25271passNullableUnionWithDefaultValue7(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25272{
25273 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue7");
25274 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25277( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue7", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25275 "TestExampleInterface", "passNullableUnionWithDefaultValue7", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25277( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue7", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25276 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25277( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue7", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25277 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25277( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue7", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25278
25279 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25280 Nullable<UnrestrictedDoubleOrString > arg0;
25281 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25282 arg0.SetNull();
25283 } else {
25284 if (!(args.hasDefined(0))) {
25285 arg0.SetValue().SetStringLiteral(u"");
25286 } else {
25287 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25288 return false;
25289 }
25290 }
25291 }
25292 // NOTE: This assert does NOT call the function.
25293 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue7(Constify(arg0)))>, "Should be returning void here");
25294 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue7(Constify(arg0));
25295 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25295); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25295; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25296 args.rval().setUndefined();
25297 return true;
25298}
25299
25300static const JSJitInfo passNullableUnionWithDefaultValue7_methodinfo = {
25301 { (JSJitGetterOp)passNullableUnionWithDefaultValue7 },
25302 { prototypes::id::TestExampleInterface },
25303 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25304 JSJitInfo::Method,
25305 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25306 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25307 false, /* isInfallible. False in setters. */
25308 false, /* isMovable. Not relevant for setters. */
25309 false, /* isEliminatable. Not relevant for setters. */
25310 false, /* isAlwaysInSlot. Only relevant for getters. */
25311 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25312 false, /* isTypedMethod. Only relevant for methods. */
25313 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25314};
25315
25316MOZ_CAN_RUN_SCRIPT static bool
25317passNullableUnionWithDefaultValue8(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25318{
25319 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue8");
25320 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25323( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue8", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25321 "TestExampleInterface", "passNullableUnionWithDefaultValue8", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25323( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue8", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25322 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25323( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue8", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25323 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25323( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue8", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25324
25325 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25326 Nullable<UnrestrictedDoubleOrString > arg0;
25327 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25328 arg0.SetNull();
25329 } else {
25330 if (!(args.hasDefined(0))) {
25331 arg0.SetValue().RawSetAsUnrestrictedDouble() = 1.0;
25332 } else {
25333 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25334 return false;
25335 }
25336 }
25337 }
25338 // NOTE: This assert does NOT call the function.
25339 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue8(Constify(arg0)))>, "Should be returning void here");
25340 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue8(Constify(arg0));
25341 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25341); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25341; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25342 args.rval().setUndefined();
25343 return true;
25344}
25345
25346static const JSJitInfo passNullableUnionWithDefaultValue8_methodinfo = {
25347 { (JSJitGetterOp)passNullableUnionWithDefaultValue8 },
25348 { prototypes::id::TestExampleInterface },
25349 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25350 JSJitInfo::Method,
25351 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25352 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25353 false, /* isInfallible. False in setters. */
25354 false, /* isMovable. Not relevant for setters. */
25355 false, /* isEliminatable. Not relevant for setters. */
25356 false, /* isAlwaysInSlot. Only relevant for getters. */
25357 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25358 false, /* isTypedMethod. Only relevant for methods. */
25359 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25360};
25361
25362MOZ_CAN_RUN_SCRIPT static bool
25363passNullableUnionWithDefaultValue9(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25364{
25365 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue9");
25366 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25369( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue9", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25367 "TestExampleInterface", "passNullableUnionWithDefaultValue9", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25369( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue9", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25368 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25369( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue9", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25369 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25369( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue9", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25370
25371 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25372 Nullable<UnrestrictedDoubleOrString > arg0;
25373 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
25374 arg0.SetNull();
25375 } else {
25376 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25377 return false;
25378 }
25379 }
25380 // NOTE: This assert does NOT call the function.
25381 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue9(Constify(arg0)))>, "Should be returning void here");
25382 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue9(Constify(arg0));
25383 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25383); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25383; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25384 args.rval().setUndefined();
25385 return true;
25386}
25387
25388static const JSJitInfo passNullableUnionWithDefaultValue9_methodinfo = {
25389 { (JSJitGetterOp)passNullableUnionWithDefaultValue9 },
25390 { prototypes::id::TestExampleInterface },
25391 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25392 JSJitInfo::Method,
25393 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25394 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25395 false, /* isInfallible. False in setters. */
25396 false, /* isMovable. Not relevant for setters. */
25397 false, /* isEliminatable. Not relevant for setters. */
25398 false, /* isAlwaysInSlot. Only relevant for getters. */
25399 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25400 false, /* isTypedMethod. Only relevant for methods. */
25401 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25402};
25403
25404MOZ_CAN_RUN_SCRIPT static bool
25405passNullableUnionWithDefaultValue10(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25406{
25407 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue10");
25408 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25411( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue10", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25409 "TestExampleInterface", "passNullableUnionWithDefaultValue10", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25411( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue10", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25410 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25411( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue10", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25411 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25411( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue10", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25412
25413 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25414 Nullable<UnrestrictedFloatOrString > arg0;
25415 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25416 arg0.SetNull();
25417 } else {
25418 if (!(args.hasDefined(0))) {
25419 arg0.SetValue().SetStringLiteral(u"");
25420 } else {
25421 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25422 return false;
25423 }
25424 }
25425 }
25426 // NOTE: This assert does NOT call the function.
25427 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue10(Constify(arg0)))>, "Should be returning void here");
25428 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue10(Constify(arg0));
25429 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25429); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25429; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25430 args.rval().setUndefined();
25431 return true;
25432}
25433
25434static const JSJitInfo passNullableUnionWithDefaultValue10_methodinfo = {
25435 { (JSJitGetterOp)passNullableUnionWithDefaultValue10 },
25436 { prototypes::id::TestExampleInterface },
25437 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25438 JSJitInfo::Method,
25439 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25440 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25441 false, /* isInfallible. False in setters. */
25442 false, /* isMovable. Not relevant for setters. */
25443 false, /* isEliminatable. Not relevant for setters. */
25444 false, /* isAlwaysInSlot. Only relevant for getters. */
25445 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25446 false, /* isTypedMethod. Only relevant for methods. */
25447 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25448};
25449
25450MOZ_CAN_RUN_SCRIPT static bool
25451passNullableUnionWithDefaultValue11(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25452{
25453 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue11");
25454 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25457( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue11", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25455 "TestExampleInterface", "passNullableUnionWithDefaultValue11", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25457( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue11", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25456 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25457( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue11", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25457 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25457( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue11", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25458
25459 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25460 Nullable<UnrestrictedFloatOrString > arg0;
25461 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25462 arg0.SetNull();
25463 } else {
25464 if (!(args.hasDefined(0))) {
25465 arg0.SetValue().RawSetAsUnrestrictedFloat() = 1.0F;
25466 } else {
25467 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25468 return false;
25469 }
25470 }
25471 }
25472 // NOTE: This assert does NOT call the function.
25473 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue11(Constify(arg0)))>, "Should be returning void here");
25474 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue11(Constify(arg0));
25475 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25475); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25475; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25476 args.rval().setUndefined();
25477 return true;
25478}
25479
25480static const JSJitInfo passNullableUnionWithDefaultValue11_methodinfo = {
25481 { (JSJitGetterOp)passNullableUnionWithDefaultValue11 },
25482 { prototypes::id::TestExampleInterface },
25483 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25484 JSJitInfo::Method,
25485 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25486 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25487 false, /* isInfallible. False in setters. */
25488 false, /* isMovable. Not relevant for setters. */
25489 false, /* isEliminatable. Not relevant for setters. */
25490 false, /* isAlwaysInSlot. Only relevant for getters. */
25491 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25492 false, /* isTypedMethod. Only relevant for methods. */
25493 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25494};
25495
25496MOZ_CAN_RUN_SCRIPT static bool
25497passNullableUnionWithDefaultValue12(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25498{
25499 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue12");
25500 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25503( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue12", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25501 "TestExampleInterface", "passNullableUnionWithDefaultValue12", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25503( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue12", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25502 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25503( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue12", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25503 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25503( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue12", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25504
25505 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25506 Nullable<UnrestrictedFloatOrString > arg0;
25507 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
25508 arg0.SetNull();
25509 } else {
25510 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25511 return false;
25512 }
25513 }
25514 // NOTE: This assert does NOT call the function.
25515 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue12(Constify(arg0)))>, "Should be returning void here");
25516 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue12(Constify(arg0));
25517 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25517); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25517; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25518 args.rval().setUndefined();
25519 return true;
25520}
25521
25522static const JSJitInfo passNullableUnionWithDefaultValue12_methodinfo = {
25523 { (JSJitGetterOp)passNullableUnionWithDefaultValue12 },
25524 { prototypes::id::TestExampleInterface },
25525 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25526 JSJitInfo::Method,
25527 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25528 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25529 false, /* isInfallible. False in setters. */
25530 false, /* isMovable. Not relevant for setters. */
25531 false, /* isEliminatable. Not relevant for setters. */
25532 false, /* isAlwaysInSlot. Only relevant for getters. */
25533 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25534 false, /* isTypedMethod. Only relevant for methods. */
25535 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25536};
25537
25538MOZ_CAN_RUN_SCRIPT static bool
25539passNullableUnionWithDefaultValue13(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25540{
25541 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue13");
25542 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25545( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue13", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25543 "TestExampleInterface", "passNullableUnionWithDefaultValue13", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25545( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue13", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25544 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25545( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue13", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25545 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25545( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue13", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25546
25547 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25548 Nullable<DoubleOrByteString > arg0;
25549 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25550 arg0.SetNull();
25551 } else {
25552 if (!(args.hasDefined(0))) {
25553 arg0.SetValue().SetStringLiteral("");
25554 } else {
25555 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25556 return false;
25557 }
25558 }
25559 }
25560 // NOTE: This assert does NOT call the function.
25561 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue13(Constify(arg0)))>, "Should be returning void here");
25562 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue13(Constify(arg0));
25563 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25563); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25563; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25564 args.rval().setUndefined();
25565 return true;
25566}
25567
25568static const JSJitInfo passNullableUnionWithDefaultValue13_methodinfo = {
25569 { (JSJitGetterOp)passNullableUnionWithDefaultValue13 },
25570 { prototypes::id::TestExampleInterface },
25571 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25572 JSJitInfo::Method,
25573 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25574 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25575 false, /* isInfallible. False in setters. */
25576 false, /* isMovable. Not relevant for setters. */
25577 false, /* isEliminatable. Not relevant for setters. */
25578 false, /* isAlwaysInSlot. Only relevant for getters. */
25579 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25580 false, /* isTypedMethod. Only relevant for methods. */
25581 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25582};
25583
25584MOZ_CAN_RUN_SCRIPT static bool
25585passNullableUnionWithDefaultValue14(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25586{
25587 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue14");
25588 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25591( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue14", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25589 "TestExampleInterface", "passNullableUnionWithDefaultValue14", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25591( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue14", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25590 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25591( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue14", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25591 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25591( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue14", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25592
25593 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25594 Nullable<DoubleOrByteString > arg0;
25595 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25596 arg0.SetNull();
25597 } else {
25598 if (!(args.hasDefined(0))) {
25599 arg0.SetValue().RawSetAsDouble() = 1.0;
25600 } else {
25601 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25602 return false;
25603 }
25604 }
25605 }
25606 // NOTE: This assert does NOT call the function.
25607 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue14(Constify(arg0)))>, "Should be returning void here");
25608 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue14(Constify(arg0));
25609 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25609); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25609; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25610 args.rval().setUndefined();
25611 return true;
25612}
25613
25614static const JSJitInfo passNullableUnionWithDefaultValue14_methodinfo = {
25615 { (JSJitGetterOp)passNullableUnionWithDefaultValue14 },
25616 { prototypes::id::TestExampleInterface },
25617 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25618 JSJitInfo::Method,
25619 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25620 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25621 false, /* isInfallible. False in setters. */
25622 false, /* isMovable. Not relevant for setters. */
25623 false, /* isEliminatable. Not relevant for setters. */
25624 false, /* isAlwaysInSlot. Only relevant for getters. */
25625 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25626 false, /* isTypedMethod. Only relevant for methods. */
25627 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25628};
25629
25630MOZ_CAN_RUN_SCRIPT static bool
25631passNullableUnionWithDefaultValue15(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25632{
25633 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue15");
25634 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25637( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue15", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25635 "TestExampleInterface", "passNullableUnionWithDefaultValue15", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25637( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue15", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25636 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25637( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue15", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25637 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25637( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue15", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25638
25639 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25640 Nullable<DoubleOrByteString > arg0;
25641 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25642 arg0.SetNull();
25643 } else {
25644 if (!(args.hasDefined(0))) {
25645 arg0.SetValue().RawSetAsDouble() = 1.5;
25646 } else {
25647 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25648 return false;
25649 }
25650 }
25651 }
25652 // NOTE: This assert does NOT call the function.
25653 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue15(Constify(arg0)))>, "Should be returning void here");
25654 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue15(Constify(arg0));
25655 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25655); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25655; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25656 args.rval().setUndefined();
25657 return true;
25658}
25659
25660static const JSJitInfo passNullableUnionWithDefaultValue15_methodinfo = {
25661 { (JSJitGetterOp)passNullableUnionWithDefaultValue15 },
25662 { prototypes::id::TestExampleInterface },
25663 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25664 JSJitInfo::Method,
25665 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25666 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25667 false, /* isInfallible. False in setters. */
25668 false, /* isMovable. Not relevant for setters. */
25669 false, /* isEliminatable. Not relevant for setters. */
25670 false, /* isAlwaysInSlot. Only relevant for getters. */
25671 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25672 false, /* isTypedMethod. Only relevant for methods. */
25673 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25674};
25675
25676MOZ_CAN_RUN_SCRIPT static bool
25677passNullableUnionWithDefaultValue16(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25678{
25679 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue16");
25680 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25683( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue16", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25681 "TestExampleInterface", "passNullableUnionWithDefaultValue16", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25683( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue16", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25682 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25683( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue16", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25683 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25683( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue16", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25684
25685 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25686 Nullable<DoubleOrByteString > arg0;
25687 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
25688 arg0.SetNull();
25689 } else {
25690 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25691 return false;
25692 }
25693 }
25694 // NOTE: This assert does NOT call the function.
25695 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue16(Constify(arg0)))>, "Should be returning void here");
25696 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue16(Constify(arg0));
25697 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25697); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25697; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25698 args.rval().setUndefined();
25699 return true;
25700}
25701
25702static const JSJitInfo passNullableUnionWithDefaultValue16_methodinfo = {
25703 { (JSJitGetterOp)passNullableUnionWithDefaultValue16 },
25704 { prototypes::id::TestExampleInterface },
25705 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25706 JSJitInfo::Method,
25707 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25708 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25709 false, /* isInfallible. False in setters. */
25710 false, /* isMovable. Not relevant for setters. */
25711 false, /* isEliminatable. Not relevant for setters. */
25712 false, /* isAlwaysInSlot. Only relevant for getters. */
25713 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25714 false, /* isTypedMethod. Only relevant for methods. */
25715 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25716};
25717
25718MOZ_CAN_RUN_SCRIPT static bool
25719passNullableUnionWithDefaultValue17(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25720{
25721 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue17");
25722 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25725( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue17", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25723 "TestExampleInterface", "passNullableUnionWithDefaultValue17", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25725( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue17", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25724 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25725( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue17", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25725 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25725( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue17", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25726
25727 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25728 Nullable<DoubleOrSupportedType > arg0;
25729 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25730 arg0.SetNull();
25731 } else {
25732 if (!(args.hasDefined(0))) {
25733 arg0.SetValue().RawSetAsSupportedType() = SupportedType::Text_html;
25734 } else {
25735 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25736 return false;
25737 }
25738 }
25739 }
25740 // NOTE: This assert does NOT call the function.
25741 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue17(Constify(arg0)))>, "Should be returning void here");
25742 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue17(Constify(arg0));
25743 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25743); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25743; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25744 args.rval().setUndefined();
25745 return true;
25746}
25747
25748static const JSJitInfo passNullableUnionWithDefaultValue17_methodinfo = {
25749 { (JSJitGetterOp)passNullableUnionWithDefaultValue17 },
25750 { prototypes::id::TestExampleInterface },
25751 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25752 JSJitInfo::Method,
25753 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25754 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25755 false, /* isInfallible. False in setters. */
25756 false, /* isMovable. Not relevant for setters. */
25757 false, /* isEliminatable. Not relevant for setters. */
25758 false, /* isAlwaysInSlot. Only relevant for getters. */
25759 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25760 false, /* isTypedMethod. Only relevant for methods. */
25761 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25762};
25763
25764MOZ_CAN_RUN_SCRIPT static bool
25765passNullableUnionWithDefaultValue18(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25766{
25767 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue18");
25768 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25771( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue18", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25769 "TestExampleInterface", "passNullableUnionWithDefaultValue18", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25771( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue18", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25770 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25771( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue18", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25771 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25771( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue18", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25772
25773 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25774 Nullable<DoubleOrSupportedType > arg0;
25775 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25776 arg0.SetNull();
25777 } else {
25778 if (!(args.hasDefined(0))) {
25779 arg0.SetValue().RawSetAsDouble() = 1.0;
25780 } else {
25781 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25782 return false;
25783 }
25784 }
25785 }
25786 // NOTE: This assert does NOT call the function.
25787 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue18(Constify(arg0)))>, "Should be returning void here");
25788 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue18(Constify(arg0));
25789 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25789); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25789; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25790 args.rval().setUndefined();
25791 return true;
25792}
25793
25794static const JSJitInfo passNullableUnionWithDefaultValue18_methodinfo = {
25795 { (JSJitGetterOp)passNullableUnionWithDefaultValue18 },
25796 { prototypes::id::TestExampleInterface },
25797 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25798 JSJitInfo::Method,
25799 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25800 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25801 false, /* isInfallible. False in setters. */
25802 false, /* isMovable. Not relevant for setters. */
25803 false, /* isEliminatable. Not relevant for setters. */
25804 false, /* isAlwaysInSlot. Only relevant for getters. */
25805 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25806 false, /* isTypedMethod. Only relevant for methods. */
25807 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25808};
25809
25810MOZ_CAN_RUN_SCRIPT static bool
25811passNullableUnionWithDefaultValue19(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25812{
25813 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue19");
25814 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25817( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue19", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25815 "TestExampleInterface", "passNullableUnionWithDefaultValue19", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25817( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue19", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25816 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25817( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue19", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25817 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25817( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue19", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25818
25819 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25820 Nullable<DoubleOrSupportedType > arg0;
25821 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25822 arg0.SetNull();
25823 } else {
25824 if (!(args.hasDefined(0))) {
25825 arg0.SetValue().RawSetAsDouble() = 1.5;
25826 } else {
25827 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25828 return false;
25829 }
25830 }
25831 }
25832 // NOTE: This assert does NOT call the function.
25833 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue19(Constify(arg0)))>, "Should be returning void here");
25834 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue19(Constify(arg0));
25835 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25835); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25835; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25836 args.rval().setUndefined();
25837 return true;
25838}
25839
25840static const JSJitInfo passNullableUnionWithDefaultValue19_methodinfo = {
25841 { (JSJitGetterOp)passNullableUnionWithDefaultValue19 },
25842 { prototypes::id::TestExampleInterface },
25843 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25844 JSJitInfo::Method,
25845 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25846 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25847 false, /* isInfallible. False in setters. */
25848 false, /* isMovable. Not relevant for setters. */
25849 false, /* isEliminatable. Not relevant for setters. */
25850 false, /* isAlwaysInSlot. Only relevant for getters. */
25851 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25852 false, /* isTypedMethod. Only relevant for methods. */
25853 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25854};
25855
25856MOZ_CAN_RUN_SCRIPT static bool
25857passNullableUnionWithDefaultValue20(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25858{
25859 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue20");
25860 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25863( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue20", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25861 "TestExampleInterface", "passNullableUnionWithDefaultValue20", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25863( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue20", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25862 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25863( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue20", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25863 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25863( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue20", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25864
25865 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25866 Nullable<DoubleOrSupportedType > arg0;
25867 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
25868 arg0.SetNull();
25869 } else {
25870 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25871 return false;
25872 }
25873 }
25874 // NOTE: This assert does NOT call the function.
25875 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue20(Constify(arg0)))>, "Should be returning void here");
25876 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue20(Constify(arg0));
25877 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25877); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25877; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25878 args.rval().setUndefined();
25879 return true;
25880}
25881
25882static const JSJitInfo passNullableUnionWithDefaultValue20_methodinfo = {
25883 { (JSJitGetterOp)passNullableUnionWithDefaultValue20 },
25884 { prototypes::id::TestExampleInterface },
25885 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25886 JSJitInfo::Method,
25887 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25888 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25889 false, /* isInfallible. False in setters. */
25890 false, /* isMovable. Not relevant for setters. */
25891 false, /* isEliminatable. Not relevant for setters. */
25892 false, /* isAlwaysInSlot. Only relevant for getters. */
25893 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25894 false, /* isTypedMethod. Only relevant for methods. */
25895 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25896};
25897
25898MOZ_CAN_RUN_SCRIPT static bool
25899passNullableUnionWithDefaultValue21(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25900{
25901 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue21");
25902 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25905( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue21", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25903 "TestExampleInterface", "passNullableUnionWithDefaultValue21", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25905( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue21", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25904 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25905( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue21", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25905 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25905( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue21", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25906
25907 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25908 Nullable<DoubleOrUSVString > arg0;
25909 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25910 arg0.SetNull();
25911 } else {
25912 if (!(args.hasDefined(0))) {
25913 arg0.SetValue().SetStringLiteral(u"abc");
25914 } else {
25915 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25916 return false;
25917 }
25918 }
25919 }
25920 // NOTE: This assert does NOT call the function.
25921 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue21(Constify(arg0)))>, "Should be returning void here");
25922 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue21(Constify(arg0));
25923 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25923); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25923; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25924 args.rval().setUndefined();
25925 return true;
25926}
25927
25928static const JSJitInfo passNullableUnionWithDefaultValue21_methodinfo = {
25929 { (JSJitGetterOp)passNullableUnionWithDefaultValue21 },
25930 { prototypes::id::TestExampleInterface },
25931 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25932 JSJitInfo::Method,
25933 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25934 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25935 false, /* isInfallible. False in setters. */
25936 false, /* isMovable. Not relevant for setters. */
25937 false, /* isEliminatable. Not relevant for setters. */
25938 false, /* isAlwaysInSlot. Only relevant for getters. */
25939 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25940 false, /* isTypedMethod. Only relevant for methods. */
25941 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25942};
25943
25944MOZ_CAN_RUN_SCRIPT static bool
25945passNullableUnionWithDefaultValue22(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25946{
25947 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue22");
25948 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25951( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue22", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25949 "TestExampleInterface", "passNullableUnionWithDefaultValue22", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25951( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue22", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25950 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25951( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue22", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25951 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25951( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue22", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25952
25953 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
25954 Nullable<DoubleOrUSVString > arg0;
25955 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
25956 arg0.SetNull();
25957 } else {
25958 if (!(args.hasDefined(0))) {
25959 arg0.SetValue().RawSetAsDouble() = 1.0;
25960 } else {
25961 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
25962 return false;
25963 }
25964 }
25965 }
25966 // NOTE: This assert does NOT call the function.
25967 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue22(Constify(arg0)))>, "Should be returning void here");
25968 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue22(Constify(arg0));
25969 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 25969); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 25969; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
25970 args.rval().setUndefined();
25971 return true;
25972}
25973
25974static const JSJitInfo passNullableUnionWithDefaultValue22_methodinfo = {
25975 { (JSJitGetterOp)passNullableUnionWithDefaultValue22 },
25976 { prototypes::id::TestExampleInterface },
25977 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
25978 JSJitInfo::Method,
25979 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
25980 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
25981 false, /* isInfallible. False in setters. */
25982 false, /* isMovable. Not relevant for setters. */
25983 false, /* isEliminatable. Not relevant for setters. */
25984 false, /* isAlwaysInSlot. Only relevant for getters. */
25985 false, /* isLazilyCachedInSlot. Only relevant for getters. */
25986 false, /* isTypedMethod. Only relevant for methods. */
25987 0 /* Reserved slot index, if we're stored in a slot, else 0. */
25988};
25989
25990MOZ_CAN_RUN_SCRIPT static bool
25991passNullableUnionWithDefaultValue23(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
25992{
25993 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue23");
25994 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject25997( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue23", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25995 "TestExampleInterface", "passNullableUnionWithDefaultValue23", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject25997( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue23", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25996 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject25997( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue23", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
25997 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject25997( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue23", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
25998
25999 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26000 Nullable<DoubleOrUSVString > arg0;
26001 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
26002 arg0.SetNull();
26003 } else {
26004 if (!(args.hasDefined(0))) {
26005 arg0.SetValue().RawSetAsDouble() = 1.5;
26006 } else {
26007 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
26008 return false;
26009 }
26010 }
26011 }
26012 // NOTE: This assert does NOT call the function.
26013 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue23(Constify(arg0)))>, "Should be returning void here");
26014 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue23(Constify(arg0));
26015 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26015); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26015; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26016 args.rval().setUndefined();
26017 return true;
26018}
26019
26020static const JSJitInfo passNullableUnionWithDefaultValue23_methodinfo = {
26021 { (JSJitGetterOp)passNullableUnionWithDefaultValue23 },
26022 { prototypes::id::TestExampleInterface },
26023 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26024 JSJitInfo::Method,
26025 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26026 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26027 false, /* isInfallible. False in setters. */
26028 false, /* isMovable. Not relevant for setters. */
26029 false, /* isEliminatable. Not relevant for setters. */
26030 false, /* isAlwaysInSlot. Only relevant for getters. */
26031 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26032 false, /* isTypedMethod. Only relevant for methods. */
26033 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26034};
26035
26036MOZ_CAN_RUN_SCRIPT static bool
26037passNullableUnionWithDefaultValue24(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26038{
26039 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue24");
26040 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26043( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue24", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26041 "TestExampleInterface", "passNullableUnionWithDefaultValue24", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26043( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue24", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26042 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26043( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue24", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26043 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26043( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue24", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26044
26045 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26046 Nullable<DoubleOrUSVString > arg0;
26047 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
26048 arg0.SetNull();
26049 } else {
26050 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
26051 return false;
26052 }
26053 }
26054 // NOTE: This assert does NOT call the function.
26055 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue24(Constify(arg0)))>, "Should be returning void here");
26056 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue24(Constify(arg0));
26057 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26057); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26057; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26058 args.rval().setUndefined();
26059 return true;
26060}
26061
26062static const JSJitInfo passNullableUnionWithDefaultValue24_methodinfo = {
26063 { (JSJitGetterOp)passNullableUnionWithDefaultValue24 },
26064 { prototypes::id::TestExampleInterface },
26065 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26066 JSJitInfo::Method,
26067 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26068 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26069 false, /* isInfallible. False in setters. */
26070 false, /* isMovable. Not relevant for setters. */
26071 false, /* isEliminatable. Not relevant for setters. */
26072 false, /* isAlwaysInSlot. Only relevant for getters. */
26073 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26074 false, /* isTypedMethod. Only relevant for methods. */
26075 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26076};
26077
26078MOZ_CAN_RUN_SCRIPT static bool
26079passNullableUnionWithDefaultValue25(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26080{
26081 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue25");
26082 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26085( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue25", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26083 "TestExampleInterface", "passNullableUnionWithDefaultValue25", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26085( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue25", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26084 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26085( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue25", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26085 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26085( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue25", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26086
26087 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26088 Nullable<DoubleOrUTF8String > arg0;
26089 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
26090 arg0.SetNull();
26091 } else {
26092 if (!(args.hasDefined(0))) {
26093 arg0.SetValue().SetStringLiteral("");
26094 } else {
26095 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
26096 return false;
26097 }
26098 }
26099 }
26100 // NOTE: This assert does NOT call the function.
26101 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue25(Constify(arg0)))>, "Should be returning void here");
26102 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue25(Constify(arg0));
26103 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26103); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26103; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26104 args.rval().setUndefined();
26105 return true;
26106}
26107
26108static const JSJitInfo passNullableUnionWithDefaultValue25_methodinfo = {
26109 { (JSJitGetterOp)passNullableUnionWithDefaultValue25 },
26110 { prototypes::id::TestExampleInterface },
26111 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26112 JSJitInfo::Method,
26113 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26114 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26115 false, /* isInfallible. False in setters. */
26116 false, /* isMovable. Not relevant for setters. */
26117 false, /* isEliminatable. Not relevant for setters. */
26118 false, /* isAlwaysInSlot. Only relevant for getters. */
26119 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26120 false, /* isTypedMethod. Only relevant for methods. */
26121 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26122};
26123
26124MOZ_CAN_RUN_SCRIPT static bool
26125passNullableUnionWithDefaultValue26(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26126{
26127 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue26");
26128 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26131( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue26", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26129 "TestExampleInterface", "passNullableUnionWithDefaultValue26", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26131( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue26", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26130 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26131( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue26", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26131 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26131( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue26", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26132
26133 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26134 Nullable<DoubleOrUTF8String > arg0;
26135 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
26136 arg0.SetNull();
26137 } else {
26138 if (!(args.hasDefined(0))) {
26139 arg0.SetValue().RawSetAsDouble() = 1.0;
26140 } else {
26141 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
26142 return false;
26143 }
26144 }
26145 }
26146 // NOTE: This assert does NOT call the function.
26147 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue26(Constify(arg0)))>, "Should be returning void here");
26148 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue26(Constify(arg0));
26149 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26149); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26149; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26150 args.rval().setUndefined();
26151 return true;
26152}
26153
26154static const JSJitInfo passNullableUnionWithDefaultValue26_methodinfo = {
26155 { (JSJitGetterOp)passNullableUnionWithDefaultValue26 },
26156 { prototypes::id::TestExampleInterface },
26157 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26158 JSJitInfo::Method,
26159 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26160 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26161 false, /* isInfallible. False in setters. */
26162 false, /* isMovable. Not relevant for setters. */
26163 false, /* isEliminatable. Not relevant for setters. */
26164 false, /* isAlwaysInSlot. Only relevant for getters. */
26165 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26166 false, /* isTypedMethod. Only relevant for methods. */
26167 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26168};
26169
26170MOZ_CAN_RUN_SCRIPT static bool
26171passNullableUnionWithDefaultValue27(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26172{
26173 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue27");
26174 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26177( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue27", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26175 "TestExampleInterface", "passNullableUnionWithDefaultValue27", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26177( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue27", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26176 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26177( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue27", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26177 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26177( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue27", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26178
26179 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26180 Nullable<DoubleOrUTF8String > arg0;
26181 if ((args.hasDefined(0)) && args[0].isNullOrUndefined()) {
26182 arg0.SetNull();
26183 } else {
26184 if (!(args.hasDefined(0))) {
26185 arg0.SetValue().RawSetAsDouble() = 1.5;
26186 } else {
26187 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
26188 return false;
26189 }
26190 }
26191 }
26192 // NOTE: This assert does NOT call the function.
26193 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue27(Constify(arg0)))>, "Should be returning void here");
26194 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue27(Constify(arg0));
26195 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26195); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26195; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26196 args.rval().setUndefined();
26197 return true;
26198}
26199
26200static const JSJitInfo passNullableUnionWithDefaultValue27_methodinfo = {
26201 { (JSJitGetterOp)passNullableUnionWithDefaultValue27 },
26202 { prototypes::id::TestExampleInterface },
26203 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26204 JSJitInfo::Method,
26205 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26206 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26207 false, /* isInfallible. False in setters. */
26208 false, /* isMovable. Not relevant for setters. */
26209 false, /* isEliminatable. Not relevant for setters. */
26210 false, /* isAlwaysInSlot. Only relevant for getters. */
26211 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26212 false, /* isTypedMethod. Only relevant for methods. */
26213 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26214};
26215
26216MOZ_CAN_RUN_SCRIPT static bool
26217passNullableUnionWithDefaultValue28(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26218{
26219 BindingCallContext cx(cx_, "TestExampleInterface.passNullableUnionWithDefaultValue28");
26220 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26223( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue28", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26221 "TestExampleInterface", "passNullableUnionWithDefaultValue28", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26223( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue28", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26222 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26223( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue28", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26223 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26223( cx, "TestExampleInterface"
, "passNullableUnionWithDefaultValue28", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26224
26225 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26226 Nullable<DoubleOrUTF8String > arg0;
26227 if (!(args.hasDefined(0)) || args[0].isNullOrUndefined()) {
26228 arg0.SetNull();
26229 } else {
26230 if (!arg0.SetValue().Init(cx, args[0], "Argument 1", false)) {
26231 return false;
26232 }
26233 }
26234 // NOTE: This assert does NOT call the function.
26235 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue28(Constify(arg0)))>, "Should be returning void here");
26236 MOZ_KnownLive(self)(self)->PassNullableUnionWithDefaultValue28(Constify(arg0));
26237 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26237); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26237; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26238 args.rval().setUndefined();
26239 return true;
26240}
26241
26242static const JSJitInfo passNullableUnionWithDefaultValue28_methodinfo = {
26243 { (JSJitGetterOp)passNullableUnionWithDefaultValue28 },
26244 { prototypes::id::TestExampleInterface },
26245 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26246 JSJitInfo::Method,
26247 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26248 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26249 false, /* isInfallible. False in setters. */
26250 false, /* isMovable. Not relevant for setters. */
26251 false, /* isEliminatable. Not relevant for setters. */
26252 false, /* isAlwaysInSlot. Only relevant for getters. */
26253 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26254 false, /* isTypedMethod. Only relevant for methods. */
26255 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26256};
26257
26258MOZ_CAN_RUN_SCRIPT static bool
26259passSequenceOfUnions(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26260{
26261 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfUnions");
26262 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26265( cx, "TestExampleInterface"
, "passSequenceOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26263 "TestExampleInterface", "passSequenceOfUnions", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26265( cx, "TestExampleInterface"
, "passSequenceOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26264 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26265( cx, "TestExampleInterface"
, "passSequenceOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26265 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26265( cx, "TestExampleInterface"
, "passSequenceOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26266
26267 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26268 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfUnions", 1)) {
26269 return false;
26270 }
26271 binding_detail::AutoSequence<OwningCanvasPatternOrCanvasGradient> arg0;
26272 if (args[0].isObject()) {
26273 JS::ForOfIterator iter(cx);
26274 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
26275 return false;
26276 }
26277 if (!iter.valueIsIterable()) {
26278 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
26279 return false;
26280 }
26281 binding_detail::AutoSequence<OwningCanvasPatternOrCanvasGradient> &arr = arg0;
26282 JS::Rooted<JS::Value> temp(cx);
26283 while (true) {
26284 bool done;
26285 if (!iter.next(&temp, &done)) {
26286 return false;
26287 }
26288 if (done) {
26289 break;
26290 }
26291 OwningCanvasPatternOrCanvasGradient* slotPtr = arr.AppendElement(mozilla::fallible);
26292 if (!slotPtr) {
26293 JS_ReportOutOfMemory(cx);
26294 return false;
26295 }
26296 OwningCanvasPatternOrCanvasGradient& slot = *slotPtr;
26297 if (!slot.Init(cx, temp, "Element of argument 1", false)) {
26298 return false;
26299 }
26300 }
26301 } else {
26302 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
26303 return false;
26304 }
26305 // NOTE: This assert does NOT call the function.
26306 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfUnions(Constify(arg0)))>, "Should be returning void here");
26307 MOZ_KnownLive(self)(self)->PassSequenceOfUnions(Constify(arg0));
26308 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26308); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26308; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26309 args.rval().setUndefined();
26310 return true;
26311}
26312
26313static const JSJitInfo passSequenceOfUnions_methodinfo = {
26314 { (JSJitGetterOp)passSequenceOfUnions },
26315 { prototypes::id::TestExampleInterface },
26316 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26317 JSJitInfo::Method,
26318 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26319 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26320 false, /* isInfallible. False in setters. */
26321 false, /* isMovable. Not relevant for setters. */
26322 false, /* isEliminatable. Not relevant for setters. */
26323 false, /* isAlwaysInSlot. Only relevant for getters. */
26324 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26325 false, /* isTypedMethod. Only relevant for methods. */
26326 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26327};
26328
26329MOZ_CAN_RUN_SCRIPT static bool
26330passSequenceOfUnions2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26331{
26332 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfUnions2");
26333 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26336( cx, "TestExampleInterface"
, "passSequenceOfUnions2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26334 "TestExampleInterface", "passSequenceOfUnions2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26336( cx, "TestExampleInterface"
, "passSequenceOfUnions2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26335 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26336( cx, "TestExampleInterface"
, "passSequenceOfUnions2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26336 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26336( cx, "TestExampleInterface"
, "passSequenceOfUnions2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26337
26338 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26339 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfUnions2", 1)) {
26340 return false;
26341 }
26342 binding_detail::AutoSequence<OwningObjectOrLong> arg0;
26343 SequenceRooter<OwningObjectOrLong> arg0_holder(cx, &arg0);
26344 if (args[0].isObject()) {
26345 JS::ForOfIterator iter(cx);
26346 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
26347 return false;
26348 }
26349 if (!iter.valueIsIterable()) {
26350 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
26351 return false;
26352 }
26353 binding_detail::AutoSequence<OwningObjectOrLong> &arr = arg0;
26354 JS::Rooted<JS::Value> temp(cx);
26355 while (true) {
26356 bool done;
26357 if (!iter.next(&temp, &done)) {
26358 return false;
26359 }
26360 if (done) {
26361 break;
26362 }
26363 OwningObjectOrLong* slotPtr = arr.AppendElement(mozilla::fallible);
26364 if (!slotPtr) {
26365 JS_ReportOutOfMemory(cx);
26366 return false;
26367 }
26368 OwningObjectOrLong& slot = *slotPtr;
26369 if (!slot.Init(cx, temp, "Element of argument 1", false)) {
26370 return false;
26371 }
26372 }
26373 } else {
26374 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
26375 return false;
26376 }
26377 // NOTE: This assert does NOT call the function.
26378 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfUnions2(cx, Constify(arg0)))>, "Should be returning void here");
26379 MOZ_KnownLive(self)(self)->PassSequenceOfUnions2(cx, Constify(arg0));
26380 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26380); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26380; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26381 args.rval().setUndefined();
26382 return true;
26383}
26384
26385static const JSJitInfo passSequenceOfUnions2_methodinfo = {
26386 { (JSJitGetterOp)passSequenceOfUnions2 },
26387 { prototypes::id::TestExampleInterface },
26388 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26389 JSJitInfo::Method,
26390 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26391 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26392 false, /* isInfallible. False in setters. */
26393 false, /* isMovable. Not relevant for setters. */
26394 false, /* isEliminatable. Not relevant for setters. */
26395 false, /* isAlwaysInSlot. Only relevant for getters. */
26396 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26397 false, /* isTypedMethod. Only relevant for methods. */
26398 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26399};
26400
26401MOZ_CAN_RUN_SCRIPT static bool
26402passVariadicUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26403{
26404 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicUnion");
26405 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26408( cx, "TestExampleInterface"
, "passVariadicUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26406 "TestExampleInterface", "passVariadicUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26408( cx, "TestExampleInterface"
, "passVariadicUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26407 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26408( cx, "TestExampleInterface"
, "passVariadicUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26408 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26408( cx, "TestExampleInterface"
, "passVariadicUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26409
26410 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26411 AutoSequence<OwningCanvasPatternOrCanvasGradient> arg0;
26412 if (args.length() > 0) {
26413 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
26414 JS_ReportOutOfMemory(cx);
26415 return false;
26416 }
26417 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
26418 // OK to do infallible append here, since we ensured capacity already.
26419 OwningCanvasPatternOrCanvasGradient& slot = *arg0.AppendElement();
26420 if (!slot.Init(cx, args[variadicArg], "Argument 1", false)) {
26421 return false;
26422 }
26423 }
26424 }
26425 // NOTE: This assert does NOT call the function.
26426 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicUnion(Constify(arg0)))>, "Should be returning void here");
26427 MOZ_KnownLive(self)(self)->PassVariadicUnion(Constify(arg0));
26428 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26428); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26428; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26429 args.rval().setUndefined();
26430 return true;
26431}
26432
26433static const JSJitInfo passVariadicUnion_methodinfo = {
26434 { (JSJitGetterOp)passVariadicUnion },
26435 { prototypes::id::TestExampleInterface },
26436 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26437 JSJitInfo::Method,
26438 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26439 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26440 false, /* isInfallible. False in setters. */
26441 false, /* isMovable. Not relevant for setters. */
26442 false, /* isEliminatable. Not relevant for setters. */
26443 false, /* isAlwaysInSlot. Only relevant for getters. */
26444 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26445 false, /* isTypedMethod. Only relevant for methods. */
26446 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26447};
26448
26449MOZ_CAN_RUN_SCRIPT static bool
26450passSequenceOfNullableUnions(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26451{
26452 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfNullableUnions");
26453 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26456( cx, "TestExampleInterface"
, "passSequenceOfNullableUnions", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26454 "TestExampleInterface", "passSequenceOfNullableUnions", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26456( cx, "TestExampleInterface"
, "passSequenceOfNullableUnions", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26455 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26456( cx, "TestExampleInterface"
, "passSequenceOfNullableUnions", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26456 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26456( cx, "TestExampleInterface"
, "passSequenceOfNullableUnions", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26457
26458 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26459 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfNullableUnions", 1)) {
26460 return false;
26461 }
26462 binding_detail::AutoSequence<Nullable<OwningCanvasPatternOrCanvasGradient >> arg0;
26463 if (args[0].isObject()) {
26464 JS::ForOfIterator iter(cx);
26465 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
26466 return false;
26467 }
26468 if (!iter.valueIsIterable()) {
26469 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
26470 return false;
26471 }
26472 binding_detail::AutoSequence<Nullable<OwningCanvasPatternOrCanvasGradient >> &arr = arg0;
26473 JS::Rooted<JS::Value> temp(cx);
26474 while (true) {
26475 bool done;
26476 if (!iter.next(&temp, &done)) {
26477 return false;
26478 }
26479 if (done) {
26480 break;
26481 }
26482 Nullable<OwningCanvasPatternOrCanvasGradient >* slotPtr = arr.AppendElement(mozilla::fallible);
26483 if (!slotPtr) {
26484 JS_ReportOutOfMemory(cx);
26485 return false;
26486 }
26487 Nullable<OwningCanvasPatternOrCanvasGradient >& slot = *slotPtr;
26488 if (temp.isNullOrUndefined()) {
26489 slot.SetNull();
26490 } else {
26491 if (!slot.SetValue().Init(cx, temp, "Element of argument 1", false)) {
26492 return false;
26493 }
26494 }
26495 }
26496 } else {
26497 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
26498 return false;
26499 }
26500 // NOTE: This assert does NOT call the function.
26501 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfNullableUnions(Constify(arg0)))>, "Should be returning void here");
26502 MOZ_KnownLive(self)(self)->PassSequenceOfNullableUnions(Constify(arg0));
26503 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26503); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26503; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26504 args.rval().setUndefined();
26505 return true;
26506}
26507
26508static const JSJitInfo passSequenceOfNullableUnions_methodinfo = {
26509 { (JSJitGetterOp)passSequenceOfNullableUnions },
26510 { prototypes::id::TestExampleInterface },
26511 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26512 JSJitInfo::Method,
26513 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26514 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26515 false, /* isInfallible. False in setters. */
26516 false, /* isMovable. Not relevant for setters. */
26517 false, /* isEliminatable. Not relevant for setters. */
26518 false, /* isAlwaysInSlot. Only relevant for getters. */
26519 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26520 false, /* isTypedMethod. Only relevant for methods. */
26521 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26522};
26523
26524MOZ_CAN_RUN_SCRIPT static bool
26525passVariadicNullableUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26526{
26527 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicNullableUnion");
26528 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26531( cx, "TestExampleInterface"
, "passVariadicNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26529 "TestExampleInterface", "passVariadicNullableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26531( cx, "TestExampleInterface"
, "passVariadicNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26530 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26531( cx, "TestExampleInterface"
, "passVariadicNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26531 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26531( cx, "TestExampleInterface"
, "passVariadicNullableUnion", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26532
26533 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26534 AutoSequence<Nullable<OwningCanvasPatternOrCanvasGradient >> arg0;
26535 if (args.length() > 0) {
26536 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
26537 JS_ReportOutOfMemory(cx);
26538 return false;
26539 }
26540 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
26541 // OK to do infallible append here, since we ensured capacity already.
26542 Nullable<OwningCanvasPatternOrCanvasGradient >& slot = *arg0.AppendElement();
26543 if (args[variadicArg].isNullOrUndefined()) {
26544 slot.SetNull();
26545 } else {
26546 if (!slot.SetValue().Init(cx, args[variadicArg], "Argument 1", false)) {
26547 return false;
26548 }
26549 }
26550 }
26551 }
26552 // NOTE: This assert does NOT call the function.
26553 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicNullableUnion(Constify(arg0)))>, "Should be returning void here");
26554 MOZ_KnownLive(self)(self)->PassVariadicNullableUnion(Constify(arg0));
26555 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26555); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26555; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26556 args.rval().setUndefined();
26557 return true;
26558}
26559
26560static const JSJitInfo passVariadicNullableUnion_methodinfo = {
26561 { (JSJitGetterOp)passVariadicNullableUnion },
26562 { prototypes::id::TestExampleInterface },
26563 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26564 JSJitInfo::Method,
26565 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26566 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26567 false, /* isInfallible. False in setters. */
26568 false, /* isMovable. Not relevant for setters. */
26569 false, /* isEliminatable. Not relevant for setters. */
26570 false, /* isAlwaysInSlot. Only relevant for getters. */
26571 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26572 false, /* isTypedMethod. Only relevant for methods. */
26573 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26574};
26575
26576MOZ_CAN_RUN_SCRIPT static bool
26577passRecordOfUnions(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26578{
26579 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfUnions");
26580 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26583( cx, "TestExampleInterface"
, "passRecordOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26581 "TestExampleInterface", "passRecordOfUnions", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26583( cx, "TestExampleInterface"
, "passRecordOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26582 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26583( cx, "TestExampleInterface"
, "passRecordOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26583 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26583( cx, "TestExampleInterface"
, "passRecordOfUnions", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26584
26585 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26586 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfUnions", 1)) {
26587 return false;
26588 }
26589 Record<nsString, OwningCanvasPatternOrCanvasGradient> arg0;
26590 if (args[0].isObject()) {
26591 auto& recordEntries = arg0.Entries();
26592
26593 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
26594 JS::RootedVector<jsid> ids(cx);
26595 if (!js::GetPropertyKeys(cx, recordObj,
26596 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
26597 return false;
26598 }
26599 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
26600 JS_ReportOutOfMemory(cx);
26601 return false;
26602 }
26603 JS::Rooted<JS::Value> propNameValue(cx);
26604 JS::Rooted<JS::Value> temp(cx);
26605 JS::Rooted<jsid> curId(cx);
26606 JS::Rooted<JS::Value> idVal(cx);
26607 // Use a hashset to keep track of ids seen, to avoid
26608 // introducing nasty O(N^2) behavior scanning for them all the
26609 // time. Ideally we'd use a data structure with O(1) lookup
26610 // _and_ ordering for the MozMap, but we don't have one lying
26611 // around.
26612 nsTHashtable<nsStringHashKey> idsSeen;
26613 for (size_t i = 0; i < ids.length(); ++i) {
26614 curId = ids[i];
26615
26616 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
26617 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
26618 &desc)) {
26619 return false;
26620 }
26621
26622 if (desc.isNothing() || !desc->enumerable()) {
26623 continue;
26624 }
26625
26626 idVal = js::IdToValue(curId);
26627 nsString propName;
26628 // This will just throw if idVal is a Symbol, like the spec says
26629 // to do.
26630 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
26631 return false;
26632 }
26633
26634 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
26635 return false;
26636 }
26637
26638 Record<nsString, OwningCanvasPatternOrCanvasGradient>::EntryType* entry;
26639 if (!idsSeen.EnsureInserted(propName)) {
26640 // Find the existing entry.
26641 auto idx = recordEntries.IndexOf(propName);
26642 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 26643); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 26643; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
26643 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 26643); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 26643; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
26644 // Now blow it away to make it look like it was just added
26645 // to the array, because it's not obvious that it's
26646 // safe to write to its already-initialized mValue via our
26647 // normal codegen conversions. For example, the value
26648 // could be a union and this would change its type, but
26649 // codegen assumes we won't do that.
26650 entry = recordEntries.ReconstructElementAt(idx);
26651 } else {
26652 // Safe to do an infallible append here, because we did a
26653 // SetCapacity above to the right capacity.
26654 entry = recordEntries.AppendElement();
26655 }
26656 entry->mKey = propName;
26657 OwningCanvasPatternOrCanvasGradient& slot = entry->mValue;
26658 if (!slot.Init(cx, temp, "Value in argument 1", false)) {
26659 return false;
26660 }
26661 }
26662 } else {
26663 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
26664 return false;
26665 }
26666 // NOTE: This assert does NOT call the function.
26667 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfUnions(Constify(arg0)))>, "Should be returning void here");
26668 MOZ_KnownLive(self)(self)->PassRecordOfUnions(Constify(arg0));
26669 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26669); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26669; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26670 args.rval().setUndefined();
26671 return true;
26672}
26673
26674static const JSJitInfo passRecordOfUnions_methodinfo = {
26675 { (JSJitGetterOp)passRecordOfUnions },
26676 { prototypes::id::TestExampleInterface },
26677 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26678 JSJitInfo::Method,
26679 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26680 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
26681 false, /* isInfallible. False in setters. */
26682 false, /* isMovable. Not relevant for setters. */
26683 false, /* isEliminatable. Not relevant for setters. */
26684 false, /* isAlwaysInSlot. Only relevant for getters. */
26685 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26686 false, /* isTypedMethod. Only relevant for methods. */
26687 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26688};
26689
26690MOZ_CAN_RUN_SCRIPT static bool
26691receiveUnion(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26692{
26693 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26696( cx, "TestExampleInterface"
, "receiveUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26694 "TestExampleInterface", "receiveUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26696( cx, "TestExampleInterface"
, "receiveUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26695 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26696( cx, "TestExampleInterface"
, "receiveUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26696 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26696( cx, "TestExampleInterface"
, "receiveUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26697
26698 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26699 OwningCanvasPatternOrCanvasGradient result;
26700 // NOTE: This assert does NOT call the function.
26701 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUnion(result))>, "Should be returning void here");
26702 MOZ_KnownLive(self)(self)->ReceiveUnion(result);
26703 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26703); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26703; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26704 if (!result.ToJSVal(cx, obj, args.rval())) {
26705 return false;
26706 }
26707 return true;
26708}
26709
26710static const JSJitInfo receiveUnion_methodinfo = {
26711 { (JSJitGetterOp)receiveUnion },
26712 { prototypes::id::TestExampleInterface },
26713 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26714 JSJitInfo::Method,
26715 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26716 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
26717 false, /* isInfallible. False in setters. */
26718 false, /* isMovable. Not relevant for setters. */
26719 false, /* isEliminatable. Not relevant for setters. */
26720 false, /* isAlwaysInSlot. Only relevant for getters. */
26721 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26722 false, /* isTypedMethod. Only relevant for methods. */
26723 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26724};
26725
26726MOZ_CAN_RUN_SCRIPT static bool
26727receiveUnion2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26728{
26729 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26732( cx, "TestExampleInterface"
, "receiveUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26730 "TestExampleInterface", "receiveUnion2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26732( cx, "TestExampleInterface"
, "receiveUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26731 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26732( cx, "TestExampleInterface"
, "receiveUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26732 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26732( cx, "TestExampleInterface"
, "receiveUnion2", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26733
26734 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26735 RootedUnion<OwningObjectOrLong> result(cx);
26736 // NOTE: This assert does NOT call the function.
26737 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUnion2(cx, result))>, "Should be returning void here");
26738 MOZ_KnownLive(self)(self)->ReceiveUnion2(cx, result);
26739 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26739); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26739; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26740 if (!result.ToJSVal(cx, obj, args.rval())) {
26741 return false;
26742 }
26743 return true;
26744}
26745
26746static const JSJitInfo receiveUnion2_methodinfo = {
26747 { (JSJitGetterOp)receiveUnion2 },
26748 { prototypes::id::TestExampleInterface },
26749 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26750 JSJitInfo::Method,
26751 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26752 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26753 false, /* isInfallible. False in setters. */
26754 false, /* isMovable. Not relevant for setters. */
26755 false, /* isEliminatable. Not relevant for setters. */
26756 false, /* isAlwaysInSlot. Only relevant for getters. */
26757 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26758 false, /* isTypedMethod. Only relevant for methods. */
26759 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26760};
26761
26762MOZ_CAN_RUN_SCRIPT static bool
26763receiveUnionContainingNull(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26764{
26765 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26768( cx, "TestExampleInterface"
, "receiveUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26766 "TestExampleInterface", "receiveUnionContainingNull", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26768( cx, "TestExampleInterface"
, "receiveUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26767 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26768( cx, "TestExampleInterface"
, "receiveUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26768 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26768( cx, "TestExampleInterface"
, "receiveUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26769
26770 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26771 OwningCanvasPatternOrNullOrCanvasGradient result;
26772 // NOTE: This assert does NOT call the function.
26773 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUnionContainingNull(result))>, "Should be returning void here");
26774 MOZ_KnownLive(self)(self)->ReceiveUnionContainingNull(result);
26775 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26775); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26775; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26776 if (!result.ToJSVal(cx, obj, args.rval())) {
26777 return false;
26778 }
26779 return true;
26780}
26781
26782static const JSJitInfo receiveUnionContainingNull_methodinfo = {
26783 { (JSJitGetterOp)receiveUnionContainingNull },
26784 { prototypes::id::TestExampleInterface },
26785 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26786 JSJitInfo::Method,
26787 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26788 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26789 false, /* isInfallible. False in setters. */
26790 false, /* isMovable. Not relevant for setters. */
26791 false, /* isEliminatable. Not relevant for setters. */
26792 false, /* isAlwaysInSlot. Only relevant for getters. */
26793 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26794 false, /* isTypedMethod. Only relevant for methods. */
26795 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26796};
26797
26798MOZ_CAN_RUN_SCRIPT static bool
26799receiveNullableUnion(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26800{
26801 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26804( cx, "TestExampleInterface"
, "receiveNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26802 "TestExampleInterface", "receiveNullableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26804( cx, "TestExampleInterface"
, "receiveNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26803 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26804( cx, "TestExampleInterface"
, "receiveNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26804 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26804( cx, "TestExampleInterface"
, "receiveNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26805
26806 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26807 Nullable<OwningCanvasPatternOrCanvasGradient> result;
26808 // NOTE: This assert does NOT call the function.
26809 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableUnion(result))>, "Should be returning void here");
26810 MOZ_KnownLive(self)(self)->ReceiveNullableUnion(result);
26811 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26811); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26811; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26812 if (result.IsNull()) {
26813 args.rval().setNull();
26814 return true;
26815 }
26816 if (!result.Value().ToJSVal(cx, obj, args.rval())) {
26817 return false;
26818 }
26819 return true;
26820}
26821
26822static const JSJitInfo receiveNullableUnion_methodinfo = {
26823 { (JSJitGetterOp)receiveNullableUnion },
26824 { prototypes::id::TestExampleInterface },
26825 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26826 JSJitInfo::Method,
26827 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26828 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26829 false, /* isInfallible. False in setters. */
26830 false, /* isMovable. Not relevant for setters. */
26831 false, /* isEliminatable. Not relevant for setters. */
26832 false, /* isAlwaysInSlot. Only relevant for getters. */
26833 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26834 false, /* isTypedMethod. Only relevant for methods. */
26835 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26836};
26837
26838MOZ_CAN_RUN_SCRIPT static bool
26839receiveNullableUnion2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26840{
26841 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26844( cx, "TestExampleInterface"
, "receiveNullableUnion2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26842 "TestExampleInterface", "receiveNullableUnion2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26844( cx, "TestExampleInterface"
, "receiveNullableUnion2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26843 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26844( cx, "TestExampleInterface"
, "receiveNullableUnion2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
26844 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26844( cx, "TestExampleInterface"
, "receiveNullableUnion2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
26845
26846 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26847 NullableRootedUnion<OwningObjectOrLong> result(cx);
26848 // NOTE: This assert does NOT call the function.
26849 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableUnion2(cx, result))>, "Should be returning void here");
26850 MOZ_KnownLive(self)(self)->ReceiveNullableUnion2(cx, result);
26851 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26851); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26851; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26852 if (result.IsNull()) {
26853 args.rval().setNull();
26854 return true;
26855 }
26856 if (!result.Value().ToJSVal(cx, obj, args.rval())) {
26857 return false;
26858 }
26859 return true;
26860}
26861
26862static const JSJitInfo receiveNullableUnion2_methodinfo = {
26863 { (JSJitGetterOp)receiveNullableUnion2 },
26864 { prototypes::id::TestExampleInterface },
26865 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26866 JSJitInfo::Method,
26867 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26868 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26869 false, /* isInfallible. False in setters. */
26870 false, /* isMovable. Not relevant for setters. */
26871 false, /* isEliminatable. Not relevant for setters. */
26872 false, /* isAlwaysInSlot. Only relevant for getters. */
26873 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26874 false, /* isTypedMethod. Only relevant for methods. */
26875 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26876};
26877
26878MOZ_CAN_RUN_SCRIPT static bool
26879receiveUnionWithUndefined(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26880{
26881 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26884( cx, "TestExampleInterface"
, "receiveUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26882 "TestExampleInterface", "receiveUnionWithUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26884( cx, "TestExampleInterface"
, "receiveUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26883 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26884( cx, "TestExampleInterface"
, "receiveUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26884 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26884( cx, "TestExampleInterface"
, "receiveUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26885
26886 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26887 OwningUndefinedOrCanvasPattern result;
26888 // NOTE: This assert does NOT call the function.
26889 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUnionWithUndefined(result))>, "Should be returning void here");
26890 MOZ_KnownLive(self)(self)->ReceiveUnionWithUndefined(result);
26891 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26891); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26891; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26892 if (!result.ToJSVal(cx, obj, args.rval())) {
26893 return false;
26894 }
26895 return true;
26896}
26897
26898static const JSJitInfo receiveUnionWithUndefined_methodinfo = {
26899 { (JSJitGetterOp)receiveUnionWithUndefined },
26900 { prototypes::id::TestExampleInterface },
26901 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26902 JSJitInfo::Method,
26903 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26904 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26905 false, /* isInfallible. False in setters. */
26906 false, /* isMovable. Not relevant for setters. */
26907 false, /* isEliminatable. Not relevant for setters. */
26908 false, /* isAlwaysInSlot. Only relevant for getters. */
26909 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26910 false, /* isTypedMethod. Only relevant for methods. */
26911 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26912};
26913
26914MOZ_CAN_RUN_SCRIPT static bool
26915receiveUnionWithNullableUndefined(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26916{
26917 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26920( cx, "TestExampleInterface"
, "receiveUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26918 "TestExampleInterface", "receiveUnionWithNullableUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26920( cx, "TestExampleInterface"
, "receiveUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26919 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26920( cx, "TestExampleInterface"
, "receiveUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26920 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26920( cx, "TestExampleInterface"
, "receiveUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26921
26922 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26923 OwningUndefinedOrNullOrCanvasPattern result;
26924 // NOTE: This assert does NOT call the function.
26925 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUnionWithNullableUndefined(result))>, "Should be returning void here");
26926 MOZ_KnownLive(self)(self)->ReceiveUnionWithNullableUndefined(result);
26927 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26927); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26927; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26928 if (!result.ToJSVal(cx, obj, args.rval())) {
26929 return false;
26930 }
26931 return true;
26932}
26933
26934static const JSJitInfo receiveUnionWithNullableUndefined_methodinfo = {
26935 { (JSJitGetterOp)receiveUnionWithNullableUndefined },
26936 { prototypes::id::TestExampleInterface },
26937 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26938 JSJitInfo::Method,
26939 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26940 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26941 false, /* isInfallible. False in setters. */
26942 false, /* isMovable. Not relevant for setters. */
26943 false, /* isEliminatable. Not relevant for setters. */
26944 false, /* isAlwaysInSlot. Only relevant for getters. */
26945 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26946 false, /* isTypedMethod. Only relevant for methods. */
26947 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26948};
26949
26950MOZ_CAN_RUN_SCRIPT static bool
26951receiveUnionWithUndefinedAndNullable(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26952{
26953 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26956( cx, "TestExampleInterface"
, "receiveUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26954 "TestExampleInterface", "receiveUnionWithUndefinedAndNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26956( cx, "TestExampleInterface"
, "receiveUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26955 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26956( cx, "TestExampleInterface"
, "receiveUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26956 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26956( cx, "TestExampleInterface"
, "receiveUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26957
26958 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26959 OwningUndefinedOrCanvasPatternOrNull result;
26960 // NOTE: This assert does NOT call the function.
26961 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveUnionWithUndefinedAndNullable(result))>, "Should be returning void here");
26962 MOZ_KnownLive(self)(self)->ReceiveUnionWithUndefinedAndNullable(result);
26963 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26963); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26963; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
26964 if (!result.ToJSVal(cx, obj, args.rval())) {
26965 return false;
26966 }
26967 return true;
26968}
26969
26970static const JSJitInfo receiveUnionWithUndefinedAndNullable_methodinfo = {
26971 { (JSJitGetterOp)receiveUnionWithUndefinedAndNullable },
26972 { prototypes::id::TestExampleInterface },
26973 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
26974 JSJitInfo::Method,
26975 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
26976 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
26977 false, /* isInfallible. False in setters. */
26978 false, /* isMovable. Not relevant for setters. */
26979 false, /* isEliminatable. Not relevant for setters. */
26980 false, /* isAlwaysInSlot. Only relevant for getters. */
26981 false, /* isLazilyCachedInSlot. Only relevant for getters. */
26982 false, /* isTypedMethod. Only relevant for methods. */
26983 0 /* Reserved slot index, if we're stored in a slot, else 0. */
26984};
26985
26986MOZ_CAN_RUN_SCRIPT static bool
26987receiveNullableUnionWithUndefined(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
26988{
26989 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject26992( cx, "TestExampleInterface"
, "receiveNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26990 "TestExampleInterface", "receiveNullableUnionWithUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject26992( cx, "TestExampleInterface"
, "receiveNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26991 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject26992( cx, "TestExampleInterface"
, "receiveNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
26992 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject26992( cx, "TestExampleInterface"
, "receiveNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
26993
26994 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
26995 Nullable<OwningUndefinedOrCanvasPattern> result;
26996 // NOTE: This assert does NOT call the function.
26997 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableUnionWithUndefined(result))>, "Should be returning void here");
26998 MOZ_KnownLive(self)(self)->ReceiveNullableUnionWithUndefined(result);
26999 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 26999); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 26999; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27000 if (result.IsNull()) {
27001 args.rval().setNull();
27002 return true;
27003 }
27004 if (!result.Value().ToJSVal(cx, obj, args.rval())) {
27005 return false;
27006 }
27007 return true;
27008}
27009
27010static const JSJitInfo receiveNullableUnionWithUndefined_methodinfo = {
27011 { (JSJitGetterOp)receiveNullableUnionWithUndefined },
27012 { prototypes::id::TestExampleInterface },
27013 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27014 JSJitInfo::Method,
27015 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27016 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27017 false, /* isInfallible. False in setters. */
27018 false, /* isMovable. Not relevant for setters. */
27019 false, /* isEliminatable. Not relevant for setters. */
27020 false, /* isAlwaysInSlot. Only relevant for getters. */
27021 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27022 false, /* isTypedMethod. Only relevant for methods. */
27023 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27024};
27025
27026MOZ_CAN_RUN_SCRIPT static bool
27027get_writableUnion(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27028{
27029 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27032( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27030 "TestExampleInterface", "writableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27032( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27031 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27032( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27032 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27032( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27033
27034 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27035 OwningCanvasPatternOrCanvasGradient result;
27036 // NOTE: This assert does NOT call the function.
27037 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableUnion(result))>, "Should be returning void here");
27038 MOZ_KnownLive(self)(self)->GetWritableUnion(result);
27039 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27039); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27039; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27040 if (!result.ToJSVal(cx, obj, args.rval())) {
27041 return false;
27042 }
27043 return true;
27044}
27045
27046MOZ_CAN_RUN_SCRIPT static bool
27047set_writableUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27048{
27049 BindingCallContext cx(cx_, "TestExampleInterface.writableUnion setter");
27050 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27053( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27051 "TestExampleInterface", "writableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27053( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27052 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27053( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27053 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27053( cx, "TestExampleInterface"
, "writableUnion", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27054
27055 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27056 CanvasPatternOrCanvasGradient arg0;
27057 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
27058 return false;
27059 }
27060 // NOTE: This assert does NOT call the function.
27061 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnion(Constify(arg0)))>, "Should be returning void here");
27062 MOZ_KnownLive(self)(self)->SetWritableUnion(Constify(arg0));
27063 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27063); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27063; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27064
27065 return true;
27066}
27067
27068static const JSJitInfo writableUnion_getterinfo = {
27069 { get_writableUnion },
27070 { prototypes::id::TestExampleInterface },
27071 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27072 JSJitInfo::Getter,
27073 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27074 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
27075 false, /* isInfallible. False in setters. */
27076 false, /* isMovable. Not relevant for setters. */
27077 false, /* isEliminatable. Not relevant for setters. */
27078 false, /* isAlwaysInSlot. Only relevant for getters. */
27079 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27080 false, /* isTypedMethod. Only relevant for methods. */
27081 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27082};
27083static const JSJitInfo writableUnion_setterinfo = {
27084 { (JSJitGetterOp)set_writableUnion },
27085 { prototypes::id::TestExampleInterface },
27086 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27087 JSJitInfo::Setter,
27088 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27089 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27090 false, /* isInfallible. False in setters. */
27091 false, /* isMovable. Not relevant for setters. */
27092 false, /* isEliminatable. Not relevant for setters. */
27093 false, /* isAlwaysInSlot. Only relevant for getters. */
27094 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27095 false, /* isTypedMethod. Only relevant for methods. */
27096 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27097};
27098
27099MOZ_CAN_RUN_SCRIPT static bool
27100get_writableUnionContainingNull(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27101{
27102 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27105( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27103 "TestExampleInterface", "writableUnionContainingNull", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27105( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27104 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27105( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27105 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27105( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27106
27107 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27108 OwningCanvasPatternOrNullOrCanvasGradient result;
27109 // NOTE: This assert does NOT call the function.
27110 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableUnionContainingNull(result))>, "Should be returning void here");
27111 MOZ_KnownLive(self)(self)->GetWritableUnionContainingNull(result);
27112 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27112); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27112; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27113 if (!result.ToJSVal(cx, obj, args.rval())) {
27114 return false;
27115 }
27116 return true;
27117}
27118
27119MOZ_CAN_RUN_SCRIPT static bool
27120set_writableUnionContainingNull(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27121{
27122 BindingCallContext cx(cx_, "TestExampleInterface.writableUnionContainingNull setter");
27123 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27126( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27124 "TestExampleInterface", "writableUnionContainingNull", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27126( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27125 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27126( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27126 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27126( cx, "TestExampleInterface"
, "writableUnionContainingNull", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27127
27128 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27129 CanvasPatternOrNullOrCanvasGradient arg0;
27130 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
27131 return false;
27132 }
27133 // NOTE: This assert does NOT call the function.
27134 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnionContainingNull(Constify(arg0)))>, "Should be returning void here");
27135 MOZ_KnownLive(self)(self)->SetWritableUnionContainingNull(Constify(arg0));
27136 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27136); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27136; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27137
27138 return true;
27139}
27140
27141static const JSJitInfo writableUnionContainingNull_getterinfo = {
27142 { get_writableUnionContainingNull },
27143 { prototypes::id::TestExampleInterface },
27144 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27145 JSJitInfo::Getter,
27146 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27147 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27148 false, /* isInfallible. False in setters. */
27149 false, /* isMovable. Not relevant for setters. */
27150 false, /* isEliminatable. Not relevant for setters. */
27151 false, /* isAlwaysInSlot. Only relevant for getters. */
27152 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27153 false, /* isTypedMethod. Only relevant for methods. */
27154 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27155};
27156static const JSJitInfo writableUnionContainingNull_setterinfo = {
27157 { (JSJitGetterOp)set_writableUnionContainingNull },
27158 { prototypes::id::TestExampleInterface },
27159 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27160 JSJitInfo::Setter,
27161 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27162 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27163 false, /* isInfallible. False in setters. */
27164 false, /* isMovable. Not relevant for setters. */
27165 false, /* isEliminatable. Not relevant for setters. */
27166 false, /* isAlwaysInSlot. Only relevant for getters. */
27167 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27168 false, /* isTypedMethod. Only relevant for methods. */
27169 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27170};
27171
27172MOZ_CAN_RUN_SCRIPT static bool
27173get_writableNullableUnion(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27174{
27175 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27178( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27176 "TestExampleInterface", "writableNullableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27178( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27177 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27178( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27178 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27178( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27179
27180 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27181 Nullable<OwningCanvasPatternOrCanvasGradient> result;
27182 // NOTE: This assert does NOT call the function.
27183 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableNullableUnion(result))>, "Should be returning void here");
27184 MOZ_KnownLive(self)(self)->GetWritableNullableUnion(result);
27185 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27185); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27185; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27186 if (result.IsNull()) {
27187 args.rval().setNull();
27188 return true;
27189 }
27190 if (!result.Value().ToJSVal(cx, obj, args.rval())) {
27191 return false;
27192 }
27193 return true;
27194}
27195
27196MOZ_CAN_RUN_SCRIPT static bool
27197set_writableNullableUnion(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27198{
27199 BindingCallContext cx(cx_, "TestExampleInterface.writableNullableUnion setter");
27200 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27203( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27201 "TestExampleInterface", "writableNullableUnion", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27203( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27202 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27203( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27203 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27203( cx, "TestExampleInterface"
, "writableNullableUnion", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27204
27205 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27206 Nullable<CanvasPatternOrCanvasGradient > arg0;
27207 if (args[0].isNullOrUndefined()) {
27208 arg0.SetNull();
27209 } else {
27210 if (!arg0.SetValue().Init(cx, args[0], "Value being assigned", false)) {
27211 return false;
27212 }
27213 }
27214 // NOTE: This assert does NOT call the function.
27215 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableNullableUnion(Constify(arg0)))>, "Should be returning void here");
27216 MOZ_KnownLive(self)(self)->SetWritableNullableUnion(Constify(arg0));
27217 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27217); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27217; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27218
27219 return true;
27220}
27221
27222static const JSJitInfo writableNullableUnion_getterinfo = {
27223 { get_writableNullableUnion },
27224 { prototypes::id::TestExampleInterface },
27225 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27226 JSJitInfo::Getter,
27227 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27228 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27229 false, /* isInfallible. False in setters. */
27230 false, /* isMovable. Not relevant for setters. */
27231 false, /* isEliminatable. Not relevant for setters. */
27232 false, /* isAlwaysInSlot. Only relevant for getters. */
27233 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27234 false, /* isTypedMethod. Only relevant for methods. */
27235 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27236};
27237static const JSJitInfo writableNullableUnion_setterinfo = {
27238 { (JSJitGetterOp)set_writableNullableUnion },
27239 { prototypes::id::TestExampleInterface },
27240 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27241 JSJitInfo::Setter,
27242 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27243 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27244 false, /* isInfallible. False in setters. */
27245 false, /* isMovable. Not relevant for setters. */
27246 false, /* isEliminatable. Not relevant for setters. */
27247 false, /* isAlwaysInSlot. Only relevant for getters. */
27248 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27249 false, /* isTypedMethod. Only relevant for methods. */
27250 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27251};
27252
27253MOZ_CAN_RUN_SCRIPT static bool
27254get_writableUnionWithUndefined(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27255{
27256 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27259( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27257 "TestExampleInterface", "writableUnionWithUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27259( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27258 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27259( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27259 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27259( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27260
27261 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27262 OwningUndefinedOrCanvasPattern result;
27263 // NOTE: This assert does NOT call the function.
27264 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableUnionWithUndefined(result))>, "Should be returning void here");
27265 MOZ_KnownLive(self)(self)->GetWritableUnionWithUndefined(result);
27266 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27266); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27266; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27267 if (!result.ToJSVal(cx, obj, args.rval())) {
27268 return false;
27269 }
27270 return true;
27271}
27272
27273MOZ_CAN_RUN_SCRIPT static bool
27274set_writableUnionWithUndefined(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27275{
27276 BindingCallContext cx(cx_, "TestExampleInterface.writableUnionWithUndefined setter");
27277 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27280( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27278 "TestExampleInterface", "writableUnionWithUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27280( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27279 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27280( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27280 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27280( cx, "TestExampleInterface"
, "writableUnionWithUndefined", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27281
27282 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27283 UndefinedOrCanvasPattern arg0;
27284 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
27285 return false;
27286 }
27287 // NOTE: This assert does NOT call the function.
27288 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnionWithUndefined(Constify(arg0)))>, "Should be returning void here");
27289 MOZ_KnownLive(self)(self)->SetWritableUnionWithUndefined(Constify(arg0));
27290 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27290); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27290; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27291
27292 return true;
27293}
27294
27295static const JSJitInfo writableUnionWithUndefined_getterinfo = {
27296 { get_writableUnionWithUndefined },
27297 { prototypes::id::TestExampleInterface },
27298 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27299 JSJitInfo::Getter,
27300 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27301 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27302 false, /* isInfallible. False in setters. */
27303 false, /* isMovable. Not relevant for setters. */
27304 false, /* isEliminatable. Not relevant for setters. */
27305 false, /* isAlwaysInSlot. Only relevant for getters. */
27306 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27307 false, /* isTypedMethod. Only relevant for methods. */
27308 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27309};
27310static const JSJitInfo writableUnionWithUndefined_setterinfo = {
27311 { (JSJitGetterOp)set_writableUnionWithUndefined },
27312 { prototypes::id::TestExampleInterface },
27313 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27314 JSJitInfo::Setter,
27315 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27316 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27317 false, /* isInfallible. False in setters. */
27318 false, /* isMovable. Not relevant for setters. */
27319 false, /* isEliminatable. Not relevant for setters. */
27320 false, /* isAlwaysInSlot. Only relevant for getters. */
27321 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27322 false, /* isTypedMethod. Only relevant for methods. */
27323 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27324};
27325
27326MOZ_CAN_RUN_SCRIPT static bool
27327get_writableUnionWithNullableUndefined(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27328{
27329 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27332( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27330 "TestExampleInterface", "writableUnionWithNullableUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27332( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27331 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27332( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27332 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27332( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27333
27334 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27335 OwningUndefinedOrNullOrCanvasPattern result;
27336 // NOTE: This assert does NOT call the function.
27337 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableUnionWithNullableUndefined(result))>, "Should be returning void here");
27338 MOZ_KnownLive(self)(self)->GetWritableUnionWithNullableUndefined(result);
27339 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27339); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27339; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27340 if (!result.ToJSVal(cx, obj, args.rval())) {
27341 return false;
27342 }
27343 return true;
27344}
27345
27346MOZ_CAN_RUN_SCRIPT static bool
27347set_writableUnionWithNullableUndefined(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27348{
27349 BindingCallContext cx(cx_, "TestExampleInterface.writableUnionWithNullableUndefined setter");
27350 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27353( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27351 "TestExampleInterface", "writableUnionWithNullableUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27353( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27352 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27353( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27353 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27353( cx, "TestExampleInterface"
, "writableUnionWithNullableUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27354
27355 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27356 UndefinedOrNullOrCanvasPattern arg0;
27357 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
27358 return false;
27359 }
27360 // NOTE: This assert does NOT call the function.
27361 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnionWithNullableUndefined(Constify(arg0)))>, "Should be returning void here");
27362 MOZ_KnownLive(self)(self)->SetWritableUnionWithNullableUndefined(Constify(arg0));
27363 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27363); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27363; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27364
27365 return true;
27366}
27367
27368static const JSJitInfo writableUnionWithNullableUndefined_getterinfo = {
27369 { get_writableUnionWithNullableUndefined },
27370 { prototypes::id::TestExampleInterface },
27371 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27372 JSJitInfo::Getter,
27373 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27374 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27375 false, /* isInfallible. False in setters. */
27376 false, /* isMovable. Not relevant for setters. */
27377 false, /* isEliminatable. Not relevant for setters. */
27378 false, /* isAlwaysInSlot. Only relevant for getters. */
27379 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27380 false, /* isTypedMethod. Only relevant for methods. */
27381 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27382};
27383static const JSJitInfo writableUnionWithNullableUndefined_setterinfo = {
27384 { (JSJitGetterOp)set_writableUnionWithNullableUndefined },
27385 { prototypes::id::TestExampleInterface },
27386 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27387 JSJitInfo::Setter,
27388 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27389 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27390 false, /* isInfallible. False in setters. */
27391 false, /* isMovable. Not relevant for setters. */
27392 false, /* isEliminatable. Not relevant for setters. */
27393 false, /* isAlwaysInSlot. Only relevant for getters. */
27394 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27395 false, /* isTypedMethod. Only relevant for methods. */
27396 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27397};
27398
27399MOZ_CAN_RUN_SCRIPT static bool
27400get_writableUnionWithUndefinedAndNullable(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27401{
27402 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27405( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27403 "TestExampleInterface", "writableUnionWithUndefinedAndNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27405( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27404 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27405( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27405 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27405( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27406
27407 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27408 OwningUndefinedOrCanvasPatternOrNull result;
27409 // NOTE: This assert does NOT call the function.
27410 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableUnionWithUndefinedAndNullable(result))>, "Should be returning void here");
27411 MOZ_KnownLive(self)(self)->GetWritableUnionWithUndefinedAndNullable(result);
27412 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27412); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27412; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27413 if (!result.ToJSVal(cx, obj, args.rval())) {
27414 return false;
27415 }
27416 return true;
27417}
27418
27419MOZ_CAN_RUN_SCRIPT static bool
27420set_writableUnionWithUndefinedAndNullable(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27421{
27422 BindingCallContext cx(cx_, "TestExampleInterface.writableUnionWithUndefinedAndNullable setter");
27423 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27426( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27424 "TestExampleInterface", "writableUnionWithUndefinedAndNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27426( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27425 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27426( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27426 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27426( cx, "TestExampleInterface"
, "writableUnionWithUndefinedAndNullable", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27427
27428 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27429 UndefinedOrCanvasPatternOrNull arg0;
27430 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
27431 return false;
27432 }
27433 // NOTE: This assert does NOT call the function.
27434 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableUnionWithUndefinedAndNullable(Constify(arg0)))>, "Should be returning void here");
27435 MOZ_KnownLive(self)(self)->SetWritableUnionWithUndefinedAndNullable(Constify(arg0));
27436 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27436); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27436; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27437
27438 return true;
27439}
27440
27441static const JSJitInfo writableUnionWithUndefinedAndNullable_getterinfo = {
27442 { get_writableUnionWithUndefinedAndNullable },
27443 { prototypes::id::TestExampleInterface },
27444 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27445 JSJitInfo::Getter,
27446 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27447 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27448 false, /* isInfallible. False in setters. */
27449 false, /* isMovable. Not relevant for setters. */
27450 false, /* isEliminatable. Not relevant for setters. */
27451 false, /* isAlwaysInSlot. Only relevant for getters. */
27452 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27453 false, /* isTypedMethod. Only relevant for methods. */
27454 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27455};
27456static const JSJitInfo writableUnionWithUndefinedAndNullable_setterinfo = {
27457 { (JSJitGetterOp)set_writableUnionWithUndefinedAndNullable },
27458 { prototypes::id::TestExampleInterface },
27459 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27460 JSJitInfo::Setter,
27461 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27462 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27463 false, /* isInfallible. False in setters. */
27464 false, /* isMovable. Not relevant for setters. */
27465 false, /* isEliminatable. Not relevant for setters. */
27466 false, /* isAlwaysInSlot. Only relevant for getters. */
27467 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27468 false, /* isTypedMethod. Only relevant for methods. */
27469 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27470};
27471
27472MOZ_CAN_RUN_SCRIPT static bool
27473get_writableNullableUnionWithUndefined(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
27474{
27475 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27478( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27476 "TestExampleInterface", "writableNullableUnionWithUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27478( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27477 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject27478( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27478 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27478( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27479
27480 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27481 Nullable<OwningUndefinedOrCanvasPattern> result;
27482 // NOTE: This assert does NOT call the function.
27483 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableNullableUnionWithUndefined(result))>, "Should be returning void here");
27484 MOZ_KnownLive(self)(self)->GetWritableNullableUnionWithUndefined(result);
27485 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27485); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27485; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27486 if (result.IsNull()) {
27487 args.rval().setNull();
27488 return true;
27489 }
27490 if (!result.Value().ToJSVal(cx, obj, args.rval())) {
27491 return false;
27492 }
27493 return true;
27494}
27495
27496MOZ_CAN_RUN_SCRIPT static bool
27497set_writableNullableUnionWithUndefined(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
27498{
27499 BindingCallContext cx(cx_, "TestExampleInterface.writableNullableUnionWithUndefined setter");
27500 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27503( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27501 "TestExampleInterface", "writableNullableUnionWithUndefined", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27503( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27502 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject27503( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
27503 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27503( cx, "TestExampleInterface"
, "writableNullableUnionWithUndefined", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
27504
27505 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27506 Nullable<UndefinedOrCanvasPattern > arg0;
27507 if (args[0].isNull()) {
27508 arg0.SetNull();
27509 } else {
27510 if (!arg0.SetValue().Init(cx, args[0], "Value being assigned", false)) {
27511 return false;
27512 }
27513 }
27514 // NOTE: This assert does NOT call the function.
27515 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableNullableUnionWithUndefined(Constify(arg0)))>, "Should be returning void here");
27516 MOZ_KnownLive(self)(self)->SetWritableNullableUnionWithUndefined(Constify(arg0));
27517 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27517); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27517; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27518
27519 return true;
27520}
27521
27522static const JSJitInfo writableNullableUnionWithUndefined_getterinfo = {
27523 { get_writableNullableUnionWithUndefined },
27524 { prototypes::id::TestExampleInterface },
27525 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27526 JSJitInfo::Getter,
27527 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27528 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
27529 false, /* isInfallible. False in setters. */
27530 false, /* isMovable. Not relevant for setters. */
27531 false, /* isEliminatable. Not relevant for setters. */
27532 false, /* isAlwaysInSlot. Only relevant for getters. */
27533 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27534 false, /* isTypedMethod. Only relevant for methods. */
27535 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27536};
27537static const JSJitInfo writableNullableUnionWithUndefined_setterinfo = {
27538 { (JSJitGetterOp)set_writableNullableUnionWithUndefined },
27539 { prototypes::id::TestExampleInterface },
27540 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27541 JSJitInfo::Setter,
27542 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27543 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27544 false, /* isInfallible. False in setters. */
27545 false, /* isMovable. Not relevant for setters. */
27546 false, /* isEliminatable. Not relevant for setters. */
27547 false, /* isAlwaysInSlot. Only relevant for getters. */
27548 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27549 false, /* isTypedMethod. Only relevant for methods. */
27550 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27551};
27552
27553MOZ_CAN_RUN_SCRIPT static bool
27554passPromise(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27555{
27556 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27559( cx, "TestExampleInterface"
, "passPromise", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27557 "TestExampleInterface", "passPromise", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27559( cx, "TestExampleInterface"
, "passPromise", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27558 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject27559( cx, "TestExampleInterface"
, "passPromise", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27559 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27559( cx, "TestExampleInterface"
, "passPromise", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27560
27561 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27562 if (!args.requireAtLeast(cx, "TestExampleInterface.passPromise", 1)) {
27563 return false;
27564 }
27565 OwningNonNull<Promise> arg0;
27566 { // Scope for our GlobalObject, FastErrorResult, JSAutoRealm,
27567 // etc.
27568
27569 JS::Rooted<JSObject*> globalObj(cx);
27570 globalObj = JS::CurrentGlobalOrNull(cx);
27571 JSAutoRealm ar(cx, globalObj);
27572 GlobalObject promiseGlobal(cx, globalObj);
27573 if (promiseGlobal.Failed()) {
27574 return false;
27575 }
27576
27577 JS::Rooted<JS::Value> valueToResolve(cx, args[0]);
27578 if (!JS_WrapValue(cx, &valueToResolve)) {
27579 return false;
27580 }
27581 binding_detail::FastErrorResult promiseRv;
27582 nsCOMPtr<nsIGlobalObject> global =
27583 do_QueryInterface(promiseGlobal.GetAsSupports());
27584 if (!global) {
27585 promiseRv.Throw(NS_ERROR_UNEXPECTED);
27586 MOZ_ALWAYS_TRUE(promiseRv.MaybeSetPendingException(cx))do { if ((__builtin_expect(!!(promiseRv.MaybeSetPendingException
(cx)), 1))) { } else { do { static_assert( mozilla::detail::AssertionConditionType
<decltype(false)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("false" " (" "promiseRv.MaybeSetPendingException(cx)"
")", "../TestExampleGenBinding.cpp", 27586); AnnotateMozCrashReason
("MOZ_DIAGNOSTIC_ASSERT" "(" "false" ") (" "promiseRv.MaybeSetPendingException(cx)"
")"); do { *((volatile int*)__null) = 27586; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
27587 return false;
27588 }
27589 arg0 = Promise::Resolve(global, cx, valueToResolve,
27590 promiseRv);
27591 if (promiseRv.MaybeSetPendingException(cx)) {
27592 return false;
27593 }
27594 }
27595 // NOTE: This assert does NOT call the function.
27596 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassPromise(NonNullHelper(arg0)))>, "Should be returning void here");
27597 MOZ_KnownLive(self)(self)->PassPromise(NonNullHelper(arg0));
27598 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27598); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27598; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27599 args.rval().setUndefined();
27600 return true;
27601}
27602
27603static const JSJitInfo passPromise_methodinfo = {
27604 { (JSJitGetterOp)passPromise },
27605 { prototypes::id::TestExampleInterface },
27606 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27607 JSJitInfo::Method,
27608 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27609 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27610 false, /* isInfallible. False in setters. */
27611 false, /* isMovable. Not relevant for setters. */
27612 false, /* isEliminatable. Not relevant for setters. */
27613 false, /* isAlwaysInSlot. Only relevant for getters. */
27614 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27615 false, /* isTypedMethod. Only relevant for methods. */
27616 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27617};
27618
27619MOZ_CAN_RUN_SCRIPT static bool
27620passOptionalPromise(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27621{
27622 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27625( cx, "TestExampleInterface"
, "passOptionalPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27623 "TestExampleInterface", "passOptionalPromise", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27625( cx, "TestExampleInterface"
, "passOptionalPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27624 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject27625( cx, "TestExampleInterface"
, "passOptionalPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27625 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27625( cx, "TestExampleInterface"
, "passOptionalPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27626
27627 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27628 Optional<OwningNonNull<Promise>> arg0;
27629 if (args.hasDefined(0)) {
27630 arg0.Construct();
27631 { // Scope for our GlobalObject, FastErrorResult, JSAutoRealm,
27632 // etc.
27633
27634 JS::Rooted<JSObject*> globalObj(cx);
27635 globalObj = JS::CurrentGlobalOrNull(cx);
27636 JSAutoRealm ar(cx, globalObj);
27637 GlobalObject promiseGlobal(cx, globalObj);
27638 if (promiseGlobal.Failed()) {
27639 return false;
27640 }
27641
27642 JS::Rooted<JS::Value> valueToResolve(cx, args[0]);
27643 if (!JS_WrapValue(cx, &valueToResolve)) {
27644 return false;
27645 }
27646 binding_detail::FastErrorResult promiseRv;
27647 nsCOMPtr<nsIGlobalObject> global =
27648 do_QueryInterface(promiseGlobal.GetAsSupports());
27649 if (!global) {
27650 promiseRv.Throw(NS_ERROR_UNEXPECTED);
27651 MOZ_ALWAYS_TRUE(promiseRv.MaybeSetPendingException(cx))do { if ((__builtin_expect(!!(promiseRv.MaybeSetPendingException
(cx)), 1))) { } else { do { static_assert( mozilla::detail::AssertionConditionType
<decltype(false)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("false" " (" "promiseRv.MaybeSetPendingException(cx)"
")", "../TestExampleGenBinding.cpp", 27651); AnnotateMozCrashReason
("MOZ_DIAGNOSTIC_ASSERT" "(" "false" ") (" "promiseRv.MaybeSetPendingException(cx)"
")"); do { *((volatile int*)__null) = 27651; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
27652 return false;
27653 }
27654 arg0.Value() = Promise::Resolve(global, cx, valueToResolve,
27655 promiseRv);
27656 if (promiseRv.MaybeSetPendingException(cx)) {
27657 return false;
27658 }
27659 }
27660 }
27661 // NOTE: This assert does NOT call the function.
27662 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOptionalPromise(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
27663 MOZ_KnownLive(self)(self)->PassOptionalPromise(NonNullHelper(Constify(arg0)));
27664 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27664); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27664; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27665 args.rval().setUndefined();
27666 return true;
27667}
27668
27669static const JSJitInfo passOptionalPromise_methodinfo = {
27670 { (JSJitGetterOp)passOptionalPromise },
27671 { prototypes::id::TestExampleInterface },
27672 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27673 JSJitInfo::Method,
27674 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27675 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27676 false, /* isInfallible. False in setters. */
27677 false, /* isMovable. Not relevant for setters. */
27678 false, /* isEliminatable. Not relevant for setters. */
27679 false, /* isAlwaysInSlot. Only relevant for getters. */
27680 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27681 false, /* isTypedMethod. Only relevant for methods. */
27682 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27683};
27684
27685MOZ_CAN_RUN_SCRIPT static bool
27686passPromiseSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27687{
27688 BindingCallContext cx(cx_, "TestExampleInterface.passPromiseSequence");
27689 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27692( cx, "TestExampleInterface"
, "passPromiseSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27690 "TestExampleInterface", "passPromiseSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27692( cx, "TestExampleInterface"
, "passPromiseSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27691 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject27692( cx, "TestExampleInterface"
, "passPromiseSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27692 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27692( cx, "TestExampleInterface"
, "passPromiseSequence", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27693
27694 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27695 if (!args.requireAtLeast(cx, "TestExampleInterface.passPromiseSequence", 1)) {
27696 return false;
27697 }
27698 binding_detail::AutoSequence<OwningNonNull<Promise>> arg0;
27699 if (args[0].isObject()) {
27700 JS::ForOfIterator iter(cx);
27701 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
27702 return false;
27703 }
27704 if (!iter.valueIsIterable()) {
27705 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
27706 return false;
27707 }
27708 binding_detail::AutoSequence<OwningNonNull<Promise>> &arr = arg0;
27709 JS::Rooted<JS::Value> temp(cx);
27710 while (true) {
27711 bool done;
27712 if (!iter.next(&temp, &done)) {
27713 return false;
27714 }
27715 if (done) {
27716 break;
27717 }
27718 OwningNonNull<Promise>* slotPtr = arr.AppendElement(mozilla::fallible);
27719 if (!slotPtr) {
27720 JS_ReportOutOfMemory(cx);
27721 return false;
27722 }
27723 OwningNonNull<Promise>& slot = *slotPtr;
27724 { // Scope for our GlobalObject, FastErrorResult, JSAutoRealm,
27725 // etc.
27726
27727 JS::Rooted<JSObject*> globalObj(cx);
27728 globalObj = JS::CurrentGlobalOrNull(cx);
27729 JSAutoRealm ar(cx, globalObj);
27730 GlobalObject promiseGlobal(cx, globalObj);
27731 if (promiseGlobal.Failed()) {
27732 return false;
27733 }
27734
27735 JS::Rooted<JS::Value> valueToResolve(cx, temp);
27736 if (!JS_WrapValue(cx, &valueToResolve)) {
27737 return false;
27738 }
27739 binding_detail::FastErrorResult promiseRv;
27740 nsCOMPtr<nsIGlobalObject> global =
27741 do_QueryInterface(promiseGlobal.GetAsSupports());
27742 if (!global) {
27743 promiseRv.Throw(NS_ERROR_UNEXPECTED);
27744 MOZ_ALWAYS_TRUE(promiseRv.MaybeSetPendingException(cx))do { if ((__builtin_expect(!!(promiseRv.MaybeSetPendingException
(cx)), 1))) { } else { do { static_assert( mozilla::detail::AssertionConditionType
<decltype(false)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("false" " (" "promiseRv.MaybeSetPendingException(cx)"
")", "../TestExampleGenBinding.cpp", 27744); AnnotateMozCrashReason
("MOZ_DIAGNOSTIC_ASSERT" "(" "false" ") (" "promiseRv.MaybeSetPendingException(cx)"
")"); do { *((volatile int*)__null) = 27744; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
27745 return false;
27746 }
27747 slot = Promise::Resolve(global, cx, valueToResolve,
27748 promiseRv);
27749 if (promiseRv.MaybeSetPendingException(cx)) {
27750 return false;
27751 }
27752 }
27753 }
27754 } else {
27755 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
27756 return false;
27757 }
27758 // NOTE: This assert does NOT call the function.
27759 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassPromiseSequence(Constify(arg0)))>, "Should be returning void here");
27760 MOZ_KnownLive(self)(self)->PassPromiseSequence(Constify(arg0));
27761 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27761); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27761; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27762 args.rval().setUndefined();
27763 return true;
27764}
27765
27766static const JSJitInfo passPromiseSequence_methodinfo = {
27767 { (JSJitGetterOp)passPromiseSequence },
27768 { prototypes::id::TestExampleInterface },
27769 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27770 JSJitInfo::Method,
27771 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27772 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
27773 false, /* isInfallible. False in setters. */
27774 false, /* isMovable. Not relevant for setters. */
27775 false, /* isEliminatable. Not relevant for setters. */
27776 false, /* isAlwaysInSlot. Only relevant for getters. */
27777 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27778 false, /* isTypedMethod. Only relevant for methods. */
27779 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27780};
27781
27782MOZ_CAN_RUN_SCRIPT static bool
27783receivePromise(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27784{
27785 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27788( cx, "TestExampleInterface"
, "receivePromise", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27786 "TestExampleInterface", "receivePromise", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27788( cx, "TestExampleInterface"
, "receivePromise", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27787 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject27788( cx, "TestExampleInterface"
, "receivePromise", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27788 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27788( cx, "TestExampleInterface"
, "receivePromise", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27789
27790 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27791 auto result(StrongOrRawPtr<Promise>(MOZ_KnownLive(self)(self)->ReceivePromise()));
27792 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27792); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27792; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27793 if (!ToJSValue(cx, result, args.rval())) {
27794 return false;
27795 }
27796 return true;
27797}
27798
27799MOZ_CAN_RUN_SCRIPT static bool
27800receivePromise_promiseWrapper(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27801{
27802 bool ok = receivePromise(cx, obj, void_self, args);
27803 if (ok) {
27804 return true;
27805 }
27806 return ConvertExceptionToPromise(cx, args.rval());
27807}
27808
27809static const JSJitInfo receivePromise_methodinfo = {
27810 { (JSJitGetterOp)receivePromise_promiseWrapper },
27811 { prototypes::id::TestExampleInterface },
27812 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27813 JSJitInfo::Method,
27814 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27815 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
27816 false, /* isInfallible. False in setters. */
27817 false, /* isMovable. Not relevant for setters. */
27818 false, /* isEliminatable. Not relevant for setters. */
27819 false, /* isAlwaysInSlot. Only relevant for getters. */
27820 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27821 false, /* isTypedMethod. Only relevant for methods. */
27822 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27823};
27824
27825MOZ_CAN_RUN_SCRIPT static bool
27826receiveAddrefedPromise(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27827{
27828 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject27831( cx, "TestExampleInterface"
, "receiveAddrefedPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27829 "TestExampleInterface", "receiveAddrefedPromise", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject27831( cx, "TestExampleInterface"
, "receiveAddrefedPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27830 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject27831( cx, "TestExampleInterface"
, "receiveAddrefedPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
27831 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject27831( cx, "TestExampleInterface"
, "receiveAddrefedPromise", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
27832
27833 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
27834 auto result(StrongOrRawPtr<Promise>(MOZ_KnownLive(self)(self)->ReceiveAddrefedPromise()));
27835 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 27835); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 27835; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
27836 if (!ToJSValue(cx, result, args.rval())) {
27837 return false;
27838 }
27839 return true;
27840}
27841
27842MOZ_CAN_RUN_SCRIPT static bool
27843receiveAddrefedPromise_promiseWrapper(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
27844{
27845 bool ok = receiveAddrefedPromise(cx, obj, void_self, args);
27846 if (ok) {
27847 return true;
27848 }
27849 return ConvertExceptionToPromise(cx, args.rval());
27850}
27851
27852static const JSJitInfo receiveAddrefedPromise_methodinfo = {
27853 { (JSJitGetterOp)receiveAddrefedPromise_promiseWrapper },
27854 { prototypes::id::TestExampleInterface },
27855 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
27856 JSJitInfo::Method,
27857 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
27858 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
27859 false, /* isInfallible. False in setters. */
27860 false, /* isMovable. Not relevant for setters. */
27861 false, /* isEliminatable. Not relevant for setters. */
27862 false, /* isAlwaysInSlot. Only relevant for getters. */
27863 false, /* isLazilyCachedInSlot. Only relevant for getters. */
27864 false, /* isTypedMethod. Only relevant for methods. */
27865 0 /* Reserved slot index, if we're stored in a slot, else 0. */
27866};
27867
27868namespace BooleanObservableArray_Binding {
27869class ObservableArrayProxyHandler : public mozilla::dom::ObservableArrayProxyHandler
27870{
27871protected:
27872 bool
27873 OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const override;
27874
27875 bool
27876 SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const override;
27877
27878public:
27879 static const ObservableArrayProxyHandler*
27880 getInstance();
27881};
27882
27883bool
27884ObservableArrayProxyHandler::OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const
27885{
27886 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 27886); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 27886; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
27887
27888 BindingCallContext cx(aCx, "ObservableArray OnDeleteItem");
27889 bool decl;
27890 if (!ValueToPrimitive<bool, eDefault>(cx, aValue, "Element in ObservableArray backing list", &decl)) {
27891 MOZ_ASSERT_UNREACHABLE("The item in ObservableArray backing list is not Boolean?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(false)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("false" " (" "MOZ_ASSERT_UNREACHABLE: "
"The item in ObservableArray backing list is not Boolean?" ")"
, "../TestExampleGenBinding.cpp", 27891); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "false" ") (" "MOZ_ASSERT_UNREACHABLE: " "The item in ObservableArray backing list is not Boolean?"
")"); do { *((volatile int*)__null) = 27891; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
27892 return false;
27893 }
27894
27895 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
27896 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
27897 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 27897); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 27897; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
27898
27899 ErrorResult rv;
27900 MOZ_KnownLive(interface)(interface)->OnDeleteBooleanObservableArray(decl, aIndex, rv);
27901 return !rv.MaybeSetPendingException(cx);
27902}
27903
27904bool
27905ObservableArrayProxyHandler::SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const
27906{
27907 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 27907); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 27907; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
27908 uint32_t oldLen;
27909 if (!JS::GetArrayLength(aCx, aBackingList, &oldLen)) {
27910 return false;
27911 }
27912
27913 if (aIndex > oldLen) {
27914 return aResult.failBadIndex();
27915 }
27916
27917 BindingCallContext cx(aCx, "ObservableArray SetIndexedValue");
27918 bool decl;
27919 if (!ValueToPrimitive<bool, eDefault>(cx, aValue, "Element in ObservableArray backing list", &decl)) {
27920 return false;
27921 }
27922
27923 if (aIndex < oldLen) {
27924 JS::Rooted<JS::Value> value(aCx);
27925 if (!JS_GetElement(aCx, aBackingList, aIndex, &value)) {
27926 return false;
27927 }
27928
27929 if (!OnDeleteItem(aCx, aProxy, value, aIndex)) {
27930 return false;
27931 }
27932 }
27933
27934 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
27935 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
27936 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 27936); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 27936; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
27937
27938 ErrorResult rv;
27939 MOZ_KnownLive(interface)(interface)->OnSetBooleanObservableArray(decl, aIndex, rv);
27940 if (rv.MaybeSetPendingException(cx)) {
27941 return false;
27942 }
27943
27944 if (!JS_SetElement(aCx, aBackingList, aIndex, aValue)) {
27945 return false;
27946 }
27947
27948 return aResult.succeed();
27949}
27950
27951const ObservableArrayProxyHandler*
27952ObservableArrayProxyHandler::getInstance()
27953{
27954 static const ObservableArrayProxyHandler instance;
27955 return &instance;
27956}
27957} // namespace BooleanObservableArray_Binding
27958
27959namespace BooleanObservableArrayHelpers {
27960bool
27961ElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, ErrorResult& aRv)
27962{
27963 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 27963); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 27963; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
27964 AutoJSAPI jsapi;
27965 jsapi.Init();
27966 JSContext* cx = jsapi.cx();
27967 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
27968 // all we want is to wrap into _some_ scope and then unwrap to find
27969 // the reflector, and wrapping has no side-effects.
27970 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
27971 if (!scope) {
27972 aRv.Throw(NS_ERROR_UNEXPECTED);
27973 return bool(0);
27974 }
27975 JSAutoRealm tempRealm(cx, scope);
27976 JS::Rooted<JS::Value> v(cx);
27977 if(!ToJSValue(cx, self, &v)) {
27978 aRv.Throw(NS_ERROR_UNEXPECTED);
27979 return bool(0);
27980 }
27981 // This is a reflector, but due to trying to name things
27982 // similarly across method generators, it's called obj here.
27983 JS::Rooted<JSObject*> obj(cx);
27984 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
27985 JSAutoRealm reflectorRealm(cx, obj);
27986
27987 JS::Rooted<JSObject*> backingObj(cx);
27988 bool created = false;
27989 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
27990 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
27991 self)) {
27992 aRv.Throw(NS_ERROR_UNEXPECTED);
27993 return bool(0);
27994 }
27995 if (created) {
27996 PreserveWrapper(self);
27997 }
27998 JS::Rooted<JS::Value> result(cx);
27999 aRv.MightThrowJSException();
28000 if (!JS_GetElement(cx, backingObj, aIndex, &result)) {
28001 aRv.StealExceptionFromJSContext(cx);
28002 return bool(0);
28003 }
28004 if (result.isUndefined()) {
28005 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
28006 return bool(0);
28007 }
28008 bool rvalDecl;
28009 if (!ValueToPrimitive<bool, eDefault>(cx, result, "Return value of ElementAt", &rvalDecl)) {
28010 aRv.NoteJSContextException(cx);
28011 return bool(0);
28012 }
28013 return rvalDecl;
28014}
28015
28016void
28017ReplaceElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, bool aValue, ErrorResult& aRv)
28018{
28019 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28019); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28019; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28020 AutoJSAPI jsapi;
28021 jsapi.Init();
28022 JSContext* cx = jsapi.cx();
28023 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28024 // all we want is to wrap into _some_ scope and then unwrap to find
28025 // the reflector, and wrapping has no side-effects.
28026 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28027 if (!scope) {
28028 aRv.Throw(NS_ERROR_UNEXPECTED);
28029 return;
28030 }
28031 JSAutoRealm tempRealm(cx, scope);
28032 JS::Rooted<JS::Value> v(cx);
28033 if(!ToJSValue(cx, self, &v)) {
28034 aRv.Throw(NS_ERROR_UNEXPECTED);
28035 return;
28036 }
28037 // This is a reflector, but due to trying to name things
28038 // similarly across method generators, it's called obj here.
28039 JS::Rooted<JSObject*> obj(cx);
28040 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28041 JSAutoRealm reflectorRealm(cx, obj);
28042 JS::RootedVector<JS::Value> argv(cx);
28043 if (!argv.resize(1)) {
28044 aRv.Throw(NS_ERROR_UNEXPECTED);
28045 return;
28046 }
28047 do {
28048 argv[0].setBoolean(aValue);
28049 break;
28050 } while (false);
28051
28052 JS::Rooted<JSObject*> backingObj(cx);
28053 bool created = false;
28054 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
28055 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28056 self)) {
28057 aRv.Throw(NS_ERROR_UNEXPECTED);
28058 return;
28059 }
28060 if (created) {
28061 PreserveWrapper(self);
28062 }
28063 uint32_t length;
28064 aRv.MightThrowJSException();
28065 if (!JS::GetArrayLength(cx, backingObj, &length)) {
28066 aRv.StealExceptionFromJSContext(cx);
28067 return;
28068 }
28069 if (aIndex > length) {
28070 aRv.ThrowRangeError("Invalid index");
28071 return;
28072 }
28073 aRv.MightThrowJSException();
28074 if (!JS_SetElement(cx, backingObj, aIndex, argv[0])) {
28075 aRv.StealExceptionFromJSContext(cx);
28076 return;
28077 }
28078}
28079
28080void
28081AppendElement(mozilla::dom::TestExampleInterface* self, bool aValue, ErrorResult& aRv)
28082{
28083 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28083); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28083; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28084 AutoJSAPI jsapi;
28085 jsapi.Init();
28086 JSContext* cx = jsapi.cx();
28087 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28088 // all we want is to wrap into _some_ scope and then unwrap to find
28089 // the reflector, and wrapping has no side-effects.
28090 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28091 if (!scope) {
28092 aRv.Throw(NS_ERROR_UNEXPECTED);
28093 return;
28094 }
28095 JSAutoRealm tempRealm(cx, scope);
28096 JS::Rooted<JS::Value> v(cx);
28097 if(!ToJSValue(cx, self, &v)) {
28098 aRv.Throw(NS_ERROR_UNEXPECTED);
28099 return;
28100 }
28101 // This is a reflector, but due to trying to name things
28102 // similarly across method generators, it's called obj here.
28103 JS::Rooted<JSObject*> obj(cx);
28104 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28105 JSAutoRealm reflectorRealm(cx, obj);
28106 JS::RootedVector<JS::Value> argv(cx);
28107 if (!argv.resize(1)) {
28108 aRv.Throw(NS_ERROR_UNEXPECTED);
28109 return;
28110 }
28111 do {
28112 argv[0].setBoolean(aValue);
28113 break;
28114 } while (false);
28115
28116 JS::Rooted<JSObject*> backingObj(cx);
28117 bool created = false;
28118 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
28119 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28120 self)) {
28121 aRv.Throw(NS_ERROR_UNEXPECTED);
28122 return;
28123 }
28124 if (created) {
28125 PreserveWrapper(self);
28126 }
28127 uint32_t length;
28128 aRv.MightThrowJSException();
28129 if (!JS::GetArrayLength(cx, backingObj, &length)) {
28130 aRv.StealExceptionFromJSContext(cx);
28131 return;
28132 }
28133 aRv.MightThrowJSException();
28134 if (!JS_SetElement(cx, backingObj, length, argv[0])) {
28135 aRv.StealExceptionFromJSContext(cx);
28136 return;
28137 }
28138}
28139
28140void
28141RemoveLastElement(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
28142{
28143 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28143); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28143; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28144 AutoJSAPI jsapi;
28145 jsapi.Init();
28146 JSContext* cx = jsapi.cx();
28147 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28148 // all we want is to wrap into _some_ scope and then unwrap to find
28149 // the reflector, and wrapping has no side-effects.
28150 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28151 if (!scope) {
28152 aRv.Throw(NS_ERROR_UNEXPECTED);
28153 return;
28154 }
28155 JSAutoRealm tempRealm(cx, scope);
28156 JS::Rooted<JS::Value> v(cx);
28157 if(!ToJSValue(cx, self, &v)) {
28158 aRv.Throw(NS_ERROR_UNEXPECTED);
28159 return;
28160 }
28161 // This is a reflector, but due to trying to name things
28162 // similarly across method generators, it's called obj here.
28163 JS::Rooted<JSObject*> obj(cx);
28164 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28165 JSAutoRealm reflectorRealm(cx, obj);
28166
28167 JS::Rooted<JSObject*> backingObj(cx);
28168 bool created = false;
28169 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
28170 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28171 self)) {
28172 aRv.Throw(NS_ERROR_UNEXPECTED);
28173 return;
28174 }
28175 if (created) {
28176 PreserveWrapper(self);
28177 }
28178 uint32_t length;
28179 aRv.MightThrowJSException();
28180 if (!JS::GetArrayLength(cx, backingObj, &length)) {
28181 aRv.StealExceptionFromJSContext(cx);
28182 return;
28183 }
28184 if (length == 0) {
28185 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
28186 return;
28187 }
28188 aRv.MightThrowJSException();
28189 if (!JS::SetArrayLength(cx, backingObj, length - 1)) {
28190 aRv.StealExceptionFromJSContext(cx);
28191 return;
28192 }
28193}
28194
28195uint32_t
28196Length(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
28197{
28198 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28198); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28198; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28199 AutoJSAPI jsapi;
28200 jsapi.Init();
28201 JSContext* cx = jsapi.cx();
28202 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28203 // all we want is to wrap into _some_ scope and then unwrap to find
28204 // the reflector, and wrapping has no side-effects.
28205 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28206 if (!scope) {
28207 aRv.Throw(NS_ERROR_UNEXPECTED);
28208 return uint32_t(0);
28209 }
28210 JSAutoRealm tempRealm(cx, scope);
28211 JS::Rooted<JS::Value> v(cx);
28212 if(!ToJSValue(cx, self, &v)) {
28213 aRv.Throw(NS_ERROR_UNEXPECTED);
28214 return uint32_t(0);
28215 }
28216 // This is a reflector, but due to trying to name things
28217 // similarly across method generators, it's called obj here.
28218 JS::Rooted<JSObject*> obj(cx);
28219 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28220 JSAutoRealm reflectorRealm(cx, obj);
28221
28222 JS::Rooted<JSObject*> backingObj(cx);
28223 bool created = false;
28224 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
28225 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28226 self)) {
28227 aRv.Throw(NS_ERROR_UNEXPECTED);
28228 return uint32_t(0);
28229 }
28230 if (created) {
28231 PreserveWrapper(self);
28232 }
28233 uint32_t retVal;
28234 aRv.MightThrowJSException();
28235 if (!JS::GetArrayLength(cx, backingObj, &retVal)) {
28236 aRv.StealExceptionFromJSContext(cx);
28237 return uint32_t(0);
28238 }
28239 return retVal;
28240}
28241} // namespace BooleanObservableArrayHelpers
28242
28243MOZ_CAN_RUN_SCRIPT static bool
28244get_booleanObservableArray(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
28245{
28246 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject28249( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28247 "TestExampleInterface", "booleanObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject28249( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28248 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject28249( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28249 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject28249( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
28250
28251 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
28252 JS::Rooted<JSObject*> backingObj(cx);
28253 bool created = false;
28254 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
28255 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28256 self)) {
28257 return false;
28258 }
28259 if (created) {
28260 PreserveWrapper(self);
28261 }
28262 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 28262); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 28262; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
28263 args.rval().setObject(*backingObj);
28264 return true;
28265}
28266
28267MOZ_CAN_RUN_SCRIPT static bool
28268set_booleanObservableArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
28269{
28270 BindingCallContext cx(cx_, "TestExampleInterface.booleanObservableArray setter");
28271 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject28274( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28272 "TestExampleInterface", "booleanObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject28274( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28273 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject28274( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28274 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject28274( cx, "TestExampleInterface"
, "booleanObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
28275
28276 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
28277 binding_detail::AutoSequence<bool> arg0;
28278 if (args[0].isObject()) {
28279 JS::ForOfIterator iter(cx);
28280 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
28281 return false;
28282 }
28283 if (!iter.valueIsIterable()) {
28284 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
28285 return false;
28286 }
28287 binding_detail::AutoSequence<bool> &arr = arg0;
28288 JS::Rooted<JS::Value> temp(cx);
28289 while (true) {
28290 bool done;
28291 if (!iter.next(&temp, &done)) {
28292 return false;
28293 }
28294 if (done) {
28295 break;
28296 }
28297 bool* slotPtr = arr.AppendElement(mozilla::fallible);
28298 if (!slotPtr) {
28299 JS_ReportOutOfMemory(cx);
28300 return false;
28301 }
28302 bool& slot = *slotPtr;
28303 if (!ValueToPrimitive<bool, eDefault>(cx, temp, "Element of value being assigned", &slot)) {
28304 return false;
28305 }
28306 }
28307 } else {
28308 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
28309 return false;
28310 }
28311 if (xpc::WrapperFactory::IsXrayWrapper(obj)) {
28312 JS_ReportErrorASCII(cx, "Accessing from Xray wrapper is not supported.");
28313 return false;
28314 }
28315
28316 JS::Rooted<JSObject*> backingObj(cx);
28317 bool created = false;
28318 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9),
28319 &backingObj, &created, BooleanObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28320 self)) {
28321 return false;
28322 }
28323 if (created) {
28324 PreserveWrapper(self);
28325 }
28326
28327 const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj);
28328 if (!handler->SetLength(cx, backingObj, 0)) {
28329 return false;
28330 }
28331
28332 JS::Rooted<JS::Value> val(cx);
28333 for (size_t i = 0; i < arg0.Length(); i++) {
28334 val.setBoolean(arg0.ElementAt(i));
28335 if (!JS_SetElement(cx, backingObj, i, val)) {
28336 return false;
28337 }
28338 }
28339
28340 return true;
28341}
28342
28343static const JSJitInfo booleanObservableArray_getterinfo = {
28344 { get_booleanObservableArray },
28345 { prototypes::id::TestExampleInterface },
28346 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
28347 JSJitInfo::Getter,
28348 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
28349 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
28350 false, /* isInfallible. False in setters. */
28351 false, /* isMovable. Not relevant for setters. */
28352 false, /* isEliminatable. Not relevant for setters. */
28353 false, /* isAlwaysInSlot. Only relevant for getters. */
28354 true, /* isLazilyCachedInSlot. Only relevant for getters. */
28355 false, /* isTypedMethod. Only relevant for methods. */
28356 (DOM_INSTANCE_RESERVED_SLOTS1 + 9) /* Reserved slot index, if we're stored in a slot, else 0. */
28357};
28358static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 9) <= JSJitInfo::maxSlotIndex, "We won't fit");
28359static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 9) < 22, "There is no slot for us");
28360static const JSJitInfo booleanObservableArray_setterinfo = {
28361 { (JSJitGetterOp)set_booleanObservableArray },
28362 { prototypes::id::TestExampleInterface },
28363 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
28364 JSJitInfo::Setter,
28365 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
28366 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
28367 false, /* isInfallible. False in setters. */
28368 false, /* isMovable. Not relevant for setters. */
28369 false, /* isEliminatable. Not relevant for setters. */
28370 false, /* isAlwaysInSlot. Only relevant for getters. */
28371 false, /* isLazilyCachedInSlot. Only relevant for getters. */
28372 false, /* isTypedMethod. Only relevant for methods. */
28373 0 /* Reserved slot index, if we're stored in a slot, else 0. */
28374};
28375
28376namespace ObjectObservableArray_Binding {
28377class ObservableArrayProxyHandler : public mozilla::dom::ObservableArrayProxyHandler
28378{
28379protected:
28380 bool
28381 OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const override;
28382
28383 bool
28384 SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const override;
28385
28386public:
28387 static const ObservableArrayProxyHandler*
28388 getInstance();
28389};
28390
28391bool
28392ObservableArrayProxyHandler::OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const
28393{
28394 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 28394); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 28394; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28395
28396 BindingCallContext cx(aCx, "ObservableArray OnDeleteItem");
28397 JS::Rooted<JSObject*> decl(cx);
28398 if (aValue.isObject()) {
28399 decl = &aValue.toObject();
28400 } else {
28401 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element in ObservableArray backing list");
28402 MOZ_ASSERT_UNREACHABLE("The item in ObservableArray backing list is not Object?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(false)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("false" " (" "MOZ_ASSERT_UNREACHABLE: "
"The item in ObservableArray backing list is not Object?" ")"
, "../TestExampleGenBinding.cpp", 28402); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "false" ") (" "MOZ_ASSERT_UNREACHABLE: " "The item in ObservableArray backing list is not Object?"
")"); do { *((volatile int*)__null) = 28402; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28403 return false;
28404 }
28405
28406 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
28407 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
28408 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 28408); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 28408; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28409
28410 ErrorResult rv;
28411 MOZ_KnownLive(interface)(interface)->OnDeleteObjectObservableArray(cx, decl, aIndex, rv);
28412 return !rv.MaybeSetPendingException(cx);
28413}
28414
28415bool
28416ObservableArrayProxyHandler::SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const
28417{
28418 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 28418); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 28418; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28419 uint32_t oldLen;
28420 if (!JS::GetArrayLength(aCx, aBackingList, &oldLen)) {
28421 return false;
28422 }
28423
28424 if (aIndex > oldLen) {
28425 return aResult.failBadIndex();
28426 }
28427
28428 BindingCallContext cx(aCx, "ObservableArray SetIndexedValue");
28429 JS::Rooted<JSObject*> decl(cx);
28430 if (aValue.isObject()) {
28431 decl = &aValue.toObject();
28432 } else {
28433 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element in ObservableArray backing list");
28434 return false;
28435 }
28436
28437 if (aIndex < oldLen) {
28438 JS::Rooted<JS::Value> value(aCx);
28439 if (!JS_GetElement(aCx, aBackingList, aIndex, &value)) {
28440 return false;
28441 }
28442
28443 if (!OnDeleteItem(aCx, aProxy, value, aIndex)) {
28444 return false;
28445 }
28446 }
28447
28448 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
28449 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
28450 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 28450); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 28450; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28451
28452 ErrorResult rv;
28453 MOZ_KnownLive(interface)(interface)->OnSetObjectObservableArray(cx, decl, aIndex, rv);
28454 if (rv.MaybeSetPendingException(cx)) {
28455 return false;
28456 }
28457
28458 if (!JS_SetElement(aCx, aBackingList, aIndex, aValue)) {
28459 return false;
28460 }
28461
28462 return aResult.succeed();
28463}
28464
28465const ObservableArrayProxyHandler*
28466ObservableArrayProxyHandler::getInstance()
28467{
28468 static const ObservableArrayProxyHandler instance;
28469 return &instance;
28470}
28471} // namespace ObjectObservableArray_Binding
28472
28473namespace ObjectObservableArrayHelpers {
28474void
28475ElementAt(mozilla::dom::TestExampleInterface* self, JSContext* cx, uint32_t aIndex, JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv)
28476{
28477 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28477); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28477; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28478 JS::Rooted<JS::Value> v(cx);
28479 if(!ToJSValue(cx, self, &v)) {
28480 aRv.Throw(NS_ERROR_UNEXPECTED);
28481 return;
28482 }
28483 // This is a reflector, but due to trying to name things
28484 // similarly across method generators, it's called obj here.
28485 JS::Rooted<JSObject*> obj(cx);
28486 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28487 JS::Rooted<JS::Value> result(cx);
28488 {
28489 JSAutoRealm reflectorRealm(cx, obj);
28490
28491 JS::Rooted<JSObject*> backingObj(cx);
28492 bool created = false;
28493 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28494 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28495 self)) {
28496 aRv.Throw(NS_ERROR_UNEXPECTED);
28497 return;
28498 }
28499 if (created) {
28500 PreserveWrapper(self);
28501 }
28502 aRv.MightThrowJSException();
28503 if (!JS_GetElement(cx, backingObj, aIndex, &result)) {
28504 aRv.StealExceptionFromJSContext(cx);
28505 return;
28506 }
28507 if (result.isUndefined()) {
28508 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
28509 return;
28510 }
28511 }
28512 if (!JS_WrapValue(cx, &result)) {
28513 aRv.NoteJSContextException(cx);
28514 return;
28515 }
28516 JS::Rooted<JSObject*> rvalDecl(cx);
28517 rvalDecl = &result.toObject();
28518 aRetVal.set(rvalDecl);
28519}
28520
28521void
28522ReplaceElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, JS::Handle<JSObject*> aValue, ErrorResult& aRv)
28523{
28524 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28524); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28524; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28525 AutoJSAPI jsapi;
28526 jsapi.Init();
28527 JSContext* cx = jsapi.cx();
28528 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28529 // all we want is to wrap into _some_ scope and then unwrap to find
28530 // the reflector, and wrapping has no side-effects.
28531 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28532 if (!scope) {
28533 aRv.Throw(NS_ERROR_UNEXPECTED);
28534 return;
28535 }
28536 JSAutoRealm tempRealm(cx, scope);
28537 JS::Rooted<JS::Value> v(cx);
28538 if(!ToJSValue(cx, self, &v)) {
28539 aRv.Throw(NS_ERROR_UNEXPECTED);
28540 return;
28541 }
28542 // This is a reflector, but due to trying to name things
28543 // similarly across method generators, it's called obj here.
28544 JS::Rooted<JSObject*> obj(cx);
28545 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28546 JSAutoRealm reflectorRealm(cx, obj);
28547 JS::RootedVector<JS::Value> argv(cx);
28548 if (!argv.resize(1)) {
28549 aRv.Throw(NS_ERROR_UNEXPECTED);
28550 return;
28551 }
28552 do {
28553 JS::ExposeObjectToActiveJS(aValue);
28554 argv[0].setObject(*aValue);
28555 if (!MaybeWrapObjectValue(cx, argv[0])) {
28556 aRv.Throw(NS_ERROR_UNEXPECTED);
28557 return;
28558 }
28559 break;
28560 } while (false);
28561
28562 JS::Rooted<JSObject*> backingObj(cx);
28563 bool created = false;
28564 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28565 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28566 self)) {
28567 aRv.Throw(NS_ERROR_UNEXPECTED);
28568 return;
28569 }
28570 if (created) {
28571 PreserveWrapper(self);
28572 }
28573 uint32_t length;
28574 aRv.MightThrowJSException();
28575 if (!JS::GetArrayLength(cx, backingObj, &length)) {
28576 aRv.StealExceptionFromJSContext(cx);
28577 return;
28578 }
28579 if (aIndex > length) {
28580 aRv.ThrowRangeError("Invalid index");
28581 return;
28582 }
28583 aRv.MightThrowJSException();
28584 if (!JS_SetElement(cx, backingObj, aIndex, argv[0])) {
28585 aRv.StealExceptionFromJSContext(cx);
28586 return;
28587 }
28588}
28589
28590void
28591AppendElement(mozilla::dom::TestExampleInterface* self, JS::Handle<JSObject*> aValue, ErrorResult& aRv)
28592{
28593 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28593); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28593; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28594 AutoJSAPI jsapi;
28595 jsapi.Init();
28596 JSContext* cx = jsapi.cx();
28597 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28598 // all we want is to wrap into _some_ scope and then unwrap to find
28599 // the reflector, and wrapping has no side-effects.
28600 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28601 if (!scope) {
28602 aRv.Throw(NS_ERROR_UNEXPECTED);
28603 return;
28604 }
28605 JSAutoRealm tempRealm(cx, scope);
28606 JS::Rooted<JS::Value> v(cx);
28607 if(!ToJSValue(cx, self, &v)) {
28608 aRv.Throw(NS_ERROR_UNEXPECTED);
28609 return;
28610 }
28611 // This is a reflector, but due to trying to name things
28612 // similarly across method generators, it's called obj here.
28613 JS::Rooted<JSObject*> obj(cx);
28614 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28615 JSAutoRealm reflectorRealm(cx, obj);
28616 JS::RootedVector<JS::Value> argv(cx);
28617 if (!argv.resize(1)) {
28618 aRv.Throw(NS_ERROR_UNEXPECTED);
28619 return;
28620 }
28621 do {
28622 JS::ExposeObjectToActiveJS(aValue);
28623 argv[0].setObject(*aValue);
28624 if (!MaybeWrapObjectValue(cx, argv[0])) {
28625 aRv.Throw(NS_ERROR_UNEXPECTED);
28626 return;
28627 }
28628 break;
28629 } while (false);
28630
28631 JS::Rooted<JSObject*> backingObj(cx);
28632 bool created = false;
28633 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28634 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28635 self)) {
28636 aRv.Throw(NS_ERROR_UNEXPECTED);
28637 return;
28638 }
28639 if (created) {
28640 PreserveWrapper(self);
28641 }
28642 uint32_t length;
28643 aRv.MightThrowJSException();
28644 if (!JS::GetArrayLength(cx, backingObj, &length)) {
28645 aRv.StealExceptionFromJSContext(cx);
28646 return;
28647 }
28648 aRv.MightThrowJSException();
28649 if (!JS_SetElement(cx, backingObj, length, argv[0])) {
28650 aRv.StealExceptionFromJSContext(cx);
28651 return;
28652 }
28653}
28654
28655void
28656RemoveLastElement(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
28657{
28658 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28658); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28658; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28659 AutoJSAPI jsapi;
28660 jsapi.Init();
28661 JSContext* cx = jsapi.cx();
28662 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28663 // all we want is to wrap into _some_ scope and then unwrap to find
28664 // the reflector, and wrapping has no side-effects.
28665 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28666 if (!scope) {
28667 aRv.Throw(NS_ERROR_UNEXPECTED);
28668 return;
28669 }
28670 JSAutoRealm tempRealm(cx, scope);
28671 JS::Rooted<JS::Value> v(cx);
28672 if(!ToJSValue(cx, self, &v)) {
28673 aRv.Throw(NS_ERROR_UNEXPECTED);
28674 return;
28675 }
28676 // This is a reflector, but due to trying to name things
28677 // similarly across method generators, it's called obj here.
28678 JS::Rooted<JSObject*> obj(cx);
28679 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28680 JSAutoRealm reflectorRealm(cx, obj);
28681
28682 JS::Rooted<JSObject*> backingObj(cx);
28683 bool created = false;
28684 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28685 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28686 self)) {
28687 aRv.Throw(NS_ERROR_UNEXPECTED);
28688 return;
28689 }
28690 if (created) {
28691 PreserveWrapper(self);
28692 }
28693 uint32_t length;
28694 aRv.MightThrowJSException();
28695 if (!JS::GetArrayLength(cx, backingObj, &length)) {
28696 aRv.StealExceptionFromJSContext(cx);
28697 return;
28698 }
28699 if (length == 0) {
28700 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
28701 return;
28702 }
28703 aRv.MightThrowJSException();
28704 if (!JS::SetArrayLength(cx, backingObj, length - 1)) {
28705 aRv.StealExceptionFromJSContext(cx);
28706 return;
28707 }
28708}
28709
28710uint32_t
28711Length(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
28712{
28713 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28713); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28713; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28714 AutoJSAPI jsapi;
28715 jsapi.Init();
28716 JSContext* cx = jsapi.cx();
28717 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
28718 // all we want is to wrap into _some_ scope and then unwrap to find
28719 // the reflector, and wrapping has no side-effects.
28720 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
28721 if (!scope) {
28722 aRv.Throw(NS_ERROR_UNEXPECTED);
28723 return uint32_t(0);
28724 }
28725 JSAutoRealm tempRealm(cx, scope);
28726 JS::Rooted<JS::Value> v(cx);
28727 if(!ToJSValue(cx, self, &v)) {
28728 aRv.Throw(NS_ERROR_UNEXPECTED);
28729 return uint32_t(0);
28730 }
28731 // This is a reflector, but due to trying to name things
28732 // similarly across method generators, it's called obj here.
28733 JS::Rooted<JSObject*> obj(cx);
28734 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28735 JSAutoRealm reflectorRealm(cx, obj);
28736
28737 JS::Rooted<JSObject*> backingObj(cx);
28738 bool created = false;
28739 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28740 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28741 self)) {
28742 aRv.Throw(NS_ERROR_UNEXPECTED);
28743 return uint32_t(0);
28744 }
28745 if (created) {
28746 PreserveWrapper(self);
28747 }
28748 uint32_t retVal;
28749 aRv.MightThrowJSException();
28750 if (!JS::GetArrayLength(cx, backingObj, &retVal)) {
28751 aRv.StealExceptionFromJSContext(cx);
28752 return uint32_t(0);
28753 }
28754 return retVal;
28755}
28756} // namespace ObjectObservableArrayHelpers
28757
28758MOZ_CAN_RUN_SCRIPT static bool
28759get_objectObservableArray(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
28760{
28761 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject28764( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28762 "TestExampleInterface", "objectObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject28764( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28763 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject28764( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28764 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject28764( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
28765
28766 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
28767 JS::Rooted<JSObject*> backingObj(cx);
28768 bool created = false;
28769 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28770 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28771 self)) {
28772 return false;
28773 }
28774 if (created) {
28775 PreserveWrapper(self);
28776 }
28777 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 28777); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 28777; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
28778 args.rval().setObject(*backingObj);
28779 return true;
28780}
28781
28782MOZ_CAN_RUN_SCRIPT static bool
28783set_objectObservableArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
28784{
28785 BindingCallContext cx(cx_, "TestExampleInterface.objectObservableArray setter");
28786 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject28789( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28787 "TestExampleInterface", "objectObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject28789( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28788 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject28789( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
28789 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject28789( cx, "TestExampleInterface"
, "objectObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
28790
28791 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
28792 binding_detail::AutoSequence<JSObject*> arg0;
28793 SequenceRooter<JSObject*> arg0_holder(cx, &arg0);
28794 if (args[0].isObject()) {
28795 JS::ForOfIterator iter(cx);
28796 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
28797 return false;
28798 }
28799 if (!iter.valueIsIterable()) {
28800 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
28801 return false;
28802 }
28803 binding_detail::AutoSequence<JSObject*> &arr = arg0;
28804 JS::Rooted<JS::Value> temp(cx);
28805 while (true) {
28806 bool done;
28807 if (!iter.next(&temp, &done)) {
28808 return false;
28809 }
28810 if (done) {
28811 break;
28812 }
28813 JSObject** slotPtr = arr.AppendElement(nullptr, mozilla::fallible);
28814 if (!slotPtr) {
28815 JS_ReportOutOfMemory(cx);
28816 return false;
28817 }
28818 JSObject*& slot = *slotPtr;
28819 if (temp.isObject()) {
28820 slot = &temp.toObject();
28821 } else {
28822 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of value being assigned");
28823 return false;
28824 }
28825 }
28826 } else {
28827 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
28828 return false;
28829 }
28830 if (xpc::WrapperFactory::IsXrayWrapper(obj)) {
28831 JS_ReportErrorASCII(cx, "Accessing from Xray wrapper is not supported.");
28832 return false;
28833 }
28834
28835 JS::Rooted<JSObject*> backingObj(cx);
28836 bool created = false;
28837 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10),
28838 &backingObj, &created, ObjectObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
28839 self)) {
28840 return false;
28841 }
28842 if (created) {
28843 PreserveWrapper(self);
28844 }
28845
28846 const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj);
28847 if (!handler->SetLength(cx, backingObj, 0)) {
28848 return false;
28849 }
28850
28851 JS::Rooted<JS::Value> val(cx);
28852 for (size_t i = 0; i < arg0.Length(); i++) {
28853 JS::ExposeObjectToActiveJS(arg0.ElementAt(i));
28854 val.setObject(*arg0.ElementAt(i));
28855 if (!MaybeWrapObjectValue(cx, &val)) {
28856 return false;
28857 }
28858 if (!JS_SetElement(cx, backingObj, i, val)) {
28859 return false;
28860 }
28861 }
28862
28863 return true;
28864}
28865
28866static const JSJitInfo objectObservableArray_getterinfo = {
28867 { get_objectObservableArray },
28868 { prototypes::id::TestExampleInterface },
28869 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
28870 JSJitInfo::Getter,
28871 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
28872 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
28873 false, /* isInfallible. False in setters. */
28874 false, /* isMovable. Not relevant for setters. */
28875 false, /* isEliminatable. Not relevant for setters. */
28876 false, /* isAlwaysInSlot. Only relevant for getters. */
28877 true, /* isLazilyCachedInSlot. Only relevant for getters. */
28878 false, /* isTypedMethod. Only relevant for methods. */
28879 (DOM_INSTANCE_RESERVED_SLOTS1 + 10) /* Reserved slot index, if we're stored in a slot, else 0. */
28880};
28881static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 10) <= JSJitInfo::maxSlotIndex, "We won't fit");
28882static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 10) < 22, "There is no slot for us");
28883static const JSJitInfo objectObservableArray_setterinfo = {
28884 { (JSJitGetterOp)set_objectObservableArray },
28885 { prototypes::id::TestExampleInterface },
28886 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
28887 JSJitInfo::Setter,
28888 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
28889 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
28890 false, /* isInfallible. False in setters. */
28891 false, /* isMovable. Not relevant for setters. */
28892 false, /* isEliminatable. Not relevant for setters. */
28893 false, /* isAlwaysInSlot. Only relevant for getters. */
28894 false, /* isLazilyCachedInSlot. Only relevant for getters. */
28895 false, /* isTypedMethod. Only relevant for methods. */
28896 0 /* Reserved slot index, if we're stored in a slot, else 0. */
28897};
28898
28899namespace AnyObservableArray_Binding {
28900class ObservableArrayProxyHandler : public mozilla::dom::ObservableArrayProxyHandler
28901{
28902protected:
28903 bool
28904 OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const override;
28905
28906 bool
28907 SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const override;
28908
28909public:
28910 static const ObservableArrayProxyHandler*
28911 getInstance();
28912};
28913
28914bool
28915ObservableArrayProxyHandler::OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const
28916{
28917 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 28917); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 28917; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28918
28919 BindingCallContext cx(aCx, "ObservableArray OnDeleteItem");
28920 JS::Rooted<JS::Value> decl(cx);
28921 decl = aValue;
28922
28923 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
28924 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
28925 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 28925); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 28925; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28926
28927 ErrorResult rv;
28928 MOZ_KnownLive(interface)(interface)->OnDeleteAnyObservableArray(cx, decl, aIndex, rv);
28929 return !rv.MaybeSetPendingException(cx);
28930}
28931
28932bool
28933ObservableArrayProxyHandler::SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const
28934{
28935 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 28935); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 28935; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28936 uint32_t oldLen;
28937 if (!JS::GetArrayLength(aCx, aBackingList, &oldLen)) {
28938 return false;
28939 }
28940
28941 if (aIndex > oldLen) {
28942 return aResult.failBadIndex();
28943 }
28944
28945 BindingCallContext cx(aCx, "ObservableArray SetIndexedValue");
28946 JS::Rooted<JS::Value> decl(cx);
28947 decl = aValue;
28948
28949 if (aIndex < oldLen) {
28950 JS::Rooted<JS::Value> value(aCx);
28951 if (!JS_GetElement(aCx, aBackingList, aIndex, &value)) {
28952 return false;
28953 }
28954
28955 if (!OnDeleteItem(aCx, aProxy, value, aIndex)) {
28956 return false;
28957 }
28958 }
28959
28960 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
28961 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
28962 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 28962); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 28962; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
28963
28964 ErrorResult rv;
28965 MOZ_KnownLive(interface)(interface)->OnSetAnyObservableArray(cx, decl, aIndex, rv);
28966 if (rv.MaybeSetPendingException(cx)) {
28967 return false;
28968 }
28969
28970 if (!JS_SetElement(aCx, aBackingList, aIndex, aValue)) {
28971 return false;
28972 }
28973
28974 return aResult.succeed();
28975}
28976
28977const ObservableArrayProxyHandler*
28978ObservableArrayProxyHandler::getInstance()
28979{
28980 static const ObservableArrayProxyHandler instance;
28981 return &instance;
28982}
28983} // namespace AnyObservableArray_Binding
28984
28985namespace AnyObservableArrayHelpers {
28986void
28987ElementAt(mozilla::dom::TestExampleInterface* self, JSContext* cx, uint32_t aIndex, JS::MutableHandle<JS::Value> aRetVal, ErrorResult& aRv)
28988{
28989 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 28989); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 28989; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
28990 JS::Rooted<JS::Value> v(cx);
28991 if(!ToJSValue(cx, self, &v)) {
28992 aRv.Throw(NS_ERROR_UNEXPECTED);
28993 return;
28994 }
28995 // This is a reflector, but due to trying to name things
28996 // similarly across method generators, it's called obj here.
28997 JS::Rooted<JSObject*> obj(cx);
28998 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
28999 JS::Rooted<JS::Value> result(cx);
29000 {
29001 JSAutoRealm reflectorRealm(cx, obj);
29002
29003 JS::Rooted<JSObject*> backingObj(cx);
29004 bool created = false;
29005 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29006 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29007 self)) {
29008 aRv.Throw(NS_ERROR_UNEXPECTED);
29009 return;
29010 }
29011 if (created) {
29012 PreserveWrapper(self);
29013 }
29014 aRv.MightThrowJSException();
29015 if (!JS_GetElement(cx, backingObj, aIndex, &result)) {
29016 aRv.StealExceptionFromJSContext(cx);
29017 return;
29018 }
29019 if (result.isUndefined()) {
29020 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
29021 return;
29022 }
29023 }
29024 if (!JS_WrapValue(cx, &result)) {
29025 aRv.NoteJSContextException(cx);
29026 return;
29027 }
29028 JS::Rooted<JS::Value> rvalDecl(cx);
29029 rvalDecl = result;
29030 aRetVal.set(rvalDecl);
29031}
29032
29033void
29034ReplaceElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, JS::Handle<JS::Value> aValue, ErrorResult& aRv)
29035{
29036 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29036); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29036; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29037 AutoJSAPI jsapi;
29038 jsapi.Init();
29039 JSContext* cx = jsapi.cx();
29040 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29041 // all we want is to wrap into _some_ scope and then unwrap to find
29042 // the reflector, and wrapping has no side-effects.
29043 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29044 if (!scope) {
29045 aRv.Throw(NS_ERROR_UNEXPECTED);
29046 return;
29047 }
29048 JSAutoRealm tempRealm(cx, scope);
29049 JS::Rooted<JS::Value> v(cx);
29050 if(!ToJSValue(cx, self, &v)) {
29051 aRv.Throw(NS_ERROR_UNEXPECTED);
29052 return;
29053 }
29054 // This is a reflector, but due to trying to name things
29055 // similarly across method generators, it's called obj here.
29056 JS::Rooted<JSObject*> obj(cx);
29057 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29058 JSAutoRealm reflectorRealm(cx, obj);
29059 JS::RootedVector<JS::Value> argv(cx);
29060 if (!argv.resize(1)) {
29061 aRv.Throw(NS_ERROR_UNEXPECTED);
29062 return;
29063 }
29064 do {
29065 JS::ExposeValueToActiveJS(aValue);
29066 argv[0].set(aValue);
29067 if (!MaybeWrapValue(cx, argv[0])) {
29068 aRv.Throw(NS_ERROR_UNEXPECTED);
29069 return;
29070 }
29071 break;
29072 } while (false);
29073
29074 JS::Rooted<JSObject*> backingObj(cx);
29075 bool created = false;
29076 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29077 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29078 self)) {
29079 aRv.Throw(NS_ERROR_UNEXPECTED);
29080 return;
29081 }
29082 if (created) {
29083 PreserveWrapper(self);
29084 }
29085 uint32_t length;
29086 aRv.MightThrowJSException();
29087 if (!JS::GetArrayLength(cx, backingObj, &length)) {
29088 aRv.StealExceptionFromJSContext(cx);
29089 return;
29090 }
29091 if (aIndex > length) {
29092 aRv.ThrowRangeError("Invalid index");
29093 return;
29094 }
29095 aRv.MightThrowJSException();
29096 if (!JS_SetElement(cx, backingObj, aIndex, argv[0])) {
29097 aRv.StealExceptionFromJSContext(cx);
29098 return;
29099 }
29100}
29101
29102void
29103AppendElement(mozilla::dom::TestExampleInterface* self, JS::Handle<JS::Value> aValue, ErrorResult& aRv)
29104{
29105 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29105); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29105; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29106 AutoJSAPI jsapi;
29107 jsapi.Init();
29108 JSContext* cx = jsapi.cx();
29109 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29110 // all we want is to wrap into _some_ scope and then unwrap to find
29111 // the reflector, and wrapping has no side-effects.
29112 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29113 if (!scope) {
29114 aRv.Throw(NS_ERROR_UNEXPECTED);
29115 return;
29116 }
29117 JSAutoRealm tempRealm(cx, scope);
29118 JS::Rooted<JS::Value> v(cx);
29119 if(!ToJSValue(cx, self, &v)) {
29120 aRv.Throw(NS_ERROR_UNEXPECTED);
29121 return;
29122 }
29123 // This is a reflector, but due to trying to name things
29124 // similarly across method generators, it's called obj here.
29125 JS::Rooted<JSObject*> obj(cx);
29126 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29127 JSAutoRealm reflectorRealm(cx, obj);
29128 JS::RootedVector<JS::Value> argv(cx);
29129 if (!argv.resize(1)) {
29130 aRv.Throw(NS_ERROR_UNEXPECTED);
29131 return;
29132 }
29133 do {
29134 JS::ExposeValueToActiveJS(aValue);
29135 argv[0].set(aValue);
29136 if (!MaybeWrapValue(cx, argv[0])) {
29137 aRv.Throw(NS_ERROR_UNEXPECTED);
29138 return;
29139 }
29140 break;
29141 } while (false);
29142
29143 JS::Rooted<JSObject*> backingObj(cx);
29144 bool created = false;
29145 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29146 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29147 self)) {
29148 aRv.Throw(NS_ERROR_UNEXPECTED);
29149 return;
29150 }
29151 if (created) {
29152 PreserveWrapper(self);
29153 }
29154 uint32_t length;
29155 aRv.MightThrowJSException();
29156 if (!JS::GetArrayLength(cx, backingObj, &length)) {
29157 aRv.StealExceptionFromJSContext(cx);
29158 return;
29159 }
29160 aRv.MightThrowJSException();
29161 if (!JS_SetElement(cx, backingObj, length, argv[0])) {
29162 aRv.StealExceptionFromJSContext(cx);
29163 return;
29164 }
29165}
29166
29167void
29168RemoveLastElement(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
29169{
29170 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29170); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29170; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29171 AutoJSAPI jsapi;
29172 jsapi.Init();
29173 JSContext* cx = jsapi.cx();
29174 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29175 // all we want is to wrap into _some_ scope and then unwrap to find
29176 // the reflector, and wrapping has no side-effects.
29177 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29178 if (!scope) {
29179 aRv.Throw(NS_ERROR_UNEXPECTED);
29180 return;
29181 }
29182 JSAutoRealm tempRealm(cx, scope);
29183 JS::Rooted<JS::Value> v(cx);
29184 if(!ToJSValue(cx, self, &v)) {
29185 aRv.Throw(NS_ERROR_UNEXPECTED);
29186 return;
29187 }
29188 // This is a reflector, but due to trying to name things
29189 // similarly across method generators, it's called obj here.
29190 JS::Rooted<JSObject*> obj(cx);
29191 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29192 JSAutoRealm reflectorRealm(cx, obj);
29193
29194 JS::Rooted<JSObject*> backingObj(cx);
29195 bool created = false;
29196 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29197 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29198 self)) {
29199 aRv.Throw(NS_ERROR_UNEXPECTED);
29200 return;
29201 }
29202 if (created) {
29203 PreserveWrapper(self);
29204 }
29205 uint32_t length;
29206 aRv.MightThrowJSException();
29207 if (!JS::GetArrayLength(cx, backingObj, &length)) {
29208 aRv.StealExceptionFromJSContext(cx);
29209 return;
29210 }
29211 if (length == 0) {
29212 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
29213 return;
29214 }
29215 aRv.MightThrowJSException();
29216 if (!JS::SetArrayLength(cx, backingObj, length - 1)) {
29217 aRv.StealExceptionFromJSContext(cx);
29218 return;
29219 }
29220}
29221
29222uint32_t
29223Length(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
29224{
29225 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29225); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29225; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29226 AutoJSAPI jsapi;
29227 jsapi.Init();
29228 JSContext* cx = jsapi.cx();
29229 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29230 // all we want is to wrap into _some_ scope and then unwrap to find
29231 // the reflector, and wrapping has no side-effects.
29232 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29233 if (!scope) {
29234 aRv.Throw(NS_ERROR_UNEXPECTED);
29235 return uint32_t(0);
29236 }
29237 JSAutoRealm tempRealm(cx, scope);
29238 JS::Rooted<JS::Value> v(cx);
29239 if(!ToJSValue(cx, self, &v)) {
29240 aRv.Throw(NS_ERROR_UNEXPECTED);
29241 return uint32_t(0);
29242 }
29243 // This is a reflector, but due to trying to name things
29244 // similarly across method generators, it's called obj here.
29245 JS::Rooted<JSObject*> obj(cx);
29246 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29247 JSAutoRealm reflectorRealm(cx, obj);
29248
29249 JS::Rooted<JSObject*> backingObj(cx);
29250 bool created = false;
29251 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29252 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29253 self)) {
29254 aRv.Throw(NS_ERROR_UNEXPECTED);
29255 return uint32_t(0);
29256 }
29257 if (created) {
29258 PreserveWrapper(self);
29259 }
29260 uint32_t retVal;
29261 aRv.MightThrowJSException();
29262 if (!JS::GetArrayLength(cx, backingObj, &retVal)) {
29263 aRv.StealExceptionFromJSContext(cx);
29264 return uint32_t(0);
29265 }
29266 return retVal;
29267}
29268} // namespace AnyObservableArrayHelpers
29269
29270MOZ_CAN_RUN_SCRIPT static bool
29271get_anyObservableArray(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
29272{
29273 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject29276( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
29274 "TestExampleInterface", "anyObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject29276( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
29275 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject29276( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
29276 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject29276( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
29277
29278 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
29279 JS::Rooted<JSObject*> backingObj(cx);
29280 bool created = false;
29281 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29282 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29283 self)) {
29284 return false;
29285 }
29286 if (created) {
29287 PreserveWrapper(self);
29288 }
29289 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 29289); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 29289; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
29290 args.rval().setObject(*backingObj);
29291 return true;
29292}
29293
29294MOZ_CAN_RUN_SCRIPT static bool
29295set_anyObservableArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
29296{
29297 BindingCallContext cx(cx_, "TestExampleInterface.anyObservableArray setter");
29298 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject29301( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
29299 "TestExampleInterface", "anyObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject29301( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
29300 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject29301( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
29301 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject29301( cx, "TestExampleInterface"
, "anyObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
29302
29303 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
29304 binding_detail::AutoSequence<JS::Value> arg0;
29305 SequenceRooter<JS::Value> arg0_holder(cx, &arg0);
29306 if (args[0].isObject()) {
29307 JS::ForOfIterator iter(cx);
29308 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
29309 return false;
29310 }
29311 if (!iter.valueIsIterable()) {
29312 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
29313 return false;
29314 }
29315 binding_detail::AutoSequence<JS::Value> &arr = arg0;
29316 JS::Rooted<JS::Value> temp(cx);
29317 while (true) {
29318 bool done;
29319 if (!iter.next(&temp, &done)) {
29320 return false;
29321 }
29322 if (done) {
29323 break;
29324 }
29325 JS::Value* slotPtr = arr.AppendElement(mozilla::fallible);
29326 if (!slotPtr) {
29327 JS_ReportOutOfMemory(cx);
29328 return false;
29329 }
29330 JS::Value& slot = *slotPtr;
29331 slot = temp;
29332 }
29333 } else {
29334 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
29335 return false;
29336 }
29337 if (xpc::WrapperFactory::IsXrayWrapper(obj)) {
29338 JS_ReportErrorASCII(cx, "Accessing from Xray wrapper is not supported.");
29339 return false;
29340 }
29341
29342 JS::Rooted<JSObject*> backingObj(cx);
29343 bool created = false;
29344 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11),
29345 &backingObj, &created, AnyObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29346 self)) {
29347 return false;
29348 }
29349 if (created) {
29350 PreserveWrapper(self);
29351 }
29352
29353 const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj);
29354 if (!handler->SetLength(cx, backingObj, 0)) {
29355 return false;
29356 }
29357
29358 JS::Rooted<JS::Value> val(cx);
29359 for (size_t i = 0; i < arg0.Length(); i++) {
29360 JS::ExposeValueToActiveJS(arg0.ElementAt(i));
29361 val.set(arg0.ElementAt(i));
29362 if (!MaybeWrapValue(cx, &val)) {
29363 return false;
29364 }
29365 if (!JS_SetElement(cx, backingObj, i, val)) {
29366 return false;
29367 }
29368 }
29369
29370 return true;
29371}
29372
29373static const JSJitInfo anyObservableArray_getterinfo = {
29374 { get_anyObservableArray },
29375 { prototypes::id::TestExampleInterface },
29376 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
29377 JSJitInfo::Getter,
29378 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
29379 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
29380 false, /* isInfallible. False in setters. */
29381 false, /* isMovable. Not relevant for setters. */
29382 false, /* isEliminatable. Not relevant for setters. */
29383 false, /* isAlwaysInSlot. Only relevant for getters. */
29384 true, /* isLazilyCachedInSlot. Only relevant for getters. */
29385 false, /* isTypedMethod. Only relevant for methods. */
29386 (DOM_INSTANCE_RESERVED_SLOTS1 + 11) /* Reserved slot index, if we're stored in a slot, else 0. */
29387};
29388static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 11) <= JSJitInfo::maxSlotIndex, "We won't fit");
29389static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 11) < 22, "There is no slot for us");
29390static const JSJitInfo anyObservableArray_setterinfo = {
29391 { (JSJitGetterOp)set_anyObservableArray },
29392 { prototypes::id::TestExampleInterface },
29393 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
29394 JSJitInfo::Setter,
29395 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
29396 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
29397 false, /* isInfallible. False in setters. */
29398 false, /* isMovable. Not relevant for setters. */
29399 false, /* isEliminatable. Not relevant for setters. */
29400 false, /* isAlwaysInSlot. Only relevant for getters. */
29401 false, /* isLazilyCachedInSlot. Only relevant for getters. */
29402 false, /* isTypedMethod. Only relevant for methods. */
29403 0 /* Reserved slot index, if we're stored in a slot, else 0. */
29404};
29405
29406namespace InterfaceObservableArray_Binding {
29407class ObservableArrayProxyHandler : public mozilla::dom::ObservableArrayProxyHandler
29408{
29409protected:
29410 bool
29411 OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const override;
29412
29413 bool
29414 SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const override;
29415
29416public:
29417 static const ObservableArrayProxyHandler*
29418 getInstance();
29419};
29420
29421bool
29422ObservableArrayProxyHandler::OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const
29423{
29424 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 29424); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 29424; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29425
29426 BindingCallContext cx(aCx, "ObservableArray OnDeleteItem");
29427 NonNull<mozilla::dom::TestInterface> decl;
29428 if (aValue.isObject()) {
29429 {
29430 // Our JSContext should be in the right global to do unwrapping in.
29431 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(aValue, decl, cx);
29432 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
29433 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element in ObservableArray backing list", "TestInterface");
29434 MOZ_ASSERT_UNREACHABLE("The item in ObservableArray backing list is not TestInterface (Wrapper)?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(false)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("false" " (" "MOZ_ASSERT_UNREACHABLE: "
"The item in ObservableArray backing list is not TestInterface (Wrapper)?"
")", "../TestExampleGenBinding.cpp", 29434); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "false" ") (" "MOZ_ASSERT_UNREACHABLE: " "The item in ObservableArray backing list is not TestInterface (Wrapper)?"
")"); do { *((volatile int*)__null) = 29434; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29435 return false;
29436 }
29437 }
29438 } else {
29439 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element in ObservableArray backing list");
29440 MOZ_ASSERT_UNREACHABLE("The item in ObservableArray backing list is not TestInterface (Wrapper)?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(false)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("false" " (" "MOZ_ASSERT_UNREACHABLE: "
"The item in ObservableArray backing list is not TestInterface (Wrapper)?"
")", "../TestExampleGenBinding.cpp", 29440); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "false" ") (" "MOZ_ASSERT_UNREACHABLE: " "The item in ObservableArray backing list is not TestInterface (Wrapper)?"
")"); do { *((volatile int*)__null) = 29440; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29441 return false;
29442 }
29443
29444 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
29445 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
29446 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 29446); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 29446; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29447
29448 ErrorResult rv;
29449 MOZ_KnownLive(interface)(interface)->OnDeleteInterfaceObservableArray(decl, aIndex, rv);
29450 return !rv.MaybeSetPendingException(cx);
29451}
29452
29453bool
29454ObservableArrayProxyHandler::SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const
29455{
29456 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 29456); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 29456; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29457 uint32_t oldLen;
29458 if (!JS::GetArrayLength(aCx, aBackingList, &oldLen)) {
29459 return false;
29460 }
29461
29462 if (aIndex > oldLen) {
29463 return aResult.failBadIndex();
29464 }
29465
29466 BindingCallContext cx(aCx, "ObservableArray SetIndexedValue");
29467 NonNull<mozilla::dom::TestInterface> decl;
29468 if (aValue.isObject()) {
29469 {
29470 // Our JSContext should be in the right global to do unwrapping in.
29471 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(aValue, decl, cx);
29472 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
29473 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element in ObservableArray backing list", "TestInterface");
29474 return false;
29475 }
29476 }
29477 } else {
29478 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element in ObservableArray backing list");
29479 return false;
29480 }
29481
29482 if (aIndex < oldLen) {
29483 JS::Rooted<JS::Value> value(aCx);
29484 if (!JS_GetElement(aCx, aBackingList, aIndex, &value)) {
29485 return false;
29486 }
29487
29488 if (!OnDeleteItem(aCx, aProxy, value, aIndex)) {
29489 return false;
29490 }
29491 }
29492
29493 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
29494 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
29495 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 29495); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 29495; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29496
29497 ErrorResult rv;
29498 MOZ_KnownLive(interface)(interface)->OnSetInterfaceObservableArray(decl, aIndex, rv);
29499 if (rv.MaybeSetPendingException(cx)) {
29500 return false;
29501 }
29502
29503 if (!JS_SetElement(aCx, aBackingList, aIndex, aValue)) {
29504 return false;
29505 }
29506
29507 return aResult.succeed();
29508}
29509
29510const ObservableArrayProxyHandler*
29511ObservableArrayProxyHandler::getInstance()
29512{
29513 static const ObservableArrayProxyHandler instance;
29514 return &instance;
29515}
29516} // namespace InterfaceObservableArray_Binding
29517
29518namespace InterfaceObservableArrayHelpers {
29519already_AddRefed<TestInterface>
29520ElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, ErrorResult& aRv)
29521{
29522 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29522); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29522; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29523 AutoJSAPI jsapi;
29524 jsapi.Init();
29525 JSContext* cx = jsapi.cx();
29526 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29527 // all we want is to wrap into _some_ scope and then unwrap to find
29528 // the reflector, and wrapping has no side-effects.
29529 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29530 if (!scope) {
29531 aRv.Throw(NS_ERROR_UNEXPECTED);
29532 return nullptr;
29533 }
29534 JSAutoRealm tempRealm(cx, scope);
29535 JS::Rooted<JS::Value> v(cx);
29536 if(!ToJSValue(cx, self, &v)) {
29537 aRv.Throw(NS_ERROR_UNEXPECTED);
29538 return nullptr;
29539 }
29540 // This is a reflector, but due to trying to name things
29541 // similarly across method generators, it's called obj here.
29542 JS::Rooted<JSObject*> obj(cx);
29543 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29544 JSAutoRealm reflectorRealm(cx, obj);
29545
29546 JS::Rooted<JSObject*> backingObj(cx);
29547 bool created = false;
29548 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29549 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29550 self)) {
29551 aRv.Throw(NS_ERROR_UNEXPECTED);
29552 return nullptr;
29553 }
29554 if (created) {
29555 PreserveWrapper(self);
29556 }
29557 JS::Rooted<JS::Value> result(cx);
29558 aRv.MightThrowJSException();
29559 if (!JS_GetElement(cx, backingObj, aIndex, &result)) {
29560 aRv.StealExceptionFromJSContext(cx);
29561 return nullptr;
29562 }
29563 if (result.isUndefined()) {
29564 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
29565 return nullptr;
29566 }
29567 RefPtr<mozilla::dom::TestInterface> rvalDecl;
29568 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
29569 {
29570 // Our JSContext should be in the right global to do unwrapping in.
29571 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(result, rvalDecl, cx);
29572 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
29573 aRv.Throw(NS_ERROR_UNEXPECTED);
29574 return nullptr;
29575 }
29576 }
29577 return rvalDecl.forget();
29578}
29579
29580void
29581ReplaceElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, TestInterface& aValue, ErrorResult& aRv)
29582{
29583 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29583); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29583; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29584 AutoJSAPI jsapi;
29585 jsapi.Init();
29586 JSContext* cx = jsapi.cx();
29587 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29588 // all we want is to wrap into _some_ scope and then unwrap to find
29589 // the reflector, and wrapping has no side-effects.
29590 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29591 if (!scope) {
29592 aRv.Throw(NS_ERROR_UNEXPECTED);
29593 return;
29594 }
29595 JSAutoRealm tempRealm(cx, scope);
29596 JS::Rooted<JS::Value> v(cx);
29597 if(!ToJSValue(cx, self, &v)) {
29598 aRv.Throw(NS_ERROR_UNEXPECTED);
29599 return;
29600 }
29601 // This is a reflector, but due to trying to name things
29602 // similarly across method generators, it's called obj here.
29603 JS::Rooted<JSObject*> obj(cx);
29604 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29605 JSAutoRealm reflectorRealm(cx, obj);
29606 JS::RootedVector<JS::Value> argv(cx);
29607 if (!argv.resize(1)) {
29608 aRv.Throw(NS_ERROR_UNEXPECTED);
29609 return;
29610 }
29611 do {
29612 if (!GetOrCreateDOMReflector(cx, aValue, argv[0])) {
29613 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 29613); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 29613; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
29614 aRv.Throw(NS_ERROR_UNEXPECTED);
29615 return;
29616 }
29617 break;
29618 } while (false);
29619
29620 JS::Rooted<JSObject*> backingObj(cx);
29621 bool created = false;
29622 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29623 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29624 self)) {
29625 aRv.Throw(NS_ERROR_UNEXPECTED);
29626 return;
29627 }
29628 if (created) {
29629 PreserveWrapper(self);
29630 }
29631 uint32_t length;
29632 aRv.MightThrowJSException();
29633 if (!JS::GetArrayLength(cx, backingObj, &length)) {
29634 aRv.StealExceptionFromJSContext(cx);
29635 return;
29636 }
29637 if (aIndex > length) {
29638 aRv.ThrowRangeError("Invalid index");
29639 return;
29640 }
29641 aRv.MightThrowJSException();
29642 if (!JS_SetElement(cx, backingObj, aIndex, argv[0])) {
29643 aRv.StealExceptionFromJSContext(cx);
29644 return;
29645 }
29646}
29647
29648void
29649AppendElement(mozilla::dom::TestExampleInterface* self, TestInterface& aValue, ErrorResult& aRv)
29650{
29651 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29651); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29651; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29652 AutoJSAPI jsapi;
29653 jsapi.Init();
29654 JSContext* cx = jsapi.cx();
29655 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29656 // all we want is to wrap into _some_ scope and then unwrap to find
29657 // the reflector, and wrapping has no side-effects.
29658 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29659 if (!scope) {
29660 aRv.Throw(NS_ERROR_UNEXPECTED);
29661 return;
29662 }
29663 JSAutoRealm tempRealm(cx, scope);
29664 JS::Rooted<JS::Value> v(cx);
29665 if(!ToJSValue(cx, self, &v)) {
29666 aRv.Throw(NS_ERROR_UNEXPECTED);
29667 return;
29668 }
29669 // This is a reflector, but due to trying to name things
29670 // similarly across method generators, it's called obj here.
29671 JS::Rooted<JSObject*> obj(cx);
29672 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29673 JSAutoRealm reflectorRealm(cx, obj);
29674 JS::RootedVector<JS::Value> argv(cx);
29675 if (!argv.resize(1)) {
29676 aRv.Throw(NS_ERROR_UNEXPECTED);
29677 return;
29678 }
29679 do {
29680 if (!GetOrCreateDOMReflector(cx, aValue, argv[0])) {
29681 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 29681); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 29681; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
29682 aRv.Throw(NS_ERROR_UNEXPECTED);
29683 return;
29684 }
29685 break;
29686 } while (false);
29687
29688 JS::Rooted<JSObject*> backingObj(cx);
29689 bool created = false;
29690 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29691 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29692 self)) {
29693 aRv.Throw(NS_ERROR_UNEXPECTED);
29694 return;
29695 }
29696 if (created) {
29697 PreserveWrapper(self);
29698 }
29699 uint32_t length;
29700 aRv.MightThrowJSException();
29701 if (!JS::GetArrayLength(cx, backingObj, &length)) {
29702 aRv.StealExceptionFromJSContext(cx);
29703 return;
29704 }
29705 aRv.MightThrowJSException();
29706 if (!JS_SetElement(cx, backingObj, length, argv[0])) {
29707 aRv.StealExceptionFromJSContext(cx);
29708 return;
29709 }
29710}
29711
29712void
29713RemoveLastElement(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
29714{
29715 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29715); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29715; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29716 AutoJSAPI jsapi;
29717 jsapi.Init();
29718 JSContext* cx = jsapi.cx();
29719 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29720 // all we want is to wrap into _some_ scope and then unwrap to find
29721 // the reflector, and wrapping has no side-effects.
29722 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29723 if (!scope) {
29724 aRv.Throw(NS_ERROR_UNEXPECTED);
29725 return;
29726 }
29727 JSAutoRealm tempRealm(cx, scope);
29728 JS::Rooted<JS::Value> v(cx);
29729 if(!ToJSValue(cx, self, &v)) {
29730 aRv.Throw(NS_ERROR_UNEXPECTED);
29731 return;
29732 }
29733 // This is a reflector, but due to trying to name things
29734 // similarly across method generators, it's called obj here.
29735 JS::Rooted<JSObject*> obj(cx);
29736 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29737 JSAutoRealm reflectorRealm(cx, obj);
29738
29739 JS::Rooted<JSObject*> backingObj(cx);
29740 bool created = false;
29741 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29742 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29743 self)) {
29744 aRv.Throw(NS_ERROR_UNEXPECTED);
29745 return;
29746 }
29747 if (created) {
29748 PreserveWrapper(self);
29749 }
29750 uint32_t length;
29751 aRv.MightThrowJSException();
29752 if (!JS::GetArrayLength(cx, backingObj, &length)) {
29753 aRv.StealExceptionFromJSContext(cx);
29754 return;
29755 }
29756 if (length == 0) {
29757 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
29758 return;
29759 }
29760 aRv.MightThrowJSException();
29761 if (!JS::SetArrayLength(cx, backingObj, length - 1)) {
29762 aRv.StealExceptionFromJSContext(cx);
29763 return;
29764 }
29765}
29766
29767uint32_t
29768Length(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
29769{
29770 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 29770); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 29770; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
29771 AutoJSAPI jsapi;
29772 jsapi.Init();
29773 JSContext* cx = jsapi.cx();
29774 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
29775 // all we want is to wrap into _some_ scope and then unwrap to find
29776 // the reflector, and wrapping has no side-effects.
29777 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
29778 if (!scope) {
29779 aRv.Throw(NS_ERROR_UNEXPECTED);
29780 return uint32_t(0);
29781 }
29782 JSAutoRealm tempRealm(cx, scope);
29783 JS::Rooted<JS::Value> v(cx);
29784 if(!ToJSValue(cx, self, &v)) {
29785 aRv.Throw(NS_ERROR_UNEXPECTED);
29786 return uint32_t(0);
29787 }
29788 // This is a reflector, but due to trying to name things
29789 // similarly across method generators, it's called obj here.
29790 JS::Rooted<JSObject*> obj(cx);
29791 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
29792 JSAutoRealm reflectorRealm(cx, obj);
29793
29794 JS::Rooted<JSObject*> backingObj(cx);
29795 bool created = false;
29796 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29797 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29798 self)) {
29799 aRv.Throw(NS_ERROR_UNEXPECTED);
29800 return uint32_t(0);
29801 }
29802 if (created) {
29803 PreserveWrapper(self);
29804 }
29805 uint32_t retVal;
29806 aRv.MightThrowJSException();
29807 if (!JS::GetArrayLength(cx, backingObj, &retVal)) {
29808 aRv.StealExceptionFromJSContext(cx);
29809 return uint32_t(0);
29810 }
29811 return retVal;
29812}
29813} // namespace InterfaceObservableArrayHelpers
29814
29815MOZ_CAN_RUN_SCRIPT static bool
29816get_interfaceObservableArray(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
29817{
29818 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject29821( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
29819 "TestExampleInterface", "interfaceObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject29821( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
29820 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject29821( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
29821 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject29821( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
29822
29823 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
29824 JS::Rooted<JSObject*> backingObj(cx);
29825 bool created = false;
29826 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29827 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29828 self)) {
29829 return false;
29830 }
29831 if (created) {
29832 PreserveWrapper(self);
29833 }
29834 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 29834); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 29834; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
29835 args.rval().setObject(*backingObj);
29836 return true;
29837}
29838
29839MOZ_CAN_RUN_SCRIPT static bool
29840set_interfaceObservableArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
29841{
29842 BindingCallContext cx(cx_, "TestExampleInterface.interfaceObservableArray setter");
29843 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject29846( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
29844 "TestExampleInterface", "interfaceObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject29846( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
29845 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject29846( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
29846 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject29846( cx, "TestExampleInterface"
, "interfaceObservableArray", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
29847
29848 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
29849 binding_detail::AutoSequence<OwningNonNull<mozilla::dom::TestInterface>> arg0;
29850 if (args[0].isObject()) {
29851 JS::ForOfIterator iter(cx);
29852 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
29853 return false;
29854 }
29855 if (!iter.valueIsIterable()) {
29856 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
29857 return false;
29858 }
29859 binding_detail::AutoSequence<OwningNonNull<mozilla::dom::TestInterface>> &arr = arg0;
29860 JS::Rooted<JS::Value> temp(cx);
29861 while (true) {
29862 bool done;
29863 if (!iter.next(&temp, &done)) {
29864 return false;
29865 }
29866 if (done) {
29867 break;
29868 }
29869 OwningNonNull<mozilla::dom::TestInterface>* slotPtr = arr.AppendElement(mozilla::fallible);
29870 if (!slotPtr) {
29871 JS_ReportOutOfMemory(cx);
29872 return false;
29873 }
29874 OwningNonNull<mozilla::dom::TestInterface>& slot = *slotPtr;
29875 if (temp.isObject()) {
29876 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
29877 {
29878 // Our JSContext should be in the right global to do unwrapping in.
29879 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(&temp, slot, cx);
29880 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
29881 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of value being assigned", "TestInterface");
29882 return false;
29883 }
29884 }
29885 } else {
29886 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of value being assigned");
29887 return false;
29888 }
29889 }
29890 } else {
29891 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
29892 return false;
29893 }
29894 if (xpc::WrapperFactory::IsXrayWrapper(obj)) {
29895 JS_ReportErrorASCII(cx, "Accessing from Xray wrapper is not supported.");
29896 return false;
29897 }
29898
29899 JS::Rooted<JSObject*> backingObj(cx);
29900 bool created = false;
29901 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12),
29902 &backingObj, &created, InterfaceObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
29903 self)) {
29904 return false;
29905 }
29906 if (created) {
29907 PreserveWrapper(self);
29908 }
29909
29910 const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj);
29911 if (!handler->SetLength(cx, backingObj, 0)) {
29912 return false;
29913 }
29914
29915 JS::Rooted<JS::Value> val(cx);
29916 for (size_t i = 0; i < arg0.Length(); i++) {
29917 if (!GetOrCreateDOMReflector(cx, arg0.ElementAt(i), &val)) {
29918 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 29918); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 29918; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
29919 return false;
29920 }
29921 if (!JS_SetElement(cx, backingObj, i, val)) {
29922 return false;
29923 }
29924 }
29925
29926 return true;
29927}
29928
29929static const JSJitInfo interfaceObservableArray_getterinfo = {
29930 { get_interfaceObservableArray },
29931 { prototypes::id::TestExampleInterface },
29932 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
29933 JSJitInfo::Getter,
29934 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
29935 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
29936 false, /* isInfallible. False in setters. */
29937 false, /* isMovable. Not relevant for setters. */
29938 false, /* isEliminatable. Not relevant for setters. */
29939 false, /* isAlwaysInSlot. Only relevant for getters. */
29940 true, /* isLazilyCachedInSlot. Only relevant for getters. */
29941 false, /* isTypedMethod. Only relevant for methods. */
29942 (DOM_INSTANCE_RESERVED_SLOTS1 + 12) /* Reserved slot index, if we're stored in a slot, else 0. */
29943};
29944static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 12) <= JSJitInfo::maxSlotIndex, "We won't fit");
29945static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 12) < 22, "There is no slot for us");
29946static const JSJitInfo interfaceObservableArray_setterinfo = {
29947 { (JSJitGetterOp)set_interfaceObservableArray },
29948 { prototypes::id::TestExampleInterface },
29949 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
29950 JSJitInfo::Setter,
29951 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
29952 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
29953 false, /* isInfallible. False in setters. */
29954 false, /* isMovable. Not relevant for setters. */
29955 false, /* isEliminatable. Not relevant for setters. */
29956 false, /* isAlwaysInSlot. Only relevant for getters. */
29957 false, /* isLazilyCachedInSlot. Only relevant for getters. */
29958 false, /* isTypedMethod. Only relevant for methods. */
29959 0 /* Reserved slot index, if we're stored in a slot, else 0. */
29960};
29961
29962namespace NullableObservableArray_Binding {
29963class ObservableArrayProxyHandler : public mozilla::dom::ObservableArrayProxyHandler
29964{
29965protected:
29966 bool
29967 OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const override;
29968
29969 bool
29970 SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const override;
29971
29972public:
29973 static const ObservableArrayProxyHandler*
29974 getInstance();
29975};
29976
29977bool
29978ObservableArrayProxyHandler::OnDeleteItem(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JS::Value> aValue, uint32_t aIndex) const
29979{
29980 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 29980); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 29980; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29981
29982 BindingCallContext cx(aCx, "ObservableArray OnDeleteItem");
29983 Nullable<int32_t> decl;
29984 if (aValue.isNullOrUndefined()) {
29985 decl.SetNull();
29986 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, aValue, "Element in ObservableArray backing list", &decl.SetValue())) {
29987 MOZ_ASSERT_UNREACHABLE("The item in ObservableArray backing list is not LongOrNull?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(false)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("false" " (" "MOZ_ASSERT_UNREACHABLE: "
"The item in ObservableArray backing list is not LongOrNull?"
")", "../TestExampleGenBinding.cpp", 29987); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "false" ") (" "MOZ_ASSERT_UNREACHABLE: " "The item in ObservableArray backing list is not LongOrNull?"
")"); do { *((volatile int*)__null) = 29987; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29988 return false;
29989 }
29990
29991 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
29992 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
29993 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 29993); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 29993; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
29994
29995 ErrorResult rv;
29996 MOZ_KnownLive(interface)(interface)->OnDeleteNullableObservableArray(decl, aIndex, rv);
29997 return !rv.MaybeSetPendingException(cx);
29998}
29999
30000bool
30001ObservableArrayProxyHandler::SetIndexedValue(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<JSObject*> aBackingList, uint32_t aIndex, JS::Handle<JS::Value> aValue, JS::ObjectOpResult& aResult) const
30002{
30003 MOZ_ASSERT(IsObservableArrayProxy(aProxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsObservableArrayProxy(aProxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsObservableArrayProxy(aProxy
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("IsObservableArrayProxy(aProxy)", "../TestExampleGenBinding.cpp"
, 30003); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsObservableArrayProxy(aProxy)"
")"); do { *((volatile int*)__null) = 30003; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
30004 uint32_t oldLen;
30005 if (!JS::GetArrayLength(aCx, aBackingList, &oldLen)) {
30006 return false;
30007 }
30008
30009 if (aIndex > oldLen) {
30010 return aResult.failBadIndex();
30011 }
30012
30013 BindingCallContext cx(aCx, "ObservableArray SetIndexedValue");
30014 Nullable<int32_t> decl;
30015 if (aValue.isNullOrUndefined()) {
30016 decl.SetNull();
30017 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, aValue, "Element in ObservableArray backing list", &decl.SetValue())) {
30018 return false;
30019 }
30020
30021 if (aIndex < oldLen) {
30022 JS::Rooted<JS::Value> value(aCx);
30023 if (!JS_GetElement(aCx, aBackingList, aIndex, &value)) {
30024 return false;
30025 }
30026
30027 if (!OnDeleteItem(aCx, aProxy, value, aIndex)) {
30028 return false;
30029 }
30030 }
30031
30032 JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0);
30033 auto* interface = static_cast<mozilla::dom::TestExampleInterface*>(val.toPrivate());
30034 MOZ_ASSERT(interface)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(interface)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(interface))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("interface", "../TestExampleGenBinding.cpp"
, 30034); AnnotateMozCrashReason("MOZ_ASSERT" "(" "interface"
")"); do { *((volatile int*)__null) = 30034; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
30035
30036 ErrorResult rv;
30037 MOZ_KnownLive(interface)(interface)->OnSetNullableObservableArray(decl, aIndex, rv);
30038 if (rv.MaybeSetPendingException(cx)) {
30039 return false;
30040 }
30041
30042 if (!JS_SetElement(aCx, aBackingList, aIndex, aValue)) {
30043 return false;
30044 }
30045
30046 return aResult.succeed();
30047}
30048
30049const ObservableArrayProxyHandler*
30050ObservableArrayProxyHandler::getInstance()
30051{
30052 static const ObservableArrayProxyHandler instance;
30053 return &instance;
30054}
30055} // namespace NullableObservableArray_Binding
30056
30057namespace NullableObservableArrayHelpers {
30058Nullable<int32_t>
30059ElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, ErrorResult& aRv)
30060{
30061 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 30061); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 30061; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
30062 AutoJSAPI jsapi;
30063 jsapi.Init();
30064 JSContext* cx = jsapi.cx();
30065 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
30066 // all we want is to wrap into _some_ scope and then unwrap to find
30067 // the reflector, and wrapping has no side-effects.
30068 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
30069 if (!scope) {
30070 aRv.Throw(NS_ERROR_UNEXPECTED);
30071 return Nullable<int32_t>();
30072 }
30073 JSAutoRealm tempRealm(cx, scope);
30074 JS::Rooted<JS::Value> v(cx);
30075 if(!ToJSValue(cx, self, &v)) {
30076 aRv.Throw(NS_ERROR_UNEXPECTED);
30077 return Nullable<int32_t>();
30078 }
30079 // This is a reflector, but due to trying to name things
30080 // similarly across method generators, it's called obj here.
30081 JS::Rooted<JSObject*> obj(cx);
30082 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
30083 JSAutoRealm reflectorRealm(cx, obj);
30084
30085 JS::Rooted<JSObject*> backingObj(cx);
30086 bool created = false;
30087 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30088 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30089 self)) {
30090 aRv.Throw(NS_ERROR_UNEXPECTED);
30091 return Nullable<int32_t>();
30092 }
30093 if (created) {
30094 PreserveWrapper(self);
30095 }
30096 JS::Rooted<JS::Value> result(cx);
30097 aRv.MightThrowJSException();
30098 if (!JS_GetElement(cx, backingObj, aIndex, &result)) {
30099 aRv.StealExceptionFromJSContext(cx);
30100 return Nullable<int32_t>();
30101 }
30102 if (result.isUndefined()) {
30103 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
30104 return Nullable<int32_t>();
30105 }
30106 Nullable<int32_t> rvalDecl;
30107 if (result.isNullOrUndefined()) {
30108 rvalDecl.SetNull();
30109 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, result, "Return value of ElementAt", &rvalDecl.SetValue())) {
30110 aRv.NoteJSContextException(cx);
30111 return Nullable<int32_t>();
30112 }
30113 return rvalDecl;
30114}
30115
30116void
30117ReplaceElementAt(mozilla::dom::TestExampleInterface* self, uint32_t aIndex, const Nullable<int32_t>& aValue, ErrorResult& aRv)
30118{
30119 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 30119); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 30119; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
30120 AutoJSAPI jsapi;
30121 jsapi.Init();
30122 JSContext* cx = jsapi.cx();
30123 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
30124 // all we want is to wrap into _some_ scope and then unwrap to find
30125 // the reflector, and wrapping has no side-effects.
30126 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
30127 if (!scope) {
30128 aRv.Throw(NS_ERROR_UNEXPECTED);
30129 return;
30130 }
30131 JSAutoRealm tempRealm(cx, scope);
30132 JS::Rooted<JS::Value> v(cx);
30133 if(!ToJSValue(cx, self, &v)) {
30134 aRv.Throw(NS_ERROR_UNEXPECTED);
30135 return;
30136 }
30137 // This is a reflector, but due to trying to name things
30138 // similarly across method generators, it's called obj here.
30139 JS::Rooted<JSObject*> obj(cx);
30140 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
30141 JSAutoRealm reflectorRealm(cx, obj);
30142 JS::RootedVector<JS::Value> argv(cx);
30143 if (!argv.resize(1)) {
30144 aRv.Throw(NS_ERROR_UNEXPECTED);
30145 return;
30146 }
30147 do {
30148 if (aValue.IsNull()) {
30149 argv[0].setNull();
30150 break;
30151 }
30152 argv[0].setInt32(int32_t(aValue.Value()));
30153 break;
30154 } while (false);
30155
30156 JS::Rooted<JSObject*> backingObj(cx);
30157 bool created = false;
30158 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30159 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30160 self)) {
30161 aRv.Throw(NS_ERROR_UNEXPECTED);
30162 return;
30163 }
30164 if (created) {
30165 PreserveWrapper(self);
30166 }
30167 uint32_t length;
30168 aRv.MightThrowJSException();
30169 if (!JS::GetArrayLength(cx, backingObj, &length)) {
30170 aRv.StealExceptionFromJSContext(cx);
30171 return;
30172 }
30173 if (aIndex > length) {
30174 aRv.ThrowRangeError("Invalid index");
30175 return;
30176 }
30177 aRv.MightThrowJSException();
30178 if (!JS_SetElement(cx, backingObj, aIndex, argv[0])) {
30179 aRv.StealExceptionFromJSContext(cx);
30180 return;
30181 }
30182}
30183
30184void
30185AppendElement(mozilla::dom::TestExampleInterface* self, const Nullable<int32_t>& aValue, ErrorResult& aRv)
30186{
30187 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 30187); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 30187; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
30188 AutoJSAPI jsapi;
30189 jsapi.Init();
30190 JSContext* cx = jsapi.cx();
30191 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
30192 // all we want is to wrap into _some_ scope and then unwrap to find
30193 // the reflector, and wrapping has no side-effects.
30194 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
30195 if (!scope) {
30196 aRv.Throw(NS_ERROR_UNEXPECTED);
30197 return;
30198 }
30199 JSAutoRealm tempRealm(cx, scope);
30200 JS::Rooted<JS::Value> v(cx);
30201 if(!ToJSValue(cx, self, &v)) {
30202 aRv.Throw(NS_ERROR_UNEXPECTED);
30203 return;
30204 }
30205 // This is a reflector, but due to trying to name things
30206 // similarly across method generators, it's called obj here.
30207 JS::Rooted<JSObject*> obj(cx);
30208 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
30209 JSAutoRealm reflectorRealm(cx, obj);
30210 JS::RootedVector<JS::Value> argv(cx);
30211 if (!argv.resize(1)) {
30212 aRv.Throw(NS_ERROR_UNEXPECTED);
30213 return;
30214 }
30215 do {
30216 if (aValue.IsNull()) {
30217 argv[0].setNull();
30218 break;
30219 }
30220 argv[0].setInt32(int32_t(aValue.Value()));
30221 break;
30222 } while (false);
30223
30224 JS::Rooted<JSObject*> backingObj(cx);
30225 bool created = false;
30226 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30227 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30228 self)) {
30229 aRv.Throw(NS_ERROR_UNEXPECTED);
30230 return;
30231 }
30232 if (created) {
30233 PreserveWrapper(self);
30234 }
30235 uint32_t length;
30236 aRv.MightThrowJSException();
30237 if (!JS::GetArrayLength(cx, backingObj, &length)) {
30238 aRv.StealExceptionFromJSContext(cx);
30239 return;
30240 }
30241 aRv.MightThrowJSException();
30242 if (!JS_SetElement(cx, backingObj, length, argv[0])) {
30243 aRv.StealExceptionFromJSContext(cx);
30244 return;
30245 }
30246}
30247
30248void
30249RemoveLastElement(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
30250{
30251 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 30251); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 30251; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
30252 AutoJSAPI jsapi;
30253 jsapi.Init();
30254 JSContext* cx = jsapi.cx();
30255 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
30256 // all we want is to wrap into _some_ scope and then unwrap to find
30257 // the reflector, and wrapping has no side-effects.
30258 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
30259 if (!scope) {
30260 aRv.Throw(NS_ERROR_UNEXPECTED);
30261 return;
30262 }
30263 JSAutoRealm tempRealm(cx, scope);
30264 JS::Rooted<JS::Value> v(cx);
30265 if(!ToJSValue(cx, self, &v)) {
30266 aRv.Throw(NS_ERROR_UNEXPECTED);
30267 return;
30268 }
30269 // This is a reflector, but due to trying to name things
30270 // similarly across method generators, it's called obj here.
30271 JS::Rooted<JSObject*> obj(cx);
30272 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
30273 JSAutoRealm reflectorRealm(cx, obj);
30274
30275 JS::Rooted<JSObject*> backingObj(cx);
30276 bool created = false;
30277 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30278 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30279 self)) {
30280 aRv.Throw(NS_ERROR_UNEXPECTED);
30281 return;
30282 }
30283 if (created) {
30284 PreserveWrapper(self);
30285 }
30286 uint32_t length;
30287 aRv.MightThrowJSException();
30288 if (!JS::GetArrayLength(cx, backingObj, &length)) {
30289 aRv.StealExceptionFromJSContext(cx);
30290 return;
30291 }
30292 if (length == 0) {
30293 aRv.Throw(NS_ERROR_NOT_AVAILABLE);
30294 return;
30295 }
30296 aRv.MightThrowJSException();
30297 if (!JS::SetArrayLength(cx, backingObj, length - 1)) {
30298 aRv.StealExceptionFromJSContext(cx);
30299 return;
30300 }
30301}
30302
30303uint32_t
30304Length(mozilla::dom::TestExampleInterface* self, ErrorResult& aRv)
30305{
30306 MOZ_ASSERT(self)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(self)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(self))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("self", "../TestExampleGenBinding.cpp"
, 30306); AnnotateMozCrashReason("MOZ_ASSERT" "(" "self" ")")
; do { *((volatile int*)__null) = 30306; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
30307 AutoJSAPI jsapi;
30308 jsapi.Init();
30309 JSContext* cx = jsapi.cx();
30310 // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here because
30311 // all we want is to wrap into _some_ scope and then unwrap to find
30312 // the reflector, and wrapping has no side-effects.
30313 JSObject* scope = UnprivilegedJunkScopeOrWorkerGlobal(fallible);
30314 if (!scope) {
30315 aRv.Throw(NS_ERROR_UNEXPECTED);
30316 return uint32_t(0);
30317 }
30318 JSAutoRealm tempRealm(cx, scope);
30319 JS::Rooted<JS::Value> v(cx);
30320 if(!ToJSValue(cx, self, &v)) {
30321 aRv.Throw(NS_ERROR_UNEXPECTED);
30322 return uint32_t(0);
30323 }
30324 // This is a reflector, but due to trying to name things
30325 // similarly across method generators, it's called obj here.
30326 JS::Rooted<JSObject*> obj(cx);
30327 obj = js::UncheckedUnwrap(&v.toObject(), /* stopAtWindowProxy = */ false);
30328 JSAutoRealm reflectorRealm(cx, obj);
30329
30330 JS::Rooted<JSObject*> backingObj(cx);
30331 bool created = false;
30332 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30333 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30334 self)) {
30335 aRv.Throw(NS_ERROR_UNEXPECTED);
30336 return uint32_t(0);
30337 }
30338 if (created) {
30339 PreserveWrapper(self);
30340 }
30341 uint32_t retVal;
30342 aRv.MightThrowJSException();
30343 if (!JS::GetArrayLength(cx, backingObj, &retVal)) {
30344 aRv.StealExceptionFromJSContext(cx);
30345 return uint32_t(0);
30346 }
30347 return retVal;
30348}
30349} // namespace NullableObservableArrayHelpers
30350
30351MOZ_CAN_RUN_SCRIPT static bool
30352get_nullableObservableArray(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
30353{
30354 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30357( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30355 "TestExampleInterface", "nullableObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30357( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30356 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject30357( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30357 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30357( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30358
30359 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30360 JS::Rooted<JSObject*> backingObj(cx);
30361 bool created = false;
30362 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30363 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30364 self)) {
30365 return false;
30366 }
30367 if (created) {
30368 PreserveWrapper(self);
30369 }
30370 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30370); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30370; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30371 args.rval().setObject(*backingObj);
30372 return true;
30373}
30374
30375MOZ_CAN_RUN_SCRIPT static bool
30376set_nullableObservableArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
30377{
30378 BindingCallContext cx(cx_, "TestExampleInterface.nullableObservableArray setter");
30379 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30382( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30380 "TestExampleInterface", "nullableObservableArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30382( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30381 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject30382( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30382 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30382( cx, "TestExampleInterface"
, "nullableObservableArray", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30383
30384 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30385 binding_detail::AutoSequence<Nullable<int32_t>> arg0;
30386 if (args[0].isObject()) {
30387 JS::ForOfIterator iter(cx);
30388 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
30389 return false;
30390 }
30391 if (!iter.valueIsIterable()) {
30392 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
30393 return false;
30394 }
30395 binding_detail::AutoSequence<Nullable<int32_t>> &arr = arg0;
30396 JS::Rooted<JS::Value> temp(cx);
30397 while (true) {
30398 bool done;
30399 if (!iter.next(&temp, &done)) {
30400 return false;
30401 }
30402 if (done) {
30403 break;
30404 }
30405 Nullable<int32_t>* slotPtr = arr.AppendElement(mozilla::fallible);
30406 if (!slotPtr) {
30407 JS_ReportOutOfMemory(cx);
30408 return false;
30409 }
30410 Nullable<int32_t>& slot = *slotPtr;
30411 if (temp.isNullOrUndefined()) {
30412 slot.SetNull();
30413 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of value being assigned", &slot.SetValue())) {
30414 return false;
30415 }
30416 }
30417 } else {
30418 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "observable array");
30419 return false;
30420 }
30421 if (xpc::WrapperFactory::IsXrayWrapper(obj)) {
30422 JS_ReportErrorASCII(cx, "Accessing from Xray wrapper is not supported.");
30423 return false;
30424 }
30425
30426 JS::Rooted<JSObject*> backingObj(cx);
30427 bool created = false;
30428 if (!GetObservableArrayBackingObject(cx, obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13),
30429 &backingObj, &created, NullableObservableArray_Binding::ObservableArrayProxyHandler::getInstance(),
30430 self)) {
30431 return false;
30432 }
30433 if (created) {
30434 PreserveWrapper(self);
30435 }
30436
30437 const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj);
30438 if (!handler->SetLength(cx, backingObj, 0)) {
30439 return false;
30440 }
30441
30442 JS::Rooted<JS::Value> val(cx);
30443 for (size_t i = 0; i < arg0.Length(); i++) {
30444 if (arg0.ElementAt(i).IsNull()) {
30445 val.setNull();
30446 if (!JS_SetElement(cx, backingObj, i, val)) {
30447 return false;
30448 }
30449 }
30450 val.setInt32(int32_t(arg0.ElementAt(i).Value()));
30451 if (!JS_SetElement(cx, backingObj, i, val)) {
30452 return false;
30453 }
30454 }
30455
30456 return true;
30457}
30458
30459static const JSJitInfo nullableObservableArray_getterinfo = {
30460 { get_nullableObservableArray },
30461 { prototypes::id::TestExampleInterface },
30462 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30463 JSJitInfo::Getter,
30464 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30465 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
30466 false, /* isInfallible. False in setters. */
30467 false, /* isMovable. Not relevant for setters. */
30468 false, /* isEliminatable. Not relevant for setters. */
30469 false, /* isAlwaysInSlot. Only relevant for getters. */
30470 true, /* isLazilyCachedInSlot. Only relevant for getters. */
30471 false, /* isTypedMethod. Only relevant for methods. */
30472 (DOM_INSTANCE_RESERVED_SLOTS1 + 13) /* Reserved slot index, if we're stored in a slot, else 0. */
30473};
30474static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 13) <= JSJitInfo::maxSlotIndex, "We won't fit");
30475static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 13) < 22, "There is no slot for us");
30476static const JSJitInfo nullableObservableArray_setterinfo = {
30477 { (JSJitGetterOp)set_nullableObservableArray },
30478 { prototypes::id::TestExampleInterface },
30479 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30480 JSJitInfo::Setter,
30481 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30482 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
30483 false, /* isInfallible. False in setters. */
30484 false, /* isMovable. Not relevant for setters. */
30485 false, /* isEliminatable. Not relevant for setters. */
30486 false, /* isAlwaysInSlot. Only relevant for getters. */
30487 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30488 false, /* isTypedMethod. Only relevant for methods. */
30489 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30490};
30491
30492MOZ_CAN_RUN_SCRIPT static bool
30493methodRenamedFrom(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
30494{
30495 BindingCallContext cx(cx_, "TestExampleInterface.methodRenamedFrom");
30496 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30499( cx, "TestExampleInterface"
, "methodRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30497 "TestExampleInterface", "methodRenamedFrom", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30499( cx, "TestExampleInterface"
, "methodRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30498 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject30499( cx, "TestExampleInterface"
, "methodRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30499 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30499( cx, "TestExampleInterface"
, "methodRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30500
30501 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30502 unsigned argcount = std::min(args.length(), 1u);
30503 switch (argcount) {
30504 case 0: {
30505 // NOTE: This assert does NOT call the function.
30506 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->MethodRenamedTo())>, "Should be returning void here");
30507 MOZ_KnownLive(self)(self)->MethodRenamedTo();
30508 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30508); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30508; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30509 args.rval().setUndefined();
30510 return true;
30511 break;
30512 }
30513 case 1: {
30514 int8_t arg0;
30515 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
30516 return false;
30517 }
30518 // NOTE: This assert does NOT call the function.
30519 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->MethodRenamedTo(arg0))>, "Should be returning void here");
30520 MOZ_KnownLive(self)(self)->MethodRenamedTo(arg0);
30521 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30521); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30521; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30522 args.rval().setUndefined();
30523 return true;
30524 break;
30525 }
30526 default: {
30527 // Using nsPrintfCString here would require including that
30528 // header. Let's not worry about it.
30529 nsAutoCString argCountStr;
30530 argCountStr.AppendPrintf("%u", args.length());
30531 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
30532 }
30533 }
30534 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 30534); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 30534; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
30535 return false;
30536}
30537
30538static const JSJitInfo methodRenamedFrom_methodinfo = {
30539 { (JSJitGetterOp)methodRenamedFrom },
30540 { prototypes::id::TestExampleInterface },
30541 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30542 JSJitInfo::Method,
30543 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30544 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
30545 false, /* isInfallible. False in setters. */
30546 false, /* isMovable. Not relevant for setters. */
30547 false, /* isEliminatable. Not relevant for setters. */
30548 false, /* isAlwaysInSlot. Only relevant for getters. */
30549 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30550 false, /* isTypedMethod. Only relevant for methods. */
30551 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30552};
30553
30554MOZ_CAN_RUN_SCRIPT static bool
30555get_attributeGetterRenamedFrom(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
30556{
30557 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30560( cx, "TestExampleInterface"
, "attributeGetterRenamedFrom", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
30558 "TestExampleInterface", "attributeGetterRenamedFrom", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30560( cx, "TestExampleInterface"
, "attributeGetterRenamedFrom", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
30559 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject30560( cx, "TestExampleInterface"
, "attributeGetterRenamedFrom", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
30560 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30560( cx, "TestExampleInterface"
, "attributeGetterRenamedFrom", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
30561
30562 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30563 int8_t result(MOZ_KnownLive(self)(self)->AttributeGetterRenamedTo());
30564 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30564); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30564; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30565 args.rval().setInt32(int32_t(result));
30566 return true;
30567}
30568
30569static const JSJitInfo attributeGetterRenamedFrom_getterinfo = {
30570 { get_attributeGetterRenamedFrom },
30571 { prototypes::id::TestExampleInterface },
30572 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30573 JSJitInfo::Getter,
30574 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30575 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
30576 true, /* isInfallible. False in setters. */
30577 false, /* isMovable. Not relevant for setters. */
30578 false, /* isEliminatable. Not relevant for setters. */
30579 false, /* isAlwaysInSlot. Only relevant for getters. */
30580 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30581 false, /* isTypedMethod. Only relevant for methods. */
30582 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30583};
30584
30585MOZ_CAN_RUN_SCRIPT static bool
30586get_attributeRenamedFrom(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
30587{
30588 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30591( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30589 "TestExampleInterface", "attributeRenamedFrom", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30591( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30590 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject30591( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30591 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30591( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30592
30593 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30594 int8_t result(MOZ_KnownLive(self)(self)->AttributeRenamedTo());
30595 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30595); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30595; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30596 args.rval().setInt32(int32_t(result));
30597 return true;
30598}
30599
30600MOZ_CAN_RUN_SCRIPT static bool
30601set_attributeRenamedFrom(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
30602{
30603 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30606( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30604 "TestExampleInterface", "attributeRenamedFrom", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30606( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30605 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject30606( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30606 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30606( cx, "TestExampleInterface"
, "attributeRenamedFrom", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30607
30608 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30609 int8_t arg0;
30610 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
30611 return false;
30612 }
30613 // NOTE: This assert does NOT call the function.
30614 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAttributeRenamedTo(arg0))>, "Should be returning void here");
30615 MOZ_KnownLive(self)(self)->SetAttributeRenamedTo(arg0);
30616 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30616); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30616; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30617
30618 return true;
30619}
30620
30621static const JSJitInfo attributeRenamedFrom_getterinfo = {
30622 { get_attributeRenamedFrom },
30623 { prototypes::id::TestExampleInterface },
30624 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30625 JSJitInfo::Getter,
30626 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30627 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
30628 true, /* isInfallible. False in setters. */
30629 false, /* isMovable. Not relevant for setters. */
30630 false, /* isEliminatable. Not relevant for setters. */
30631 false, /* isAlwaysInSlot. Only relevant for getters. */
30632 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30633 false, /* isTypedMethod. Only relevant for methods. */
30634 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30635};
30636static const JSJitInfo attributeRenamedFrom_setterinfo = {
30637 { (JSJitGetterOp)set_attributeRenamedFrom },
30638 { prototypes::id::TestExampleInterface },
30639 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30640 JSJitInfo::Setter,
30641 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30642 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
30643 false, /* isInfallible. False in setters. */
30644 false, /* isMovable. Not relevant for setters. */
30645 false, /* isEliminatable. Not relevant for setters. */
30646 false, /* isAlwaysInSlot. Only relevant for getters. */
30647 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30648 false, /* isTypedMethod. Only relevant for methods. */
30649 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30650};
30651
30652MOZ_CAN_RUN_SCRIPT static bool
30653passDictionary(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
30654{
30655 BindingCallContext cx(cx_, "TestExampleInterface.passDictionary");
30656 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30659( cx, "TestExampleInterface"
, "passDictionary", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30657 "TestExampleInterface", "passDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30659( cx, "TestExampleInterface"
, "passDictionary", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30658 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject30659( cx, "TestExampleInterface"
, "passDictionary", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30659 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30659( cx, "TestExampleInterface"
, "passDictionary", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30660
30661 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30662 RootedDictionary<binding_detail::FastDict> arg0(cx);
30663 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
30664 return false;
30665 }
30666 // NOTE: This assert does NOT call the function.
30667 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictionary(cx, Constify(arg0)))>, "Should be returning void here");
30668 MOZ_KnownLive(self)(self)->PassDictionary(cx, Constify(arg0));
30669 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30669); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30669; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30670 args.rval().setUndefined();
30671 return true;
30672}
30673
30674static const JSJitInfo passDictionary_methodinfo = {
30675 { (JSJitGetterOp)passDictionary },
30676 { prototypes::id::TestExampleInterface },
30677 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30678 JSJitInfo::Method,
30679 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30680 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
30681 false, /* isInfallible. False in setters. */
30682 false, /* isMovable. Not relevant for setters. */
30683 false, /* isEliminatable. Not relevant for setters. */
30684 false, /* isAlwaysInSlot. Only relevant for getters. */
30685 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30686 false, /* isTypedMethod. Only relevant for methods. */
30687 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30688};
30689
30690MOZ_CAN_RUN_SCRIPT static bool
30691passDictionary2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
30692{
30693 BindingCallContext cx(cx_, "TestExampleInterface.passDictionary2");
30694 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30697( cx, "TestExampleInterface"
, "passDictionary2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30695 "TestExampleInterface", "passDictionary2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30697( cx, "TestExampleInterface"
, "passDictionary2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30696 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject30697( cx, "TestExampleInterface"
, "passDictionary2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30697 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30697( cx, "TestExampleInterface"
, "passDictionary2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30698
30699 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30700 if (!args.requireAtLeast(cx, "TestExampleInterface.passDictionary2", 1)) {
30701 return false;
30702 }
30703 RootedDictionary<binding_detail::FastDict> arg0(cx);
30704 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
30705 return false;
30706 }
30707 // NOTE: This assert does NOT call the function.
30708 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictionary2(cx, Constify(arg0)))>, "Should be returning void here");
30709 MOZ_KnownLive(self)(self)->PassDictionary2(cx, Constify(arg0));
30710 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30710); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30710; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30711 args.rval().setUndefined();
30712 return true;
30713}
30714
30715static const JSJitInfo passDictionary2_methodinfo = {
30716 { (JSJitGetterOp)passDictionary2 },
30717 { prototypes::id::TestExampleInterface },
30718 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30719 JSJitInfo::Method,
30720 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
30721 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
30722 false, /* isInfallible. False in setters. */
30723 false, /* isMovable. Not relevant for setters. */
30724 false, /* isEliminatable. Not relevant for setters. */
30725 false, /* isAlwaysInSlot. Only relevant for getters. */
30726 false, /* isLazilyCachedInSlot. Only relevant for getters. */
30727 false, /* isTypedMethod. Only relevant for methods. */
30728 0 /* Reserved slot index, if we're stored in a slot, else 0. */
30729};
30730
30731MOZ_CAN_RUN_SCRIPT static bool
30732get_readonlyDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
30733{
30734 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30737( cx, "TestExampleInterface"
, "readonlyDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30735 "TestExampleInterface", "readonlyDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30737( cx, "TestExampleInterface"
, "readonlyDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30736 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject30737( cx, "TestExampleInterface"
, "readonlyDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30737 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30737( cx, "TestExampleInterface"
, "readonlyDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30738
30739 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30740 // Have to either root across the getter call or reget after.
30741 bool isXray;
30742 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
30743 if (!slotStorage) {
30744 return false;
30745 }
30746 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 14) : (DOM_INSTANCE_RESERVED_SLOTS1 + 14);
30747 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 30747); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 30747; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
30748 {
30749 // Scope for cachedVal
30750 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
30751 if (!cachedVal.isUndefined()) {
30752 args.rval().set(cachedVal);
30753 // The cached value is in the compartment of slotStorage,
30754 // so wrap into the caller compartment as needed.
30755 return MaybeWrapNonDOMObjectValue(cx, args.rval());
30756 }
30757 }
30758
30759 RootedDictionary<Dict> result(cx);
30760 // NOTE: This assert does NOT call the function.
30761 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyDictionary(cx, result))>, "Should be returning void here");
30762 MOZ_KnownLive(self)(self)->GetReadonlyDictionary(cx, result);
30763 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30763); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30763; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30764 {
30765 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
30766 JSAutoRealm ar(cx, conversionScope);
30767 do { // block we break out of when done wrapping
30768 if (!result.ToObjectInternal(cx, args.rval())) {
30769 return false;
30770 }
30771 break;
30772 } while (false);
30773 }
30774 { // And now store things in the realm of our slotStorage.
30775 JSAutoRealm ar(cx, slotStorage);
30776 // Make a copy so that we don't do unnecessary wrapping on args.rval().
30777 JS::Rooted<JS::Value> storedVal(cx, args.rval());
30778 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
30779 return false;
30780 }
30781 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
30782 if (!isXray) {
30783 // In the Xray case we don't need to do this, because getting the
30784 // expando object already preserved our wrapper.
30785 PreserveWrapper(self);
30786 }
30787 }
30788 // And now make sure args.rval() is in the caller realm.
30789 return MaybeWrapNonDOMObjectValue(cx, args.rval());
30790}
30791
30792static const JSJitInfo readonlyDictionary_getterinfo = {
30793 { get_readonlyDictionary },
30794 { prototypes::id::TestExampleInterface },
30795 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30796 JSJitInfo::Getter,
30797 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
30798 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
30799 false, /* isInfallible. False in setters. */
30800 true, /* isMovable. Not relevant for setters. */
30801 true, /* isEliminatable. Not relevant for setters. */
30802 false, /* isAlwaysInSlot. Only relevant for getters. */
30803 true, /* isLazilyCachedInSlot. Only relevant for getters. */
30804 false, /* isTypedMethod. Only relevant for methods. */
30805 (DOM_INSTANCE_RESERVED_SLOTS1 + 14) /* Reserved slot index, if we're stored in a slot, else 0. */
30806};
30807static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 14) <= JSJitInfo::maxSlotIndex, "We won't fit");
30808static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 14) < 22, "There is no slot for us");
30809
30810MOZ_CAN_RUN_SCRIPT static bool
30811get_readonlyNullableDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
30812{
30813 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30816( cx, "TestExampleInterface"
, "readonlyNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
30814 "TestExampleInterface", "readonlyNullableDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30816( cx, "TestExampleInterface"
, "readonlyNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
30815 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject30816( cx, "TestExampleInterface"
, "readonlyNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
30816 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30816( cx, "TestExampleInterface"
, "readonlyNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
30817
30818 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30819 // Have to either root across the getter call or reget after.
30820 bool isXray;
30821 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
30822 if (!slotStorage) {
30823 return false;
30824 }
30825 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 15) : (DOM_INSTANCE_RESERVED_SLOTS1 + 15);
30826 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 30826); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 30826; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
30827 {
30828 // Scope for cachedVal
30829 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
30830 if (!cachedVal.isUndefined()) {
30831 args.rval().set(cachedVal);
30832 // The cached value is in the compartment of slotStorage,
30833 // so wrap into the caller compartment as needed.
30834 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
30835 }
30836 }
30837
30838 NullableRootedDictionary<Dict> result(cx);
30839 // NOTE: This assert does NOT call the function.
30840 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyNullableDictionary(cx, result))>, "Should be returning void here");
30841 MOZ_KnownLive(self)(self)->GetReadonlyNullableDictionary(cx, result);
30842 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30842); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30842; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30843 {
30844 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
30845 JSAutoRealm ar(cx, conversionScope);
30846 do { // block we break out of when done wrapping
30847 if (result.IsNull()) {
30848 args.rval().setNull();
30849 break;
30850 }
30851 if (!result.Value().ToObjectInternal(cx, args.rval())) {
30852 return false;
30853 }
30854 break;
30855 } while (false);
30856 }
30857 { // And now store things in the realm of our slotStorage.
30858 JSAutoRealm ar(cx, slotStorage);
30859 // Make a copy so that we don't do unnecessary wrapping on args.rval().
30860 JS::Rooted<JS::Value> storedVal(cx, args.rval());
30861 if (!MaybeWrapNonDOMObjectOrNullValue(cx, &storedVal)) {
30862 return false;
30863 }
30864 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
30865 if (!isXray) {
30866 // In the Xray case we don't need to do this, because getting the
30867 // expando object already preserved our wrapper.
30868 PreserveWrapper(self);
30869 }
30870 }
30871 // And now make sure args.rval() is in the caller realm.
30872 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
30873}
30874
30875static const JSJitInfo readonlyNullableDictionary_getterinfo = {
30876 { get_readonlyNullableDictionary },
30877 { prototypes::id::TestExampleInterface },
30878 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30879 JSJitInfo::Getter,
30880 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
30881 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
30882 false, /* isInfallible. False in setters. */
30883 true, /* isMovable. Not relevant for setters. */
30884 true, /* isEliminatable. Not relevant for setters. */
30885 false, /* isAlwaysInSlot. Only relevant for getters. */
30886 true, /* isLazilyCachedInSlot. Only relevant for getters. */
30887 false, /* isTypedMethod. Only relevant for methods. */
30888 (DOM_INSTANCE_RESERVED_SLOTS1 + 15) /* Reserved slot index, if we're stored in a slot, else 0. */
30889};
30890static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 15) <= JSJitInfo::maxSlotIndex, "We won't fit");
30891static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 15) < 22, "There is no slot for us");
30892
30893MOZ_CAN_RUN_SCRIPT static bool
30894get_writableDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
30895{
30896 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30899( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30897 "TestExampleInterface", "writableDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30899( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30898 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject30899( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30899 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30899( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30900
30901 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30902 // Have to either root across the getter call or reget after.
30903 bool isXray;
30904 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
30905 if (!slotStorage) {
30906 return false;
30907 }
30908 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 16) : (DOM_INSTANCE_RESERVED_SLOTS1 + 16);
30909 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 30909); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 30909; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
30910 {
30911 // Scope for cachedVal
30912 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
30913 if (!cachedVal.isUndefined()) {
30914 args.rval().set(cachedVal);
30915 // The cached value is in the compartment of slotStorage,
30916 // so wrap into the caller compartment as needed.
30917 return MaybeWrapNonDOMObjectValue(cx, args.rval());
30918 }
30919 }
30920
30921 RootedDictionary<Dict> result(cx);
30922 // NOTE: This assert does NOT call the function.
30923 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableDictionary(cx, result))>, "Should be returning void here");
30924 MOZ_KnownLive(self)(self)->GetWritableDictionary(cx, result);
30925 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30925); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30925; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30926 {
30927 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
30928 JSAutoRealm ar(cx, conversionScope);
30929 do { // block we break out of when done wrapping
30930 if (!result.ToObjectInternal(cx, args.rval())) {
30931 return false;
30932 }
30933 break;
30934 } while (false);
30935 }
30936 { // And now store things in the realm of our slotStorage.
30937 JSAutoRealm ar(cx, slotStorage);
30938 // Make a copy so that we don't do unnecessary wrapping on args.rval().
30939 JS::Rooted<JS::Value> storedVal(cx, args.rval());
30940 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
30941 return false;
30942 }
30943 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
30944 if (!isXray) {
30945 // In the Xray case we don't need to do this, because getting the
30946 // expando object already preserved our wrapper.
30947 PreserveWrapper(self);
30948 }
30949 }
30950 // And now make sure args.rval() is in the caller realm.
30951 return MaybeWrapNonDOMObjectValue(cx, args.rval());
30952}
30953
30954MOZ_CAN_RUN_SCRIPT static bool
30955set_writableDictionary(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
30956{
30957 BindingCallContext cx(cx_, "TestExampleInterface.writableDictionary setter");
30958 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject30961( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30959 "TestExampleInterface", "writableDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject30961( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30960 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject30961( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
30961 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject30961( cx, "TestExampleInterface"
, "writableDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
30962
30963 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
30964 RootedDictionary<binding_detail::FastDict> arg0(cx);
30965 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
30966 return false;
30967 }
30968 // NOTE: This assert does NOT call the function.
30969 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableDictionary(cx, Constify(arg0)))>, "Should be returning void here");
30970 MOZ_KnownLive(self)(self)->SetWritableDictionary(cx, Constify(arg0));
30971 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 30971); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 30971; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
30972
30973 ClearCachedWritableDictionaryValue(self);
30974 return true;
30975}
30976
30977static const JSJitInfo writableDictionary_getterinfo = {
30978 { get_writableDictionary },
30979 { prototypes::id::TestExampleInterface },
30980 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30981 JSJitInfo::Getter,
30982 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
30983 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
30984 false, /* isInfallible. False in setters. */
30985 true, /* isMovable. Not relevant for setters. */
30986 true, /* isEliminatable. Not relevant for setters. */
30987 false, /* isAlwaysInSlot. Only relevant for getters. */
30988 true, /* isLazilyCachedInSlot. Only relevant for getters. */
30989 false, /* isTypedMethod. Only relevant for methods. */
30990 (DOM_INSTANCE_RESERVED_SLOTS1 + 16) /* Reserved slot index, if we're stored in a slot, else 0. */
30991};
30992static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 16) <= JSJitInfo::maxSlotIndex, "We won't fit");
30993static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 16) < 22, "There is no slot for us");
30994static const JSJitInfo writableDictionary_setterinfo = {
30995 { (JSJitGetterOp)set_writableDictionary },
30996 { prototypes::id::TestExampleInterface },
30997 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
30998 JSJitInfo::Setter,
30999 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31000 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31001 false, /* isInfallible. False in setters. */
31002 false, /* isMovable. Not relevant for setters. */
31003 false, /* isEliminatable. Not relevant for setters. */
31004 false, /* isAlwaysInSlot. Only relevant for getters. */
31005 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31006 false, /* isTypedMethod. Only relevant for methods. */
31007 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31008};
31009
31010MOZ_CAN_RUN_SCRIPT static bool
31011get_readonlyFrozenDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
31012{
31013 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31016( cx, "TestExampleInterface"
, "readonlyFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31014 "TestExampleInterface", "readonlyFrozenDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31016( cx, "TestExampleInterface"
, "readonlyFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31015 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject31016( cx, "TestExampleInterface"
, "readonlyFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31016 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31016( cx, "TestExampleInterface"
, "readonlyFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31017
31018 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31019 // Have to either root across the getter call or reget after.
31020 bool isXray;
31021 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
31022 if (!slotStorage) {
31023 return false;
31024 }
31025 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 17) : (DOM_INSTANCE_RESERVED_SLOTS1 + 17);
31026 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 31026); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 31026; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
31027 {
31028 // Scope for cachedVal
31029 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
31030 if (!cachedVal.isUndefined()) {
31031 args.rval().set(cachedVal);
31032 // The cached value is in the compartment of slotStorage,
31033 // so wrap into the caller compartment as needed.
31034 return MaybeWrapNonDOMObjectValue(cx, args.rval());
31035 }
31036 }
31037
31038 RootedDictionary<Dict> result(cx);
31039 // NOTE: This assert does NOT call the function.
31040 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyFrozenDictionary(cx, result))>, "Should be returning void here");
31041 MOZ_KnownLive(self)(self)->GetReadonlyFrozenDictionary(cx, result);
31042 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31042); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31042; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31043 {
31044 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
31045 JSAutoRealm ar(cx, conversionScope);
31046 do { // block we break out of when done wrapping
31047 if (!result.ToObjectInternal(cx, args.rval())) {
31048 return false;
31049 }
31050 break;
31051 } while (false);
31052 JS::Rooted<JSObject*> rvalObj(cx, &args.rval().toObject());
31053 if (!JS_FreezeObject(cx, rvalObj)) {
31054 return false;
31055 }
31056 }
31057 { // And now store things in the realm of our slotStorage.
31058 JSAutoRealm ar(cx, slotStorage);
31059 // Make a copy so that we don't do unnecessary wrapping on args.rval().
31060 JS::Rooted<JS::Value> storedVal(cx, args.rval());
31061 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
31062 return false;
31063 }
31064 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
31065 if (!isXray) {
31066 // In the Xray case we don't need to do this, because getting the
31067 // expando object already preserved our wrapper.
31068 PreserveWrapper(self);
31069 }
31070 }
31071 // And now make sure args.rval() is in the caller realm.
31072 return MaybeWrapNonDOMObjectValue(cx, args.rval());
31073}
31074
31075static const JSJitInfo readonlyFrozenDictionary_getterinfo = {
31076 { get_readonlyFrozenDictionary },
31077 { prototypes::id::TestExampleInterface },
31078 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31079 JSJitInfo::Getter,
31080 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
31081 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
31082 false, /* isInfallible. False in setters. */
31083 true, /* isMovable. Not relevant for setters. */
31084 true, /* isEliminatable. Not relevant for setters. */
31085 false, /* isAlwaysInSlot. Only relevant for getters. */
31086 true, /* isLazilyCachedInSlot. Only relevant for getters. */
31087 false, /* isTypedMethod. Only relevant for methods. */
31088 (DOM_INSTANCE_RESERVED_SLOTS1 + 17) /* Reserved slot index, if we're stored in a slot, else 0. */
31089};
31090static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 17) <= JSJitInfo::maxSlotIndex, "We won't fit");
31091static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 17) < 22, "There is no slot for us");
31092
31093MOZ_CAN_RUN_SCRIPT static bool
31094get_readonlyFrozenNullableDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
31095{
31096 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31099( cx, "TestExampleInterface"
, "readonlyFrozenNullableDictionary", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31097 "TestExampleInterface", "readonlyFrozenNullableDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31099( cx, "TestExampleInterface"
, "readonlyFrozenNullableDictionary", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31098 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject31099( cx, "TestExampleInterface"
, "readonlyFrozenNullableDictionary", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31099 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31099( cx, "TestExampleInterface"
, "readonlyFrozenNullableDictionary", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31100
31101 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31102 // Have to either root across the getter call or reget after.
31103 bool isXray;
31104 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
31105 if (!slotStorage) {
31106 return false;
31107 }
31108 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 18) : (DOM_INSTANCE_RESERVED_SLOTS1 + 18);
31109 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 31109); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 31109; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
31110 {
31111 // Scope for cachedVal
31112 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
31113 if (!cachedVal.isUndefined()) {
31114 args.rval().set(cachedVal);
31115 // The cached value is in the compartment of slotStorage,
31116 // so wrap into the caller compartment as needed.
31117 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
31118 }
31119 }
31120
31121 NullableRootedDictionary<Dict> result(cx);
31122 // NOTE: This assert does NOT call the function.
31123 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReadonlyFrozenNullableDictionary(cx, result))>, "Should be returning void here");
31124 MOZ_KnownLive(self)(self)->GetReadonlyFrozenNullableDictionary(cx, result);
31125 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31125); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31125; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31126 {
31127 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
31128 JSAutoRealm ar(cx, conversionScope);
31129 do { // block we break out of when done wrapping
31130 if (result.IsNull()) {
31131 args.rval().setNull();
31132 break;
31133 }
31134 if (!result.Value().ToObjectInternal(cx, args.rval())) {
31135 return false;
31136 }
31137 break;
31138 } while (false);
31139 if (args.rval().isObject()) {
31140 JS::Rooted<JSObject*> rvalObj(cx, &args.rval().toObject());
31141 if (!JS_FreezeObject(cx, rvalObj)) {
31142 return false;
31143 }
31144 }
31145 }
31146 { // And now store things in the realm of our slotStorage.
31147 JSAutoRealm ar(cx, slotStorage);
31148 // Make a copy so that we don't do unnecessary wrapping on args.rval().
31149 JS::Rooted<JS::Value> storedVal(cx, args.rval());
31150 if (!MaybeWrapNonDOMObjectOrNullValue(cx, &storedVal)) {
31151 return false;
31152 }
31153 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
31154 if (!isXray) {
31155 // In the Xray case we don't need to do this, because getting the
31156 // expando object already preserved our wrapper.
31157 PreserveWrapper(self);
31158 }
31159 }
31160 // And now make sure args.rval() is in the caller realm.
31161 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
31162}
31163
31164static const JSJitInfo readonlyFrozenNullableDictionary_getterinfo = {
31165 { get_readonlyFrozenNullableDictionary },
31166 { prototypes::id::TestExampleInterface },
31167 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31168 JSJitInfo::Getter,
31169 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
31170 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
31171 false, /* isInfallible. False in setters. */
31172 true, /* isMovable. Not relevant for setters. */
31173 true, /* isEliminatable. Not relevant for setters. */
31174 false, /* isAlwaysInSlot. Only relevant for getters. */
31175 true, /* isLazilyCachedInSlot. Only relevant for getters. */
31176 false, /* isTypedMethod. Only relevant for methods. */
31177 (DOM_INSTANCE_RESERVED_SLOTS1 + 18) /* Reserved slot index, if we're stored in a slot, else 0. */
31178};
31179static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 18) <= JSJitInfo::maxSlotIndex, "We won't fit");
31180static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 18) < 22, "There is no slot for us");
31181
31182MOZ_CAN_RUN_SCRIPT static bool
31183get_writableFrozenDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
31184{
31185 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31188( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31186 "TestExampleInterface", "writableFrozenDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31188( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31187 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject31188( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31188 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31188( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31189
31190 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31191 // Have to either root across the getter call or reget after.
31192 bool isXray;
31193 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
31194 if (!slotStorage) {
31195 return false;
31196 }
31197 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 19) : (DOM_INSTANCE_RESERVED_SLOTS1 + 19);
31198 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 31198); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 31198; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
31199 {
31200 // Scope for cachedVal
31201 JS::Value cachedVal = JS::GetReservedSlot(slotStorage, slotIndex);
31202 if (!cachedVal.isUndefined()) {
31203 args.rval().set(cachedVal);
31204 // The cached value is in the compartment of slotStorage,
31205 // so wrap into the caller compartment as needed.
31206 return MaybeWrapNonDOMObjectValue(cx, args.rval());
31207 }
31208 }
31209
31210 RootedDictionary<Dict> result(cx);
31211 // NOTE: This assert does NOT call the function.
31212 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetWritableFrozenDictionary(cx, result))>, "Should be returning void here");
31213 MOZ_KnownLive(self)(self)->GetWritableFrozenDictionary(cx, result);
31214 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31214); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31214; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31215 {
31216 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
31217 JSAutoRealm ar(cx, conversionScope);
31218 do { // block we break out of when done wrapping
31219 if (!result.ToObjectInternal(cx, args.rval())) {
31220 return false;
31221 }
31222 break;
31223 } while (false);
31224 JS::Rooted<JSObject*> rvalObj(cx, &args.rval().toObject());
31225 if (!JS_FreezeObject(cx, rvalObj)) {
31226 return false;
31227 }
31228 }
31229 { // And now store things in the realm of our slotStorage.
31230 JSAutoRealm ar(cx, slotStorage);
31231 // Make a copy so that we don't do unnecessary wrapping on args.rval().
31232 JS::Rooted<JS::Value> storedVal(cx, args.rval());
31233 if (!MaybeWrapNonDOMObjectValue(cx, &storedVal)) {
31234 return false;
31235 }
31236 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
31237 if (!isXray) {
31238 // In the Xray case we don't need to do this, because getting the
31239 // expando object already preserved our wrapper.
31240 PreserveWrapper(self);
31241 }
31242 }
31243 // And now make sure args.rval() is in the caller realm.
31244 return MaybeWrapNonDOMObjectValue(cx, args.rval());
31245}
31246
31247MOZ_CAN_RUN_SCRIPT static bool
31248set_writableFrozenDictionary(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
31249{
31250 BindingCallContext cx(cx_, "TestExampleInterface.writableFrozenDictionary setter");
31251 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31254( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31252 "TestExampleInterface", "writableFrozenDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31254( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31253 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject31254( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31254 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31254( cx, "TestExampleInterface"
, "writableFrozenDictionary", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31255
31256 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31257 RootedDictionary<binding_detail::FastDict> arg0(cx);
31258 if (!arg0.Init(cx, args[0], "Value being assigned", false)) {
31259 return false;
31260 }
31261 // NOTE: This assert does NOT call the function.
31262 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetWritableFrozenDictionary(cx, Constify(arg0)))>, "Should be returning void here");
31263 MOZ_KnownLive(self)(self)->SetWritableFrozenDictionary(cx, Constify(arg0));
31264 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31264); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31264; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31265
31266 ClearCachedWritableFrozenDictionaryValue(self);
31267 return true;
31268}
31269
31270static const JSJitInfo writableFrozenDictionary_getterinfo = {
31271 { get_writableFrozenDictionary },
31272 { prototypes::id::TestExampleInterface },
31273 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31274 JSJitInfo::Getter,
31275 JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
31276 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
31277 false, /* isInfallible. False in setters. */
31278 true, /* isMovable. Not relevant for setters. */
31279 true, /* isEliminatable. Not relevant for setters. */
31280 false, /* isAlwaysInSlot. Only relevant for getters. */
31281 true, /* isLazilyCachedInSlot. Only relevant for getters. */
31282 false, /* isTypedMethod. Only relevant for methods. */
31283 (DOM_INSTANCE_RESERVED_SLOTS1 + 19) /* Reserved slot index, if we're stored in a slot, else 0. */
31284};
31285static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 19) <= JSJitInfo::maxSlotIndex, "We won't fit");
31286static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 19) < 22, "There is no slot for us");
31287static const JSJitInfo writableFrozenDictionary_setterinfo = {
31288 { (JSJitGetterOp)set_writableFrozenDictionary },
31289 { prototypes::id::TestExampleInterface },
31290 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31291 JSJitInfo::Setter,
31292 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31293 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31294 false, /* isInfallible. False in setters. */
31295 false, /* isMovable. Not relevant for setters. */
31296 false, /* isEliminatable. Not relevant for setters. */
31297 false, /* isAlwaysInSlot. Only relevant for getters. */
31298 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31299 false, /* isTypedMethod. Only relevant for methods. */
31300 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31301};
31302
31303MOZ_CAN_RUN_SCRIPT static bool
31304receiveDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31305{
31306 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31309( cx, "TestExampleInterface"
, "receiveDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31307 "TestExampleInterface", "receiveDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31309( cx, "TestExampleInterface"
, "receiveDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31308 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31309( cx, "TestExampleInterface"
, "receiveDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31309 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31309( cx, "TestExampleInterface"
, "receiveDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31310
31311 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31312 RootedDictionary<Dict> result(cx);
31313 // NOTE: This assert does NOT call the function.
31314 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveDictionary(cx, result))>, "Should be returning void here");
31315 MOZ_KnownLive(self)(self)->ReceiveDictionary(cx, result);
31316 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31316); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31316; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31317 if (!result.ToObjectInternal(cx, args.rval())) {
31318 return false;
31319 }
31320 return true;
31321}
31322
31323static const JSJitInfo receiveDictionary_methodinfo = {
31324 { (JSJitGetterOp)receiveDictionary },
31325 { prototypes::id::TestExampleInterface },
31326 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31327 JSJitInfo::Method,
31328 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31329 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
31330 false, /* isInfallible. False in setters. */
31331 false, /* isMovable. Not relevant for setters. */
31332 false, /* isEliminatable. Not relevant for setters. */
31333 false, /* isAlwaysInSlot. Only relevant for getters. */
31334 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31335 false, /* isTypedMethod. Only relevant for methods. */
31336 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31337};
31338
31339MOZ_CAN_RUN_SCRIPT static bool
31340receiveNullableDictionary(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31341{
31342 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31345( cx, "TestExampleInterface"
, "receiveNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31343 "TestExampleInterface", "receiveNullableDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31345( cx, "TestExampleInterface"
, "receiveNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31344 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31345( cx, "TestExampleInterface"
, "receiveNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31345 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31345( cx, "TestExampleInterface"
, "receiveNullableDictionary", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31346
31347 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31348 NullableRootedDictionary<Dict> result(cx);
31349 // NOTE: This assert does NOT call the function.
31350 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveNullableDictionary(cx, result))>, "Should be returning void here");
31351 MOZ_KnownLive(self)(self)->ReceiveNullableDictionary(cx, result);
31352 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31352); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31352; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31353 if (result.IsNull()) {
31354 args.rval().setNull();
31355 return true;
31356 }
31357 if (!result.Value().ToObjectInternal(cx, args.rval())) {
31358 return false;
31359 }
31360 return true;
31361}
31362
31363static const JSJitInfo receiveNullableDictionary_methodinfo = {
31364 { (JSJitGetterOp)receiveNullableDictionary },
31365 { prototypes::id::TestExampleInterface },
31366 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31367 JSJitInfo::Method,
31368 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31369 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
31370 false, /* isInfallible. False in setters. */
31371 false, /* isMovable. Not relevant for setters. */
31372 false, /* isEliminatable. Not relevant for setters. */
31373 false, /* isAlwaysInSlot. Only relevant for getters. */
31374 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31375 false, /* isTypedMethod. Only relevant for methods. */
31376 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31377};
31378
31379MOZ_CAN_RUN_SCRIPT static bool
31380passOtherDictionary(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31381{
31382 BindingCallContext cx(cx_, "TestExampleInterface.passOtherDictionary");
31383 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31386( cx, "TestExampleInterface"
, "passOtherDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31384 "TestExampleInterface", "passOtherDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31386( cx, "TestExampleInterface"
, "passOtherDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31385 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31386( cx, "TestExampleInterface"
, "passOtherDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31386 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31386( cx, "TestExampleInterface"
, "passOtherDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31387
31388 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31389 binding_detail::FastGrandparentDict arg0;
31390 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
31391 return false;
31392 }
31393 // NOTE: This assert does NOT call the function.
31394 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassOtherDictionary(Constify(arg0)))>, "Should be returning void here");
31395 MOZ_KnownLive(self)(self)->PassOtherDictionary(Constify(arg0));
31396 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31396); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31396; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31397 args.rval().setUndefined();
31398 return true;
31399}
31400
31401static const JSJitInfo passOtherDictionary_methodinfo = {
31402 { (JSJitGetterOp)passOtherDictionary },
31403 { prototypes::id::TestExampleInterface },
31404 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31405 JSJitInfo::Method,
31406 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31407 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31408 false, /* isInfallible. False in setters. */
31409 false, /* isMovable. Not relevant for setters. */
31410 false, /* isEliminatable. Not relevant for setters. */
31411 false, /* isAlwaysInSlot. Only relevant for getters. */
31412 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31413 false, /* isTypedMethod. Only relevant for methods. */
31414 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31415};
31416
31417MOZ_CAN_RUN_SCRIPT static bool
31418passSequenceOfDictionaries(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31419{
31420 BindingCallContext cx(cx_, "TestExampleInterface.passSequenceOfDictionaries");
31421 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31424( cx, "TestExampleInterface"
, "passSequenceOfDictionaries", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31422 "TestExampleInterface", "passSequenceOfDictionaries", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31424( cx, "TestExampleInterface"
, "passSequenceOfDictionaries", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31423 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31424( cx, "TestExampleInterface"
, "passSequenceOfDictionaries", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31424 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31424( cx, "TestExampleInterface"
, "passSequenceOfDictionaries", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31425
31426 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31427 if (!args.requireAtLeast(cx, "TestExampleInterface.passSequenceOfDictionaries", 1)) {
31428 return false;
31429 }
31430 binding_detail::AutoSequence<Dict> arg0;
31431 SequenceRooter<Dict> arg0_holder(cx, &arg0);
31432 if (args[0].isObject()) {
31433 JS::ForOfIterator iter(cx);
31434 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
31435 return false;
31436 }
31437 if (!iter.valueIsIterable()) {
31438 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
31439 return false;
31440 }
31441 binding_detail::AutoSequence<Dict> &arr = arg0;
31442 JS::Rooted<JS::Value> temp(cx);
31443 while (true) {
31444 bool done;
31445 if (!iter.next(&temp, &done)) {
31446 return false;
31447 }
31448 if (done) {
31449 break;
31450 }
31451 Dict* slotPtr = arr.AppendElement(mozilla::fallible);
31452 if (!slotPtr) {
31453 JS_ReportOutOfMemory(cx);
31454 return false;
31455 }
31456 Dict& slot = *slotPtr;
31457 if (!slot.Init(cx, temp, "Element of argument 1", false)) {
31458 return false;
31459 }
31460 }
31461 } else {
31462 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Argument 1", "sequence");
31463 return false;
31464 }
31465 // NOTE: This assert does NOT call the function.
31466 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassSequenceOfDictionaries(cx, Constify(arg0)))>, "Should be returning void here");
31467 MOZ_KnownLive(self)(self)->PassSequenceOfDictionaries(cx, Constify(arg0));
31468 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31468); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31468; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31469 args.rval().setUndefined();
31470 return true;
31471}
31472
31473static const JSJitInfo passSequenceOfDictionaries_methodinfo = {
31474 { (JSJitGetterOp)passSequenceOfDictionaries },
31475 { prototypes::id::TestExampleInterface },
31476 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31477 JSJitInfo::Method,
31478 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31479 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31480 false, /* isInfallible. False in setters. */
31481 false, /* isMovable. Not relevant for setters. */
31482 false, /* isEliminatable. Not relevant for setters. */
31483 false, /* isAlwaysInSlot. Only relevant for getters. */
31484 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31485 false, /* isTypedMethod. Only relevant for methods. */
31486 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31487};
31488
31489MOZ_CAN_RUN_SCRIPT static bool
31490passRecordOfDictionaries(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31491{
31492 BindingCallContext cx(cx_, "TestExampleInterface.passRecordOfDictionaries");
31493 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31496( cx, "TestExampleInterface"
, "passRecordOfDictionaries", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31494 "TestExampleInterface", "passRecordOfDictionaries", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31496( cx, "TestExampleInterface"
, "passRecordOfDictionaries", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31495 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31496( cx, "TestExampleInterface"
, "passRecordOfDictionaries", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31496 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31496( cx, "TestExampleInterface"
, "passRecordOfDictionaries", JS::ProfilingCategoryPair::DOM,
uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31497
31498 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31499 if (!args.requireAtLeast(cx, "TestExampleInterface.passRecordOfDictionaries", 1)) {
31500 return false;
31501 }
31502 Record<nsString, GrandparentDict> arg0;
31503 if (args[0].isObject()) {
31504 auto& recordEntries = arg0.Entries();
31505
31506 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
31507 JS::RootedVector<jsid> ids(cx);
31508 if (!js::GetPropertyKeys(cx, recordObj,
31509 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
31510 return false;
31511 }
31512 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
31513 JS_ReportOutOfMemory(cx);
31514 return false;
31515 }
31516 JS::Rooted<JS::Value> propNameValue(cx);
31517 JS::Rooted<JS::Value> temp(cx);
31518 JS::Rooted<jsid> curId(cx);
31519 JS::Rooted<JS::Value> idVal(cx);
31520 // Use a hashset to keep track of ids seen, to avoid
31521 // introducing nasty O(N^2) behavior scanning for them all the
31522 // time. Ideally we'd use a data structure with O(1) lookup
31523 // _and_ ordering for the MozMap, but we don't have one lying
31524 // around.
31525 nsTHashtable<nsStringHashKey> idsSeen;
31526 for (size_t i = 0; i < ids.length(); ++i) {
31527 curId = ids[i];
31528
31529 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
31530 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
31531 &desc)) {
31532 return false;
31533 }
31534
31535 if (desc.isNothing() || !desc->enumerable()) {
31536 continue;
31537 }
31538
31539 idVal = js::IdToValue(curId);
31540 nsString propName;
31541 // This will just throw if idVal is a Symbol, like the spec says
31542 // to do.
31543 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
31544 return false;
31545 }
31546
31547 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
31548 return false;
31549 }
31550
31551 Record<nsString, GrandparentDict>::EntryType* entry;
31552 if (!idsSeen.EnsureInserted(propName)) {
31553 // Find the existing entry.
31554 auto idx = recordEntries.IndexOf(propName);
31555 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 31556); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 31556; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
31556 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 31556); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 31556; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
31557 // Now blow it away to make it look like it was just added
31558 // to the array, because it's not obvious that it's
31559 // safe to write to its already-initialized mValue via our
31560 // normal codegen conversions. For example, the value
31561 // could be a union and this would change its type, but
31562 // codegen assumes we won't do that.
31563 entry = recordEntries.ReconstructElementAt(idx);
31564 } else {
31565 // Safe to do an infallible append here, because we did a
31566 // SetCapacity above to the right capacity.
31567 entry = recordEntries.AppendElement();
31568 }
31569 entry->mKey = propName;
31570 GrandparentDict& slot = entry->mValue;
31571 if (!slot.Init(cx, temp, "Value in argument 1", false)) {
31572 return false;
31573 }
31574 }
31575 } else {
31576 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
31577 return false;
31578 }
31579 // NOTE: This assert does NOT call the function.
31580 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRecordOfDictionaries(Constify(arg0)))>, "Should be returning void here");
31581 MOZ_KnownLive(self)(self)->PassRecordOfDictionaries(Constify(arg0));
31582 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31582); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31582; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31583 args.rval().setUndefined();
31584 return true;
31585}
31586
31587static const JSJitInfo passRecordOfDictionaries_methodinfo = {
31588 { (JSJitGetterOp)passRecordOfDictionaries },
31589 { prototypes::id::TestExampleInterface },
31590 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31591 JSJitInfo::Method,
31592 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31593 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31594 false, /* isInfallible. False in setters. */
31595 false, /* isMovable. Not relevant for setters. */
31596 false, /* isEliminatable. Not relevant for setters. */
31597 false, /* isAlwaysInSlot. Only relevant for getters. */
31598 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31599 false, /* isTypedMethod. Only relevant for methods. */
31600 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31601};
31602
31603MOZ_CAN_RUN_SCRIPT static bool
31604passDictionaryOrLong(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31605{
31606 BindingCallContext cx(cx_, "TestExampleInterface.passDictionaryOrLong");
31607 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31610( cx, "TestExampleInterface"
, "passDictionaryOrLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31608 "TestExampleInterface", "passDictionaryOrLong", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31610( cx, "TestExampleInterface"
, "passDictionaryOrLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31609 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31610( cx, "TestExampleInterface"
, "passDictionaryOrLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31610 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31610( cx, "TestExampleInterface"
, "passDictionaryOrLong", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31611
31612 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31613 unsigned argcount = std::min(args.length(), 1u);
31614 switch (argcount) {
31615 case 0: {
31616 RootedDictionary<binding_detail::FastDict> arg0(cx);
31617 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
31618 return false;
31619 }
31620 // NOTE: This assert does NOT call the function.
31621 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictionaryOrLong(cx, Constify(arg0)))>, "Should be returning void here");
31622 MOZ_KnownLive(self)(self)->PassDictionaryOrLong(cx, Constify(arg0));
31623 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31623); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31623; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31624 args.rval().setUndefined();
31625 return true;
31626 break;
31627 }
31628 case 1: {
31629 if (args[0].isNullOrUndefined()) {
31630 RootedDictionary<binding_detail::FastDict> arg0(cx);
31631 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
31632 return false;
31633 }
31634 // NOTE: This assert does NOT call the function.
31635 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictionaryOrLong(cx, Constify(arg0)))>, "Should be returning void here");
31636 MOZ_KnownLive(self)(self)->PassDictionaryOrLong(cx, Constify(arg0));
31637 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31637); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31637; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31638 args.rval().setUndefined();
31639 return true;
31640 }
31641 if (args[0].isObject()) {
31642 do {
31643 RootedDictionary<binding_detail::FastDict> arg0(cx);
31644 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
31645 return false;
31646 }
31647 // NOTE: This assert does NOT call the function.
31648 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictionaryOrLong(cx, Constify(arg0)))>, "Should be returning void here");
31649 MOZ_KnownLive(self)(self)->PassDictionaryOrLong(cx, Constify(arg0));
31650 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31650); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31650; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31651 args.rval().setUndefined();
31652 return true;
31653 } while (false);
31654 }
31655 int32_t arg0;
31656 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
31657 return false;
31658 }
31659 // NOTE: This assert does NOT call the function.
31660 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictionaryOrLong(arg0))>, "Should be returning void here");
31661 MOZ_KnownLive(self)(self)->PassDictionaryOrLong(arg0);
31662 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31662); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31662; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31663 args.rval().setUndefined();
31664 return true;
31665 break;
31666 }
31667 default: {
31668 // Using nsPrintfCString here would require including that
31669 // header. Let's not worry about it.
31670 nsAutoCString argCountStr;
31671 argCountStr.AppendPrintf("%u", args.length());
31672 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
31673 }
31674 }
31675 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 31675); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 31675; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
31676 return false;
31677}
31678
31679static const JSJitInfo passDictionaryOrLong_methodinfo = {
31680 { (JSJitGetterOp)passDictionaryOrLong },
31681 { prototypes::id::TestExampleInterface },
31682 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31683 JSJitInfo::Method,
31684 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31685 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31686 false, /* isInfallible. False in setters. */
31687 false, /* isMovable. Not relevant for setters. */
31688 false, /* isEliminatable. Not relevant for setters. */
31689 false, /* isAlwaysInSlot. Only relevant for getters. */
31690 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31691 false, /* isTypedMethod. Only relevant for methods. */
31692 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31693};
31694
31695MOZ_CAN_RUN_SCRIPT static bool
31696passDictContainingDict(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31697{
31698 BindingCallContext cx(cx_, "TestExampleInterface.passDictContainingDict");
31699 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31702( cx, "TestExampleInterface"
, "passDictContainingDict", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31700 "TestExampleInterface", "passDictContainingDict", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31702( cx, "TestExampleInterface"
, "passDictContainingDict", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31701 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31702( cx, "TestExampleInterface"
, "passDictContainingDict", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31702 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31702( cx, "TestExampleInterface"
, "passDictContainingDict", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31703
31704 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31705 RootedDictionary<binding_detail::FastDictContainingDict> arg0(cx);
31706 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
31707 return false;
31708 }
31709 // NOTE: This assert does NOT call the function.
31710 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictContainingDict(cx, Constify(arg0)))>, "Should be returning void here");
31711 MOZ_KnownLive(self)(self)->PassDictContainingDict(cx, Constify(arg0));
31712 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31712); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31712; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31713 args.rval().setUndefined();
31714 return true;
31715}
31716
31717static const JSJitInfo passDictContainingDict_methodinfo = {
31718 { (JSJitGetterOp)passDictContainingDict },
31719 { prototypes::id::TestExampleInterface },
31720 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31721 JSJitInfo::Method,
31722 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31723 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31724 false, /* isInfallible. False in setters. */
31725 false, /* isMovable. Not relevant for setters. */
31726 false, /* isEliminatable. Not relevant for setters. */
31727 false, /* isAlwaysInSlot. Only relevant for getters. */
31728 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31729 false, /* isTypedMethod. Only relevant for methods. */
31730 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31731};
31732
31733MOZ_CAN_RUN_SCRIPT static bool
31734passDictContainingSequence(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31735{
31736 BindingCallContext cx(cx_, "TestExampleInterface.passDictContainingSequence");
31737 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31740( cx, "TestExampleInterface"
, "passDictContainingSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31738 "TestExampleInterface", "passDictContainingSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31740( cx, "TestExampleInterface"
, "passDictContainingSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31739 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31740( cx, "TestExampleInterface"
, "passDictContainingSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31740 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31740( cx, "TestExampleInterface"
, "passDictContainingSequence", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31741
31742 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31743 RootedDictionary<binding_detail::FastDictContainingSequence> arg0(cx);
31744 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
31745 return false;
31746 }
31747 // NOTE: This assert does NOT call the function.
31748 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassDictContainingSequence(cx, Constify(arg0)))>, "Should be returning void here");
31749 MOZ_KnownLive(self)(self)->PassDictContainingSequence(cx, Constify(arg0));
31750 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31750); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31750; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31751 args.rval().setUndefined();
31752 return true;
31753}
31754
31755static const JSJitInfo passDictContainingSequence_methodinfo = {
31756 { (JSJitGetterOp)passDictContainingSequence },
31757 { prototypes::id::TestExampleInterface },
31758 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31759 JSJitInfo::Method,
31760 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31761 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31762 false, /* isInfallible. False in setters. */
31763 false, /* isMovable. Not relevant for setters. */
31764 false, /* isEliminatable. Not relevant for setters. */
31765 false, /* isAlwaysInSlot. Only relevant for getters. */
31766 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31767 false, /* isTypedMethod. Only relevant for methods. */
31768 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31769};
31770
31771MOZ_CAN_RUN_SCRIPT static bool
31772receiveDictContainingSequence(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31773{
31774 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31777( cx, "TestExampleInterface"
, "receiveDictContainingSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31775 "TestExampleInterface", "receiveDictContainingSequence", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31777( cx, "TestExampleInterface"
, "receiveDictContainingSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31776 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31777( cx, "TestExampleInterface"
, "receiveDictContainingSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
31777 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31777( cx, "TestExampleInterface"
, "receiveDictContainingSequence", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
31778
31779 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31780 RootedDictionary<DictContainingSequence> result(cx);
31781 // NOTE: This assert does NOT call the function.
31782 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ReceiveDictContainingSequence(cx, result))>, "Should be returning void here");
31783 MOZ_KnownLive(self)(self)->ReceiveDictContainingSequence(cx, result);
31784 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31784); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31784; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31785 if (!result.ToObjectInternal(cx, args.rval())) {
31786 return false;
31787 }
31788 return true;
31789}
31790
31791static const JSJitInfo receiveDictContainingSequence_methodinfo = {
31792 { (JSJitGetterOp)receiveDictContainingSequence },
31793 { prototypes::id::TestExampleInterface },
31794 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31795 JSJitInfo::Method,
31796 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31797 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
31798 false, /* isInfallible. False in setters. */
31799 false, /* isMovable. Not relevant for setters. */
31800 false, /* isEliminatable. Not relevant for setters. */
31801 false, /* isAlwaysInSlot. Only relevant for getters. */
31802 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31803 false, /* isTypedMethod. Only relevant for methods. */
31804 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31805};
31806
31807MOZ_CAN_RUN_SCRIPT static bool
31808passVariadicDictionary(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31809{
31810 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicDictionary");
31811 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31814( cx, "TestExampleInterface"
, "passVariadicDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31812 "TestExampleInterface", "passVariadicDictionary", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31814( cx, "TestExampleInterface"
, "passVariadicDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31813 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31814( cx, "TestExampleInterface"
, "passVariadicDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31814 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31814( cx, "TestExampleInterface"
, "passVariadicDictionary", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31815
31816 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31817 AutoSequence<Dict> arg0;
31818 SequenceRooter<Dict> arg0_holder(cx, &arg0);
31819 if (args.length() > 0) {
31820 if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
31821 JS_ReportOutOfMemory(cx);
31822 return false;
31823 }
31824 for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
31825 // OK to do infallible append here, since we ensured capacity already.
31826 Dict& slot = *arg0.AppendElement();
31827 if (!slot.Init(cx, args[variadicArg], "Argument 1", false)) {
31828 return false;
31829 }
31830 }
31831 }
31832 // NOTE: This assert does NOT call the function.
31833 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicDictionary(cx, Constify(arg0)))>, "Should be returning void here");
31834 MOZ_KnownLive(self)(self)->PassVariadicDictionary(cx, Constify(arg0));
31835 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31835); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31835; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31836 args.rval().setUndefined();
31837 return true;
31838}
31839
31840static const JSJitInfo passVariadicDictionary_methodinfo = {
31841 { (JSJitGetterOp)passVariadicDictionary },
31842 { prototypes::id::TestExampleInterface },
31843 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31844 JSJitInfo::Method,
31845 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31846 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31847 false, /* isInfallible. False in setters. */
31848 false, /* isMovable. Not relevant for setters. */
31849 false, /* isEliminatable. Not relevant for setters. */
31850 false, /* isAlwaysInSlot. Only relevant for getters. */
31851 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31852 false, /* isTypedMethod. Only relevant for methods. */
31853 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31854};
31855
31856MOZ_CAN_RUN_SCRIPT static bool
31857dontEnforceRangeOrClamp(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31858{
31859 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31862( cx, "TestExampleInterface"
, "dontEnforceRangeOrClamp", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31860 "TestExampleInterface", "dontEnforceRangeOrClamp", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31862( cx, "TestExampleInterface"
, "dontEnforceRangeOrClamp", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31861 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31862( cx, "TestExampleInterface"
, "dontEnforceRangeOrClamp", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31862 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31862( cx, "TestExampleInterface"
, "dontEnforceRangeOrClamp", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31863
31864 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31865 if (!args.requireAtLeast(cx, "TestExampleInterface.dontEnforceRangeOrClamp", 1)) {
31866 return false;
31867 }
31868 int8_t arg0;
31869 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
31870 return false;
31871 }
31872 // NOTE: This assert does NOT call the function.
31873 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DontEnforceRangeOrClamp(arg0))>, "Should be returning void here");
31874 MOZ_KnownLive(self)(self)->DontEnforceRangeOrClamp(arg0);
31875 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31875); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31875; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31876 args.rval().setUndefined();
31877 return true;
31878}
31879
31880static const JSJitInfo dontEnforceRangeOrClamp_methodinfo = {
31881 { (JSJitGetterOp)dontEnforceRangeOrClamp },
31882 { prototypes::id::TestExampleInterface },
31883 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31884 JSJitInfo::Method,
31885 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31886 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31887 false, /* isInfallible. False in setters. */
31888 false, /* isMovable. Not relevant for setters. */
31889 false, /* isEliminatable. Not relevant for setters. */
31890 false, /* isAlwaysInSlot. Only relevant for getters. */
31891 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31892 false, /* isTypedMethod. Only relevant for methods. */
31893 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31894};
31895
31896MOZ_CAN_RUN_SCRIPT static bool
31897doEnforceRange(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31898{
31899 BindingCallContext cx(cx_, "TestExampleInterface.doEnforceRange");
31900 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31903( cx, "TestExampleInterface"
, "doEnforceRange", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31901 "TestExampleInterface", "doEnforceRange", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31903( cx, "TestExampleInterface"
, "doEnforceRange", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31902 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31903( cx, "TestExampleInterface"
, "doEnforceRange", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31903 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31903( cx, "TestExampleInterface"
, "doEnforceRange", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31904
31905 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31906 if (!args.requireAtLeast(cx, "TestExampleInterface.doEnforceRange", 1)) {
31907 return false;
31908 }
31909 int8_t arg0;
31910 if (!ValueToPrimitive<int8_t, eEnforceRange>(cx, args[0], "Argument 1", &arg0)) {
31911 return false;
31912 }
31913 // NOTE: This assert does NOT call the function.
31914 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DoEnforceRange(arg0))>, "Should be returning void here");
31915 MOZ_KnownLive(self)(self)->DoEnforceRange(arg0);
31916 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31916); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31916; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31917 args.rval().setUndefined();
31918 return true;
31919}
31920
31921static const JSJitInfo doEnforceRange_methodinfo = {
31922 { (JSJitGetterOp)doEnforceRange },
31923 { prototypes::id::TestExampleInterface },
31924 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31925 JSJitInfo::Method,
31926 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31927 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31928 false, /* isInfallible. False in setters. */
31929 false, /* isMovable. Not relevant for setters. */
31930 false, /* isEliminatable. Not relevant for setters. */
31931 false, /* isAlwaysInSlot. Only relevant for getters. */
31932 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31933 false, /* isTypedMethod. Only relevant for methods. */
31934 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31935};
31936
31937MOZ_CAN_RUN_SCRIPT static bool
31938doEnforceRangeNullable(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31939{
31940 BindingCallContext cx(cx_, "TestExampleInterface.doEnforceRangeNullable");
31941 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31944( cx, "TestExampleInterface"
, "doEnforceRangeNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31942 "TestExampleInterface", "doEnforceRangeNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31944( cx, "TestExampleInterface"
, "doEnforceRangeNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31943 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31944( cx, "TestExampleInterface"
, "doEnforceRangeNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
31944 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31944( cx, "TestExampleInterface"
, "doEnforceRangeNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
31945
31946 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31947 if (!args.requireAtLeast(cx, "TestExampleInterface.doEnforceRangeNullable", 1)) {
31948 return false;
31949 }
31950 Nullable<int8_t> arg0;
31951 if (args[0].isNullOrUndefined()) {
31952 arg0.SetNull();
31953 } else if (!ValueToPrimitive<int8_t, eEnforceRange>(cx, args[0], "Argument 1", &arg0.SetValue())) {
31954 return false;
31955 }
31956 // NOTE: This assert does NOT call the function.
31957 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DoEnforceRangeNullable(Constify(arg0)))>, "Should be returning void here");
31958 MOZ_KnownLive(self)(self)->DoEnforceRangeNullable(Constify(arg0));
31959 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31959); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31959; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
31960 args.rval().setUndefined();
31961 return true;
31962}
31963
31964static const JSJitInfo doEnforceRangeNullable_methodinfo = {
31965 { (JSJitGetterOp)doEnforceRangeNullable },
31966 { prototypes::id::TestExampleInterface },
31967 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
31968 JSJitInfo::Method,
31969 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
31970 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
31971 false, /* isInfallible. False in setters. */
31972 false, /* isMovable. Not relevant for setters. */
31973 false, /* isEliminatable. Not relevant for setters. */
31974 false, /* isAlwaysInSlot. Only relevant for getters. */
31975 false, /* isLazilyCachedInSlot. Only relevant for getters. */
31976 false, /* isTypedMethod. Only relevant for methods. */
31977 0 /* Reserved slot index, if we're stored in a slot, else 0. */
31978};
31979
31980MOZ_CAN_RUN_SCRIPT static bool
31981doClamp(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
31982{
31983 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject31986( cx, "TestExampleInterface"
, "doClamp", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
31984 "TestExampleInterface", "doClamp", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject31986( cx, "TestExampleInterface"
, "doClamp", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
31985 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject31986( cx, "TestExampleInterface"
, "doClamp", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
31986 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject31986( cx, "TestExampleInterface"
, "doClamp", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
31987
31988 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
31989 if (!args.requireAtLeast(cx, "TestExampleInterface.doClamp", 1)) {
31990 return false;
31991 }
31992 int8_t arg0;
31993 if (!ValueToPrimitive<int8_t, eClamp>(cx, args[0], "Argument 1", &arg0)) {
31994 return false;
31995 }
31996 // NOTE: This assert does NOT call the function.
31997 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DoClamp(arg0))>, "Should be returning void here");
31998 MOZ_KnownLive(self)(self)->DoClamp(arg0);
31999 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 31999); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 31999; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32000 args.rval().setUndefined();
32001 return true;
32002}
32003
32004static const JSJitInfo doClamp_methodinfo = {
32005 { (JSJitGetterOp)doClamp },
32006 { prototypes::id::TestExampleInterface },
32007 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32008 JSJitInfo::Method,
32009 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32010 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32011 false, /* isInfallible. False in setters. */
32012 false, /* isMovable. Not relevant for setters. */
32013 false, /* isEliminatable. Not relevant for setters. */
32014 false, /* isAlwaysInSlot. Only relevant for getters. */
32015 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32016 false, /* isTypedMethod. Only relevant for methods. */
32017 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32018};
32019
32020MOZ_CAN_RUN_SCRIPT static bool
32021doClampNullable(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32022{
32023 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32026( cx, "TestExampleInterface"
, "doClampNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32024 "TestExampleInterface", "doClampNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32026( cx, "TestExampleInterface"
, "doClampNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32025 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32026( cx, "TestExampleInterface"
, "doClampNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32026 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32026( cx, "TestExampleInterface"
, "doClampNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32027
32028 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32029 if (!args.requireAtLeast(cx, "TestExampleInterface.doClampNullable", 1)) {
32030 return false;
32031 }
32032 Nullable<int8_t> arg0;
32033 if (args[0].isNullOrUndefined()) {
32034 arg0.SetNull();
32035 } else if (!ValueToPrimitive<int8_t, eClamp>(cx, args[0], "Argument 1", &arg0.SetValue())) {
32036 return false;
32037 }
32038 // NOTE: This assert does NOT call the function.
32039 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DoClampNullable(Constify(arg0)))>, "Should be returning void here");
32040 MOZ_KnownLive(self)(self)->DoClampNullable(Constify(arg0));
32041 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32041); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32041; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32042 args.rval().setUndefined();
32043 return true;
32044}
32045
32046static const JSJitInfo doClampNullable_methodinfo = {
32047 { (JSJitGetterOp)doClampNullable },
32048 { prototypes::id::TestExampleInterface },
32049 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32050 JSJitInfo::Method,
32051 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32052 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32053 false, /* isInfallible. False in setters. */
32054 false, /* isMovable. Not relevant for setters. */
32055 false, /* isEliminatable. Not relevant for setters. */
32056 false, /* isAlwaysInSlot. Only relevant for getters. */
32057 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32058 false, /* isTypedMethod. Only relevant for methods. */
32059 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32060};
32061
32062MOZ_CAN_RUN_SCRIPT static bool
32063get_enforcedByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
32064{
32065 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32068( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32066 "TestExampleInterface", "enforcedByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32068( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32067 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32068( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32068 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32068( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32069
32070 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32071 int8_t result(MOZ_KnownLive(self)(self)->EnforcedByte());
32072 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32072); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32072; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32073 args.rval().setInt32(int32_t(result));
32074 return true;
32075}
32076
32077MOZ_CAN_RUN_SCRIPT static bool
32078set_enforcedByte(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
32079{
32080 BindingCallContext cx(cx_, "TestExampleInterface.enforcedByte setter");
32081 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32084( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32082 "TestExampleInterface", "enforcedByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32084( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32083 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32084( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32084 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32084( cx, "TestExampleInterface"
, "enforcedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32085
32086 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32087 int8_t arg0;
32088 if (!ValueToPrimitive<int8_t, eEnforceRange>(cx, args[0], "Value being assigned", &arg0)) {
32089 return false;
32090 }
32091 // NOTE: This assert does NOT call the function.
32092 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetEnforcedByte(arg0))>, "Should be returning void here");
32093 MOZ_KnownLive(self)(self)->SetEnforcedByte(arg0);
32094 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32094); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32094; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32095
32096 return true;
32097}
32098
32099static const JSJitInfo enforcedByte_getterinfo = {
32100 { get_enforcedByte },
32101 { prototypes::id::TestExampleInterface },
32102 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32103 JSJitInfo::Getter,
32104 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32105 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
32106 true, /* isInfallible. False in setters. */
32107 false, /* isMovable. Not relevant for setters. */
32108 false, /* isEliminatable. Not relevant for setters. */
32109 false, /* isAlwaysInSlot. Only relevant for getters. */
32110 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32111 false, /* isTypedMethod. Only relevant for methods. */
32112 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32113};
32114static const JSJitInfo enforcedByte_setterinfo = {
32115 { (JSJitGetterOp)set_enforcedByte },
32116 { prototypes::id::TestExampleInterface },
32117 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32118 JSJitInfo::Setter,
32119 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32120 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32121 false, /* isInfallible. False in setters. */
32122 false, /* isMovable. Not relevant for setters. */
32123 false, /* isEliminatable. Not relevant for setters. */
32124 false, /* isAlwaysInSlot. Only relevant for getters. */
32125 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32126 false, /* isTypedMethod. Only relevant for methods. */
32127 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32128};
32129
32130MOZ_CAN_RUN_SCRIPT static bool
32131get_enforcedByteNullable(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
32132{
32133 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32136( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32134 "TestExampleInterface", "enforcedByteNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32136( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32135 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32136( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32136 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32136( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32137
32138 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32139 Nullable<int8_t> result(MOZ_KnownLive(self)(self)->GetEnforcedByteNullable());
32140 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32140); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32140; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32141 if (result.IsNull()) {
32142 args.rval().setNull();
32143 return true;
32144 }
32145 args.rval().setInt32(int32_t(result.Value()));
32146 return true;
32147}
32148
32149MOZ_CAN_RUN_SCRIPT static bool
32150set_enforcedByteNullable(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
32151{
32152 BindingCallContext cx(cx_, "TestExampleInterface.enforcedByteNullable setter");
32153 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32156( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32154 "TestExampleInterface", "enforcedByteNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32156( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32155 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32156( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32156 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32156( cx, "TestExampleInterface"
, "enforcedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32157
32158 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32159 Nullable<int8_t> arg0;
32160 if (args[0].isNullOrUndefined()) {
32161 arg0.SetNull();
32162 } else if (!ValueToPrimitive<int8_t, eEnforceRange>(cx, args[0], "Value being assigned", &arg0.SetValue())) {
32163 return false;
32164 }
32165 // NOTE: This assert does NOT call the function.
32166 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetEnforcedByteNullable(Constify(arg0)))>, "Should be returning void here");
32167 MOZ_KnownLive(self)(self)->SetEnforcedByteNullable(Constify(arg0));
32168 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32168); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32168; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32169
32170 return true;
32171}
32172
32173static const JSJitInfo enforcedByteNullable_getterinfo = {
32174 { get_enforcedByteNullable },
32175 { prototypes::id::TestExampleInterface },
32176 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32177 JSJitInfo::Getter,
32178 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32179 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
32180 true, /* isInfallible. False in setters. */
32181 false, /* isMovable. Not relevant for setters. */
32182 false, /* isEliminatable. Not relevant for setters. */
32183 false, /* isAlwaysInSlot. Only relevant for getters. */
32184 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32185 false, /* isTypedMethod. Only relevant for methods. */
32186 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32187};
32188static const JSJitInfo enforcedByteNullable_setterinfo = {
32189 { (JSJitGetterOp)set_enforcedByteNullable },
32190 { prototypes::id::TestExampleInterface },
32191 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32192 JSJitInfo::Setter,
32193 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32194 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32195 false, /* isInfallible. False in setters. */
32196 false, /* isMovable. Not relevant for setters. */
32197 false, /* isEliminatable. Not relevant for setters. */
32198 false, /* isAlwaysInSlot. Only relevant for getters. */
32199 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32200 false, /* isTypedMethod. Only relevant for methods. */
32201 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32202};
32203
32204MOZ_CAN_RUN_SCRIPT static bool
32205get_clampedByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
32206{
32207 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32210( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32208 "TestExampleInterface", "clampedByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32210( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32209 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32210( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32210 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32210( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32211
32212 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32213 int8_t result(MOZ_KnownLive(self)(self)->ClampedByte());
32214 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32214); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32214; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32215 args.rval().setInt32(int32_t(result));
32216 return true;
32217}
32218
32219MOZ_CAN_RUN_SCRIPT static bool
32220set_clampedByte(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
32221{
32222 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32225( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32223 "TestExampleInterface", "clampedByte", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32225( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32224 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32225( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32225 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32225( cx, "TestExampleInterface"
, "clampedByte", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32226
32227 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32228 int8_t arg0;
32229 if (!ValueToPrimitive<int8_t, eClamp>(cx, args[0], "Value being assigned", &arg0)) {
32230 return false;
32231 }
32232 // NOTE: This assert does NOT call the function.
32233 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetClampedByte(arg0))>, "Should be returning void here");
32234 MOZ_KnownLive(self)(self)->SetClampedByte(arg0);
32235 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32235); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32235; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32236
32237 return true;
32238}
32239
32240static const JSJitInfo clampedByte_getterinfo = {
32241 { get_clampedByte },
32242 { prototypes::id::TestExampleInterface },
32243 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32244 JSJitInfo::Getter,
32245 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32246 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
32247 true, /* isInfallible. False in setters. */
32248 false, /* isMovable. Not relevant for setters. */
32249 false, /* isEliminatable. Not relevant for setters. */
32250 false, /* isAlwaysInSlot. Only relevant for getters. */
32251 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32252 false, /* isTypedMethod. Only relevant for methods. */
32253 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32254};
32255static const JSJitInfo clampedByte_setterinfo = {
32256 { (JSJitGetterOp)set_clampedByte },
32257 { prototypes::id::TestExampleInterface },
32258 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32259 JSJitInfo::Setter,
32260 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32261 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32262 false, /* isInfallible. False in setters. */
32263 false, /* isMovable. Not relevant for setters. */
32264 false, /* isEliminatable. Not relevant for setters. */
32265 false, /* isAlwaysInSlot. Only relevant for getters. */
32266 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32267 false, /* isTypedMethod. Only relevant for methods. */
32268 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32269};
32270
32271MOZ_CAN_RUN_SCRIPT static bool
32272get_clampedByteNullable(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
32273{
32274 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32277( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32275 "TestExampleInterface", "clampedByteNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32277( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32276 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32277( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32277 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32277( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32278
32279 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32280 Nullable<int8_t> result(MOZ_KnownLive(self)(self)->GetClampedByteNullable());
32281 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32281); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32281; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32282 if (result.IsNull()) {
32283 args.rval().setNull();
32284 return true;
32285 }
32286 args.rval().setInt32(int32_t(result.Value()));
32287 return true;
32288}
32289
32290MOZ_CAN_RUN_SCRIPT static bool
32291set_clampedByteNullable(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
32292{
32293 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32296( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32294 "TestExampleInterface", "clampedByteNullable", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32296( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32295 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32296( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32296 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32296( cx, "TestExampleInterface"
, "clampedByteNullable", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32297
32298 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32299 Nullable<int8_t> arg0;
32300 if (args[0].isNullOrUndefined()) {
32301 arg0.SetNull();
32302 } else if (!ValueToPrimitive<int8_t, eClamp>(cx, args[0], "Value being assigned", &arg0.SetValue())) {
32303 return false;
32304 }
32305 // NOTE: This assert does NOT call the function.
32306 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetClampedByteNullable(Constify(arg0)))>, "Should be returning void here");
32307 MOZ_KnownLive(self)(self)->SetClampedByteNullable(Constify(arg0));
32308 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32308); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32308; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32309
32310 return true;
32311}
32312
32313static const JSJitInfo clampedByteNullable_getterinfo = {
32314 { get_clampedByteNullable },
32315 { prototypes::id::TestExampleInterface },
32316 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32317 JSJitInfo::Getter,
32318 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32319 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
32320 true, /* isInfallible. False in setters. */
32321 false, /* isMovable. Not relevant for setters. */
32322 false, /* isEliminatable. Not relevant for setters. */
32323 false, /* isAlwaysInSlot. Only relevant for getters. */
32324 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32325 false, /* isTypedMethod. Only relevant for methods. */
32326 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32327};
32328static const JSJitInfo clampedByteNullable_setterinfo = {
32329 { (JSJitGetterOp)set_clampedByteNullable },
32330 { prototypes::id::TestExampleInterface },
32331 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32332 JSJitInfo::Setter,
32333 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32334 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32335 false, /* isInfallible. False in setters. */
32336 false, /* isMovable. Not relevant for setters. */
32337 false, /* isEliminatable. Not relevant for setters. */
32338 false, /* isAlwaysInSlot. Only relevant for getters. */
32339 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32340 false, /* isTypedMethod. Only relevant for methods. */
32341 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32342};
32343
32344MOZ_CAN_RUN_SCRIPT static bool
32345exerciseTypedefInterfaces1(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32346{
32347 BindingCallContext cx(cx_, "TestExampleInterface.exerciseTypedefInterfaces1");
32348 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32351( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32349 "TestExampleInterface", "exerciseTypedefInterfaces1", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32351( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32350 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32351( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32351 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32351( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32352
32353 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32354 if (!args.requireAtLeast(cx, "TestExampleInterface.exerciseTypedefInterfaces1", 1)) {
32355 return false;
32356 }
32357 NonNull<mozilla::dom::TestInterface> arg0;
32358 if (args[0].isObject()) {
32359 {
32360 // Our JSContext should be in the right global to do unwrapping in.
32361 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
32362 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
32363 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
32364 return false;
32365 }
32366 }
32367 } else {
32368 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
32369 return false;
32370 }
32371 // NOTE: This assert does NOT call the function.
32372 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ExerciseTypedefInterfaces1(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
32373 MOZ_KnownLive(self)(self)->ExerciseTypedefInterfaces1(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
32374 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32374); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32374; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32375 args.rval().setUndefined();
32376 return true;
32377}
32378
32379static const JSJitInfo exerciseTypedefInterfaces1_methodinfo = {
32380 { (JSJitGetterOp)exerciseTypedefInterfaces1 },
32381 { prototypes::id::TestExampleInterface },
32382 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32383 JSJitInfo::Method,
32384 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32385 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32386 false, /* isInfallible. False in setters. */
32387 false, /* isMovable. Not relevant for setters. */
32388 false, /* isEliminatable. Not relevant for setters. */
32389 false, /* isAlwaysInSlot. Only relevant for getters. */
32390 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32391 false, /* isTypedMethod. Only relevant for methods. */
32392 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32393};
32394
32395MOZ_CAN_RUN_SCRIPT static bool
32396exerciseTypedefInterfaces2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32397{
32398 BindingCallContext cx(cx_, "TestExampleInterface.exerciseTypedefInterfaces2");
32399 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32402( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32400 "TestExampleInterface", "exerciseTypedefInterfaces2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32402( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32401 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32402( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32402 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32402( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32403
32404 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32405 if (!args.requireAtLeast(cx, "TestExampleInterface.exerciseTypedefInterfaces2", 1)) {
32406 return false;
32407 }
32408 mozilla::dom::TestInterface* arg0;
32409 if (args[0].isObject()) {
32410 {
32411 // Our JSContext should be in the right global to do unwrapping in.
32412 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
32413 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
32414 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
32415 return false;
32416 }
32417 }
32418 } else if (args[0].isNullOrUndefined()) {
32419 arg0 = nullptr;
32420 } else {
32421 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
32422 return false;
32423 }
32424 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->ExerciseTypedefInterfaces2(MOZ_KnownLive(Constify(arg0))(Constify(arg0)))));
32425 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32425); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32425; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32426 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
32427 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32427); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 32427; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
32428 return false;
32429 }
32430 return true;
32431}
32432
32433static const JSJitInfo exerciseTypedefInterfaces2_methodinfo = {
32434 { (JSJitGetterOp)exerciseTypedefInterfaces2 },
32435 { prototypes::id::TestExampleInterface },
32436 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32437 JSJitInfo::Method,
32438 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32439 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
32440 false, /* isInfallible. False in setters. */
32441 false, /* isMovable. Not relevant for setters. */
32442 false, /* isEliminatable. Not relevant for setters. */
32443 false, /* isAlwaysInSlot. Only relevant for getters. */
32444 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32445 false, /* isTypedMethod. Only relevant for methods. */
32446 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32447};
32448
32449MOZ_CAN_RUN_SCRIPT static bool
32450exerciseTypedefInterfaces3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32451{
32452 BindingCallContext cx(cx_, "TestExampleInterface.exerciseTypedefInterfaces3");
32453 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32456( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32454 "TestExampleInterface", "exerciseTypedefInterfaces3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32456( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32455 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32456( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32456 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32456( cx, "TestExampleInterface"
, "exerciseTypedefInterfaces3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32457
32458 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32459 if (!args.requireAtLeast(cx, "TestExampleInterface.exerciseTypedefInterfaces3", 1)) {
32460 return false;
32461 }
32462 NonNull<mozilla::dom::TestInterface> arg0;
32463 if (args[0].isObject()) {
32464 {
32465 // Our JSContext should be in the right global to do unwrapping in.
32466 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
32467 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
32468 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
32469 return false;
32470 }
32471 }
32472 } else {
32473 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
32474 return false;
32475 }
32476 // NOTE: This assert does NOT call the function.
32477 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ExerciseTypedefInterfaces3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
32478 MOZ_KnownLive(self)(self)->ExerciseTypedefInterfaces3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
32479 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32479); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32479; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32480 args.rval().setUndefined();
32481 return true;
32482}
32483
32484static const JSJitInfo exerciseTypedefInterfaces3_methodinfo = {
32485 { (JSJitGetterOp)exerciseTypedefInterfaces3 },
32486 { prototypes::id::TestExampleInterface },
32487 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32488 JSJitInfo::Method,
32489 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32490 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32491 false, /* isInfallible. False in setters. */
32492 false, /* isMovable. Not relevant for setters. */
32493 false, /* isEliminatable. Not relevant for setters. */
32494 false, /* isAlwaysInSlot. Only relevant for getters. */
32495 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32496 false, /* isTypedMethod. Only relevant for methods. */
32497 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32498};
32499
32500MOZ_CAN_RUN_SCRIPT static bool
32501get_deprecatedAttribute(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
32502{
32503 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32506( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32504 "TestExampleInterface", "deprecatedAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32506( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32505 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32506( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32506 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32506( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32507
32508 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32509 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32510 bool result(MOZ_KnownLive(self)(self)->DeprecatedAttribute());
32511 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32511); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32511; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32512 args.rval().setBoolean(result);
32513 return true;
32514}
32515
32516MOZ_CAN_RUN_SCRIPT static bool
32517set_deprecatedAttribute(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
32518{
32519 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32522( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32520 "TestExampleInterface", "deprecatedAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32522( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32521 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32522( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32522 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32522( cx, "TestExampleInterface"
, "deprecatedAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32523
32524 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32525 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32526 bool arg0;
32527 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
32528 return false;
32529 }
32530 // NOTE: This assert does NOT call the function.
32531 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetDeprecatedAttribute(arg0))>, "Should be returning void here");
32532 MOZ_KnownLive(self)(self)->SetDeprecatedAttribute(arg0);
32533 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32533); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32533; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32534
32535 return true;
32536}
32537
32538static const JSJitInfo deprecatedAttribute_getterinfo = {
32539 { get_deprecatedAttribute },
32540 { prototypes::id::TestExampleInterface },
32541 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32542 JSJitInfo::Getter,
32543 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32544 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
32545 true, /* isInfallible. False in setters. */
32546 false, /* isMovable. Not relevant for setters. */
32547 false, /* isEliminatable. Not relevant for setters. */
32548 false, /* isAlwaysInSlot. Only relevant for getters. */
32549 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32550 false, /* isTypedMethod. Only relevant for methods. */
32551 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32552};
32553static const JSJitInfo deprecatedAttribute_setterinfo = {
32554 { (JSJitGetterOp)set_deprecatedAttribute },
32555 { prototypes::id::TestExampleInterface },
32556 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32557 JSJitInfo::Setter,
32558 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32559 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32560 false, /* isInfallible. False in setters. */
32561 false, /* isMovable. Not relevant for setters. */
32562 false, /* isEliminatable. Not relevant for setters. */
32563 false, /* isAlwaysInSlot. Only relevant for getters. */
32564 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32565 false, /* isTypedMethod. Only relevant for methods. */
32566 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32567};
32568
32569MOZ_CAN_RUN_SCRIPT static bool
32570deprecatedMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32571{
32572 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32575( cx, "TestExampleInterface"
, "deprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32573 "TestExampleInterface", "deprecatedMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32575( cx, "TestExampleInterface"
, "deprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32574 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32575( cx, "TestExampleInterface"
, "deprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32575 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32575( cx, "TestExampleInterface"
, "deprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32576
32577 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32578 if (!args.requireAtLeast(cx, "TestExampleInterface.deprecatedMethod", 1)) {
32579 return false;
32580 }
32581 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32582 bool arg0;
32583 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
32584 return false;
32585 }
32586 // NOTE: This assert does NOT call the function.
32587 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DeprecatedMethod(arg0))>, "Should be returning void here");
32588 MOZ_KnownLive(self)(self)->DeprecatedMethod(arg0);
32589 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32589); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32589; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32590 args.rval().setUndefined();
32591 return true;
32592}
32593
32594static const JSJitInfo deprecatedMethod_methodinfo = {
32595 { (JSJitGetterOp)deprecatedMethod },
32596 { prototypes::id::TestExampleInterface },
32597 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32598 JSJitInfo::Method,
32599 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32600 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32601 false, /* isInfallible. False in setters. */
32602 false, /* isMovable. Not relevant for setters. */
32603 false, /* isEliminatable. Not relevant for setters. */
32604 false, /* isAlwaysInSlot. Only relevant for getters. */
32605 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32606 false, /* isTypedMethod. Only relevant for methods. */
32607 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32608};
32609
32610MOZ_CAN_RUN_SCRIPT static bool
32611deprecatedMethodWithContext(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32612{
32613 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32616( cx, "TestExampleInterface"
, "deprecatedMethodWithContext", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32614 "TestExampleInterface", "deprecatedMethodWithContext", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32616( cx, "TestExampleInterface"
, "deprecatedMethodWithContext", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32615 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32616( cx, "TestExampleInterface"
, "deprecatedMethodWithContext", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32616 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32616( cx, "TestExampleInterface"
, "deprecatedMethodWithContext", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32617
32618 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32619 if (!args.requireAtLeast(cx, "TestExampleInterface.deprecatedMethodWithContext", 1)) {
32620 return false;
32621 }
32622 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32623 JS::Rooted<JS::Value> arg0(cx);
32624 arg0 = args[0];
32625 // NOTE: This assert does NOT call the function.
32626 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->DeprecatedMethodWithContext(cx, arg0))>, "Should be returning void here");
32627 MOZ_KnownLive(self)(self)->DeprecatedMethodWithContext(cx, arg0);
32628 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32628); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32628; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32629 args.rval().setUndefined();
32630 return true;
32631}
32632
32633static const JSJitInfo deprecatedMethodWithContext_methodinfo = {
32634 { (JSJitGetterOp)deprecatedMethodWithContext },
32635 { prototypes::id::TestExampleInterface },
32636 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32637 JSJitInfo::Method,
32638 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32639 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
32640 false, /* isInfallible. False in setters. */
32641 false, /* isMovable. Not relevant for setters. */
32642 false, /* isEliminatable. Not relevant for setters. */
32643 false, /* isAlwaysInSlot. Only relevant for getters. */
32644 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32645 false, /* isTypedMethod. Only relevant for methods. */
32646 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32647};
32648
32649MOZ_CAN_RUN_SCRIPT static bool
32650get_staticAttribute(JSContext* cx, unsigned argc, JS::Value* vp)
32651{
32652 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32655( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32653 "TestExampleInterface", "staticAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32655( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32654 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32655( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32655 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32655( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32656
32657 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32658 JS::Rooted<JSObject*> obj(cx, &args.callee());
32659
32660 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32661 if (global.Failed()) {
32662 return false;
32663 }
32664
32665 bool result(mozilla::dom::TestExampleInterface::StaticAttribute(global));
32666 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32666); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32666; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32667 args.rval().setBoolean(result);
32668 return true;
32669}
32670
32671MOZ_CAN_RUN_SCRIPT static bool
32672set_staticAttribute(JSContext* cx, unsigned argc, JS::Value* vp)
32673{
32674 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32677( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32675 "TestExampleInterface", "staticAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32677( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32676 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32677( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32677 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32677( cx, "TestExampleInterface"
, "staticAttribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32678
32679 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32680 JS::Rooted<JSObject*> obj(cx, &args.callee());
32681
32682 if (!args.requireAtLeast(cx, "staticAttribute setter", 1)) {
32683 return false;
32684 }
32685 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32686 if (global.Failed()) {
32687 return false;
32688 }
32689
32690 bool arg0;
32691 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
32692 return false;
32693 }
32694 // NOTE: This assert does NOT call the function.
32695 static_assert(std::is_void_v<decltype(mozilla::dom::TestExampleInterface::SetStaticAttribute(global, arg0))>, "Should be returning void here");
32696 mozilla::dom::TestExampleInterface::SetStaticAttribute(global, arg0);
32697 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32697); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32697; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32698
32699 return true;
32700}
32701
32702MOZ_CAN_RUN_SCRIPT static bool
32703staticMethod(JSContext* cx, unsigned argc, JS::Value* vp)
32704{
32705 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32708( cx, "TestExampleInterface"
, "staticMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32706 "TestExampleInterface", "staticMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32708( cx, "TestExampleInterface"
, "staticMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32707 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32708( cx, "TestExampleInterface"
, "staticMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32708 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32708( cx, "TestExampleInterface"
, "staticMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32709
32710 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32711 JS::Rooted<JSObject*> obj(cx, &args.callee());
32712
32713 if (!args.requireAtLeast(cx, "TestExampleInterface.staticMethod", 1)) {
32714 return false;
32715 }
32716 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32717 if (global.Failed()) {
32718 return false;
32719 }
32720
32721 bool arg0;
32722 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
32723 return false;
32724 }
32725 // NOTE: This assert does NOT call the function.
32726 static_assert(std::is_void_v<decltype(mozilla::dom::TestExampleInterface::StaticMethod(global, arg0))>, "Should be returning void here");
32727 mozilla::dom::TestExampleInterface::StaticMethod(global, arg0);
32728 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32728); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32728; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32729 args.rval().setUndefined();
32730 return true;
32731}
32732
32733MOZ_CAN_RUN_SCRIPT static bool
32734staticMethodWithContext(JSContext* cx, unsigned argc, JS::Value* vp)
32735{
32736 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32739( cx, "TestExampleInterface"
, "staticMethodWithContext", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32737 "TestExampleInterface", "staticMethodWithContext", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32739( cx, "TestExampleInterface"
, "staticMethodWithContext", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32738 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32739( cx, "TestExampleInterface"
, "staticMethodWithContext", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32739 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32739( cx, "TestExampleInterface"
, "staticMethodWithContext", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32740
32741 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32742 JS::Rooted<JSObject*> obj(cx, &args.callee());
32743
32744 if (!args.requireAtLeast(cx, "TestExampleInterface.staticMethodWithContext", 1)) {
32745 return false;
32746 }
32747 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32748 if (global.Failed()) {
32749 return false;
32750 }
32751
32752 JS::Rooted<JS::Value> arg0(cx);
32753 arg0 = args[0];
32754 // NOTE: This assert does NOT call the function.
32755 static_assert(std::is_void_v<decltype(mozilla::dom::TestExampleInterface::StaticMethodWithContext(global, arg0))>, "Should be returning void here");
32756 mozilla::dom::TestExampleInterface::StaticMethodWithContext(global, arg0);
32757 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32757); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32757; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32758 args.rval().setUndefined();
32759 return true;
32760}
32761
32762MOZ_CAN_RUN_SCRIPT static bool
32763get_staticDeprecatedAttribute(JSContext* cx, unsigned argc, JS::Value* vp)
32764{
32765 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32768( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32766 "TestExampleInterface", "staticDeprecatedAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32768( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32767 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject32768( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32768 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32768( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32769
32770 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32771 JS::Rooted<JSObject*> obj(cx, &args.callee());
32772
32773 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32774 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32775 if (global.Failed()) {
32776 return false;
32777 }
32778
32779 bool result(mozilla::dom::TestExampleInterface::StaticDeprecatedAttribute(global));
32780 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32780); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32780; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32781 args.rval().setBoolean(result);
32782 return true;
32783}
32784
32785MOZ_CAN_RUN_SCRIPT static bool
32786set_staticDeprecatedAttribute(JSContext* cx, unsigned argc, JS::Value* vp)
32787{
32788 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32791( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32789 "TestExampleInterface", "staticDeprecatedAttribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32791( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32790 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject32791( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32791 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32791( cx, "TestExampleInterface"
, "staticDeprecatedAttribute", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32792
32793 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32794 JS::Rooted<JSObject*> obj(cx, &args.callee());
32795
32796 if (!args.requireAtLeast(cx, "staticDeprecatedAttribute setter", 1)) {
32797 return false;
32798 }
32799 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32800 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32801 if (global.Failed()) {
32802 return false;
32803 }
32804
32805 bool arg0;
32806 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
32807 return false;
32808 }
32809 // NOTE: This assert does NOT call the function.
32810 static_assert(std::is_void_v<decltype(mozilla::dom::TestExampleInterface::SetStaticDeprecatedAttribute(global, arg0))>, "Should be returning void here");
32811 mozilla::dom::TestExampleInterface::SetStaticDeprecatedAttribute(global, arg0);
32812 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32812); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32812; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32813
32814 return true;
32815}
32816
32817MOZ_CAN_RUN_SCRIPT static bool
32818staticDeprecatedMethod(JSContext* cx, unsigned argc, JS::Value* vp)
32819{
32820 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32823( cx, "TestExampleInterface"
, "staticDeprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32821 "TestExampleInterface", "staticDeprecatedMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32823( cx, "TestExampleInterface"
, "staticDeprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32822 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32823( cx, "TestExampleInterface"
, "staticDeprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
32823 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32823( cx, "TestExampleInterface"
, "staticDeprecatedMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
32824
32825 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32826 JS::Rooted<JSObject*> obj(cx, &args.callee());
32827
32828 if (!args.requireAtLeast(cx, "TestExampleInterface.staticDeprecatedMethod", 1)) {
32829 return false;
32830 }
32831 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32832 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32833 if (global.Failed()) {
32834 return false;
32835 }
32836
32837 bool arg0;
32838 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
32839 return false;
32840 }
32841 // NOTE: This assert does NOT call the function.
32842 static_assert(std::is_void_v<decltype(mozilla::dom::TestExampleInterface::StaticDeprecatedMethod(global, arg0))>, "Should be returning void here");
32843 mozilla::dom::TestExampleInterface::StaticDeprecatedMethod(global, arg0);
32844 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32844); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32844; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32845 args.rval().setUndefined();
32846 return true;
32847}
32848
32849MOZ_CAN_RUN_SCRIPT static bool
32850staticDeprecatedMethodWithContext(JSContext* cx, unsigned argc, JS::Value* vp)
32851{
32852 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32855( cx, "TestExampleInterface"
, "staticDeprecatedMethodWithContext", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32853 "TestExampleInterface", "staticDeprecatedMethodWithContext", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32855( cx, "TestExampleInterface"
, "staticDeprecatedMethodWithContext", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32854 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32855( cx, "TestExampleInterface"
, "staticDeprecatedMethodWithContext", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
32855 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32855( cx, "TestExampleInterface"
, "staticDeprecatedMethodWithContext", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
32856
32857 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
32858 JS::Rooted<JSObject*> obj(cx, &args.callee());
32859
32860 if (!args.requireAtLeast(cx, "TestExampleInterface.staticDeprecatedMethodWithContext", 1)) {
32861 return false;
32862 }
32863 DeprecationWarning(cx, obj, DeprecatedOperations::eComponents);
32864 GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
32865 if (global.Failed()) {
32866 return false;
32867 }
32868
32869 JS::Rooted<JS::Value> arg0(cx);
32870 arg0 = args[0];
32871 // NOTE: This assert does NOT call the function.
32872 static_assert(std::is_void_v<decltype(mozilla::dom::TestExampleInterface::StaticDeprecatedMethodWithContext(global, arg0))>, "Should be returning void here");
32873 mozilla::dom::TestExampleInterface::StaticDeprecatedMethodWithContext(global, arg0);
32874 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32874); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32874; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32875 args.rval().setUndefined();
32876 return true;
32877}
32878
32879MOZ_CAN_RUN_SCRIPT static bool
32880overload1(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32881{
32882 BindingCallContext cx(cx_, "TestExampleInterface.overload1");
32883 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32886( cx, "TestExampleInterface"
, "overload1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
32884 "TestExampleInterface", "overload1", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32886( cx, "TestExampleInterface"
, "overload1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
32885 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32886( cx, "TestExampleInterface"
, "overload1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
32886 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32886( cx, "TestExampleInterface"
, "overload1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
32887
32888 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32889 unsigned argcount = std::min(args.length(), 2u);
32890 switch (argcount) {
32891 case 1: {
32892 NonNull<mozilla::dom::TestInterface> arg0;
32893 if (args[0].isObject()) {
32894 {
32895 // Our JSContext should be in the right global to do unwrapping in.
32896 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
32897 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
32898 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
32899 return false;
32900 }
32901 }
32902 } else {
32903 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
32904 return false;
32905 }
32906 bool result(MOZ_KnownLive(self)(self)->Overload1(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))));
32907 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32907); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32907; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32908 args.rval().setBoolean(result);
32909 return true;
32910 break;
32911 }
32912 case 2: {
32913 binding_detail::FakeString<char16_t> arg0;
32914 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
32915 return false;
32916 }
32917 NonNull<mozilla::dom::TestInterface> arg1;
32918 if (args[1].isObject()) {
32919 {
32920 // Our JSContext should be in the right global to do unwrapping in.
32921 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[1], arg1, cx);
32922 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
32923 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 2", "TestInterface");
32924 return false;
32925 }
32926 }
32927 } else {
32928 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 2");
32929 return false;
32930 }
32931 auto result(StrongOrRawPtr<mozilla::dom::TestInterface>(MOZ_KnownLive(self)(self)->Overload1(NonNullHelper(Constify(arg0)), MOZ_KnownLive(NonNullHelper(arg1))(NonNullHelper(arg1)))));
32932 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32932); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32932; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32933 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
32934 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32934); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 32934; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
32935 return false;
32936 }
32937 return true;
32938 break;
32939 }
32940 default: {
32941 // Using nsPrintfCString here would require including that
32942 // header. Let's not worry about it.
32943 nsAutoCString argCountStr;
32944 argCountStr.AppendPrintf("%u", args.length());
32945 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
32946 }
32947 }
32948 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 32948); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 32948; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
32949 return false;
32950}
32951
32952static const JSJitInfo overload1_methodinfo = {
32953 { (JSJitGetterOp)overload1 },
32954 { prototypes::id::TestExampleInterface },
32955 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
32956 JSJitInfo::Method,
32957 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
32958 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
32959 false, /* isInfallible. False in setters. */
32960 false, /* isMovable. Not relevant for setters. */
32961 false, /* isEliminatable. Not relevant for setters. */
32962 false, /* isAlwaysInSlot. Only relevant for getters. */
32963 false, /* isLazilyCachedInSlot. Only relevant for getters. */
32964 false, /* isTypedMethod. Only relevant for methods. */
32965 0 /* Reserved slot index, if we're stored in a slot, else 0. */
32966};
32967
32968MOZ_CAN_RUN_SCRIPT static bool
32969overload2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
32970{
32971 BindingCallContext cx(cx_, "TestExampleInterface.overload2");
32972 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject32975( cx, "TestExampleInterface"
, "overload2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
32973 "TestExampleInterface", "overload2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject32975( cx, "TestExampleInterface"
, "overload2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
32974 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject32975( cx, "TestExampleInterface"
, "overload2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
32975 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject32975( cx, "TestExampleInterface"
, "overload2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
32976
32977 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
32978 unsigned argcount = std::min(args.length(), 1u);
32979 switch (argcount) {
32980 case 0: {
32981 RootedDictionary<binding_detail::FastDict> arg0(cx);
32982 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
32983 return false;
32984 }
32985 // NOTE: This assert does NOT call the function.
32986 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload2(cx, Constify(arg0)))>, "Should be returning void here");
32987 MOZ_KnownLive(self)(self)->Overload2(cx, Constify(arg0));
32988 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 32988); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 32988; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
32989 args.rval().setUndefined();
32990 return true;
32991 break;
32992 }
32993 case 1: {
32994 if (args[0].isNullOrUndefined()) {
32995 RootedDictionary<binding_detail::FastDict> arg0(cx);
32996 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
32997 return false;
32998 }
32999 // NOTE: This assert does NOT call the function.
33000 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload2(cx, Constify(arg0)))>, "Should be returning void here");
33001 MOZ_KnownLive(self)(self)->Overload2(cx, Constify(arg0));
33002 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33002); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33002; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33003 args.rval().setUndefined();
33004 return true;
33005 }
33006 if (args[0].isObject()) {
33007 do {
33008 NonNull<mozilla::dom::TestInterface> arg0;
33009 {
33010 // Our JSContext should be in the right global to do unwrapping in.
33011 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
33012 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
33013 break;
33014 }
33015 }
33016 // NOTE: This assert does NOT call the function.
33017 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload2(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33018 MOZ_KnownLive(self)(self)->Overload2(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33019 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33019); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33019; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33020 args.rval().setUndefined();
33021 return true;
33022 } while (false);
33023 do {
33024 RootedDictionary<binding_detail::FastDict> arg0(cx);
33025 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
33026 return false;
33027 }
33028 // NOTE: This assert does NOT call the function.
33029 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload2(cx, Constify(arg0)))>, "Should be returning void here");
33030 MOZ_KnownLive(self)(self)->Overload2(cx, Constify(arg0));
33031 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33031); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33031; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33032 args.rval().setUndefined();
33033 return true;
33034 } while (false);
33035 }
33036 if (args[0].isBoolean()) {
33037 bool arg0;
33038 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33039 return false;
33040 }
33041 // NOTE: This assert does NOT call the function.
33042 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload2(arg0))>, "Should be returning void here");
33043 MOZ_KnownLive(self)(self)->Overload2(arg0);
33044 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33044); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33044; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33045 args.rval().setUndefined();
33046 return true;
33047 }
33048 binding_detail::FakeString<char16_t> arg0;
33049 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
33050 return false;
33051 }
33052 // NOTE: This assert does NOT call the function.
33053 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload2(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
33054 MOZ_KnownLive(self)(self)->Overload2(NonNullHelper(Constify(arg0)));
33055 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33055); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33055; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33056 args.rval().setUndefined();
33057 return true;
33058 break;
33059 }
33060 default: {
33061 // Using nsPrintfCString here would require including that
33062 // header. Let's not worry about it.
33063 nsAutoCString argCountStr;
33064 argCountStr.AppendPrintf("%u", args.length());
33065 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33066 }
33067 }
33068 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33068); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33068; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33069 return false;
33070}
33071
33072static const JSJitInfo overload2_methodinfo = {
33073 { (JSJitGetterOp)overload2 },
33074 { prototypes::id::TestExampleInterface },
33075 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33076 JSJitInfo::Method,
33077 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33078 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33079 false, /* isInfallible. False in setters. */
33080 false, /* isMovable. Not relevant for setters. */
33081 false, /* isEliminatable. Not relevant for setters. */
33082 false, /* isAlwaysInSlot. Only relevant for getters. */
33083 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33084 false, /* isTypedMethod. Only relevant for methods. */
33085 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33086};
33087
33088MOZ_CAN_RUN_SCRIPT static bool
33089overload3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33090{
33091 BindingCallContext cx(cx_, "TestExampleInterface.overload3");
33092 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33095( cx, "TestExampleInterface"
, "overload3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33093 "TestExampleInterface", "overload3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33095( cx, "TestExampleInterface"
, "overload3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33094 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33095( cx, "TestExampleInterface"
, "overload3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33095 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33095( cx, "TestExampleInterface"
, "overload3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33096
33097 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33098 unsigned argcount = std::min(args.length(), 1u);
33099 switch (argcount) {
33100 case 1: {
33101 if (args[0].isObject()) {
33102 do {
33103 NonNull<mozilla::dom::TestInterface> arg0;
33104 {
33105 // Our JSContext should be in the right global to do unwrapping in.
33106 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
33107 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
33108 break;
33109 }
33110 }
33111 // NOTE: This assert does NOT call the function.
33112 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33113 MOZ_KnownLive(self)(self)->Overload3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33114 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33114); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33114; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33115 args.rval().setUndefined();
33116 return true;
33117 } while (false);
33118 do {
33119 RootedCallback<OwningNonNull<binding_detail::FastTestCallback>> arg0(cx);
33120 if (JS::IsCallable(&args[0].toObject())) {
33121 { // scope for tempRoot and tempGlobalRoot if needed
33122 arg0 = new binding_detail::FastTestCallback(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
33123 }
33124 } else {
33125 break;
33126 }
33127 // NOTE: This assert does NOT call the function.
33128 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33129 MOZ_KnownLive(self)(self)->Overload3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33130 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33130); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33130; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33131 args.rval().setUndefined();
33132 return true;
33133 } while (false);
33134 }
33135 bool arg0;
33136 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33137 return false;
33138 }
33139 // NOTE: This assert does NOT call the function.
33140 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload3(arg0))>, "Should be returning void here");
33141 MOZ_KnownLive(self)(self)->Overload3(arg0);
33142 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33142); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33142; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33143 args.rval().setUndefined();
33144 return true;
33145 break;
33146 }
33147 default: {
33148 // Using nsPrintfCString here would require including that
33149 // header. Let's not worry about it.
33150 nsAutoCString argCountStr;
33151 argCountStr.AppendPrintf("%u", args.length());
33152 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33153 }
33154 }
33155 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33155); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33155; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33156 return false;
33157}
33158
33159static const JSJitInfo overload3_methodinfo = {
33160 { (JSJitGetterOp)overload3 },
33161 { prototypes::id::TestExampleInterface },
33162 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33163 JSJitInfo::Method,
33164 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33165 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33166 false, /* isInfallible. False in setters. */
33167 false, /* isMovable. Not relevant for setters. */
33168 false, /* isEliminatable. Not relevant for setters. */
33169 false, /* isAlwaysInSlot. Only relevant for getters. */
33170 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33171 false, /* isTypedMethod. Only relevant for methods. */
33172 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33173};
33174
33175MOZ_CAN_RUN_SCRIPT static bool
33176overload4(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33177{
33178 BindingCallContext cx(cx_, "TestExampleInterface.overload4");
33179 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33182( cx, "TestExampleInterface"
, "overload4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33180 "TestExampleInterface", "overload4", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33182( cx, "TestExampleInterface"
, "overload4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33181 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33182( cx, "TestExampleInterface"
, "overload4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33182 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33182( cx, "TestExampleInterface"
, "overload4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33183
33184 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33185 unsigned argcount = std::min(args.length(), 1u);
33186 switch (argcount) {
33187 case 1: {
33188 if (args[0].isObject()) {
33189 do {
33190 NonNull<mozilla::dom::TestInterface> arg0;
33191 {
33192 // Our JSContext should be in the right global to do unwrapping in.
33193 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
33194 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
33195 break;
33196 }
33197 }
33198 // NOTE: This assert does NOT call the function.
33199 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload4(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33200 MOZ_KnownLive(self)(self)->Overload4(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33201 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33201); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33201; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33202 args.rval().setUndefined();
33203 return true;
33204 } while (false);
33205 do {
33206 RootedCallback<OwningNonNull<binding_detail::FastTestCallbackInterface>> arg0(cx);
33207 { // scope for tempRoot and tempGlobalRoot if needed
33208 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
33209 }
33210 // NOTE: This assert does NOT call the function.
33211 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload4(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33212 MOZ_KnownLive(self)(self)->Overload4(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33213 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33213); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33213; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33214 args.rval().setUndefined();
33215 return true;
33216 } while (false);
33217 }
33218 binding_detail::FakeString<char16_t> arg0;
33219 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
33220 return false;
33221 }
33222 // NOTE: This assert does NOT call the function.
33223 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload4(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
33224 MOZ_KnownLive(self)(self)->Overload4(NonNullHelper(Constify(arg0)));
33225 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33225); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33225; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33226 args.rval().setUndefined();
33227 return true;
33228 break;
33229 }
33230 default: {
33231 // Using nsPrintfCString here would require including that
33232 // header. Let's not worry about it.
33233 nsAutoCString argCountStr;
33234 argCountStr.AppendPrintf("%u", args.length());
33235 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33236 }
33237 }
33238 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33238); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33238; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33239 return false;
33240}
33241
33242static const JSJitInfo overload4_methodinfo = {
33243 { (JSJitGetterOp)overload4 },
33244 { prototypes::id::TestExampleInterface },
33245 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33246 JSJitInfo::Method,
33247 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33248 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33249 false, /* isInfallible. False in setters. */
33250 false, /* isMovable. Not relevant for setters. */
33251 false, /* isEliminatable. Not relevant for setters. */
33252 false, /* isAlwaysInSlot. Only relevant for getters. */
33253 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33254 false, /* isTypedMethod. Only relevant for methods. */
33255 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33256};
33257
33258MOZ_CAN_RUN_SCRIPT static bool
33259overload5(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33260{
33261 BindingCallContext cx(cx_, "TestExampleInterface.overload5");
33262 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33265( cx, "TestExampleInterface"
, "overload5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33263 "TestExampleInterface", "overload5", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33265( cx, "TestExampleInterface"
, "overload5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33264 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33265( cx, "TestExampleInterface"
, "overload5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33265 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33265( cx, "TestExampleInterface"
, "overload5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33266
33267 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33268 unsigned argcount = std::min(args.length(), 1u);
33269 switch (argcount) {
33270 case 1: {
33271 if (args[0].isNumber()) {
33272 int32_t arg0;
33273 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33274 return false;
33275 }
33276 // NOTE: This assert does NOT call the function.
33277 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload5(arg0))>, "Should be returning void here");
33278 MOZ_KnownLive(self)(self)->Overload5(arg0);
33279 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33279); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33279; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33280 args.rval().setUndefined();
33281 return true;
33282 }
33283 TestEnum arg0;
33284 {
33285 int index;
33286 if (!binding_detail::FindEnumStringIndex<true>(cx, args[0],
33287 binding_detail::EnumStrings<TestEnum>::Values,
33288 "TestEnum", "argument 1",
33289 &index)) {
33290 return false;
33291 }
33292 MOZ_ASSERT(index >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(index >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(index >= 0))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("index >= 0",
"../TestExampleGenBinding.cpp", 33292); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "index >= 0" ")"); do { *((volatile int*
)__null) = 33292; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
33293 arg0 = static_cast<TestEnum>(index);
33294 }
33295 // NOTE: This assert does NOT call the function.
33296 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload5(arg0))>, "Should be returning void here");
33297 MOZ_KnownLive(self)(self)->Overload5(arg0);
33298 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33298); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33298; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33299 args.rval().setUndefined();
33300 return true;
33301 break;
33302 }
33303 default: {
33304 // Using nsPrintfCString here would require including that
33305 // header. Let's not worry about it.
33306 nsAutoCString argCountStr;
33307 argCountStr.AppendPrintf("%u", args.length());
33308 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33309 }
33310 }
33311 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33311); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33311; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33312 return false;
33313}
33314
33315static const JSJitInfo overload5_methodinfo = {
33316 { (JSJitGetterOp)overload5 },
33317 { prototypes::id::TestExampleInterface },
33318 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33319 JSJitInfo::Method,
33320 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33321 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33322 false, /* isInfallible. False in setters. */
33323 false, /* isMovable. Not relevant for setters. */
33324 false, /* isEliminatable. Not relevant for setters. */
33325 false, /* isAlwaysInSlot. Only relevant for getters. */
33326 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33327 false, /* isTypedMethod. Only relevant for methods. */
33328 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33329};
33330
33331MOZ_CAN_RUN_SCRIPT static bool
33332overload6(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33333{
33334 BindingCallContext cx(cx_, "TestExampleInterface.overload6");
33335 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33338( cx, "TestExampleInterface"
, "overload6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33336 "TestExampleInterface", "overload6", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33338( cx, "TestExampleInterface"
, "overload6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33337 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33338( cx, "TestExampleInterface"
, "overload6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33338 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33338( cx, "TestExampleInterface"
, "overload6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33339
33340 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33341 unsigned argcount = std::min(args.length(), 1u);
33342 switch (argcount) {
33343 case 1: {
33344 if (args[0].isBoolean()) {
33345 bool arg0;
33346 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33347 return false;
33348 }
33349 // NOTE: This assert does NOT call the function.
33350 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload6(arg0))>, "Should be returning void here");
33351 MOZ_KnownLive(self)(self)->Overload6(arg0);
33352 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33352); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33352; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33353 args.rval().setUndefined();
33354 return true;
33355 }
33356 int32_t arg0;
33357 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33358 return false;
33359 }
33360 // NOTE: This assert does NOT call the function.
33361 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload6(arg0))>, "Should be returning void here");
33362 MOZ_KnownLive(self)(self)->Overload6(arg0);
33363 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33363); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33363; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33364 args.rval().setUndefined();
33365 return true;
33366 break;
33367 }
33368 default: {
33369 // Using nsPrintfCString here would require including that
33370 // header. Let's not worry about it.
33371 nsAutoCString argCountStr;
33372 argCountStr.AppendPrintf("%u", args.length());
33373 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33374 }
33375 }
33376 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33376); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33376; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33377 return false;
33378}
33379
33380static const JSJitInfo overload6_methodinfo = {
33381 { (JSJitGetterOp)overload6 },
33382 { prototypes::id::TestExampleInterface },
33383 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33384 JSJitInfo::Method,
33385 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33386 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33387 false, /* isInfallible. False in setters. */
33388 false, /* isMovable. Not relevant for setters. */
33389 false, /* isEliminatable. Not relevant for setters. */
33390 false, /* isAlwaysInSlot. Only relevant for getters. */
33391 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33392 false, /* isTypedMethod. Only relevant for methods. */
33393 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33394};
33395
33396MOZ_CAN_RUN_SCRIPT static bool
33397overload7(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33398{
33399 BindingCallContext cx(cx_, "TestExampleInterface.overload7");
33400 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33403( cx, "TestExampleInterface"
, "overload7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33401 "TestExampleInterface", "overload7", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33403( cx, "TestExampleInterface"
, "overload7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33402 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33403( cx, "TestExampleInterface"
, "overload7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33403 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33403( cx, "TestExampleInterface"
, "overload7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33404
33405 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33406 unsigned argcount = std::min(args.length(), 1u);
33407 switch (argcount) {
33408 case 1: {
33409 if (args[0].isBoolean()) {
33410 bool arg0;
33411 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33412 return false;
33413 }
33414 // NOTE: This assert does NOT call the function.
33415 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload7(arg0))>, "Should be returning void here");
33416 MOZ_KnownLive(self)(self)->Overload7(arg0);
33417 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33417); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33417; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33418 args.rval().setUndefined();
33419 return true;
33420 }
33421 if (args[0].isNumber()) {
33422 int32_t arg0;
33423 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33424 return false;
33425 }
33426 // NOTE: This assert does NOT call the function.
33427 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload7(arg0))>, "Should be returning void here");
33428 MOZ_KnownLive(self)(self)->Overload7(arg0);
33429 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33429); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33429; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33430 args.rval().setUndefined();
33431 return true;
33432 }
33433 nsCString arg0;
33434 if (!ConvertJSValueToByteString(cx, args[0], false, "argument 1", arg0)) {
33435 return false;
33436 }
33437 // NOTE: This assert does NOT call the function.
33438 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload7(Constify(arg0)))>, "Should be returning void here");
33439 MOZ_KnownLive(self)(self)->Overload7(Constify(arg0));
33440 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33440); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33440; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33441 args.rval().setUndefined();
33442 return true;
33443 break;
33444 }
33445 default: {
33446 // Using nsPrintfCString here would require including that
33447 // header. Let's not worry about it.
33448 nsAutoCString argCountStr;
33449 argCountStr.AppendPrintf("%u", args.length());
33450 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33451 }
33452 }
33453 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33453); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33453; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33454 return false;
33455}
33456
33457static const JSJitInfo overload7_methodinfo = {
33458 { (JSJitGetterOp)overload7 },
33459 { prototypes::id::TestExampleInterface },
33460 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33461 JSJitInfo::Method,
33462 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33463 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33464 false, /* isInfallible. False in setters. */
33465 false, /* isMovable. Not relevant for setters. */
33466 false, /* isEliminatable. Not relevant for setters. */
33467 false, /* isAlwaysInSlot. Only relevant for getters. */
33468 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33469 false, /* isTypedMethod. Only relevant for methods. */
33470 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33471};
33472
33473MOZ_CAN_RUN_SCRIPT static bool
33474overload8(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33475{
33476 BindingCallContext cx(cx_, "TestExampleInterface.overload8");
33477 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33480( cx, "TestExampleInterface"
, "overload8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33478 "TestExampleInterface", "overload8", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33480( cx, "TestExampleInterface"
, "overload8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33479 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33480( cx, "TestExampleInterface"
, "overload8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33480 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33480( cx, "TestExampleInterface"
, "overload8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33481
33482 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33483 unsigned argcount = std::min(args.length(), 1u);
33484 switch (argcount) {
33485 case 1: {
33486 if (args[0].isObject()) {
33487 do {
33488 NonNull<mozilla::dom::TestInterface> arg0;
33489 {
33490 // Our JSContext should be in the right global to do unwrapping in.
33491 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
33492 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
33493 break;
33494 }
33495 }
33496 // NOTE: This assert does NOT call the function.
33497 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload8(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33498 MOZ_KnownLive(self)(self)->Overload8(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33499 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33499); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33499; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33500 args.rval().setUndefined();
33501 return true;
33502 } while (false);
33503 }
33504 int32_t arg0;
33505 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33506 return false;
33507 }
33508 // NOTE: This assert does NOT call the function.
33509 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload8(arg0))>, "Should be returning void here");
33510 MOZ_KnownLive(self)(self)->Overload8(arg0);
33511 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33511); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33511; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33512 args.rval().setUndefined();
33513 return true;
33514 break;
33515 }
33516 default: {
33517 // Using nsPrintfCString here would require including that
33518 // header. Let's not worry about it.
33519 nsAutoCString argCountStr;
33520 argCountStr.AppendPrintf("%u", args.length());
33521 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33522 }
33523 }
33524 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33524); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33524; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33525 return false;
33526}
33527
33528static const JSJitInfo overload8_methodinfo = {
33529 { (JSJitGetterOp)overload8 },
33530 { prototypes::id::TestExampleInterface },
33531 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33532 JSJitInfo::Method,
33533 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33534 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33535 false, /* isInfallible. False in setters. */
33536 false, /* isMovable. Not relevant for setters. */
33537 false, /* isEliminatable. Not relevant for setters. */
33538 false, /* isAlwaysInSlot. Only relevant for getters. */
33539 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33540 false, /* isTypedMethod. Only relevant for methods. */
33541 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33542};
33543
33544MOZ_CAN_RUN_SCRIPT static bool
33545overload9(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33546{
33547 BindingCallContext cx(cx_, "TestExampleInterface.overload9");
33548 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33551( cx, "TestExampleInterface"
, "overload9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33549 "TestExampleInterface", "overload9", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33551( cx, "TestExampleInterface"
, "overload9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33550 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33551( cx, "TestExampleInterface"
, "overload9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
33551 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33551( cx, "TestExampleInterface"
, "overload9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
33552
33553 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33554 unsigned argcount = std::min(args.length(), 1u);
33555 switch (argcount) {
33556 case 1: {
33557 if (args[0].isNullOrUndefined()) {
33558 Nullable<int32_t> arg0;
33559 if (args[0].isNullOrUndefined()) {
33560 arg0.SetNull();
33561 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
33562 return false;
33563 }
33564 // NOTE: This assert does NOT call the function.
33565 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload9(Constify(arg0)))>, "Should be returning void here");
33566 MOZ_KnownLive(self)(self)->Overload9(Constify(arg0));
33567 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33567); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33567; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33568 args.rval().setUndefined();
33569 return true;
33570 }
33571 if (args[0].isNumber()) {
33572 Nullable<int32_t> arg0;
33573 if (args[0].isNullOrUndefined()) {
33574 arg0.SetNull();
33575 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
33576 return false;
33577 }
33578 // NOTE: This assert does NOT call the function.
33579 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload9(Constify(arg0)))>, "Should be returning void here");
33580 MOZ_KnownLive(self)(self)->Overload9(Constify(arg0));
33581 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33581); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33581; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33582 args.rval().setUndefined();
33583 return true;
33584 }
33585 binding_detail::FakeString<char16_t> arg0;
33586 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
33587 return false;
33588 }
33589 // NOTE: This assert does NOT call the function.
33590 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload9(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
33591 MOZ_KnownLive(self)(self)->Overload9(NonNullHelper(Constify(arg0)));
33592 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33592); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33592; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33593 args.rval().setUndefined();
33594 return true;
33595 break;
33596 }
33597 default: {
33598 // Using nsPrintfCString here would require including that
33599 // header. Let's not worry about it.
33600 nsAutoCString argCountStr;
33601 argCountStr.AppendPrintf("%u", args.length());
33602 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33603 }
33604 }
33605 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33605); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33605; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33606 return false;
33607}
33608
33609static const JSJitInfo overload9_methodinfo = {
33610 { (JSJitGetterOp)overload9 },
33611 { prototypes::id::TestExampleInterface },
33612 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33613 JSJitInfo::Method,
33614 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33615 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33616 false, /* isInfallible. False in setters. */
33617 false, /* isMovable. Not relevant for setters. */
33618 false, /* isEliminatable. Not relevant for setters. */
33619 false, /* isAlwaysInSlot. Only relevant for getters. */
33620 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33621 false, /* isTypedMethod. Only relevant for methods. */
33622 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33623};
33624
33625MOZ_CAN_RUN_SCRIPT static bool
33626overload10(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33627{
33628 BindingCallContext cx(cx_, "TestExampleInterface.overload10");
33629 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33632( cx, "TestExampleInterface"
, "overload10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33630 "TestExampleInterface", "overload10", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33632( cx, "TestExampleInterface"
, "overload10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33631 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33632( cx, "TestExampleInterface"
, "overload10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33632 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33632( cx, "TestExampleInterface"
, "overload10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
33633
33634 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33635 unsigned argcount = std::min(args.length(), 1u);
33636 switch (argcount) {
33637 case 1: {
33638 if (args[0].isObject()) {
33639 do {
33640 JS::Rooted<JSObject*> arg0(cx);
33641 arg0 = &args[0].toObject();
33642 // NOTE: This assert does NOT call the function.
33643 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload10(cx, arg0))>, "Should be returning void here");
33644 MOZ_KnownLive(self)(self)->Overload10(cx, arg0);
33645 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33645); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33645; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33646 args.rval().setUndefined();
33647 return true;
33648 } while (false);
33649 }
33650 Nullable<int32_t> arg0;
33651 if (args[0].isNullOrUndefined()) {
33652 arg0.SetNull();
33653 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
33654 return false;
33655 }
33656 // NOTE: This assert does NOT call the function.
33657 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload10(Constify(arg0)))>, "Should be returning void here");
33658 MOZ_KnownLive(self)(self)->Overload10(Constify(arg0));
33659 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33659); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33659; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33660 args.rval().setUndefined();
33661 return true;
33662 break;
33663 }
33664 default: {
33665 // Using nsPrintfCString here would require including that
33666 // header. Let's not worry about it.
33667 nsAutoCString argCountStr;
33668 argCountStr.AppendPrintf("%u", args.length());
33669 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33670 }
33671 }
33672 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33672); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33672; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33673 return false;
33674}
33675
33676static const JSJitInfo overload10_methodinfo = {
33677 { (JSJitGetterOp)overload10 },
33678 { prototypes::id::TestExampleInterface },
33679 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33680 JSJitInfo::Method,
33681 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33682 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33683 false, /* isInfallible. False in setters. */
33684 false, /* isMovable. Not relevant for setters. */
33685 false, /* isEliminatable. Not relevant for setters. */
33686 false, /* isAlwaysInSlot. Only relevant for getters. */
33687 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33688 false, /* isTypedMethod. Only relevant for methods. */
33689 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33690};
33691
33692MOZ_CAN_RUN_SCRIPT static bool
33693overload11(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33694{
33695 BindingCallContext cx(cx_, "TestExampleInterface.overload11");
33696 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33699( cx, "TestExampleInterface"
, "overload11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33697 "TestExampleInterface", "overload11", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33699( cx, "TestExampleInterface"
, "overload11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33698 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33699( cx, "TestExampleInterface"
, "overload11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33699 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33699( cx, "TestExampleInterface"
, "overload11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
33700
33701 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33702 unsigned argcount = std::min(args.length(), 1u);
33703 switch (argcount) {
33704 case 1: {
33705 if (args[0].isNumber()) {
33706 int32_t arg0;
33707 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33708 return false;
33709 }
33710 // NOTE: This assert does NOT call the function.
33711 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload11(arg0))>, "Should be returning void here");
33712 MOZ_KnownLive(self)(self)->Overload11(arg0);
33713 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33713); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33713; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33714 args.rval().setUndefined();
33715 return true;
33716 }
33717 binding_detail::FakeString<char16_t> arg0;
33718 if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
33719 return false;
33720 }
33721 // NOTE: This assert does NOT call the function.
33722 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload11(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
33723 MOZ_KnownLive(self)(self)->Overload11(NonNullHelper(Constify(arg0)));
33724 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33724); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33724; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33725 args.rval().setUndefined();
33726 return true;
33727 break;
33728 }
33729 default: {
33730 // Using nsPrintfCString here would require including that
33731 // header. Let's not worry about it.
33732 nsAutoCString argCountStr;
33733 argCountStr.AppendPrintf("%u", args.length());
33734 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33735 }
33736 }
33737 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33737); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33737; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33738 return false;
33739}
33740
33741static const JSJitInfo overload11_methodinfo = {
33742 { (JSJitGetterOp)overload11 },
33743 { prototypes::id::TestExampleInterface },
33744 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33745 JSJitInfo::Method,
33746 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33747 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33748 false, /* isInfallible. False in setters. */
33749 false, /* isMovable. Not relevant for setters. */
33750 false, /* isEliminatable. Not relevant for setters. */
33751 false, /* isAlwaysInSlot. Only relevant for getters. */
33752 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33753 false, /* isTypedMethod. Only relevant for methods. */
33754 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33755};
33756
33757MOZ_CAN_RUN_SCRIPT static bool
33758overload12(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33759{
33760 BindingCallContext cx(cx_, "TestExampleInterface.overload12");
33761 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33764( cx, "TestExampleInterface"
, "overload12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33762 "TestExampleInterface", "overload12", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33764( cx, "TestExampleInterface"
, "overload12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33763 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33764( cx, "TestExampleInterface"
, "overload12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33764 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33764( cx, "TestExampleInterface"
, "overload12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
33765
33766 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33767 unsigned argcount = std::min(args.length(), 1u);
33768 switch (argcount) {
33769 case 1: {
33770 if (args[0].isNullOrUndefined()) {
33771 Nullable<bool> arg0;
33772 if (args[0].isNullOrUndefined()) {
33773 arg0.SetNull();
33774 } else if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
33775 return false;
33776 }
33777 // NOTE: This assert does NOT call the function.
33778 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload12(Constify(arg0)))>, "Should be returning void here");
33779 MOZ_KnownLive(self)(self)->Overload12(Constify(arg0));
33780 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33780); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33780; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33781 args.rval().setUndefined();
33782 return true;
33783 }
33784 if (args[0].isBoolean()) {
33785 Nullable<bool> arg0;
33786 if (args[0].isNullOrUndefined()) {
33787 arg0.SetNull();
33788 } else if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
33789 return false;
33790 }
33791 // NOTE: This assert does NOT call the function.
33792 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload12(Constify(arg0)))>, "Should be returning void here");
33793 MOZ_KnownLive(self)(self)->Overload12(Constify(arg0));
33794 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33794); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33794; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33795 args.rval().setUndefined();
33796 return true;
33797 }
33798 int32_t arg0;
33799 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33800 return false;
33801 }
33802 // NOTE: This assert does NOT call the function.
33803 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload12(arg0))>, "Should be returning void here");
33804 MOZ_KnownLive(self)(self)->Overload12(arg0);
33805 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33805); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33805; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33806 args.rval().setUndefined();
33807 return true;
33808 break;
33809 }
33810 default: {
33811 // Using nsPrintfCString here would require including that
33812 // header. Let's not worry about it.
33813 nsAutoCString argCountStr;
33814 argCountStr.AppendPrintf("%u", args.length());
33815 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33816 }
33817 }
33818 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33818); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33818; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33819 return false;
33820}
33821
33822static const JSJitInfo overload12_methodinfo = {
33823 { (JSJitGetterOp)overload12 },
33824 { prototypes::id::TestExampleInterface },
33825 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33826 JSJitInfo::Method,
33827 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33828 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33829 false, /* isInfallible. False in setters. */
33830 false, /* isMovable. Not relevant for setters. */
33831 false, /* isEliminatable. Not relevant for setters. */
33832 false, /* isAlwaysInSlot. Only relevant for getters. */
33833 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33834 false, /* isTypedMethod. Only relevant for methods. */
33835 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33836};
33837
33838MOZ_CAN_RUN_SCRIPT static bool
33839overload13(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33840{
33841 BindingCallContext cx(cx_, "TestExampleInterface.overload13");
33842 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33845( cx, "TestExampleInterface"
, "overload13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33843 "TestExampleInterface", "overload13", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33845( cx, "TestExampleInterface"
, "overload13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33844 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33845( cx, "TestExampleInterface"
, "overload13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33845 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33845( cx, "TestExampleInterface"
, "overload13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
33846
33847 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33848 unsigned argcount = std::min(args.length(), 1u);
33849 switch (argcount) {
33850 case 1: {
33851 if (args[0].isBoolean()) {
33852 bool arg0;
33853 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Argument 1", &arg0)) {
33854 return false;
33855 }
33856 // NOTE: This assert does NOT call the function.
33857 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload13(arg0))>, "Should be returning void here");
33858 MOZ_KnownLive(self)(self)->Overload13(arg0);
33859 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33859); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33859; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33860 args.rval().setUndefined();
33861 return true;
33862 }
33863 Nullable<int32_t> arg0;
33864 if (args[0].isNullOrUndefined()) {
33865 arg0.SetNull();
33866 } else if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.SetValue())) {
33867 return false;
33868 }
33869 // NOTE: This assert does NOT call the function.
33870 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload13(Constify(arg0)))>, "Should be returning void here");
33871 MOZ_KnownLive(self)(self)->Overload13(Constify(arg0));
33872 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33872); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33872; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33873 args.rval().setUndefined();
33874 return true;
33875 break;
33876 }
33877 default: {
33878 // Using nsPrintfCString here would require including that
33879 // header. Let's not worry about it.
33880 nsAutoCString argCountStr;
33881 argCountStr.AppendPrintf("%u", args.length());
33882 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33883 }
33884 }
33885 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33885); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33885; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33886 return false;
33887}
33888
33889static const JSJitInfo overload13_methodinfo = {
33890 { (JSJitGetterOp)overload13 },
33891 { prototypes::id::TestExampleInterface },
33892 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33893 JSJitInfo::Method,
33894 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33895 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33896 false, /* isInfallible. False in setters. */
33897 false, /* isMovable. Not relevant for setters. */
33898 false, /* isEliminatable. Not relevant for setters. */
33899 false, /* isAlwaysInSlot. Only relevant for getters. */
33900 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33901 false, /* isTypedMethod. Only relevant for methods. */
33902 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33903};
33904
33905MOZ_CAN_RUN_SCRIPT static bool
33906overload14(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33907{
33908 BindingCallContext cx(cx_, "TestExampleInterface.overload14");
33909 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject33912( cx, "TestExampleInterface"
, "overload14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33910 "TestExampleInterface", "overload14", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject33912( cx, "TestExampleInterface"
, "overload14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33911 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject33912( cx, "TestExampleInterface"
, "overload14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
33912 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject33912( cx, "TestExampleInterface"
, "overload14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
33913
33914 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
33915 unsigned argcount = std::min(args.length(), 1u);
33916 switch (argcount) {
33917 case 0: {
33918 Optional<int32_t> arg0;
33919 if (args.hasDefined(0)) {
33920 arg0.Construct();
33921 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
33922 return false;
33923 }
33924 }
33925 // NOTE: This assert does NOT call the function.
33926 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload14(Constify(arg0)))>, "Should be returning void here");
33927 MOZ_KnownLive(self)(self)->Overload14(Constify(arg0));
33928 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33928); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33928; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33929 args.rval().setUndefined();
33930 return true;
33931 break;
33932 }
33933 case 1: {
33934 if (args[0].isObject()) {
33935 do {
33936 NonNull<mozilla::dom::TestInterface> arg0;
33937 {
33938 // Our JSContext should be in the right global to do unwrapping in.
33939 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
33940 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
33941 break;
33942 }
33943 }
33944 // NOTE: This assert does NOT call the function.
33945 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload14(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
33946 MOZ_KnownLive(self)(self)->Overload14(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
33947 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33947); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33947; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33948 args.rval().setUndefined();
33949 return true;
33950 } while (false);
33951 }
33952 Optional<int32_t> arg0;
33953 if (args.hasDefined(0)) {
33954 arg0.Construct();
33955 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
33956 return false;
33957 }
33958 }
33959 // NOTE: This assert does NOT call the function.
33960 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload14(Constify(arg0)))>, "Should be returning void here");
33961 MOZ_KnownLive(self)(self)->Overload14(Constify(arg0));
33962 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 33962); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 33962; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
33963 args.rval().setUndefined();
33964 return true;
33965 break;
33966 }
33967 default: {
33968 // Using nsPrintfCString here would require including that
33969 // header. Let's not worry about it.
33970 nsAutoCString argCountStr;
33971 argCountStr.AppendPrintf("%u", args.length());
33972 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
33973 }
33974 }
33975 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 33975); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 33975; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
33976 return false;
33977}
33978
33979static const JSJitInfo overload14_methodinfo = {
33980 { (JSJitGetterOp)overload14 },
33981 { prototypes::id::TestExampleInterface },
33982 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
33983 JSJitInfo::Method,
33984 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
33985 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
33986 false, /* isInfallible. False in setters. */
33987 false, /* isMovable. Not relevant for setters. */
33988 false, /* isEliminatable. Not relevant for setters. */
33989 false, /* isAlwaysInSlot. Only relevant for getters. */
33990 false, /* isLazilyCachedInSlot. Only relevant for getters. */
33991 false, /* isTypedMethod. Only relevant for methods. */
33992 0 /* Reserved slot index, if we're stored in a slot, else 0. */
33993};
33994
33995MOZ_CAN_RUN_SCRIPT static bool
33996overload15(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
33997{
33998 BindingCallContext cx(cx_, "TestExampleInterface.overload15");
33999 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34002( cx, "TestExampleInterface"
, "overload15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34000 "TestExampleInterface", "overload15", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34002( cx, "TestExampleInterface"
, "overload15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34001 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34002( cx, "TestExampleInterface"
, "overload15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34002 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34002( cx, "TestExampleInterface"
, "overload15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34003
34004 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34005 unsigned argcount = std::min(args.length(), 1u);
34006 switch (argcount) {
34007 case 0: {
34008 Optional<NonNull<mozilla::dom::TestInterface>> arg0;
34009 if (args.hasDefined(0)) {
34010 arg0.Construct();
34011 if (args[0].isObject()) {
34012 {
34013 // Our JSContext should be in the right global to do unwrapping in.
34014 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
34015 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
34016 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
34017 return false;
34018 }
34019 }
34020 } else {
34021 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
34022 return false;
34023 }
34024 }
34025 // NOTE: This assert does NOT call the function.
34026 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload15(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
34027 MOZ_KnownLive(self)(self)->Overload15(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
34028 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34028); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34028; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34029 args.rval().setUndefined();
34030 return true;
34031 break;
34032 }
34033 case 1: {
34034 if (args[0].isUndefined()) {
34035 Optional<NonNull<mozilla::dom::TestInterface>> arg0;
34036 if (args.hasDefined(0)) {
34037 arg0.Construct();
34038 if (args[0].isObject()) {
34039 {
34040 // Our JSContext should be in the right global to do unwrapping in.
34041 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
34042 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
34043 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
34044 return false;
34045 }
34046 }
34047 } else {
34048 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
34049 return false;
34050 }
34051 }
34052 // NOTE: This assert does NOT call the function.
34053 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload15(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
34054 MOZ_KnownLive(self)(self)->Overload15(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
34055 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34055); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34055; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34056 args.rval().setUndefined();
34057 return true;
34058 }
34059 if (args[0].isObject()) {
34060 do {
34061 Optional<NonNull<mozilla::dom::TestInterface>> arg0;
34062 if (args.hasDefined(0)) {
34063 arg0.Construct();
34064 {
34065 // Our JSContext should be in the right global to do unwrapping in.
34066 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
34067 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
34068 break;
34069 }
34070 }
34071 }
34072 // NOTE: This assert does NOT call the function.
34073 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload15(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0)))))>, "Should be returning void here");
34074 MOZ_KnownLive(self)(self)->Overload15(MOZ_KnownLive(NonNullHelper(Constify(arg0)))(NonNullHelper(Constify(arg0))));
34075 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34075); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34075; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34076 args.rval().setUndefined();
34077 return true;
34078 } while (false);
34079 }
34080 int32_t arg0;
34081 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
34082 return false;
34083 }
34084 // NOTE: This assert does NOT call the function.
34085 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload15(arg0))>, "Should be returning void here");
34086 MOZ_KnownLive(self)(self)->Overload15(arg0);
34087 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34087); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34087; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34088 args.rval().setUndefined();
34089 return true;
34090 break;
34091 }
34092 default: {
34093 // Using nsPrintfCString here would require including that
34094 // header. Let's not worry about it.
34095 nsAutoCString argCountStr;
34096 argCountStr.AppendPrintf("%u", args.length());
34097 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
34098 }
34099 }
34100 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 34100); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 34100; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
34101 return false;
34102}
34103
34104static const JSJitInfo overload15_methodinfo = {
34105 { (JSJitGetterOp)overload15 },
34106 { prototypes::id::TestExampleInterface },
34107 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34108 JSJitInfo::Method,
34109 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34110 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34111 false, /* isInfallible. False in setters. */
34112 false, /* isMovable. Not relevant for setters. */
34113 false, /* isEliminatable. Not relevant for setters. */
34114 false, /* isAlwaysInSlot. Only relevant for getters. */
34115 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34116 false, /* isTypedMethod. Only relevant for methods. */
34117 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34118};
34119
34120MOZ_CAN_RUN_SCRIPT static bool
34121overload16(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
34122{
34123 BindingCallContext cx(cx_, "TestExampleInterface.overload16");
34124 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34127( cx, "TestExampleInterface"
, "overload16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34125 "TestExampleInterface", "overload16", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34127( cx, "TestExampleInterface"
, "overload16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34126 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34127( cx, "TestExampleInterface"
, "overload16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34127 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34127( cx, "TestExampleInterface"
, "overload16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34128
34129 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34130 unsigned argcount = std::min(args.length(), 1u);
34131 switch (argcount) {
34132 case 0: {
34133 Optional<mozilla::dom::TestInterface*> arg0;
34134 if (args.hasDefined(0)) {
34135 arg0.Construct();
34136 if (args[0].isObject()) {
34137 {
34138 // Our JSContext should be in the right global to do unwrapping in.
34139 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
34140 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
34141 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestInterface");
34142 return false;
34143 }
34144 }
34145 } else if (args[0].isNullOrUndefined()) {
34146 arg0.Value() = nullptr;
34147 } else {
34148 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
34149 return false;
34150 }
34151 }
34152 // NOTE: This assert does NOT call the function.
34153 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload16(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
34154 MOZ_KnownLive(self)(self)->Overload16(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
34155 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34155); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34155; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34156 args.rval().setUndefined();
34157 return true;
34158 break;
34159 }
34160 case 1: {
34161 if (args[0].isNullOrUndefined()) {
34162 Optional<mozilla::dom::TestInterface*> arg0;
34163 if (args.hasDefined(0)) {
34164 arg0.Construct();
34165 arg0.Value() = nullptr;
34166 }
34167 // NOTE: This assert does NOT call the function.
34168 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload16(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
34169 MOZ_KnownLive(self)(self)->Overload16(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
34170 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34170); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34170; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34171 args.rval().setUndefined();
34172 return true;
34173 }
34174 if (args[0].isObject()) {
34175 do {
34176 Optional<mozilla::dom::TestInterface*> arg0;
34177 if (args.hasDefined(0)) {
34178 arg0.Construct();
34179 {
34180 // Our JSContext should be in the right global to do unwrapping in.
34181 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0.Value(), cx);
34182 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
34183 break;
34184 }
34185 }
34186 }
34187 // NOTE: This assert does NOT call the function.
34188 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload16(MOZ_KnownLive(Constify(arg0))(Constify(arg0))))>, "Should be returning void here");
34189 MOZ_KnownLive(self)(self)->Overload16(MOZ_KnownLive(Constify(arg0))(Constify(arg0)));
34190 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34190); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34190; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34191 args.rval().setUndefined();
34192 return true;
34193 } while (false);
34194 }
34195 int32_t arg0;
34196 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
34197 return false;
34198 }
34199 // NOTE: This assert does NOT call the function.
34200 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload16(arg0))>, "Should be returning void here");
34201 MOZ_KnownLive(self)(self)->Overload16(arg0);
34202 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34202); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34202; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34203 args.rval().setUndefined();
34204 return true;
34205 break;
34206 }
34207 default: {
34208 // Using nsPrintfCString here would require including that
34209 // header. Let's not worry about it.
34210 nsAutoCString argCountStr;
34211 argCountStr.AppendPrintf("%u", args.length());
34212 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
34213 }
34214 }
34215 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 34215); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 34215; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
34216 return false;
34217}
34218
34219static const JSJitInfo overload16_methodinfo = {
34220 { (JSJitGetterOp)overload16 },
34221 { prototypes::id::TestExampleInterface },
34222 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34223 JSJitInfo::Method,
34224 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34225 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34226 false, /* isInfallible. False in setters. */
34227 false, /* isMovable. Not relevant for setters. */
34228 false, /* isEliminatable. Not relevant for setters. */
34229 false, /* isAlwaysInSlot. Only relevant for getters. */
34230 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34231 false, /* isTypedMethod. Only relevant for methods. */
34232 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34233};
34234
34235MOZ_CAN_RUN_SCRIPT static bool
34236overload17(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
34237{
34238 BindingCallContext cx(cx_, "TestExampleInterface.overload17");
34239 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34242( cx, "TestExampleInterface"
, "overload17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34240 "TestExampleInterface", "overload17", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34242( cx, "TestExampleInterface"
, "overload17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34241 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34242( cx, "TestExampleInterface"
, "overload17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34242 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34242( cx, "TestExampleInterface"
, "overload17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34243
34244 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34245 unsigned argcount = std::min(args.length(), 1u);
34246 switch (argcount) {
34247 case 1: {
34248 if (args[0].isObject()) {
34249 do {
34250 binding_detail::AutoSequence<int32_t> arg0;
34251 JS::ForOfIterator iter(cx);
34252 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
34253 return false;
34254 }
34255 if (!iter.valueIsIterable()) {
34256 break;
34257 }
34258 binding_detail::AutoSequence<int32_t> &arr = arg0;
34259 JS::Rooted<JS::Value> temp(cx);
34260 while (true) {
34261 bool done;
34262 if (!iter.next(&temp, &done)) {
34263 return false;
34264 }
34265 if (done) {
34266 break;
34267 }
34268 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
34269 if (!slotPtr) {
34270 JS_ReportOutOfMemory(cx);
34271 return false;
34272 }
34273 int32_t& slot = *slotPtr;
34274 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
34275 return false;
34276 }
34277 }
34278 // NOTE: This assert does NOT call the function.
34279 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload17(Constify(arg0)))>, "Should be returning void here");
34280 MOZ_KnownLive(self)(self)->Overload17(Constify(arg0));
34281 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34281); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34281; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34282 args.rval().setUndefined();
34283 return true;
34284 } while (false);
34285 do {
34286 Record<nsString, int32_t> arg0;
34287 auto& recordEntries = arg0.Entries();
34288
34289 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
34290 JS::RootedVector<jsid> ids(cx);
34291 if (!js::GetPropertyKeys(cx, recordObj,
34292 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
34293 return false;
34294 }
34295 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
34296 JS_ReportOutOfMemory(cx);
34297 return false;
34298 }
34299 JS::Rooted<JS::Value> propNameValue(cx);
34300 JS::Rooted<JS::Value> temp(cx);
34301 JS::Rooted<jsid> curId(cx);
34302 JS::Rooted<JS::Value> idVal(cx);
34303 // Use a hashset to keep track of ids seen, to avoid
34304 // introducing nasty O(N^2) behavior scanning for them all the
34305 // time. Ideally we'd use a data structure with O(1) lookup
34306 // _and_ ordering for the MozMap, but we don't have one lying
34307 // around.
34308 nsTHashtable<nsStringHashKey> idsSeen;
34309 for (size_t i = 0; i < ids.length(); ++i) {
34310 curId = ids[i];
34311
34312 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
34313 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
34314 &desc)) {
34315 return false;
34316 }
34317
34318 if (desc.isNothing() || !desc->enumerable()) {
34319 continue;
34320 }
34321
34322 idVal = js::IdToValue(curId);
34323 nsString propName;
34324 // This will just throw if idVal is a Symbol, like the spec says
34325 // to do.
34326 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
34327 return false;
34328 }
34329
34330 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
34331 return false;
34332 }
34333
34334 Record<nsString, int32_t>::EntryType* entry;
34335 if (!idsSeen.EnsureInserted(propName)) {
34336 // Find the existing entry.
34337 auto idx = recordEntries.IndexOf(propName);
34338 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 34339); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 34339; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
34339 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 34339); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 34339; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
34340 // Now blow it away to make it look like it was just added
34341 // to the array, because it's not obvious that it's
34342 // safe to write to its already-initialized mValue via our
34343 // normal codegen conversions. For example, the value
34344 // could be a union and this would change its type, but
34345 // codegen assumes we won't do that.
34346 entry = recordEntries.ReconstructElementAt(idx);
34347 } else {
34348 // Safe to do an infallible append here, because we did a
34349 // SetCapacity above to the right capacity.
34350 entry = recordEntries.AppendElement();
34351 }
34352 entry->mKey = propName;
34353 int32_t& slot = entry->mValue;
34354 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Value in argument 1", &slot)) {
34355 return false;
34356 }
34357 }
34358 // NOTE: This assert does NOT call the function.
34359 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload17(Constify(arg0)))>, "Should be returning void here");
34360 MOZ_KnownLive(self)(self)->Overload17(Constify(arg0));
34361 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34361); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34361; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34362 args.rval().setUndefined();
34363 return true;
34364 } while (false);
34365 }
34366 return cx.ThrowErrorMessage<MSG_OVERLOAD_RESOLUTION_FAILED>("1", "1");
34367 break;
34368 }
34369 default: {
34370 // Using nsPrintfCString here would require including that
34371 // header. Let's not worry about it.
34372 nsAutoCString argCountStr;
34373 argCountStr.AppendPrintf("%u", args.length());
34374 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
34375 }
34376 }
34377 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 34377); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 34377; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
34378 return false;
34379}
34380
34381static const JSJitInfo overload17_methodinfo = {
34382 { (JSJitGetterOp)overload17 },
34383 { prototypes::id::TestExampleInterface },
34384 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34385 JSJitInfo::Method,
34386 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34387 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34388 false, /* isInfallible. False in setters. */
34389 false, /* isMovable. Not relevant for setters. */
34390 false, /* isEliminatable. Not relevant for setters. */
34391 false, /* isAlwaysInSlot. Only relevant for getters. */
34392 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34393 false, /* isTypedMethod. Only relevant for methods. */
34394 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34395};
34396
34397MOZ_CAN_RUN_SCRIPT static bool
34398overload18(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
34399{
34400 BindingCallContext cx(cx_, "TestExampleInterface.overload18");
34401 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34404( cx, "TestExampleInterface"
, "overload18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34402 "TestExampleInterface", "overload18", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34404( cx, "TestExampleInterface"
, "overload18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34403 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34404( cx, "TestExampleInterface"
, "overload18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34404 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34404( cx, "TestExampleInterface"
, "overload18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34405
34406 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34407 unsigned argcount = std::min(args.length(), 1u);
34408 switch (argcount) {
34409 case 1: {
34410 if (args[0].isObject()) {
34411 do {
34412 binding_detail::AutoSequence<nsString> arg0;
34413 JS::ForOfIterator iter(cx);
34414 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
34415 return false;
34416 }
34417 if (!iter.valueIsIterable()) {
34418 break;
34419 }
34420 binding_detail::AutoSequence<nsString> &arr = arg0;
34421 JS::Rooted<JS::Value> temp(cx);
34422 while (true) {
34423 bool done;
34424 if (!iter.next(&temp, &done)) {
34425 return false;
34426 }
34427 if (done) {
34428 break;
34429 }
34430 nsString* slotPtr = arr.AppendElement(mozilla::fallible);
34431 if (!slotPtr) {
34432 JS_ReportOutOfMemory(cx);
34433 return false;
34434 }
34435 nsString& slot = *slotPtr;
34436 if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
34437 return false;
34438 }
34439 }
34440 // NOTE: This assert does NOT call the function.
34441 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload18(Constify(arg0)))>, "Should be returning void here");
34442 MOZ_KnownLive(self)(self)->Overload18(Constify(arg0));
34443 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34443); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34443; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34444 args.rval().setUndefined();
34445 return true;
34446 } while (false);
34447 do {
34448 Record<nsString, nsString> arg0;
34449 auto& recordEntries = arg0.Entries();
34450
34451 JS::Rooted<JSObject*> recordObj(cx, &args[0].toObject());
34452 JS::RootedVector<jsid> ids(cx);
34453 if (!js::GetPropertyKeys(cx, recordObj,
34454 JSITER_OWNONLY0x8 | JSITER_HIDDEN0x10 | JSITER_SYMBOLS0x20, &ids)) {
34455 return false;
34456 }
34457 if (!recordEntries.SetCapacity(ids.length(), mozilla::fallible)) {
34458 JS_ReportOutOfMemory(cx);
34459 return false;
34460 }
34461 JS::Rooted<JS::Value> propNameValue(cx);
34462 JS::Rooted<JS::Value> temp(cx);
34463 JS::Rooted<jsid> curId(cx);
34464 JS::Rooted<JS::Value> idVal(cx);
34465 // Use a hashset to keep track of ids seen, to avoid
34466 // introducing nasty O(N^2) behavior scanning for them all the
34467 // time. Ideally we'd use a data structure with O(1) lookup
34468 // _and_ ordering for the MozMap, but we don't have one lying
34469 // around.
34470 nsTHashtable<nsStringHashKey> idsSeen;
34471 for (size_t i = 0; i < ids.length(); ++i) {
34472 curId = ids[i];
34473
34474 JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
34475 if (!JS_GetOwnPropertyDescriptorById(cx, recordObj, curId,
34476 &desc)) {
34477 return false;
34478 }
34479
34480 if (desc.isNothing() || !desc->enumerable()) {
34481 continue;
34482 }
34483
34484 idVal = js::IdToValue(curId);
34485 nsString propName;
34486 // This will just throw if idVal is a Symbol, like the spec says
34487 // to do.
34488 if (!ConvertJSValueToString(cx, idVal, "key of argument 1", propName)) {
34489 return false;
34490 }
34491
34492 if (!JS_GetPropertyById(cx, recordObj, curId, &temp)) {
34493 return false;
34494 }
34495
34496 Record<nsString, nsString>::EntryType* entry;
34497 if (!idsSeen.EnsureInserted(propName)) {
34498 // Find the existing entry.
34499 auto idx = recordEntries.IndexOf(propName);
34500 MOZ_ASSERT(idx != recordEntries.NoIndex,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 34501); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 34501; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
34501 "Why is it not found?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(idx != recordEntries.NoIndex)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(idx != recordEntries.NoIndex
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"idx != recordEntries.NoIndex" " (" "Why is it not found?" ")"
, "../TestExampleGenBinding.cpp", 34501); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "idx != recordEntries.NoIndex" ") (" "Why is it not found?"
")"); do { *((volatile int*)__null) = 34501; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
34502 // Now blow it away to make it look like it was just added
34503 // to the array, because it's not obvious that it's
34504 // safe to write to its already-initialized mValue via our
34505 // normal codegen conversions. For example, the value
34506 // could be a union and this would change its type, but
34507 // codegen assumes we won't do that.
34508 entry = recordEntries.ReconstructElementAt(idx);
34509 } else {
34510 // Safe to do an infallible append here, because we did a
34511 // SetCapacity above to the right capacity.
34512 entry = recordEntries.AppendElement();
34513 }
34514 entry->mKey = propName;
34515 nsString& slot = entry->mValue;
34516 if (!ConvertJSValueToString(cx, temp, eStringify, eStringify, slot)) {
34517 return false;
34518 }
34519 }
34520 // NOTE: This assert does NOT call the function.
34521 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload18(Constify(arg0)))>, "Should be returning void here");
34522 MOZ_KnownLive(self)(self)->Overload18(Constify(arg0));
34523 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34523); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34523; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34524 args.rval().setUndefined();
34525 return true;
34526 } while (false);
34527 }
34528 return cx.ThrowErrorMessage<MSG_OVERLOAD_RESOLUTION_FAILED>("1", "1");
34529 break;
34530 }
34531 default: {
34532 // Using nsPrintfCString here would require including that
34533 // header. Let's not worry about it.
34534 nsAutoCString argCountStr;
34535 argCountStr.AppendPrintf("%u", args.length());
34536 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
34537 }
34538 }
34539 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 34539); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 34539; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
34540 return false;
34541}
34542
34543static const JSJitInfo overload18_methodinfo = {
34544 { (JSJitGetterOp)overload18 },
34545 { prototypes::id::TestExampleInterface },
34546 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34547 JSJitInfo::Method,
34548 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34549 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34550 false, /* isInfallible. False in setters. */
34551 false, /* isMovable. Not relevant for setters. */
34552 false, /* isEliminatable. Not relevant for setters. */
34553 false, /* isAlwaysInSlot. Only relevant for getters. */
34554 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34555 false, /* isTypedMethod. Only relevant for methods. */
34556 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34557};
34558
34559MOZ_CAN_RUN_SCRIPT static bool
34560overload19(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
34561{
34562 BindingCallContext cx(cx_, "TestExampleInterface.overload19");
34563 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34566( cx, "TestExampleInterface"
, "overload19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34564 "TestExampleInterface", "overload19", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34566( cx, "TestExampleInterface"
, "overload19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34565 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34566( cx, "TestExampleInterface"
, "overload19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34566 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34566( cx, "TestExampleInterface"
, "overload19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34567
34568 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34569 unsigned argcount = std::min(args.length(), 1u);
34570 switch (argcount) {
34571 case 0: {
34572 RootedDictionary<binding_detail::FastDict> arg0(cx);
34573 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
34574 return false;
34575 }
34576 // NOTE: This assert does NOT call the function.
34577 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload19(cx, Constify(arg0)))>, "Should be returning void here");
34578 MOZ_KnownLive(self)(self)->Overload19(cx, Constify(arg0));
34579 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34579); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34579; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34580 args.rval().setUndefined();
34581 return true;
34582 break;
34583 }
34584 case 1: {
34585 if (args[0].isNullOrUndefined()) {
34586 RootedDictionary<binding_detail::FastDict> arg0(cx);
34587 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
34588 return false;
34589 }
34590 // NOTE: This assert does NOT call the function.
34591 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload19(cx, Constify(arg0)))>, "Should be returning void here");
34592 MOZ_KnownLive(self)(self)->Overload19(cx, Constify(arg0));
34593 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34593); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34593; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34594 args.rval().setUndefined();
34595 return true;
34596 }
34597 if (args[0].isObject()) {
34598 do {
34599 binding_detail::AutoSequence<int32_t> arg0;
34600 JS::ForOfIterator iter(cx);
34601 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
34602 return false;
34603 }
34604 if (!iter.valueIsIterable()) {
34605 break;
34606 }
34607 binding_detail::AutoSequence<int32_t> &arr = arg0;
34608 JS::Rooted<JS::Value> temp(cx);
34609 while (true) {
34610 bool done;
34611 if (!iter.next(&temp, &done)) {
34612 return false;
34613 }
34614 if (done) {
34615 break;
34616 }
34617 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
34618 if (!slotPtr) {
34619 JS_ReportOutOfMemory(cx);
34620 return false;
34621 }
34622 int32_t& slot = *slotPtr;
34623 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
34624 return false;
34625 }
34626 }
34627 // NOTE: This assert does NOT call the function.
34628 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload19(Constify(arg0)))>, "Should be returning void here");
34629 MOZ_KnownLive(self)(self)->Overload19(Constify(arg0));
34630 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34630); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34630; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34631 args.rval().setUndefined();
34632 return true;
34633 } while (false);
34634 do {
34635 RootedDictionary<binding_detail::FastDict> arg0(cx);
34636 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
34637 return false;
34638 }
34639 // NOTE: This assert does NOT call the function.
34640 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload19(cx, Constify(arg0)))>, "Should be returning void here");
34641 MOZ_KnownLive(self)(self)->Overload19(cx, Constify(arg0));
34642 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34642); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34642; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34643 args.rval().setUndefined();
34644 return true;
34645 } while (false);
34646 }
34647 return cx.ThrowErrorMessage<MSG_OVERLOAD_RESOLUTION_FAILED>("1", "1");
34648 break;
34649 }
34650 default: {
34651 // Using nsPrintfCString here would require including that
34652 // header. Let's not worry about it.
34653 nsAutoCString argCountStr;
34654 argCountStr.AppendPrintf("%u", args.length());
34655 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
34656 }
34657 }
34658 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 34658); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 34658; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
34659 return false;
34660}
34661
34662static const JSJitInfo overload19_methodinfo = {
34663 { (JSJitGetterOp)overload19 },
34664 { prototypes::id::TestExampleInterface },
34665 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34666 JSJitInfo::Method,
34667 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34668 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34669 false, /* isInfallible. False in setters. */
34670 false, /* isMovable. Not relevant for setters. */
34671 false, /* isEliminatable. Not relevant for setters. */
34672 false, /* isAlwaysInSlot. Only relevant for getters. */
34673 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34674 false, /* isTypedMethod. Only relevant for methods. */
34675 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34676};
34677
34678MOZ_CAN_RUN_SCRIPT static bool
34679overload20(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
34680{
34681 BindingCallContext cx(cx_, "TestExampleInterface.overload20");
34682 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34685( cx, "TestExampleInterface"
, "overload20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34683 "TestExampleInterface", "overload20", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34685( cx, "TestExampleInterface"
, "overload20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34684 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34685( cx, "TestExampleInterface"
, "overload20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34685 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34685( cx, "TestExampleInterface"
, "overload20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34686
34687 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34688 unsigned argcount = std::min(args.length(), 1u);
34689 switch (argcount) {
34690 case 0: {
34691 RootedDictionary<binding_detail::FastDict> arg0(cx);
34692 if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1", false)) {
34693 return false;
34694 }
34695 // NOTE: This assert does NOT call the function.
34696 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload20(cx, Constify(arg0)))>, "Should be returning void here");
34697 MOZ_KnownLive(self)(self)->Overload20(cx, Constify(arg0));
34698 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34698); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34698; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34699 args.rval().setUndefined();
34700 return true;
34701 break;
34702 }
34703 case 1: {
34704 if (args[0].isNullOrUndefined()) {
34705 RootedDictionary<binding_detail::FastDict> arg0(cx);
34706 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
34707 return false;
34708 }
34709 // NOTE: This assert does NOT call the function.
34710 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload20(cx, Constify(arg0)))>, "Should be returning void here");
34711 MOZ_KnownLive(self)(self)->Overload20(cx, Constify(arg0));
34712 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34712); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34712; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34713 args.rval().setUndefined();
34714 return true;
34715 }
34716 if (args[0].isObject()) {
34717 do {
34718 binding_detail::AutoSequence<int32_t> arg0;
34719 JS::ForOfIterator iter(cx);
34720 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
34721 return false;
34722 }
34723 if (!iter.valueIsIterable()) {
34724 break;
34725 }
34726 binding_detail::AutoSequence<int32_t> &arr = arg0;
34727 JS::Rooted<JS::Value> temp(cx);
34728 while (true) {
34729 bool done;
34730 if (!iter.next(&temp, &done)) {
34731 return false;
34732 }
34733 if (done) {
34734 break;
34735 }
34736 int32_t* slotPtr = arr.AppendElement(mozilla::fallible);
34737 if (!slotPtr) {
34738 JS_ReportOutOfMemory(cx);
34739 return false;
34740 }
34741 int32_t& slot = *slotPtr;
34742 if (!ValueToPrimitive<int32_t, eDefault>(cx, temp, "Element of argument 1", &slot)) {
34743 return false;
34744 }
34745 }
34746 // NOTE: This assert does NOT call the function.
34747 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload20(Constify(arg0)))>, "Should be returning void here");
34748 MOZ_KnownLive(self)(self)->Overload20(Constify(arg0));
34749 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34749); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34749; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34750 args.rval().setUndefined();
34751 return true;
34752 } while (false);
34753 do {
34754 RootedDictionary<binding_detail::FastDict> arg0(cx);
34755 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
34756 return false;
34757 }
34758 // NOTE: This assert does NOT call the function.
34759 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Overload20(cx, Constify(arg0)))>, "Should be returning void here");
34760 MOZ_KnownLive(self)(self)->Overload20(cx, Constify(arg0));
34761 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34761); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34761; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34762 args.rval().setUndefined();
34763 return true;
34764 } while (false);
34765 }
34766 return cx.ThrowErrorMessage<MSG_OVERLOAD_RESOLUTION_FAILED>("1", "1");
34767 break;
34768 }
34769 default: {
34770 // Using nsPrintfCString here would require including that
34771 // header. Let's not worry about it.
34772 nsAutoCString argCountStr;
34773 argCountStr.AppendPrintf("%u", args.length());
34774 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
34775 }
34776 }
34777 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 34777); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 34777; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
34778 return false;
34779}
34780
34781static const JSJitInfo overload20_methodinfo = {
34782 { (JSJitGetterOp)overload20 },
34783 { prototypes::id::TestExampleInterface },
34784 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34785 JSJitInfo::Method,
34786 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34787 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34788 false, /* isInfallible. False in setters. */
34789 false, /* isMovable. Not relevant for setters. */
34790 false, /* isEliminatable. Not relevant for setters. */
34791 false, /* isAlwaysInSlot. Only relevant for getters. */
34792 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34793 false, /* isTypedMethod. Only relevant for methods. */
34794 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34795};
34796
34797MOZ_CAN_RUN_SCRIPT static bool
34798passVariadicThirdArg(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
34799{
34800 BindingCallContext cx(cx_, "TestExampleInterface.passVariadicThirdArg");
34801 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34804( cx, "TestExampleInterface"
, "passVariadicThirdArg", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34802 "TestExampleInterface", "passVariadicThirdArg", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34804( cx, "TestExampleInterface"
, "passVariadicThirdArg", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34803 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject34804( cx, "TestExampleInterface"
, "passVariadicThirdArg", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
34804 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34804( cx, "TestExampleInterface"
, "passVariadicThirdArg", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
34805
34806 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34807 if (!args.requireAtLeast(cx, "TestExampleInterface.passVariadicThirdArg", 2)) {
34808 return false;
34809 }
34810 binding_detail::FakeString<char16_t> arg0;
34811 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
34812 return false;
34813 }
34814 int32_t arg1;
34815 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], "Argument 2", &arg1)) {
34816 return false;
34817 }
34818 AutoSequence<OwningNonNull<mozilla::dom::TestInterface>> arg2;
34819 if (args.length() > 2) {
34820 if (!arg2.SetCapacity(args.length() - 2, mozilla::fallible)) {
34821 JS_ReportOutOfMemory(cx);
34822 return false;
34823 }
34824 for (uint32_t variadicArg = 2; variadicArg < args.length(); ++variadicArg) {
34825 // OK to do infallible append here, since we ensured capacity already.
34826 OwningNonNull<mozilla::dom::TestInterface>& slot = *arg2.AppendElement();
34827 if (args[variadicArg].isObject()) {
34828 static_assert(IsRefcounted<mozilla::dom::TestInterface>::value, "We can only store refcounted classes.");
34829 {
34830 // Our JSContext should be in the right global to do unwrapping in.
34831 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[variadicArg], slot, cx);
34832 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
34833 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 3", "TestInterface");
34834 return false;
34835 }
34836 }
34837 } else {
34838 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 3");
34839 return false;
34840 }
34841 }
34842 }
34843 // NOTE: This assert does NOT call the function.
34844 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassVariadicThirdArg(NonNullHelper(Constify(arg0)), arg1, MOZ_KnownLive(NonNullHelper(Constify(arg2)))(NonNullHelper(Constify(arg2)))))>, "Should be returning void here");
34845 MOZ_KnownLive(self)(self)->PassVariadicThirdArg(NonNullHelper(Constify(arg0)), arg1, MOZ_KnownLive(NonNullHelper(Constify(arg2)))(NonNullHelper(Constify(arg2))));
34846 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34846); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34846; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34847 args.rval().setUndefined();
34848 return true;
34849}
34850
34851static const JSJitInfo passVariadicThirdArg_methodinfo = {
34852 { (JSJitGetterOp)passVariadicThirdArg },
34853 { prototypes::id::TestExampleInterface },
34854 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34855 JSJitInfo::Method,
34856 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34857 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
34858 false, /* isInfallible. False in setters. */
34859 false, /* isMovable. Not relevant for setters. */
34860 false, /* isEliminatable. Not relevant for setters. */
34861 false, /* isAlwaysInSlot. Only relevant for getters. */
34862 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34863 false, /* isTypedMethod. Only relevant for methods. */
34864 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34865};
34866
34867MOZ_CAN_RUN_SCRIPT static bool
34868get_prefable1(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
34869{
34870 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34873( cx, "TestExampleInterface"
, "prefable1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34871 "TestExampleInterface", "prefable1", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34873( cx, "TestExampleInterface"
, "prefable1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34872 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject34873( cx, "TestExampleInterface"
, "prefable1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34873 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34873( cx, "TestExampleInterface"
, "prefable1", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
34874
34875 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34876 bool result(MOZ_KnownLive(self)(self)->Prefable1());
34877 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34877); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34877; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34878 args.rval().setBoolean(result);
34879 return true;
34880}
34881
34882static const JSJitInfo prefable1_getterinfo = {
34883 { get_prefable1 },
34884 { prototypes::id::TestExampleInterface },
34885 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34886 JSJitInfo::Getter,
34887 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34888 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
34889 true, /* isInfallible. False in setters. */
34890 false, /* isMovable. Not relevant for setters. */
34891 false, /* isEliminatable. Not relevant for setters. */
34892 false, /* isAlwaysInSlot. Only relevant for getters. */
34893 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34894 false, /* isTypedMethod. Only relevant for methods. */
34895 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34896};
34897
34898MOZ_CAN_RUN_SCRIPT static bool
34899get_prefable2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
34900{
34901 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34904( cx, "TestExampleInterface"
, "prefable2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34902 "TestExampleInterface", "prefable2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34904( cx, "TestExampleInterface"
, "prefable2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34903 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject34904( cx, "TestExampleInterface"
, "prefable2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34904 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34904( cx, "TestExampleInterface"
, "prefable2", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
34905
34906 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34907 bool result(MOZ_KnownLive(self)(self)->Prefable2());
34908 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34908); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34908; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34909 args.rval().setBoolean(result);
34910 return true;
34911}
34912
34913static const JSJitInfo prefable2_getterinfo = {
34914 { get_prefable2 },
34915 { prototypes::id::TestExampleInterface },
34916 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34917 JSJitInfo::Getter,
34918 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34919 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
34920 true, /* isInfallible. False in setters. */
34921 false, /* isMovable. Not relevant for setters. */
34922 false, /* isEliminatable. Not relevant for setters. */
34923 false, /* isAlwaysInSlot. Only relevant for getters. */
34924 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34925 false, /* isTypedMethod. Only relevant for methods. */
34926 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34927};
34928
34929MOZ_CAN_RUN_SCRIPT static bool
34930get_prefable3(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
34931{
34932 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34935( cx, "TestExampleInterface"
, "prefable3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34933 "TestExampleInterface", "prefable3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34935( cx, "TestExampleInterface"
, "prefable3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34934 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject34935( cx, "TestExampleInterface"
, "prefable3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34935 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34935( cx, "TestExampleInterface"
, "prefable3", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
34936
34937 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34938 bool result(MOZ_KnownLive(self)(self)->Prefable3());
34939 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34939); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34939; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34940 args.rval().setBoolean(result);
34941 return true;
34942}
34943
34944static const JSJitInfo prefable3_getterinfo = {
34945 { get_prefable3 },
34946 { prototypes::id::TestExampleInterface },
34947 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34948 JSJitInfo::Getter,
34949 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34950 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
34951 true, /* isInfallible. False in setters. */
34952 false, /* isMovable. Not relevant for setters. */
34953 false, /* isEliminatable. Not relevant for setters. */
34954 false, /* isAlwaysInSlot. Only relevant for getters. */
34955 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34956 false, /* isTypedMethod. Only relevant for methods. */
34957 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34958};
34959
34960MOZ_CAN_RUN_SCRIPT static bool
34961get_prefable4(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
34962{
34963 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34966( cx, "TestExampleInterface"
, "prefable4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34964 "TestExampleInterface", "prefable4", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34966( cx, "TestExampleInterface"
, "prefable4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34965 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject34966( cx, "TestExampleInterface"
, "prefable4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34966 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34966( cx, "TestExampleInterface"
, "prefable4", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
34967
34968 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
34969 bool result(MOZ_KnownLive(self)(self)->Prefable4());
34970 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 34970); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 34970; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
34971 args.rval().setBoolean(result);
34972 return true;
34973}
34974
34975static const JSJitInfo prefable4_getterinfo = {
34976 { get_prefable4 },
34977 { prototypes::id::TestExampleInterface },
34978 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
34979 JSJitInfo::Getter,
34980 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
34981 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
34982 true, /* isInfallible. False in setters. */
34983 false, /* isMovable. Not relevant for setters. */
34984 false, /* isEliminatable. Not relevant for setters. */
34985 false, /* isAlwaysInSlot. Only relevant for getters. */
34986 false, /* isLazilyCachedInSlot. Only relevant for getters. */
34987 false, /* isTypedMethod. Only relevant for methods. */
34988 0 /* Reserved slot index, if we're stored in a slot, else 0. */
34989};
34990
34991MOZ_CAN_RUN_SCRIPT static bool
34992get_prefable5(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
34993{
34994 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject34997( cx, "TestExampleInterface"
, "prefable5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34995 "TestExampleInterface", "prefable5", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject34997( cx, "TestExampleInterface"
, "prefable5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34996 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject34997( cx, "TestExampleInterface"
, "prefable5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
34997 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject34997( cx, "TestExampleInterface"
, "prefable5", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
34998
34999 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35000 bool result(MOZ_KnownLive(self)(self)->Prefable5());
35001 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35001); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35001; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35002 args.rval().setBoolean(result);
35003 return true;
35004}
35005
35006static const JSJitInfo prefable5_getterinfo = {
35007 { get_prefable5 },
35008 { prototypes::id::TestExampleInterface },
35009 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35010 JSJitInfo::Getter,
35011 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35012 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35013 true, /* isInfallible. False in setters. */
35014 false, /* isMovable. Not relevant for setters. */
35015 false, /* isEliminatable. Not relevant for setters. */
35016 false, /* isAlwaysInSlot. Only relevant for getters. */
35017 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35018 false, /* isTypedMethod. Only relevant for methods. */
35019 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35020};
35021
35022MOZ_CAN_RUN_SCRIPT static bool
35023get_prefable6(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35024{
35025 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35028( cx, "TestExampleInterface"
, "prefable6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35026 "TestExampleInterface", "prefable6", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35028( cx, "TestExampleInterface"
, "prefable6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35027 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35028( cx, "TestExampleInterface"
, "prefable6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35028 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35028( cx, "TestExampleInterface"
, "prefable6", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
35029
35030 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35031 bool result(MOZ_KnownLive(self)(self)->Prefable6());
35032 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35032); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35032; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35033 args.rval().setBoolean(result);
35034 return true;
35035}
35036
35037static const JSJitInfo prefable6_getterinfo = {
35038 { get_prefable6 },
35039 { prototypes::id::TestExampleInterface },
35040 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35041 JSJitInfo::Getter,
35042 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35043 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35044 true, /* isInfallible. False in setters. */
35045 false, /* isMovable. Not relevant for setters. */
35046 false, /* isEliminatable. Not relevant for setters. */
35047 false, /* isAlwaysInSlot. Only relevant for getters. */
35048 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35049 false, /* isTypedMethod. Only relevant for methods. */
35050 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35051};
35052
35053MOZ_CAN_RUN_SCRIPT static bool
35054get_prefable7(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35055{
35056 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35059( cx, "TestExampleInterface"
, "prefable7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35057 "TestExampleInterface", "prefable7", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35059( cx, "TestExampleInterface"
, "prefable7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35058 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35059( cx, "TestExampleInterface"
, "prefable7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35059 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35059( cx, "TestExampleInterface"
, "prefable7", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
35060
35061 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35062 bool result(MOZ_KnownLive(self)(self)->Prefable7());
35063 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35063); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35063; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35064 args.rval().setBoolean(result);
35065 return true;
35066}
35067
35068static const JSJitInfo prefable7_getterinfo = {
35069 { get_prefable7 },
35070 { prototypes::id::TestExampleInterface },
35071 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35072 JSJitInfo::Getter,
35073 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35074 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35075 true, /* isInfallible. False in setters. */
35076 false, /* isMovable. Not relevant for setters. */
35077 false, /* isEliminatable. Not relevant for setters. */
35078 false, /* isAlwaysInSlot. Only relevant for getters. */
35079 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35080 false, /* isTypedMethod. Only relevant for methods. */
35081 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35082};
35083
35084MOZ_CAN_RUN_SCRIPT static bool
35085get_prefable8(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35086{
35087 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35090( cx, "TestExampleInterface"
, "prefable8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35088 "TestExampleInterface", "prefable8", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35090( cx, "TestExampleInterface"
, "prefable8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35089 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35090( cx, "TestExampleInterface"
, "prefable8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35090 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35090( cx, "TestExampleInterface"
, "prefable8", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
35091
35092 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35093 bool result(MOZ_KnownLive(self)(self)->Prefable8());
35094 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35094); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35094; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35095 args.rval().setBoolean(result);
35096 return true;
35097}
35098
35099static const JSJitInfo prefable8_getterinfo = {
35100 { get_prefable8 },
35101 { prototypes::id::TestExampleInterface },
35102 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35103 JSJitInfo::Getter,
35104 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35105 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35106 true, /* isInfallible. False in setters. */
35107 false, /* isMovable. Not relevant for setters. */
35108 false, /* isEliminatable. Not relevant for setters. */
35109 false, /* isAlwaysInSlot. Only relevant for getters. */
35110 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35111 false, /* isTypedMethod. Only relevant for methods. */
35112 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35113};
35114
35115MOZ_CAN_RUN_SCRIPT static bool
35116get_prefable9(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35117{
35118 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35121( cx, "TestExampleInterface"
, "prefable9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35119 "TestExampleInterface", "prefable9", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35121( cx, "TestExampleInterface"
, "prefable9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35120 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35121( cx, "TestExampleInterface"
, "prefable9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
35121 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35121( cx, "TestExampleInterface"
, "prefable9", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
35122
35123 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35124 bool result(MOZ_KnownLive(self)(self)->Prefable9());
35125 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35125); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35125; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35126 args.rval().setBoolean(result);
35127 return true;
35128}
35129
35130static const JSJitInfo prefable9_getterinfo = {
35131 { get_prefable9 },
35132 { prototypes::id::TestExampleInterface },
35133 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35134 JSJitInfo::Getter,
35135 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35136 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35137 true, /* isInfallible. False in setters. */
35138 false, /* isMovable. Not relevant for setters. */
35139 false, /* isEliminatable. Not relevant for setters. */
35140 false, /* isAlwaysInSlot. Only relevant for getters. */
35141 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35142 false, /* isTypedMethod. Only relevant for methods. */
35143 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35144};
35145
35146MOZ_CAN_RUN_SCRIPT static bool
35147prefable10(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35148{
35149 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35152( cx, "TestExampleInterface"
, "prefable10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35150 "TestExampleInterface", "prefable10", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35152( cx, "TestExampleInterface"
, "prefable10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35151 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35152( cx, "TestExampleInterface"
, "prefable10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35152 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35152( cx, "TestExampleInterface"
, "prefable10", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35153
35154 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35155 // NOTE: This assert does NOT call the function.
35156 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable10())>, "Should be returning void here");
35157 MOZ_KnownLive(self)(self)->Prefable10();
35158 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35158); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35158; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35159 args.rval().setUndefined();
35160 return true;
35161}
35162
35163static const JSJitInfo prefable10_methodinfo = {
35164 { (JSJitGetterOp)prefable10 },
35165 { prototypes::id::TestExampleInterface },
35166 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35167 JSJitInfo::Method,
35168 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35169 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35170 true, /* isInfallible. False in setters. */
35171 false, /* isMovable. Not relevant for setters. */
35172 false, /* isEliminatable. Not relevant for setters. */
35173 false, /* isAlwaysInSlot. Only relevant for getters. */
35174 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35175 false, /* isTypedMethod. Only relevant for methods. */
35176 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35177};
35178
35179MOZ_CAN_RUN_SCRIPT static bool
35180prefable11(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35181{
35182 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35185( cx, "TestExampleInterface"
, "prefable11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35183 "TestExampleInterface", "prefable11", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35185( cx, "TestExampleInterface"
, "prefable11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35184 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35185( cx, "TestExampleInterface"
, "prefable11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35185 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35185( cx, "TestExampleInterface"
, "prefable11", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35186
35187 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35188 // NOTE: This assert does NOT call the function.
35189 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable11())>, "Should be returning void here");
35190 MOZ_KnownLive(self)(self)->Prefable11();
35191 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35191); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35191; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35192 args.rval().setUndefined();
35193 return true;
35194}
35195
35196static const JSJitInfo prefable11_methodinfo = {
35197 { (JSJitGetterOp)prefable11 },
35198 { prototypes::id::TestExampleInterface },
35199 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35200 JSJitInfo::Method,
35201 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35202 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35203 true, /* isInfallible. False in setters. */
35204 false, /* isMovable. Not relevant for setters. */
35205 false, /* isEliminatable. Not relevant for setters. */
35206 false, /* isAlwaysInSlot. Only relevant for getters. */
35207 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35208 false, /* isTypedMethod. Only relevant for methods. */
35209 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35210};
35211
35212MOZ_CAN_RUN_SCRIPT static bool
35213get_prefable12(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35214{
35215 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35218( cx, "TestExampleInterface"
, "prefable12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35216 "TestExampleInterface", "prefable12", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35218( cx, "TestExampleInterface"
, "prefable12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35217 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35218( cx, "TestExampleInterface"
, "prefable12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35218 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35218( cx, "TestExampleInterface"
, "prefable12", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35219
35220 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35221 bool result(MOZ_KnownLive(self)(self)->Prefable12());
35222 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35222); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35222; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35223 args.rval().setBoolean(result);
35224 return true;
35225}
35226
35227static const JSJitInfo prefable12_getterinfo = {
35228 { get_prefable12 },
35229 { prototypes::id::TestExampleInterface },
35230 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35231 JSJitInfo::Getter,
35232 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35233 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35234 true, /* isInfallible. False in setters. */
35235 false, /* isMovable. Not relevant for setters. */
35236 false, /* isEliminatable. Not relevant for setters. */
35237 false, /* isAlwaysInSlot. Only relevant for getters. */
35238 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35239 false, /* isTypedMethod. Only relevant for methods. */
35240 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35241};
35242
35243MOZ_CAN_RUN_SCRIPT static bool
35244prefable13(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35245{
35246 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35249( cx, "TestExampleInterface"
, "prefable13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35247 "TestExampleInterface", "prefable13", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35249( cx, "TestExampleInterface"
, "prefable13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35248 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35249( cx, "TestExampleInterface"
, "prefable13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35249 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35249( cx, "TestExampleInterface"
, "prefable13", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35250
35251 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35252 // NOTE: This assert does NOT call the function.
35253 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable13())>, "Should be returning void here");
35254 MOZ_KnownLive(self)(self)->Prefable13();
35255 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35255); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35255; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35256 args.rval().setUndefined();
35257 return true;
35258}
35259
35260static const JSJitInfo prefable13_methodinfo = {
35261 { (JSJitGetterOp)prefable13 },
35262 { prototypes::id::TestExampleInterface },
35263 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35264 JSJitInfo::Method,
35265 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35266 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35267 true, /* isInfallible. False in setters. */
35268 false, /* isMovable. Not relevant for setters. */
35269 false, /* isEliminatable. Not relevant for setters. */
35270 false, /* isAlwaysInSlot. Only relevant for getters. */
35271 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35272 false, /* isTypedMethod. Only relevant for methods. */
35273 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35274};
35275
35276MOZ_CAN_RUN_SCRIPT static bool
35277get_prefable14(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35278{
35279 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35282( cx, "TestExampleInterface"
, "prefable14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35280 "TestExampleInterface", "prefable14", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35282( cx, "TestExampleInterface"
, "prefable14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35281 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35282( cx, "TestExampleInterface"
, "prefable14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35282 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35282( cx, "TestExampleInterface"
, "prefable14", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35283
35284 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35285 bool result(MOZ_KnownLive(self)(self)->Prefable14());
35286 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35286); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35286; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35287 args.rval().setBoolean(result);
35288 return true;
35289}
35290
35291static const JSJitInfo prefable14_getterinfo = {
35292 { get_prefable14 },
35293 { prototypes::id::TestExampleInterface },
35294 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35295 JSJitInfo::Getter,
35296 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35297 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35298 true, /* isInfallible. False in setters. */
35299 false, /* isMovable. Not relevant for setters. */
35300 false, /* isEliminatable. Not relevant for setters. */
35301 false, /* isAlwaysInSlot. Only relevant for getters. */
35302 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35303 false, /* isTypedMethod. Only relevant for methods. */
35304 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35305};
35306
35307MOZ_CAN_RUN_SCRIPT static bool
35308get_prefable15(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35309{
35310 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35313( cx, "TestExampleInterface"
, "prefable15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35311 "TestExampleInterface", "prefable15", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35313( cx, "TestExampleInterface"
, "prefable15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35312 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35313( cx, "TestExampleInterface"
, "prefable15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35313 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35313( cx, "TestExampleInterface"
, "prefable15", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35314
35315 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35316 bool result(MOZ_KnownLive(self)(self)->Prefable15());
35317 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35317); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35317; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35318 args.rval().setBoolean(result);
35319 return true;
35320}
35321
35322static const JSJitInfo prefable15_getterinfo = {
35323 { get_prefable15 },
35324 { prototypes::id::TestExampleInterface },
35325 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35326 JSJitInfo::Getter,
35327 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35328 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35329 true, /* isInfallible. False in setters. */
35330 false, /* isMovable. Not relevant for setters. */
35331 false, /* isEliminatable. Not relevant for setters. */
35332 false, /* isAlwaysInSlot. Only relevant for getters. */
35333 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35334 false, /* isTypedMethod. Only relevant for methods. */
35335 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35336};
35337
35338MOZ_CAN_RUN_SCRIPT static bool
35339get_prefable16(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35340{
35341 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35344( cx, "TestExampleInterface"
, "prefable16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35342 "TestExampleInterface", "prefable16", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35344( cx, "TestExampleInterface"
, "prefable16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35343 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35344( cx, "TestExampleInterface"
, "prefable16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35344 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35344( cx, "TestExampleInterface"
, "prefable16", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35345
35346 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35347 bool result(MOZ_KnownLive(self)(self)->Prefable16());
35348 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35348); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35348; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35349 args.rval().setBoolean(result);
35350 return true;
35351}
35352
35353static const JSJitInfo prefable16_getterinfo = {
35354 { get_prefable16 },
35355 { prototypes::id::TestExampleInterface },
35356 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35357 JSJitInfo::Getter,
35358 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35359 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35360 true, /* isInfallible. False in setters. */
35361 false, /* isMovable. Not relevant for setters. */
35362 false, /* isEliminatable. Not relevant for setters. */
35363 false, /* isAlwaysInSlot. Only relevant for getters. */
35364 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35365 false, /* isTypedMethod. Only relevant for methods. */
35366 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35367};
35368
35369MOZ_CAN_RUN_SCRIPT static bool
35370prefable17(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35371{
35372 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35375( cx, "TestExampleInterface"
, "prefable17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35373 "TestExampleInterface", "prefable17", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35375( cx, "TestExampleInterface"
, "prefable17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35374 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35375( cx, "TestExampleInterface"
, "prefable17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35375 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35375( cx, "TestExampleInterface"
, "prefable17", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35376
35377 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35378 // NOTE: This assert does NOT call the function.
35379 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable17())>, "Should be returning void here");
35380 MOZ_KnownLive(self)(self)->Prefable17();
35381 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35381); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35381; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35382 args.rval().setUndefined();
35383 return true;
35384}
35385
35386static const JSJitInfo prefable17_methodinfo = {
35387 { (JSJitGetterOp)prefable17 },
35388 { prototypes::id::TestExampleInterface },
35389 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35390 JSJitInfo::Method,
35391 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35392 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35393 true, /* isInfallible. False in setters. */
35394 false, /* isMovable. Not relevant for setters. */
35395 false, /* isEliminatable. Not relevant for setters. */
35396 false, /* isAlwaysInSlot. Only relevant for getters. */
35397 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35398 false, /* isTypedMethod. Only relevant for methods. */
35399 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35400};
35401
35402MOZ_CAN_RUN_SCRIPT static bool
35403prefable18(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35404{
35405 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35408( cx, "TestExampleInterface"
, "prefable18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35406 "TestExampleInterface", "prefable18", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35408( cx, "TestExampleInterface"
, "prefable18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35407 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35408( cx, "TestExampleInterface"
, "prefable18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35408 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35408( cx, "TestExampleInterface"
, "prefable18", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35409
35410 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35411 // NOTE: This assert does NOT call the function.
35412 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable18())>, "Should be returning void here");
35413 MOZ_KnownLive(self)(self)->Prefable18();
35414 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35414); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35414; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35415 args.rval().setUndefined();
35416 return true;
35417}
35418
35419static const JSJitInfo prefable18_methodinfo = {
35420 { (JSJitGetterOp)prefable18 },
35421 { prototypes::id::TestExampleInterface },
35422 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35423 JSJitInfo::Method,
35424 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35425 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35426 true, /* isInfallible. False in setters. */
35427 false, /* isMovable. Not relevant for setters. */
35428 false, /* isEliminatable. Not relevant for setters. */
35429 false, /* isAlwaysInSlot. Only relevant for getters. */
35430 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35431 false, /* isTypedMethod. Only relevant for methods. */
35432 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35433};
35434
35435MOZ_CAN_RUN_SCRIPT static bool
35436prefable19(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35437{
35438 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35441( cx, "TestExampleInterface"
, "prefable19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35439 "TestExampleInterface", "prefable19", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35441( cx, "TestExampleInterface"
, "prefable19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35440 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35441( cx, "TestExampleInterface"
, "prefable19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35441 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35441( cx, "TestExampleInterface"
, "prefable19", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35442
35443 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35444 // NOTE: This assert does NOT call the function.
35445 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable19())>, "Should be returning void here");
35446 MOZ_KnownLive(self)(self)->Prefable19();
35447 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35447); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35447; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35448 args.rval().setUndefined();
35449 return true;
35450}
35451
35452static const JSJitInfo prefable19_methodinfo = {
35453 { (JSJitGetterOp)prefable19 },
35454 { prototypes::id::TestExampleInterface },
35455 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35456 JSJitInfo::Method,
35457 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35458 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35459 true, /* isInfallible. False in setters. */
35460 false, /* isMovable. Not relevant for setters. */
35461 false, /* isEliminatable. Not relevant for setters. */
35462 false, /* isAlwaysInSlot. Only relevant for getters. */
35463 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35464 false, /* isTypedMethod. Only relevant for methods. */
35465 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35466};
35467
35468MOZ_CAN_RUN_SCRIPT static bool
35469prefable20(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35470{
35471 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35474( cx, "TestExampleInterface"
, "prefable20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35472 "TestExampleInterface", "prefable20", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35474( cx, "TestExampleInterface"
, "prefable20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35473 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35474( cx, "TestExampleInterface"
, "prefable20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35474 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35474( cx, "TestExampleInterface"
, "prefable20", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35475
35476 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35477 // NOTE: This assert does NOT call the function.
35478 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Prefable20())>, "Should be returning void here");
35479 MOZ_KnownLive(self)(self)->Prefable20();
35480 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35480); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35480; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35481 args.rval().setUndefined();
35482 return true;
35483}
35484
35485static const JSJitInfo prefable20_methodinfo = {
35486 { (JSJitGetterOp)prefable20 },
35487 { prototypes::id::TestExampleInterface },
35488 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35489 JSJitInfo::Method,
35490 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35491 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35492 true, /* isInfallible. False in setters. */
35493 false, /* isMovable. Not relevant for setters. */
35494 false, /* isEliminatable. Not relevant for setters. */
35495 false, /* isAlwaysInSlot. Only relevant for getters. */
35496 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35497 false, /* isTypedMethod. Only relevant for methods. */
35498 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35499};
35500
35501MOZ_CAN_RUN_SCRIPT static bool
35502get_prefable21(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35503{
35504 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35507( cx, "TestExampleInterface"
, "prefable21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35505 "TestExampleInterface", "prefable21", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35507( cx, "TestExampleInterface"
, "prefable21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35506 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35507( cx, "TestExampleInterface"
, "prefable21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35507 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35507( cx, "TestExampleInterface"
, "prefable21", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35508
35509 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35510 bool result(MOZ_KnownLive(self)(self)->Prefable21());
35511 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35511); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35511; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35512 args.rval().setBoolean(result);
35513 return true;
35514}
35515
35516static const JSJitInfo prefable21_getterinfo = {
35517 { get_prefable21 },
35518 { prototypes::id::TestExampleInterface },
35519 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35520 JSJitInfo::Getter,
35521 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35522 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35523 true, /* isInfallible. False in setters. */
35524 false, /* isMovable. Not relevant for setters. */
35525 false, /* isEliminatable. Not relevant for setters. */
35526 false, /* isAlwaysInSlot. Only relevant for getters. */
35527 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35528 false, /* isTypedMethod. Only relevant for methods. */
35529 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35530};
35531
35532MOZ_CAN_RUN_SCRIPT static bool
35533get_prefable22(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35534{
35535 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35538( cx, "TestExampleInterface"
, "prefable22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35536 "TestExampleInterface", "prefable22", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35538( cx, "TestExampleInterface"
, "prefable22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35537 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35538( cx, "TestExampleInterface"
, "prefable22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35538 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35538( cx, "TestExampleInterface"
, "prefable22", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35539
35540 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35541 bool result(MOZ_KnownLive(self)(self)->Prefable22());
35542 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35542); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35542; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35543 args.rval().setBoolean(result);
35544 return true;
35545}
35546
35547static const JSJitInfo prefable22_getterinfo = {
35548 { get_prefable22 },
35549 { prototypes::id::TestExampleInterface },
35550 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35551 JSJitInfo::Getter,
35552 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35553 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35554 true, /* isInfallible. False in setters. */
35555 false, /* isMovable. Not relevant for setters. */
35556 false, /* isEliminatable. Not relevant for setters. */
35557 false, /* isAlwaysInSlot. Only relevant for getters. */
35558 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35559 false, /* isTypedMethod. Only relevant for methods. */
35560 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35561};
35562
35563MOZ_CAN_RUN_SCRIPT static bool
35564get_conditionalOnSecureContext1(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35565{
35566 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35569( cx, "TestExampleInterface"
, "conditionalOnSecureContext1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35567 "TestExampleInterface", "conditionalOnSecureContext1", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35569( cx, "TestExampleInterface"
, "conditionalOnSecureContext1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35568 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35569( cx, "TestExampleInterface"
, "conditionalOnSecureContext1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35569 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35569( cx, "TestExampleInterface"
, "conditionalOnSecureContext1", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35570
35571 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35572 bool result(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext1());
35573 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35573); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35573; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35574 args.rval().setBoolean(result);
35575 return true;
35576}
35577
35578static const JSJitInfo conditionalOnSecureContext1_getterinfo = {
35579 { get_conditionalOnSecureContext1 },
35580 { prototypes::id::TestExampleInterface },
35581 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35582 JSJitInfo::Getter,
35583 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35584 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35585 true, /* isInfallible. False in setters. */
35586 false, /* isMovable. Not relevant for setters. */
35587 false, /* isEliminatable. Not relevant for setters. */
35588 false, /* isAlwaysInSlot. Only relevant for getters. */
35589 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35590 false, /* isTypedMethod. Only relevant for methods. */
35591 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35592};
35593
35594MOZ_CAN_RUN_SCRIPT static bool
35595get_conditionalOnSecureContext2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35596{
35597 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35600( cx, "TestExampleInterface"
, "conditionalOnSecureContext2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35598 "TestExampleInterface", "conditionalOnSecureContext2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35600( cx, "TestExampleInterface"
, "conditionalOnSecureContext2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35599 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35600( cx, "TestExampleInterface"
, "conditionalOnSecureContext2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35600 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35600( cx, "TestExampleInterface"
, "conditionalOnSecureContext2", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35601
35602 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35603 bool result(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext2());
35604 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35604); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35604; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35605 args.rval().setBoolean(result);
35606 return true;
35607}
35608
35609static const JSJitInfo conditionalOnSecureContext2_getterinfo = {
35610 { get_conditionalOnSecureContext2 },
35611 { prototypes::id::TestExampleInterface },
35612 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35613 JSJitInfo::Getter,
35614 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35615 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35616 true, /* isInfallible. False in setters. */
35617 false, /* isMovable. Not relevant for setters. */
35618 false, /* isEliminatable. Not relevant for setters. */
35619 false, /* isAlwaysInSlot. Only relevant for getters. */
35620 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35621 false, /* isTypedMethod. Only relevant for methods. */
35622 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35623};
35624
35625MOZ_CAN_RUN_SCRIPT static bool
35626get_conditionalOnSecureContext3(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35627{
35628 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35631( cx, "TestExampleInterface"
, "conditionalOnSecureContext3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35629 "TestExampleInterface", "conditionalOnSecureContext3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35631( cx, "TestExampleInterface"
, "conditionalOnSecureContext3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35630 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35631( cx, "TestExampleInterface"
, "conditionalOnSecureContext3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35631 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35631( cx, "TestExampleInterface"
, "conditionalOnSecureContext3", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35632
35633 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35634 bool result(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext3());
35635 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35635); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35635; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35636 args.rval().setBoolean(result);
35637 return true;
35638}
35639
35640static const JSJitInfo conditionalOnSecureContext3_getterinfo = {
35641 { get_conditionalOnSecureContext3 },
35642 { prototypes::id::TestExampleInterface },
35643 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35644 JSJitInfo::Getter,
35645 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35646 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35647 true, /* isInfallible. False in setters. */
35648 false, /* isMovable. Not relevant for setters. */
35649 false, /* isEliminatable. Not relevant for setters. */
35650 false, /* isAlwaysInSlot. Only relevant for getters. */
35651 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35652 false, /* isTypedMethod. Only relevant for methods. */
35653 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35654};
35655
35656MOZ_CAN_RUN_SCRIPT static bool
35657get_conditionalOnSecureContext4(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35658{
35659 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35662( cx, "TestExampleInterface"
, "conditionalOnSecureContext4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35660 "TestExampleInterface", "conditionalOnSecureContext4", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35662( cx, "TestExampleInterface"
, "conditionalOnSecureContext4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35661 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35662( cx, "TestExampleInterface"
, "conditionalOnSecureContext4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35662 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35662( cx, "TestExampleInterface"
, "conditionalOnSecureContext4", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35663
35664 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35665 bool result(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext4());
35666 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35666); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35666; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35667 args.rval().setBoolean(result);
35668 return true;
35669}
35670
35671static const JSJitInfo conditionalOnSecureContext4_getterinfo = {
35672 { get_conditionalOnSecureContext4 },
35673 { prototypes::id::TestExampleInterface },
35674 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35675 JSJitInfo::Getter,
35676 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35677 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35678 true, /* isInfallible. False in setters. */
35679 false, /* isMovable. Not relevant for setters. */
35680 false, /* isEliminatable. Not relevant for setters. */
35681 false, /* isAlwaysInSlot. Only relevant for getters. */
35682 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35683 false, /* isTypedMethod. Only relevant for methods. */
35684 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35685};
35686
35687MOZ_CAN_RUN_SCRIPT static bool
35688conditionalOnSecureContext5(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35689{
35690 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35693( cx, "TestExampleInterface"
, "conditionalOnSecureContext5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35691 "TestExampleInterface", "conditionalOnSecureContext5", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35693( cx, "TestExampleInterface"
, "conditionalOnSecureContext5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35692 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35693( cx, "TestExampleInterface"
, "conditionalOnSecureContext5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35693 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35693( cx, "TestExampleInterface"
, "conditionalOnSecureContext5", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35694
35695 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35696 // NOTE: This assert does NOT call the function.
35697 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext5())>, "Should be returning void here");
35698 MOZ_KnownLive(self)(self)->ConditionalOnSecureContext5();
35699 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35699); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35699; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35700 args.rval().setUndefined();
35701 return true;
35702}
35703
35704static const JSJitInfo conditionalOnSecureContext5_methodinfo = {
35705 { (JSJitGetterOp)conditionalOnSecureContext5 },
35706 { prototypes::id::TestExampleInterface },
35707 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35708 JSJitInfo::Method,
35709 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35710 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35711 true, /* isInfallible. False in setters. */
35712 false, /* isMovable. Not relevant for setters. */
35713 false, /* isEliminatable. Not relevant for setters. */
35714 false, /* isAlwaysInSlot. Only relevant for getters. */
35715 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35716 false, /* isTypedMethod. Only relevant for methods. */
35717 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35718};
35719
35720MOZ_CAN_RUN_SCRIPT static bool
35721conditionalOnSecureContext6(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35722{
35723 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35726( cx, "TestExampleInterface"
, "conditionalOnSecureContext6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35724 "TestExampleInterface", "conditionalOnSecureContext6", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35726( cx, "TestExampleInterface"
, "conditionalOnSecureContext6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35725 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35726( cx, "TestExampleInterface"
, "conditionalOnSecureContext6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35726 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35726( cx, "TestExampleInterface"
, "conditionalOnSecureContext6", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35727
35728 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35729 // NOTE: This assert does NOT call the function.
35730 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext6())>, "Should be returning void here");
35731 MOZ_KnownLive(self)(self)->ConditionalOnSecureContext6();
35732 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35732); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35732; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35733 args.rval().setUndefined();
35734 return true;
35735}
35736
35737static const JSJitInfo conditionalOnSecureContext6_methodinfo = {
35738 { (JSJitGetterOp)conditionalOnSecureContext6 },
35739 { prototypes::id::TestExampleInterface },
35740 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35741 JSJitInfo::Method,
35742 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35743 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35744 true, /* isInfallible. False in setters. */
35745 false, /* isMovable. Not relevant for setters. */
35746 false, /* isEliminatable. Not relevant for setters. */
35747 false, /* isAlwaysInSlot. Only relevant for getters. */
35748 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35749 false, /* isTypedMethod. Only relevant for methods. */
35750 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35751};
35752
35753MOZ_CAN_RUN_SCRIPT static bool
35754conditionalOnSecureContext7(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35755{
35756 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35759( cx, "TestExampleInterface"
, "conditionalOnSecureContext7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35757 "TestExampleInterface", "conditionalOnSecureContext7", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35759( cx, "TestExampleInterface"
, "conditionalOnSecureContext7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35758 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35759( cx, "TestExampleInterface"
, "conditionalOnSecureContext7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35759 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35759( cx, "TestExampleInterface"
, "conditionalOnSecureContext7", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35760
35761 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35762 // NOTE: This assert does NOT call the function.
35763 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext7())>, "Should be returning void here");
35764 MOZ_KnownLive(self)(self)->ConditionalOnSecureContext7();
35765 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35765); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35765; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35766 args.rval().setUndefined();
35767 return true;
35768}
35769
35770static const JSJitInfo conditionalOnSecureContext7_methodinfo = {
35771 { (JSJitGetterOp)conditionalOnSecureContext7 },
35772 { prototypes::id::TestExampleInterface },
35773 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35774 JSJitInfo::Method,
35775 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35776 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35777 true, /* isInfallible. False in setters. */
35778 false, /* isMovable. Not relevant for setters. */
35779 false, /* isEliminatable. Not relevant for setters. */
35780 false, /* isAlwaysInSlot. Only relevant for getters. */
35781 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35782 false, /* isTypedMethod. Only relevant for methods. */
35783 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35784};
35785
35786MOZ_CAN_RUN_SCRIPT static bool
35787conditionalOnSecureContext8(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35788{
35789 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35792( cx, "TestExampleInterface"
, "conditionalOnSecureContext8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35790 "TestExampleInterface", "conditionalOnSecureContext8", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35792( cx, "TestExampleInterface"
, "conditionalOnSecureContext8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35791 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35792( cx, "TestExampleInterface"
, "conditionalOnSecureContext8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35792 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35792( cx, "TestExampleInterface"
, "conditionalOnSecureContext8", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35793
35794 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35795 // NOTE: This assert does NOT call the function.
35796 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext8())>, "Should be returning void here");
35797 MOZ_KnownLive(self)(self)->ConditionalOnSecureContext8();
35798 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35798); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35798; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35799 args.rval().setUndefined();
35800 return true;
35801}
35802
35803static const JSJitInfo conditionalOnSecureContext8_methodinfo = {
35804 { (JSJitGetterOp)conditionalOnSecureContext8 },
35805 { prototypes::id::TestExampleInterface },
35806 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35807 JSJitInfo::Method,
35808 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35809 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35810 true, /* isInfallible. False in setters. */
35811 false, /* isMovable. Not relevant for setters. */
35812 false, /* isEliminatable. Not relevant for setters. */
35813 false, /* isAlwaysInSlot. Only relevant for getters. */
35814 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35815 false, /* isTypedMethod. Only relevant for methods. */
35816 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35817};
35818
35819MOZ_CAN_RUN_SCRIPT static bool
35820get_conditionalOnSecureContext9(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35821{
35822 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35825( cx, "TestExampleInterface"
, "conditionalOnSecureContext9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35823 "TestExampleInterface", "conditionalOnSecureContext9", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35825( cx, "TestExampleInterface"
, "conditionalOnSecureContext9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35824 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35825( cx, "TestExampleInterface"
, "conditionalOnSecureContext9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35825 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35825( cx, "TestExampleInterface"
, "conditionalOnSecureContext9", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35826
35827 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35828 bool result(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext9());
35829 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35829); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35829; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35830 args.rval().setBoolean(result);
35831 return true;
35832}
35833
35834static const JSJitInfo conditionalOnSecureContext9_getterinfo = {
35835 { get_conditionalOnSecureContext9 },
35836 { prototypes::id::TestExampleInterface },
35837 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35838 JSJitInfo::Getter,
35839 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35840 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
35841 true, /* isInfallible. False in setters. */
35842 false, /* isMovable. Not relevant for setters. */
35843 false, /* isEliminatable. Not relevant for setters. */
35844 false, /* isAlwaysInSlot. Only relevant for getters. */
35845 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35846 false, /* isTypedMethod. Only relevant for methods. */
35847 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35848};
35849
35850MOZ_CAN_RUN_SCRIPT static bool
35851conditionalOnSecureContext10(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
35852{
35853 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35856( cx, "TestExampleInterface"
, "conditionalOnSecureContext10", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35854 "TestExampleInterface", "conditionalOnSecureContext10", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35856( cx, "TestExampleInterface"
, "conditionalOnSecureContext10", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35855 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject35856( cx, "TestExampleInterface"
, "conditionalOnSecureContext10", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
35856 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35856( cx, "TestExampleInterface"
, "conditionalOnSecureContext10", JS::ProfilingCategoryPair::
DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
35857
35858 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35859 // NOTE: This assert does NOT call the function.
35860 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ConditionalOnSecureContext10())>, "Should be returning void here");
35861 MOZ_KnownLive(self)(self)->ConditionalOnSecureContext10();
35862 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35862); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35862; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35863 args.rval().setUndefined();
35864 return true;
35865}
35866
35867static const JSJitInfo conditionalOnSecureContext10_methodinfo = {
35868 { (JSJitGetterOp)conditionalOnSecureContext10 },
35869 { prototypes::id::TestExampleInterface },
35870 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35871 JSJitInfo::Method,
35872 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35873 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35874 true, /* isInfallible. False in setters. */
35875 false, /* isMovable. Not relevant for setters. */
35876 false, /* isEliminatable. Not relevant for setters. */
35877 false, /* isAlwaysInSlot. Only relevant for getters. */
35878 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35879 false, /* isTypedMethod. Only relevant for methods. */
35880 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35881};
35882
35883MOZ_CAN_RUN_SCRIPT static bool
35884get_attrWithLenientThis(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35885{
35886 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35889( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35887 "TestExampleInterface", "attrWithLenientThis", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35889( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35888 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35889( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35889 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35889( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35890
35891 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35892 int32_t result(MOZ_KnownLive(self)(self)->AttrWithLenientThis());
35893 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35893); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35893; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35894 args.rval().setInt32(int32_t(result));
35895 return true;
35896}
35897
35898MOZ_CAN_RUN_SCRIPT static bool
35899set_attrWithLenientThis(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
35900{
35901 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35904( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35902 "TestExampleInterface", "attrWithLenientThis", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35904( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35903 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject35904( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35904 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35904( cx, "TestExampleInterface"
, "attrWithLenientThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35905
35906 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35907 int32_t arg0;
35908 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
35909 return false;
35910 }
35911 // NOTE: This assert does NOT call the function.
35912 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAttrWithLenientThis(arg0))>, "Should be returning void here");
35913 MOZ_KnownLive(self)(self)->SetAttrWithLenientThis(arg0);
35914 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35914); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35914; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35915
35916 return true;
35917}
35918
35919static const JSJitInfo attrWithLenientThis_getterinfo = {
35920 { get_attrWithLenientThis },
35921 { prototypes::id::TestExampleInterface },
35922 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35923 JSJitInfo::Getter,
35924 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35925 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
35926 true, /* isInfallible. False in setters. */
35927 false, /* isMovable. Not relevant for setters. */
35928 false, /* isEliminatable. Not relevant for setters. */
35929 false, /* isAlwaysInSlot. Only relevant for getters. */
35930 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35931 false, /* isTypedMethod. Only relevant for methods. */
35932 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35933};
35934static const JSJitInfo attrWithLenientThis_setterinfo = {
35935 { (JSJitGetterOp)set_attrWithLenientThis },
35936 { prototypes::id::TestExampleInterface },
35937 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35938 JSJitInfo::Setter,
35939 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35940 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
35941 false, /* isInfallible. False in setters. */
35942 false, /* isMovable. Not relevant for setters. */
35943 false, /* isEliminatable. Not relevant for setters. */
35944 false, /* isAlwaysInSlot. Only relevant for getters. */
35945 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35946 false, /* isTypedMethod. Only relevant for methods. */
35947 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35948};
35949
35950MOZ_CAN_RUN_SCRIPT static bool
35951get_unforgeableAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35952{
35953 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35956( cx, "TestExampleInterface"
, "unforgeableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35954 "TestExampleInterface", "unforgeableAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35956( cx, "TestExampleInterface"
, "unforgeableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35955 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35956( cx, "TestExampleInterface"
, "unforgeableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35956 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35956( cx, "TestExampleInterface"
, "unforgeableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35957
35958 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35959 int32_t result(MOZ_KnownLive(self)(self)->UnforgeableAttr());
35960 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35960); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35960; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35961 args.rval().setInt32(int32_t(result));
35962 return true;
35963}
35964
35965static const JSJitInfo unforgeableAttr_getterinfo = {
35966 { get_unforgeableAttr },
35967 { prototypes::id::TestExampleInterface },
35968 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
35969 JSJitInfo::Getter,
35970 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
35971 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
35972 true, /* isInfallible. False in setters. */
35973 false, /* isMovable. Not relevant for setters. */
35974 false, /* isEliminatable. Not relevant for setters. */
35975 false, /* isAlwaysInSlot. Only relevant for getters. */
35976 false, /* isLazilyCachedInSlot. Only relevant for getters. */
35977 false, /* isTypedMethod. Only relevant for methods. */
35978 0 /* Reserved slot index, if we're stored in a slot, else 0. */
35979};
35980
35981MOZ_CAN_RUN_SCRIPT static bool
35982get_unforgeableAttr2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
35983{
35984 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject35987( cx, "TestExampleInterface"
, "unforgeableAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35985 "TestExampleInterface", "unforgeableAttr2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject35987( cx, "TestExampleInterface"
, "unforgeableAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35986 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject35987( cx, "TestExampleInterface"
, "unforgeableAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
35987 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject35987( cx, "TestExampleInterface"
, "unforgeableAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
35988
35989 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
35990 int32_t result(MOZ_KnownLive(self)(self)->UnforgeableAttr2());
35991 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 35991); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 35991; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
35992 args.rval().setInt32(int32_t(result));
35993 return true;
35994}
35995
35996static const JSJitInfo unforgeableAttr2_getterinfo = {
35997 { get_unforgeableAttr2 },
35998 { prototypes::id::TestExampleInterface },
35999 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36000 JSJitInfo::Getter,
36001 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36002 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
36003 true, /* isInfallible. False in setters. */
36004 false, /* isMovable. Not relevant for setters. */
36005 false, /* isEliminatable. Not relevant for setters. */
36006 false, /* isAlwaysInSlot. Only relevant for getters. */
36007 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36008 false, /* isTypedMethod. Only relevant for methods. */
36009 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36010};
36011
36012MOZ_CAN_RUN_SCRIPT static bool
36013unforgeableMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36014{
36015 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36018( cx, "TestExampleInterface"
, "unforgeableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36016 "TestExampleInterface", "unforgeableMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36018( cx, "TestExampleInterface"
, "unforgeableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36017 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36018( cx, "TestExampleInterface"
, "unforgeableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36018 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36018( cx, "TestExampleInterface"
, "unforgeableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36019
36020 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36021 int32_t result(MOZ_KnownLive(self)(self)->UnforgeableMethod());
36022 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36022); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36022; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36023 args.rval().setInt32(int32_t(result));
36024 return true;
36025}
36026
36027static const JSJitInfo unforgeableMethod_methodinfo = {
36028 { (JSJitGetterOp)unforgeableMethod },
36029 { prototypes::id::TestExampleInterface },
36030 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36031 JSJitInfo::Method,
36032 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36033 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
36034 true, /* isInfallible. False in setters. */
36035 false, /* isMovable. Not relevant for setters. */
36036 false, /* isEliminatable. Not relevant for setters. */
36037 false, /* isAlwaysInSlot. Only relevant for getters. */
36038 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36039 false, /* isTypedMethod. Only relevant for methods. */
36040 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36041};
36042
36043MOZ_CAN_RUN_SCRIPT static bool
36044unforgeableMethod2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36045{
36046 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36049( cx, "TestExampleInterface"
, "unforgeableMethod2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36047 "TestExampleInterface", "unforgeableMethod2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36049( cx, "TestExampleInterface"
, "unforgeableMethod2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36048 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36049( cx, "TestExampleInterface"
, "unforgeableMethod2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36049 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36049( cx, "TestExampleInterface"
, "unforgeableMethod2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36050
36051 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36052 int32_t result(MOZ_KnownLive(self)(self)->UnforgeableMethod2());
36053 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36053); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36053; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36054 args.rval().setInt32(int32_t(result));
36055 return true;
36056}
36057
36058static const JSJitInfo unforgeableMethod2_methodinfo = {
36059 { (JSJitGetterOp)unforgeableMethod2 },
36060 { prototypes::id::TestExampleInterface },
36061 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36062 JSJitInfo::Method,
36063 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36064 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
36065 true, /* isInfallible. False in setters. */
36066 false, /* isMovable. Not relevant for setters. */
36067 false, /* isEliminatable. Not relevant for setters. */
36068 false, /* isAlwaysInSlot. Only relevant for getters. */
36069 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36070 false, /* isTypedMethod. Only relevant for methods. */
36071 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36072};
36073
36074MOZ_CAN_RUN_SCRIPT static bool
36075__stringifier(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36076{
36077 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36080( cx, "TestExampleInterface"
, "__stringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36078 "TestExampleInterface", "__stringifier", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36080( cx, "TestExampleInterface"
, "__stringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36079 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36080( cx, "TestExampleInterface"
, "__stringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36080 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36080( cx, "TestExampleInterface"
, "__stringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36081
36082 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36083 DOMString result;
36084 // NOTE: This assert does NOT call the function.
36085 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Stringify(result))>, "Should be returning void here");
36086 MOZ_KnownLive(self)(self)->Stringify(result);
36087 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36087); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36087; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36088 if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
36089 return false;
36090 }
36091 return true;
36092}
36093
36094static const JSJitInfo __stringifier_methodinfo = {
36095 { (JSJitGetterOp)__stringifier },
36096 { prototypes::id::TestExampleInterface },
36097 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36098 JSJitInfo::Method,
36099 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36100 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
36101 false, /* isInfallible. False in setters. */
36102 false, /* isMovable. Not relevant for setters. */
36103 false, /* isEliminatable. Not relevant for setters. */
36104 false, /* isAlwaysInSlot. Only relevant for getters. */
36105 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36106 false, /* isTypedMethod. Only relevant for methods. */
36107 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36108};
36109
36110MOZ_CAN_RUN_SCRIPT static bool
36111passRenamedInterface(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36112{
36113 BindingCallContext cx(cx_, "TestExampleInterface.passRenamedInterface");
36114 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36117( cx, "TestExampleInterface"
, "passRenamedInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36115 "TestExampleInterface", "passRenamedInterface", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36117( cx, "TestExampleInterface"
, "passRenamedInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36116 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36117( cx, "TestExampleInterface"
, "passRenamedInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36117 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36117( cx, "TestExampleInterface"
, "passRenamedInterface", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36118
36119 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36120 if (!args.requireAtLeast(cx, "TestExampleInterface.passRenamedInterface", 1)) {
36121 return false;
36122 }
36123 NonNull<nsRenamedInterface> arg0;
36124 if (args[0].isObject()) {
36125 {
36126 // Our JSContext should be in the right global to do unwrapping in.
36127 nsresult rv = UnwrapObject<prototypes::id::TestRenamedInterface, nsRenamedInterface>(args[0], arg0, cx);
36128 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
36129 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "TestRenamedInterface");
36130 return false;
36131 }
36132 }
36133 } else {
36134 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
36135 return false;
36136 }
36137 // NOTE: This assert does NOT call the function.
36138 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassRenamedInterface(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
36139 MOZ_KnownLive(self)(self)->PassRenamedInterface(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
36140 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36140); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36140; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36141 args.rval().setUndefined();
36142 return true;
36143}
36144
36145static const JSJitInfo passRenamedInterface_methodinfo = {
36146 { (JSJitGetterOp)passRenamedInterface },
36147 { prototypes::id::TestExampleInterface },
36148 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36149 JSJitInfo::Method,
36150 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36151 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36152 false, /* isInfallible. False in setters. */
36153 false, /* isMovable. Not relevant for setters. */
36154 false, /* isEliminatable. Not relevant for setters. */
36155 false, /* isAlwaysInSlot. Only relevant for getters. */
36156 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36157 false, /* isTypedMethod. Only relevant for methods. */
36158 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36159};
36160
36161MOZ_CAN_RUN_SCRIPT static bool
36162get_putForwardsAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36163{
36164 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36167( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36165 "TestExampleInterface", "putForwardsAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36167( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36166 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36167( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36167 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36167( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36168
36169 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36170 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(MOZ_KnownLive(self)(self)->PutForwardsAttr()));
36171 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36171); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36171; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36172 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
36173 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36173); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 36173; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
36174 return false;
36175 }
36176 return true;
36177}
36178
36179MOZ_CAN_RUN_SCRIPT static bool
36180set_putForwardsAttr(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36181{
36182 BindingCallContext cx(cx_, "TestExampleInterface.putForwardsAttr setter");
36183 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36186( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36184 "TestExampleInterface", "putForwardsAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36186( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36185 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36186( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36186 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36186( cx, "TestExampleInterface"
, "putForwardsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36187
36188 JS::Rooted<JS::Value> v(cx);
36189 if (!JS_GetProperty(cx, obj, "putForwardsAttr", &v)) {
36190 return false;
36191 }
36192
36193 if (!v.isObject()) {
36194 return cx.ThrowErrorMessage<MSG_NOT_OBJECT>("TestExampleInterface.putForwardsAttr");
36195 }
36196
36197 JS::Rooted<JSObject*> targetObj(cx, &v.toObject());
36198 return JS_SetProperty(cx, targetObj, "writableByte", args[0]);
36199}
36200
36201static const JSJitInfo putForwardsAttr_getterinfo = {
36202 { get_putForwardsAttr },
36203 { prototypes::id::TestExampleInterface },
36204 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36205 JSJitInfo::Getter,
36206 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36207 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
36208 false, /* isInfallible. False in setters. */
36209 false, /* isMovable. Not relevant for setters. */
36210 false, /* isEliminatable. Not relevant for setters. */
36211 false, /* isAlwaysInSlot. Only relevant for getters. */
36212 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36213 false, /* isTypedMethod. Only relevant for methods. */
36214 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36215};
36216static const JSJitInfo putForwardsAttr_setterinfo = {
36217 { (JSJitGetterOp)set_putForwardsAttr },
36218 { prototypes::id::TestExampleInterface },
36219 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36220 JSJitInfo::Setter,
36221 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36222 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36223 false, /* isInfallible. False in setters. */
36224 false, /* isMovable. Not relevant for setters. */
36225 false, /* isEliminatable. Not relevant for setters. */
36226 false, /* isAlwaysInSlot. Only relevant for getters. */
36227 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36228 false, /* isTypedMethod. Only relevant for methods. */
36229 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36230};
36231
36232MOZ_CAN_RUN_SCRIPT static bool
36233get_putForwardsAttr2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36234{
36235 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36238( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36236 "TestExampleInterface", "putForwardsAttr2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36238( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36237 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36238( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36238 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36238( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36239
36240 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36241 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(MOZ_KnownLive(self)(self)->PutForwardsAttr2()));
36242 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36242); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36242; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36243 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
36244 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36244); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 36244; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
36245 return false;
36246 }
36247 return true;
36248}
36249
36250MOZ_CAN_RUN_SCRIPT static bool
36251set_putForwardsAttr2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36252{
36253 BindingCallContext cx(cx_, "TestExampleInterface.putForwardsAttr2 setter");
36254 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36257( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36255 "TestExampleInterface", "putForwardsAttr2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36257( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36256 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36257( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36257 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36257( cx, "TestExampleInterface"
, "putForwardsAttr2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36258
36259 JS::Rooted<JS::Value> v(cx);
36260 if (!JS_GetProperty(cx, obj, "putForwardsAttr2", &v)) {
36261 return false;
36262 }
36263
36264 if (!v.isObject()) {
36265 return cx.ThrowErrorMessage<MSG_NOT_OBJECT>("TestExampleInterface.putForwardsAttr2");
36266 }
36267
36268 JS::Rooted<JSObject*> targetObj(cx, &v.toObject());
36269 return JS_SetProperty(cx, targetObj, "writableByte", args[0]);
36270}
36271
36272static const JSJitInfo putForwardsAttr2_getterinfo = {
36273 { get_putForwardsAttr2 },
36274 { prototypes::id::TestExampleInterface },
36275 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36276 JSJitInfo::Getter,
36277 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36278 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
36279 false, /* isInfallible. False in setters. */
36280 false, /* isMovable. Not relevant for setters. */
36281 false, /* isEliminatable. Not relevant for setters. */
36282 false, /* isAlwaysInSlot. Only relevant for getters. */
36283 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36284 false, /* isTypedMethod. Only relevant for methods. */
36285 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36286};
36287static const JSJitInfo putForwardsAttr2_setterinfo = {
36288 { (JSJitGetterOp)set_putForwardsAttr2 },
36289 { prototypes::id::TestExampleInterface },
36290 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36291 JSJitInfo::Setter,
36292 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36293 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36294 false, /* isInfallible. False in setters. */
36295 false, /* isMovable. Not relevant for setters. */
36296 false, /* isEliminatable. Not relevant for setters. */
36297 false, /* isAlwaysInSlot. Only relevant for getters. */
36298 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36299 false, /* isTypedMethod. Only relevant for methods. */
36300 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36301};
36302
36303MOZ_CAN_RUN_SCRIPT static bool
36304get_putForwardsAttr3(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36305{
36306 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36309( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36307 "TestExampleInterface", "putForwardsAttr3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36309( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36308 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36309( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36309 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36309( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36310
36311 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36312 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(MOZ_KnownLive(self)(self)->PutForwardsAttr3()));
36313 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36313); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36313; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36314 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
36315 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36315); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 36315; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
36316 return false;
36317 }
36318 return true;
36319}
36320
36321MOZ_CAN_RUN_SCRIPT static bool
36322set_putForwardsAttr3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36323{
36324 BindingCallContext cx(cx_, "TestExampleInterface.putForwardsAttr3 setter");
36325 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36328( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36326 "TestExampleInterface", "putForwardsAttr3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36328( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36327 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36328( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36328 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36328( cx, "TestExampleInterface"
, "putForwardsAttr3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36329
36330 JS::Rooted<JS::Value> v(cx);
36331 if (!JS_GetProperty(cx, obj, "putForwardsAttr3", &v)) {
36332 return false;
36333 }
36334
36335 if (!v.isObject()) {
36336 return cx.ThrowErrorMessage<MSG_NOT_OBJECT>("TestExampleInterface.putForwardsAttr3");
36337 }
36338
36339 JS::Rooted<JSObject*> targetObj(cx, &v.toObject());
36340 return JS_SetProperty(cx, targetObj, "writableByte", args[0]);
36341}
36342
36343static const JSJitInfo putForwardsAttr3_getterinfo = {
36344 { get_putForwardsAttr3 },
36345 { prototypes::id::TestExampleInterface },
36346 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36347 JSJitInfo::Getter,
36348 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36349 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
36350 false, /* isInfallible. False in setters. */
36351 false, /* isMovable. Not relevant for setters. */
36352 false, /* isEliminatable. Not relevant for setters. */
36353 false, /* isAlwaysInSlot. Only relevant for getters. */
36354 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36355 false, /* isTypedMethod. Only relevant for methods. */
36356 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36357};
36358static const JSJitInfo putForwardsAttr3_setterinfo = {
36359 { (JSJitGetterOp)set_putForwardsAttr3 },
36360 { prototypes::id::TestExampleInterface },
36361 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36362 JSJitInfo::Setter,
36363 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36364 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36365 false, /* isInfallible. False in setters. */
36366 false, /* isMovable. Not relevant for setters. */
36367 false, /* isEliminatable. Not relevant for setters. */
36368 false, /* isAlwaysInSlot. Only relevant for getters. */
36369 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36370 false, /* isTypedMethod. Only relevant for methods. */
36371 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36372};
36373
36374MOZ_CAN_RUN_SCRIPT static bool
36375throwingMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36376{
36377 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36380( cx, "TestExampleInterface"
, "throwingMethod", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36378 "TestExampleInterface", "throwingMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36380( cx, "TestExampleInterface"
, "throwingMethod", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36379 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36380( cx, "TestExampleInterface"
, "throwingMethod", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36380 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36380( cx, "TestExampleInterface"
, "throwingMethod", JS::ProfilingCategoryPair::DOM, uint32_t(
js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36381
36382 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36383 FastErrorResult rv;
36384 // NOTE: This assert does NOT call the function.
36385 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ThrowingMethod(rv))>, "Should be returning void here");
36386 MOZ_KnownLive(self)(self)->ThrowingMethod(rv);
36387 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingMethod"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingMethod"
)), 0))
) {
36388 return false;
36389 }
36390 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36390); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36390; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36391 args.rval().setUndefined();
36392 return true;
36393}
36394
36395static const JSJitInfo throwingMethod_methodinfo = {
36396 { (JSJitGetterOp)throwingMethod },
36397 { prototypes::id::TestExampleInterface },
36398 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36399 JSJitInfo::Method,
36400 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36401 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36402 false, /* isInfallible. False in setters. */
36403 false, /* isMovable. Not relevant for setters. */
36404 false, /* isEliminatable. Not relevant for setters. */
36405 false, /* isAlwaysInSlot. Only relevant for getters. */
36406 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36407 false, /* isTypedMethod. Only relevant for methods. */
36408 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36409};
36410
36411MOZ_CAN_RUN_SCRIPT static bool
36412get_throwingAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36413{
36414 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36417( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36415 "TestExampleInterface", "throwingAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36417( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36416 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36417( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36417 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36417( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36418
36419 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36420 FastErrorResult rv;
36421 bool result(MOZ_KnownLive(self)(self)->GetThrowingAttr(rv));
36422 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingAttr getter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingAttr getter"
)), 0))
) {
36423 return false;
36424 }
36425 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36425); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36425; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36426 args.rval().setBoolean(result);
36427 return true;
36428}
36429
36430MOZ_CAN_RUN_SCRIPT static bool
36431set_throwingAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36432{
36433 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36436( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36434 "TestExampleInterface", "throwingAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36436( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36435 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36436( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36436 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36436( cx, "TestExampleInterface"
, "throwingAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36437
36438 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36439 bool arg0;
36440 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36441 return false;
36442 }
36443 FastErrorResult rv;
36444 // NOTE: This assert does NOT call the function.
36445 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetThrowingAttr(arg0, rv))>, "Should be returning void here");
36446 MOZ_KnownLive(self)(self)->SetThrowingAttr(arg0, rv);
36447 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingAttr setter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingAttr setter"
)), 0))
) {
36448 return false;
36449 }
36450 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36450); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36450; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36451
36452 return true;
36453}
36454
36455static const JSJitInfo throwingAttr_getterinfo = {
36456 { get_throwingAttr },
36457 { prototypes::id::TestExampleInterface },
36458 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36459 JSJitInfo::Getter,
36460 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36461 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36462 false, /* isInfallible. False in setters. */
36463 false, /* isMovable. Not relevant for setters. */
36464 false, /* isEliminatable. Not relevant for setters. */
36465 false, /* isAlwaysInSlot. Only relevant for getters. */
36466 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36467 false, /* isTypedMethod. Only relevant for methods. */
36468 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36469};
36470static const JSJitInfo throwingAttr_setterinfo = {
36471 { (JSJitGetterOp)set_throwingAttr },
36472 { prototypes::id::TestExampleInterface },
36473 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36474 JSJitInfo::Setter,
36475 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36476 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36477 false, /* isInfallible. False in setters. */
36478 false, /* isMovable. Not relevant for setters. */
36479 false, /* isEliminatable. Not relevant for setters. */
36480 false, /* isAlwaysInSlot. Only relevant for getters. */
36481 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36482 false, /* isTypedMethod. Only relevant for methods. */
36483 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36484};
36485
36486MOZ_CAN_RUN_SCRIPT static bool
36487get_throwingGetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36488{
36489 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36492( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36490 "TestExampleInterface", "throwingGetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36492( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36491 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36492( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36492 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36492( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36493
36494 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36495 FastErrorResult rv;
36496 bool result(MOZ_KnownLive(self)(self)->GetThrowingGetterAttr(rv));
36497 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingGetterAttr getter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingGetterAttr getter"
)), 0))
) {
36498 return false;
36499 }
36500 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36500); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36500; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36501 args.rval().setBoolean(result);
36502 return true;
36503}
36504
36505MOZ_CAN_RUN_SCRIPT static bool
36506set_throwingGetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36507{
36508 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36511( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36509 "TestExampleInterface", "throwingGetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36511( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36510 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36511( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36511 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36511( cx, "TestExampleInterface"
, "throwingGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36512
36513 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36514 bool arg0;
36515 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36516 return false;
36517 }
36518 // NOTE: This assert does NOT call the function.
36519 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetThrowingGetterAttr(arg0))>, "Should be returning void here");
36520 MOZ_KnownLive(self)(self)->SetThrowingGetterAttr(arg0);
36521 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36521); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36521; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36522
36523 return true;
36524}
36525
36526static const JSJitInfo throwingGetterAttr_getterinfo = {
36527 { get_throwingGetterAttr },
36528 { prototypes::id::TestExampleInterface },
36529 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36530 JSJitInfo::Getter,
36531 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36532 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36533 false, /* isInfallible. False in setters. */
36534 false, /* isMovable. Not relevant for setters. */
36535 false, /* isEliminatable. Not relevant for setters. */
36536 false, /* isAlwaysInSlot. Only relevant for getters. */
36537 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36538 false, /* isTypedMethod. Only relevant for methods. */
36539 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36540};
36541static const JSJitInfo throwingGetterAttr_setterinfo = {
36542 { (JSJitGetterOp)set_throwingGetterAttr },
36543 { prototypes::id::TestExampleInterface },
36544 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36545 JSJitInfo::Setter,
36546 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36547 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36548 false, /* isInfallible. False in setters. */
36549 false, /* isMovable. Not relevant for setters. */
36550 false, /* isEliminatable. Not relevant for setters. */
36551 false, /* isAlwaysInSlot. Only relevant for getters. */
36552 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36553 false, /* isTypedMethod. Only relevant for methods. */
36554 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36555};
36556
36557MOZ_CAN_RUN_SCRIPT static bool
36558get_throwingSetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36559{
36560 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36563( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36561 "TestExampleInterface", "throwingSetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36563( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36562 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36563( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36563 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36563( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36564
36565 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36566 bool result(MOZ_KnownLive(self)(self)->ThrowingSetterAttr());
36567 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36567); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36567; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36568 args.rval().setBoolean(result);
36569 return true;
36570}
36571
36572MOZ_CAN_RUN_SCRIPT static bool
36573set_throwingSetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36574{
36575 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36578( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36576 "TestExampleInterface", "throwingSetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36578( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36577 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36578( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36578 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36578( cx, "TestExampleInterface"
, "throwingSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36579
36580 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36581 bool arg0;
36582 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36583 return false;
36584 }
36585 FastErrorResult rv;
36586 // NOTE: This assert does NOT call the function.
36587 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetThrowingSetterAttr(arg0, rv))>, "Should be returning void here");
36588 MOZ_KnownLive(self)(self)->SetThrowingSetterAttr(arg0, rv);
36589 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingSetterAttr setter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.throwingSetterAttr setter"
)), 0))
) {
36590 return false;
36591 }
36592 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36592); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36592; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36593
36594 return true;
36595}
36596
36597static const JSJitInfo throwingSetterAttr_getterinfo = {
36598 { get_throwingSetterAttr },
36599 { prototypes::id::TestExampleInterface },
36600 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36601 JSJitInfo::Getter,
36602 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36603 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36604 true, /* isInfallible. False in setters. */
36605 false, /* isMovable. Not relevant for setters. */
36606 false, /* isEliminatable. Not relevant for setters. */
36607 false, /* isAlwaysInSlot. Only relevant for getters. */
36608 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36609 false, /* isTypedMethod. Only relevant for methods. */
36610 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36611};
36612static const JSJitInfo throwingSetterAttr_setterinfo = {
36613 { (JSJitGetterOp)set_throwingSetterAttr },
36614 { prototypes::id::TestExampleInterface },
36615 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36616 JSJitInfo::Setter,
36617 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36618 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36619 false, /* isInfallible. False in setters. */
36620 false, /* isMovable. Not relevant for setters. */
36621 false, /* isEliminatable. Not relevant for setters. */
36622 false, /* isAlwaysInSlot. Only relevant for getters. */
36623 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36624 false, /* isTypedMethod. Only relevant for methods. */
36625 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36626};
36627
36628MOZ_CAN_RUN_SCRIPT static bool
36629canOOMMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36630{
36631 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36634( cx, "TestExampleInterface"
, "canOOMMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36632 "TestExampleInterface", "canOOMMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36634( cx, "TestExampleInterface"
, "canOOMMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36633 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36634( cx, "TestExampleInterface"
, "canOOMMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36634 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36634( cx, "TestExampleInterface"
, "canOOMMethod", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36635
36636 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36637 FastErrorResult rv;
36638 // NOTE: This assert does NOT call the function.
36639 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->CanOOMMethod(OOMReporter::From(rv)))>, "Should be returning void here");
36640 MOZ_KnownLive(self)(self)->CanOOMMethod(OOMReporter::From(rv));
36641 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMMethod"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMMethod"
)), 0))
) {
36642 return false;
36643 }
36644 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36644); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36644; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36645 args.rval().setUndefined();
36646 return true;
36647}
36648
36649static const JSJitInfo canOOMMethod_methodinfo = {
36650 { (JSJitGetterOp)canOOMMethod },
36651 { prototypes::id::TestExampleInterface },
36652 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36653 JSJitInfo::Method,
36654 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36655 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36656 false, /* isInfallible. False in setters. */
36657 false, /* isMovable. Not relevant for setters. */
36658 false, /* isEliminatable. Not relevant for setters. */
36659 false, /* isAlwaysInSlot. Only relevant for getters. */
36660 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36661 false, /* isTypedMethod. Only relevant for methods. */
36662 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36663};
36664
36665MOZ_CAN_RUN_SCRIPT static bool
36666get_canOOMAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36667{
36668 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36671( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36669 "TestExampleInterface", "canOOMAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36671( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36670 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36671( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36671 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36671( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36672
36673 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36674 FastErrorResult rv;
36675 bool result(MOZ_KnownLive(self)(self)->GetCanOOMAttr(OOMReporter::From(rv)));
36676 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMAttr getter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMAttr getter"
)), 0))
) {
36677 return false;
36678 }
36679 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36679); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36679; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36680 args.rval().setBoolean(result);
36681 return true;
36682}
36683
36684MOZ_CAN_RUN_SCRIPT static bool
36685set_canOOMAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36686{
36687 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36690( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36688 "TestExampleInterface", "canOOMAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36690( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36689 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36690( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36690 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36690( cx, "TestExampleInterface"
, "canOOMAttr", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36691
36692 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36693 bool arg0;
36694 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36695 return false;
36696 }
36697 FastErrorResult rv;
36698 // NOTE: This assert does NOT call the function.
36699 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetCanOOMAttr(arg0, OOMReporter::From(rv)))>, "Should be returning void here");
36700 MOZ_KnownLive(self)(self)->SetCanOOMAttr(arg0, OOMReporter::From(rv));
36701 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMAttr setter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMAttr setter"
)), 0))
) {
36702 return false;
36703 }
36704 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36704); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36704; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36705
36706 return true;
36707}
36708
36709static const JSJitInfo canOOMAttr_getterinfo = {
36710 { get_canOOMAttr },
36711 { prototypes::id::TestExampleInterface },
36712 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36713 JSJitInfo::Getter,
36714 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36715 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36716 false, /* isInfallible. False in setters. */
36717 false, /* isMovable. Not relevant for setters. */
36718 false, /* isEliminatable. Not relevant for setters. */
36719 false, /* isAlwaysInSlot. Only relevant for getters. */
36720 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36721 false, /* isTypedMethod. Only relevant for methods. */
36722 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36723};
36724static const JSJitInfo canOOMAttr_setterinfo = {
36725 { (JSJitGetterOp)set_canOOMAttr },
36726 { prototypes::id::TestExampleInterface },
36727 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36728 JSJitInfo::Setter,
36729 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36730 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36731 false, /* isInfallible. False in setters. */
36732 false, /* isMovable. Not relevant for setters. */
36733 false, /* isEliminatable. Not relevant for setters. */
36734 false, /* isAlwaysInSlot. Only relevant for getters. */
36735 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36736 false, /* isTypedMethod. Only relevant for methods. */
36737 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36738};
36739
36740MOZ_CAN_RUN_SCRIPT static bool
36741get_canOOMGetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36742{
36743 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36746( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36744 "TestExampleInterface", "canOOMGetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36746( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36745 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36746( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36746 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36746( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36747
36748 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36749 FastErrorResult rv;
36750 bool result(MOZ_KnownLive(self)(self)->GetCanOOMGetterAttr(OOMReporter::From(rv)));
36751 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMGetterAttr getter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMGetterAttr getter"
)), 0))
) {
36752 return false;
36753 }
36754 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36754); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36754; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36755 args.rval().setBoolean(result);
36756 return true;
36757}
36758
36759MOZ_CAN_RUN_SCRIPT static bool
36760set_canOOMGetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36761{
36762 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36765( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36763 "TestExampleInterface", "canOOMGetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36765( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36764 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36765( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36765 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36765( cx, "TestExampleInterface"
, "canOOMGetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36766
36767 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36768 bool arg0;
36769 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36770 return false;
36771 }
36772 // NOTE: This assert does NOT call the function.
36773 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetCanOOMGetterAttr(arg0))>, "Should be returning void here");
36774 MOZ_KnownLive(self)(self)->SetCanOOMGetterAttr(arg0);
36775 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36775); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36775; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36776
36777 return true;
36778}
36779
36780static const JSJitInfo canOOMGetterAttr_getterinfo = {
36781 { get_canOOMGetterAttr },
36782 { prototypes::id::TestExampleInterface },
36783 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36784 JSJitInfo::Getter,
36785 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36786 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36787 false, /* isInfallible. False in setters. */
36788 false, /* isMovable. Not relevant for setters. */
36789 false, /* isEliminatable. Not relevant for setters. */
36790 false, /* isAlwaysInSlot. Only relevant for getters. */
36791 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36792 false, /* isTypedMethod. Only relevant for methods. */
36793 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36794};
36795static const JSJitInfo canOOMGetterAttr_setterinfo = {
36796 { (JSJitGetterOp)set_canOOMGetterAttr },
36797 { prototypes::id::TestExampleInterface },
36798 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36799 JSJitInfo::Setter,
36800 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36801 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36802 false, /* isInfallible. False in setters. */
36803 false, /* isMovable. Not relevant for setters. */
36804 false, /* isEliminatable. Not relevant for setters. */
36805 false, /* isAlwaysInSlot. Only relevant for getters. */
36806 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36807 false, /* isTypedMethod. Only relevant for methods. */
36808 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36809};
36810
36811MOZ_CAN_RUN_SCRIPT static bool
36812get_canOOMSetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36813{
36814 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36817( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36815 "TestExampleInterface", "canOOMSetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36817( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36816 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36817( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36817 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36817( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36818
36819 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36820 bool result(MOZ_KnownLive(self)(self)->CanOOMSetterAttr());
36821 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36821); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36821; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36822 args.rval().setBoolean(result);
36823 return true;
36824}
36825
36826MOZ_CAN_RUN_SCRIPT static bool
36827set_canOOMSetterAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36828{
36829 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36832( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36830 "TestExampleInterface", "canOOMSetterAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36832( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36831 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36832( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
36832 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36832( cx, "TestExampleInterface"
, "canOOMSetterAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
36833
36834 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36835 bool arg0;
36836 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36837 return false;
36838 }
36839 FastErrorResult rv;
36840 // NOTE: This assert does NOT call the function.
36841 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetCanOOMSetterAttr(arg0, OOMReporter::From(rv)))>, "Should be returning void here");
36842 MOZ_KnownLive(self)(self)->SetCanOOMSetterAttr(arg0, OOMReporter::From(rv));
36843 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMSetterAttr setter"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleInterface.canOOMSetterAttr setter"
)), 0))
) {
36844 return false;
36845 }
36846 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36846); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36846; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36847
36848 return true;
36849}
36850
36851static const JSJitInfo canOOMSetterAttr_getterinfo = {
36852 { get_canOOMSetterAttr },
36853 { prototypes::id::TestExampleInterface },
36854 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36855 JSJitInfo::Getter,
36856 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36857 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36858 true, /* isInfallible. False in setters. */
36859 false, /* isMovable. Not relevant for setters. */
36860 false, /* isEliminatable. Not relevant for setters. */
36861 false, /* isAlwaysInSlot. Only relevant for getters. */
36862 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36863 false, /* isTypedMethod. Only relevant for methods. */
36864 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36865};
36866static const JSJitInfo canOOMSetterAttr_setterinfo = {
36867 { (JSJitGetterOp)set_canOOMSetterAttr },
36868 { prototypes::id::TestExampleInterface },
36869 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36870 JSJitInfo::Setter,
36871 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36872 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36873 false, /* isInfallible. False in setters. */
36874 false, /* isMovable. Not relevant for setters. */
36875 false, /* isEliminatable. Not relevant for setters. */
36876 false, /* isAlwaysInSlot. Only relevant for getters. */
36877 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36878 false, /* isTypedMethod. Only relevant for methods. */
36879 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36880};
36881
36882MOZ_CAN_RUN_SCRIPT static bool
36883needsSubjectPrincipalMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
36884{
36885 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36888( cx, "TestExampleInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36886 "TestExampleInterface", "needsSubjectPrincipalMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36888( cx, "TestExampleInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36887 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject36888( cx, "TestExampleInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36888 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36888( cx, "TestExampleInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
36889
36890 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36891 NonNull<nsIPrincipal> subjectPrincipal;
36892 {
36893 JS::Realm* realm = js::GetContextRealm(cx);
36894 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 36894); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 36894; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
36895 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
36896 nsIPrincipal* principal = nsJSPrincipals::get(principals);
36897
36898 subjectPrincipal = principal;
36899 }
36900 // NOTE: This assert does NOT call the function.
36901 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NeedsSubjectPrincipalMethod(MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal))))>, "Should be returning void here");
36902 MOZ_KnownLive(self)(self)->NeedsSubjectPrincipalMethod(MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal)));
36903 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36903); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36903; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36904 args.rval().setUndefined();
36905 return true;
36906}
36907
36908static const JSJitInfo needsSubjectPrincipalMethod_methodinfo = {
36909 { (JSJitGetterOp)needsSubjectPrincipalMethod },
36910 { prototypes::id::TestExampleInterface },
36911 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36912 JSJitInfo::Method,
36913 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36914 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
36915 true, /* isInfallible. False in setters. */
36916 false, /* isMovable. Not relevant for setters. */
36917 false, /* isEliminatable. Not relevant for setters. */
36918 false, /* isAlwaysInSlot. Only relevant for getters. */
36919 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36920 false, /* isTypedMethod. Only relevant for methods. */
36921 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36922};
36923
36924MOZ_CAN_RUN_SCRIPT static bool
36925get_needsSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
36926{
36927 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36930( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36928 "TestExampleInterface", "needsSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36930( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36929 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject36930( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36930 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36930( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
36931
36932 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36933 NonNull<nsIPrincipal> subjectPrincipal;
36934 {
36935 JS::Realm* realm = js::GetContextRealm(cx);
36936 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 36936); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 36936; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
36937 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
36938 nsIPrincipal* principal = nsJSPrincipals::get(principals);
36939
36940 subjectPrincipal = principal;
36941 }
36942 bool result(MOZ_KnownLive(self)(self)->NeedsSubjectPrincipalAttr(MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal))));
36943 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36943); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36943; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36944 args.rval().setBoolean(result);
36945 return true;
36946}
36947
36948MOZ_CAN_RUN_SCRIPT static bool
36949set_needsSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
36950{
36951 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject36954( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36952 "TestExampleInterface", "needsSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject36954( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36953 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject36954( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
36954 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject36954( cx, "TestExampleInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
36955
36956 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
36957 bool arg0;
36958 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
36959 return false;
36960 }
36961 NonNull<nsIPrincipal> subjectPrincipal;
36962 {
36963 JS::Realm* realm = js::GetContextRealm(cx);
36964 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 36964); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 36964; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
36965 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
36966 nsIPrincipal* principal = nsJSPrincipals::get(principals);
36967
36968 subjectPrincipal = principal;
36969 }
36970 // NOTE: This assert does NOT call the function.
36971 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNeedsSubjectPrincipalAttr(arg0, MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal))))>, "Should be returning void here");
36972 MOZ_KnownLive(self)(self)->SetNeedsSubjectPrincipalAttr(arg0, MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal)));
36973 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 36973); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 36973; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
36974
36975 return true;
36976}
36977
36978static const JSJitInfo needsSubjectPrincipalAttr_getterinfo = {
36979 { get_needsSubjectPrincipalAttr },
36980 { prototypes::id::TestExampleInterface },
36981 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36982 JSJitInfo::Getter,
36983 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36984 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
36985 true, /* isInfallible. False in setters. */
36986 false, /* isMovable. Not relevant for setters. */
36987 false, /* isEliminatable. Not relevant for setters. */
36988 false, /* isAlwaysInSlot. Only relevant for getters. */
36989 false, /* isLazilyCachedInSlot. Only relevant for getters. */
36990 false, /* isTypedMethod. Only relevant for methods. */
36991 0 /* Reserved slot index, if we're stored in a slot, else 0. */
36992};
36993static const JSJitInfo needsSubjectPrincipalAttr_setterinfo = {
36994 { (JSJitGetterOp)set_needsSubjectPrincipalAttr },
36995 { prototypes::id::TestExampleInterface },
36996 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
36997 JSJitInfo::Setter,
36998 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
36999 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37000 false, /* isInfallible. False in setters. */
37001 false, /* isMovable. Not relevant for setters. */
37002 false, /* isEliminatable. Not relevant for setters. */
37003 false, /* isAlwaysInSlot. Only relevant for getters. */
37004 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37005 false, /* isTypedMethod. Only relevant for methods. */
37006 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37007};
37008
37009MOZ_CAN_RUN_SCRIPT static bool
37010needsNonSystemSubjectPrincipalMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37011{
37012 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37015( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37013 "TestExampleInterface", "needsNonSystemSubjectPrincipalMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37015( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37014 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37015( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37015 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37015( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
37016
37017 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37018 nsIPrincipal* subjectPrincipal;
37019 {
37020 JS::Realm* realm = js::GetContextRealm(cx);
37021 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 37021); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 37021; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
37022 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
37023 nsIPrincipal* principal = nsJSPrincipals::get(principals);
37024 if (principal->IsSystemPrincipal()) {
37025 principal = nullptr;
37026 }
37027
37028 subjectPrincipal = principal;
37029 }
37030 // NOTE: This assert does NOT call the function.
37031 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NeedsNonSystemSubjectPrincipalMethod(MOZ_KnownLive(subjectPrincipal)(subjectPrincipal)))>, "Should be returning void here");
37032 MOZ_KnownLive(self)(self)->NeedsNonSystemSubjectPrincipalMethod(MOZ_KnownLive(subjectPrincipal)(subjectPrincipal));
37033 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37033); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37033; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37034 args.rval().setUndefined();
37035 return true;
37036}
37037
37038static const JSJitInfo needsNonSystemSubjectPrincipalMethod_methodinfo = {
37039 { (JSJitGetterOp)needsNonSystemSubjectPrincipalMethod },
37040 { prototypes::id::TestExampleInterface },
37041 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37042 JSJitInfo::Method,
37043 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37044 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37045 true, /* isInfallible. False in setters. */
37046 false, /* isMovable. Not relevant for setters. */
37047 false, /* isEliminatable. Not relevant for setters. */
37048 false, /* isAlwaysInSlot. Only relevant for getters. */
37049 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37050 false, /* isTypedMethod. Only relevant for methods. */
37051 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37052};
37053
37054MOZ_CAN_RUN_SCRIPT static bool
37055get_needsNonSystemSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37056{
37057 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37060( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37058 "TestExampleInterface", "needsNonSystemSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37060( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37059 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37060( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37060 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37060( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
37061
37062 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37063 nsIPrincipal* subjectPrincipal;
37064 {
37065 JS::Realm* realm = js::GetContextRealm(cx);
37066 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 37066); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 37066; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
37067 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
37068 nsIPrincipal* principal = nsJSPrincipals::get(principals);
37069 if (principal->IsSystemPrincipal()) {
37070 principal = nullptr;
37071 }
37072
37073 subjectPrincipal = principal;
37074 }
37075 bool result(MOZ_KnownLive(self)(self)->NeedsNonSystemSubjectPrincipalAttr(MOZ_KnownLive(subjectPrincipal)(subjectPrincipal)));
37076 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37076); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37076; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37077 args.rval().setBoolean(result);
37078 return true;
37079}
37080
37081MOZ_CAN_RUN_SCRIPT static bool
37082set_needsNonSystemSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37083{
37084 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37087( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37085 "TestExampleInterface", "needsNonSystemSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37087( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37086 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37087( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37087 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37087( cx, "TestExampleInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
37088
37089 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37090 bool arg0;
37091 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
37092 return false;
37093 }
37094 nsIPrincipal* subjectPrincipal;
37095 {
37096 JS::Realm* realm = js::GetContextRealm(cx);
37097 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 37097); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 37097; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
37098 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
37099 nsIPrincipal* principal = nsJSPrincipals::get(principals);
37100 if (principal->IsSystemPrincipal()) {
37101 principal = nullptr;
37102 }
37103
37104 subjectPrincipal = principal;
37105 }
37106 // NOTE: This assert does NOT call the function.
37107 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNeedsNonSystemSubjectPrincipalAttr(arg0, MOZ_KnownLive(subjectPrincipal)(subjectPrincipal)))>, "Should be returning void here");
37108 MOZ_KnownLive(self)(self)->SetNeedsNonSystemSubjectPrincipalAttr(arg0, MOZ_KnownLive(subjectPrincipal)(subjectPrincipal));
37109 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37109); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37109; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37110
37111 return true;
37112}
37113
37114static const JSJitInfo needsNonSystemSubjectPrincipalAttr_getterinfo = {
37115 { get_needsNonSystemSubjectPrincipalAttr },
37116 { prototypes::id::TestExampleInterface },
37117 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37118 JSJitInfo::Getter,
37119 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37120 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
37121 true, /* isInfallible. False in setters. */
37122 false, /* isMovable. Not relevant for setters. */
37123 false, /* isEliminatable. Not relevant for setters. */
37124 false, /* isAlwaysInSlot. Only relevant for getters. */
37125 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37126 false, /* isTypedMethod. Only relevant for methods. */
37127 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37128};
37129static const JSJitInfo needsNonSystemSubjectPrincipalAttr_setterinfo = {
37130 { (JSJitGetterOp)set_needsNonSystemSubjectPrincipalAttr },
37131 { prototypes::id::TestExampleInterface },
37132 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37133 JSJitInfo::Setter,
37134 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37135 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37136 false, /* isInfallible. False in setters. */
37137 false, /* isMovable. Not relevant for setters. */
37138 false, /* isEliminatable. Not relevant for setters. */
37139 false, /* isAlwaysInSlot. Only relevant for getters. */
37140 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37141 false, /* isTypedMethod. Only relevant for methods. */
37142 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37143};
37144
37145MOZ_CAN_RUN_SCRIPT static bool
37146needsCallerTypeMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37147{
37148 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37151( cx, "TestExampleInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37149 "TestExampleInterface", "needsCallerTypeMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37151( cx, "TestExampleInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37150 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37151( cx, "TestExampleInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37151 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37151( cx, "TestExampleInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37152
37153 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37154 // NOTE: This assert does NOT call the function.
37155 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NeedsCallerTypeMethod(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem))>, "Should be returning void here");
37156 MOZ_KnownLive(self)(self)->NeedsCallerTypeMethod(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
37157 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37157); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37157; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37158 args.rval().setUndefined();
37159 return true;
37160}
37161
37162static const JSJitInfo needsCallerTypeMethod_methodinfo = {
37163 { (JSJitGetterOp)needsCallerTypeMethod },
37164 { prototypes::id::TestExampleInterface },
37165 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37166 JSJitInfo::Method,
37167 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37168 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37169 true, /* isInfallible. False in setters. */
37170 false, /* isMovable. Not relevant for setters. */
37171 false, /* isEliminatable. Not relevant for setters. */
37172 false, /* isAlwaysInSlot. Only relevant for getters. */
37173 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37174 false, /* isTypedMethod. Only relevant for methods. */
37175 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37176};
37177
37178MOZ_CAN_RUN_SCRIPT static bool
37179get_needsCallerTypeAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37180{
37181 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37184( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37182 "TestExampleInterface", "needsCallerTypeAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37184( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37183 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37184( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37184 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37184( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37185
37186 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37187 bool result(MOZ_KnownLive(self)(self)->NeedsCallerTypeAttr(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem));
37188 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37188); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37188; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37189 args.rval().setBoolean(result);
37190 return true;
37191}
37192
37193MOZ_CAN_RUN_SCRIPT static bool
37194set_needsCallerTypeAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37195{
37196 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37199( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37197 "TestExampleInterface", "needsCallerTypeAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37199( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37198 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37199( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37199 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37199( cx, "TestExampleInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37200
37201 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37202 bool arg0;
37203 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
37204 return false;
37205 }
37206 // NOTE: This assert does NOT call the function.
37207 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNeedsCallerTypeAttr(arg0, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem))>, "Should be returning void here");
37208 MOZ_KnownLive(self)(self)->SetNeedsCallerTypeAttr(arg0, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
37209 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37209); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37209; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37210
37211 return true;
37212}
37213
37214static const JSJitInfo needsCallerTypeAttr_getterinfo = {
37215 { get_needsCallerTypeAttr },
37216 { prototypes::id::TestExampleInterface },
37217 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37218 JSJitInfo::Getter,
37219 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37220 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
37221 true, /* isInfallible. False in setters. */
37222 false, /* isMovable. Not relevant for setters. */
37223 false, /* isEliminatable. Not relevant for setters. */
37224 false, /* isAlwaysInSlot. Only relevant for getters. */
37225 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37226 false, /* isTypedMethod. Only relevant for methods. */
37227 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37228};
37229static const JSJitInfo needsCallerTypeAttr_setterinfo = {
37230 { (JSJitGetterOp)set_needsCallerTypeAttr },
37231 { prototypes::id::TestExampleInterface },
37232 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37233 JSJitInfo::Setter,
37234 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37235 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37236 false, /* isInfallible. False in setters. */
37237 false, /* isMovable. Not relevant for setters. */
37238 false, /* isEliminatable. Not relevant for setters. */
37239 false, /* isAlwaysInSlot. Only relevant for getters. */
37240 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37241 false, /* isTypedMethod. Only relevant for methods. */
37242 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37243};
37244
37245MOZ_CAN_RUN_SCRIPT static bool
37246ceReactionsMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37247{
37248 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37251( cx, "TestExampleInterface"
, "ceReactionsMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37249 "TestExampleInterface", "ceReactionsMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37251( cx, "TestExampleInterface"
, "ceReactionsMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37250 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37251( cx, "TestExampleInterface"
, "ceReactionsMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37251 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37251( cx, "TestExampleInterface"
, "ceReactionsMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37252
37253 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37254 Maybe<AutoCEReaction> ceReaction;
37255 DocGroup* docGroup = self->GetDocGroup();
37256 if (docGroup) {
37257 ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
37258 }
37259 // NOTE: This assert does NOT call the function.
37260 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->CeReactionsMethod())>, "Should be returning void here");
37261 MOZ_KnownLive(self)(self)->CeReactionsMethod();
37262 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37262); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37262; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37263 args.rval().setUndefined();
37264 return true;
37265}
37266
37267static const JSJitInfo ceReactionsMethod_methodinfo = {
37268 { (JSJitGetterOp)ceReactionsMethod },
37269 { prototypes::id::TestExampleInterface },
37270 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37271 JSJitInfo::Method,
37272 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37273 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37274 true, /* isInfallible. False in setters. */
37275 false, /* isMovable. Not relevant for setters. */
37276 false, /* isEliminatable. Not relevant for setters. */
37277 false, /* isAlwaysInSlot. Only relevant for getters. */
37278 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37279 false, /* isTypedMethod. Only relevant for methods. */
37280 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37281};
37282
37283MOZ_CAN_RUN_SCRIPT static bool
37284ceReactionsMethodOverload(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37285{
37286 BindingCallContext cx(cx_, "TestExampleInterface.ceReactionsMethodOverload");
37287 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37290( cx, "TestExampleInterface"
, "ceReactionsMethodOverload", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37288 "TestExampleInterface", "ceReactionsMethodOverload", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37290( cx, "TestExampleInterface"
, "ceReactionsMethodOverload", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37289 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37290( cx, "TestExampleInterface"
, "ceReactionsMethodOverload", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37290 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37290( cx, "TestExampleInterface"
, "ceReactionsMethodOverload", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
37291
37292 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37293 unsigned argcount = std::min(args.length(), 1u);
37294 switch (argcount) {
37295 case 0: {
37296 Maybe<AutoCEReaction> ceReaction;
37297 DocGroup* docGroup = self->GetDocGroup();
37298 if (docGroup) {
37299 ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
37300 }
37301 // NOTE: This assert does NOT call the function.
37302 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->CeReactionsMethodOverload())>, "Should be returning void here");
37303 MOZ_KnownLive(self)(self)->CeReactionsMethodOverload();
37304 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37304); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37304; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37305 args.rval().setUndefined();
37306 return true;
37307 break;
37308 }
37309 case 1: {
37310 binding_detail::FakeString<char16_t> arg0;
37311 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
37312 return false;
37313 }
37314 Maybe<AutoCEReaction> ceReaction;
37315 DocGroup* docGroup = self->GetDocGroup();
37316 if (docGroup) {
37317 ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
37318 }
37319 // NOTE: This assert does NOT call the function.
37320 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->CeReactionsMethodOverload(NonNullHelper(Constify(arg0))))>, "Should be returning void here");
37321 MOZ_KnownLive(self)(self)->CeReactionsMethodOverload(NonNullHelper(Constify(arg0)));
37322 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37322); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37322; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37323 args.rval().setUndefined();
37324 return true;
37325 break;
37326 }
37327 default: {
37328 // Using nsPrintfCString here would require including that
37329 // header. Let's not worry about it.
37330 nsAutoCString argCountStr;
37331 argCountStr.AppendPrintf("%u", args.length());
37332 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
37333 }
37334 }
37335 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 37335); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 37335; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
37336 return false;
37337}
37338
37339static const JSJitInfo ceReactionsMethodOverload_methodinfo = {
37340 { (JSJitGetterOp)ceReactionsMethodOverload },
37341 { prototypes::id::TestExampleInterface },
37342 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37343 JSJitInfo::Method,
37344 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37345 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37346 false, /* isInfallible. False in setters. */
37347 false, /* isMovable. Not relevant for setters. */
37348 false, /* isEliminatable. Not relevant for setters. */
37349 false, /* isAlwaysInSlot. Only relevant for getters. */
37350 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37351 false, /* isTypedMethod. Only relevant for methods. */
37352 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37353};
37354
37355MOZ_CAN_RUN_SCRIPT static bool
37356get_ceReactionsAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37357{
37358 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37361( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37359 "TestExampleInterface", "ceReactionsAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37361( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37360 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37361( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37361 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37361( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37362
37363 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37364 bool result(MOZ_KnownLive(self)(self)->CeReactionsAttr());
37365 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37365); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37365; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37366 args.rval().setBoolean(result);
37367 return true;
37368}
37369
37370MOZ_CAN_RUN_SCRIPT static bool
37371set_ceReactionsAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37372{
37373 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37376( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37374 "TestExampleInterface", "ceReactionsAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37376( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37375 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37376( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37376 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37376( cx, "TestExampleInterface"
, "ceReactionsAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37377
37378 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37379 bool arg0;
37380 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
1
Taking false branch
37381 return false;
37382 }
37383 Maybe<AutoCEReaction> ceReaction;
2
Calling defaulted default constructor for 'Maybe<mozilla::dom::AutoCEReaction>'
13
Returning from default constructor for 'Maybe<mozilla::dom::AutoCEReaction>'
37384 DocGroup* docGroup = self->GetDocGroup();
37385 if (docGroup) {
14
Assuming 'docGroup' is null
15
Taking false branch
37386 ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
37387 }
37388 // NOTE: This assert does NOT call the function.
37389 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetCeReactionsAttr(arg0))>, "Should be returning void here");
37390 MOZ_KnownLive(self)(self)->SetCeReactionsAttr(arg0);
37391 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37391); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37391; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
16
Assuming the condition is true
17
Taking false branch
18
Loop condition is false. Exiting loop
37392
37393 return true;
19
Calling implicit destructor for 'Maybe<mozilla::dom::AutoCEReaction>'
20
Calling '~MaybeStorage'
37394}
37395
37396static const JSJitInfo ceReactionsAttr_getterinfo = {
37397 { get_ceReactionsAttr },
37398 { prototypes::id::TestExampleInterface },
37399 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37400 JSJitInfo::Getter,
37401 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37402 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
37403 true, /* isInfallible. False in setters. */
37404 false, /* isMovable. Not relevant for setters. */
37405 false, /* isEliminatable. Not relevant for setters. */
37406 false, /* isAlwaysInSlot. Only relevant for getters. */
37407 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37408 false, /* isTypedMethod. Only relevant for methods. */
37409 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37410};
37411static const JSJitInfo ceReactionsAttr_setterinfo = {
37412 { (JSJitGetterOp)set_ceReactionsAttr },
37413 { prototypes::id::TestExampleInterface },
37414 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37415 JSJitInfo::Setter,
37416 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37417 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37418 false, /* isInfallible. False in setters. */
37419 false, /* isMovable. Not relevant for setters. */
37420 false, /* isEliminatable. Not relevant for setters. */
37421 false, /* isAlwaysInSlot. Only relevant for getters. */
37422 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37423 false, /* isTypedMethod. Only relevant for methods. */
37424 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37425};
37426
37427MOZ_CAN_RUN_SCRIPT static bool
37428passArgsWithDefaults(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37429{
37430 BindingCallContext cx(cx_, "TestExampleInterface.passArgsWithDefaults");
37431 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37434( cx, "TestExampleInterface"
, "passArgsWithDefaults", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37432 "TestExampleInterface", "passArgsWithDefaults", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37434( cx, "TestExampleInterface"
, "passArgsWithDefaults", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37433 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37434( cx, "TestExampleInterface"
, "passArgsWithDefaults", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37434 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37434( cx, "TestExampleInterface"
, "passArgsWithDefaults", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37435
37436 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37437 Optional<int32_t> arg0;
37438 if (args.hasDefined(0)) {
37439 arg0.Construct();
37440 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], "Argument 1", &arg0.Value())) {
37441 return false;
37442 }
37443 }
37444 mozilla::dom::TestInterface* arg1;
37445 if (args.hasDefined(1)) {
37446 if (args[1].isObject()) {
37447 {
37448 // Our JSContext should be in the right global to do unwrapping in.
37449 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[1], arg1, cx);
37450 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
37451 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 2", "TestInterface");
37452 return false;
37453 }
37454 }
37455 } else if (args[1].isNullOrUndefined()) {
37456 arg1 = nullptr;
37457 } else {
37458 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 2");
37459 return false;
37460 }
37461 } else {
37462 arg1 = nullptr;
37463 }
37464 RootedDictionary<binding_detail::FastDict> arg2(cx);
37465 if (!arg2.Init(cx, (args.hasDefined(2)) ? args[2] : JS::NullHandleValue, "Argument 3", false)) {
37466 return false;
37467 }
37468 double arg3;
37469 if (args.hasDefined(3)) {
37470 if (!ValueToPrimitive<double, eDefault>(cx, args[3], "Argument 4", &arg3)) {
37471 return false;
37472 } else if (!std::isfinite(arg3)) {
37473 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Argument 4");
37474 return false;
37475 }
37476 } else {
37477 arg3 = 5.0;
37478 }
37479 Optional<float> arg4;
37480 if (args.hasDefined(4)) {
37481 arg4.Construct();
37482 if (!ValueToPrimitive<float, eDefault>(cx, args[4], "Argument 5", &arg4.Value())) {
37483 return false;
37484 } else if (!std::isfinite(arg4.Value())) {
37485 cx.ThrowErrorMessage<MSG_NOT_FINITE>("Argument 5");
37486 return false;
37487 }
37488 }
37489 // NOTE: This assert does NOT call the function.
37490 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassArgsWithDefaults(cx, Constify(arg0), MOZ_KnownLive(Constify(arg1))(Constify(arg1)), Constify(arg2), arg3, Constify(arg4)))>, "Should be returning void here");
37491 MOZ_KnownLive(self)(self)->PassArgsWithDefaults(cx, Constify(arg0), MOZ_KnownLive(Constify(arg1))(Constify(arg1)), Constify(arg2), arg3, Constify(arg4));
37492 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37492); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37492; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37493 args.rval().setUndefined();
37494 return true;
37495}
37496
37497static const JSJitInfo passArgsWithDefaults_methodinfo = {
37498 { (JSJitGetterOp)passArgsWithDefaults },
37499 { prototypes::id::TestExampleInterface },
37500 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37501 JSJitInfo::Method,
37502 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37503 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37504 false, /* isInfallible. False in setters. */
37505 false, /* isMovable. Not relevant for setters. */
37506 false, /* isEliminatable. Not relevant for setters. */
37507 false, /* isAlwaysInSlot. Only relevant for getters. */
37508 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37509 false, /* isTypedMethod. Only relevant for methods. */
37510 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37511};
37512
37513MOZ_CAN_RUN_SCRIPT static bool
37514get_toJSONShouldSkipThis(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37515{
37516 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37519( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37517 "TestExampleInterface", "toJSONShouldSkipThis", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37519( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37518 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37519( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37519 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37519( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37520
37521 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37522 JS::Rooted<JS::Value> result(cx);
37523 // NOTE: This assert does NOT call the function.
37524 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetToJSONShouldSkipThis(cx, &result))>, "Should be returning void here");
37525 MOZ_KnownLive(self)(self)->GetToJSONShouldSkipThis(cx, &result);
37526 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37526); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37526; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37527 JS::ExposeValueToActiveJS(result);
37528 args.rval().set(result);
37529 if (!MaybeWrapValue(cx, args.rval())) {
37530 return false;
37531 }
37532 return true;
37533}
37534
37535MOZ_CAN_RUN_SCRIPT static bool
37536set_toJSONShouldSkipThis(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37537{
37538 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37541( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37539 "TestExampleInterface", "toJSONShouldSkipThis", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37541( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37540 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37541( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37541 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37541( cx, "TestExampleInterface"
, "toJSONShouldSkipThis", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37542
37543 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37544 JS::Rooted<JS::Value> arg0(cx);
37545 arg0 = args[0];
37546 // NOTE: This assert does NOT call the function.
37547 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetToJSONShouldSkipThis(cx, arg0))>, "Should be returning void here");
37548 MOZ_KnownLive(self)(self)->SetToJSONShouldSkipThis(cx, arg0);
37549 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37549); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37549; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37550
37551 return true;
37552}
37553
37554static const JSJitInfo toJSONShouldSkipThis_getterinfo = {
37555 { get_toJSONShouldSkipThis },
37556 { prototypes::id::TestExampleInterface },
37557 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37558 JSJitInfo::Getter,
37559 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37560 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
37561 false, /* isInfallible. False in setters. */
37562 false, /* isMovable. Not relevant for setters. */
37563 false, /* isEliminatable. Not relevant for setters. */
37564 false, /* isAlwaysInSlot. Only relevant for getters. */
37565 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37566 false, /* isTypedMethod. Only relevant for methods. */
37567 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37568};
37569static const JSJitInfo toJSONShouldSkipThis_setterinfo = {
37570 { (JSJitGetterOp)set_toJSONShouldSkipThis },
37571 { prototypes::id::TestExampleInterface },
37572 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37573 JSJitInfo::Setter,
37574 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37575 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37576 false, /* isInfallible. False in setters. */
37577 false, /* isMovable. Not relevant for setters. */
37578 false, /* isEliminatable. Not relevant for setters. */
37579 false, /* isAlwaysInSlot. Only relevant for getters. */
37580 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37581 false, /* isTypedMethod. Only relevant for methods. */
37582 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37583};
37584
37585MOZ_CAN_RUN_SCRIPT static bool
37586get_toJSONShouldSkipThis2(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37587{
37588 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37591( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37589 "TestExampleInterface", "toJSONShouldSkipThis2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37591( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37590 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37591( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37591 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37591( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37592
37593 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37594 auto result(StrongOrRawPtr<mozilla::dom::TestParentInterface>(MOZ_KnownLive(self)(self)->ToJSONShouldSkipThis2()));
37595 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37595); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37595; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37596 if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
37597 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37597); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 37597; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
37598 return false;
37599 }
37600 return true;
37601}
37602
37603MOZ_CAN_RUN_SCRIPT static bool
37604set_toJSONShouldSkipThis2(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37605{
37606 BindingCallContext cx(cx_, "TestExampleInterface.toJSONShouldSkipThis2 setter");
37607 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37610( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37608 "TestExampleInterface", "toJSONShouldSkipThis2", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37610( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37609 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37610( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37610 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37610( cx, "TestExampleInterface"
, "toJSONShouldSkipThis2", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37611
37612 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37613 NonNull<mozilla::dom::TestParentInterface> arg0;
37614 if (args[0].isObject()) {
37615 {
37616 // Our JSContext should be in the right global to do unwrapping in.
37617 nsresult rv = UnwrapObject<prototypes::id::TestParentInterface, mozilla::dom::TestParentInterface>(args[0], arg0, cx);
37618 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
37619 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "TestParentInterface");
37620 return false;
37621 }
37622 }
37623 } else {
37624 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
37625 return false;
37626 }
37627 // NOTE: This assert does NOT call the function.
37628 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetToJSONShouldSkipThis2(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
37629 MOZ_KnownLive(self)(self)->SetToJSONShouldSkipThis2(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
37630 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37630); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37630; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37631
37632 return true;
37633}
37634
37635static const JSJitInfo toJSONShouldSkipThis2_getterinfo = {
37636 { get_toJSONShouldSkipThis2 },
37637 { prototypes::id::TestExampleInterface },
37638 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37639 JSJitInfo::Getter,
37640 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37641 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
37642 false, /* isInfallible. False in setters. */
37643 false, /* isMovable. Not relevant for setters. */
37644 false, /* isEliminatable. Not relevant for setters. */
37645 false, /* isAlwaysInSlot. Only relevant for getters. */
37646 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37647 false, /* isTypedMethod. Only relevant for methods. */
37648 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37649};
37650static const JSJitInfo toJSONShouldSkipThis2_setterinfo = {
37651 { (JSJitGetterOp)set_toJSONShouldSkipThis2 },
37652 { prototypes::id::TestExampleInterface },
37653 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37654 JSJitInfo::Setter,
37655 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37656 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37657 false, /* isInfallible. False in setters. */
37658 false, /* isMovable. Not relevant for setters. */
37659 false, /* isEliminatable. Not relevant for setters. */
37660 false, /* isAlwaysInSlot. Only relevant for getters. */
37661 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37662 false, /* isTypedMethod. Only relevant for methods. */
37663 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37664};
37665
37666MOZ_CAN_RUN_SCRIPT static bool
37667get_toJSONShouldSkipThis3(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37668{
37669 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37672( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37670 "TestExampleInterface", "toJSONShouldSkipThis3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37672( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37671 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37672( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37672 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37672( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37673
37674 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37675 auto result(StrongOrRawPtr<mozilla::dom::TestCallbackInterface>(MOZ_KnownLive(self)(self)->ToJSONShouldSkipThis3()));
37676 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37676); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37676; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37677 args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
37678 if (!MaybeWrapObjectValue(cx, args.rval())) {
37679 return false;
37680 }
37681 return true;
37682}
37683
37684MOZ_CAN_RUN_SCRIPT static bool
37685set_toJSONShouldSkipThis3(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37686{
37687 BindingCallContext cx(cx_, "TestExampleInterface.toJSONShouldSkipThis3 setter");
37688 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37691( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37689 "TestExampleInterface", "toJSONShouldSkipThis3", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37691( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37690 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37691( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37691 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37691( cx, "TestExampleInterface"
, "toJSONShouldSkipThis3", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37692
37693 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37694 RootedCallback<OwningNonNull<binding_detail::FastTestCallbackInterface>> arg0(cx);
37695 if (args[0].isObject()) {
37696 { // scope for tempRoot and tempGlobalRoot if needed
37697 arg0 = new binding_detail::FastTestCallbackInterface(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
37698 }
37699 } else {
37700 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
37701 return false;
37702 }
37703 // NOTE: This assert does NOT call the function.
37704 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetToJSONShouldSkipThis3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0))))>, "Should be returning void here");
37705 MOZ_KnownLive(self)(self)->SetToJSONShouldSkipThis3(MOZ_KnownLive(NonNullHelper(arg0))(NonNullHelper(arg0)));
37706 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37706); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37706; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37707
37708 return true;
37709}
37710
37711static const JSJitInfo toJSONShouldSkipThis3_getterinfo = {
37712 { get_toJSONShouldSkipThis3 },
37713 { prototypes::id::TestExampleInterface },
37714 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37715 JSJitInfo::Getter,
37716 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37717 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
37718 false, /* isInfallible. False in setters. */
37719 false, /* isMovable. Not relevant for setters. */
37720 false, /* isEliminatable. Not relevant for setters. */
37721 false, /* isAlwaysInSlot. Only relevant for getters. */
37722 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37723 false, /* isTypedMethod. Only relevant for methods. */
37724 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37725};
37726static const JSJitInfo toJSONShouldSkipThis3_setterinfo = {
37727 { (JSJitGetterOp)set_toJSONShouldSkipThis3 },
37728 { prototypes::id::TestExampleInterface },
37729 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37730 JSJitInfo::Setter,
37731 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37732 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37733 false, /* isInfallible. False in setters. */
37734 false, /* isMovable. Not relevant for setters. */
37735 false, /* isEliminatable. Not relevant for setters. */
37736 false, /* isAlwaysInSlot. Only relevant for getters. */
37737 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37738 false, /* isTypedMethod. Only relevant for methods. */
37739 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37740};
37741
37742MOZ_CAN_RUN_SCRIPT static bool
37743get_dashed_attribute(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37744{
37745 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37748( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37746 "TestExampleInterface", "dashed-attribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37748( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37747 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37748( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37748 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37748( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37749
37750 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37751 int8_t result(MOZ_KnownLive(self)(self)->Dashed_attribute());
37752 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37752); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37752; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37753 args.rval().setInt32(int32_t(result));
37754 return true;
37755}
37756
37757MOZ_CAN_RUN_SCRIPT static bool
37758set_dashed_attribute(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37759{
37760 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37763( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37761 "TestExampleInterface", "dashed-attribute", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37763( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37762 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37763( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37763 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37763( cx, "TestExampleInterface"
, "dashed-attribute", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37764
37765 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37766 int8_t arg0;
37767 if (!ValueToPrimitive<int8_t, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
37768 return false;
37769 }
37770 // NOTE: This assert does NOT call the function.
37771 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetDashed_attribute(arg0))>, "Should be returning void here");
37772 MOZ_KnownLive(self)(self)->SetDashed_attribute(arg0);
37773 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37773); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37773; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37774
37775 return true;
37776}
37777
37778static const JSJitInfo dashed_attribute_getterinfo = {
37779 { get_dashed_attribute },
37780 { prototypes::id::TestExampleInterface },
37781 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37782 JSJitInfo::Getter,
37783 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37784 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
37785 true, /* isInfallible. False in setters. */
37786 false, /* isMovable. Not relevant for setters. */
37787 false, /* isEliminatable. Not relevant for setters. */
37788 false, /* isAlwaysInSlot. Only relevant for getters. */
37789 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37790 false, /* isTypedMethod. Only relevant for methods. */
37791 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37792};
37793static const JSJitInfo dashed_attribute_setterinfo = {
37794 { (JSJitGetterOp)set_dashed_attribute },
37795 { prototypes::id::TestExampleInterface },
37796 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37797 JSJitInfo::Setter,
37798 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37799 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37800 false, /* isInfallible. False in setters. */
37801 false, /* isMovable. Not relevant for setters. */
37802 false, /* isEliminatable. Not relevant for setters. */
37803 false, /* isAlwaysInSlot. Only relevant for getters. */
37804 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37805 false, /* isTypedMethod. Only relevant for methods. */
37806 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37807};
37808
37809MOZ_CAN_RUN_SCRIPT static bool
37810dashed_method(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37811{
37812 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37815( cx, "TestExampleInterface"
, "dashed-method", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37813 "TestExampleInterface", "dashed-method", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37815( cx, "TestExampleInterface"
, "dashed-method", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37814 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37815( cx, "TestExampleInterface"
, "dashed-method", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37815 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37815( cx, "TestExampleInterface"
, "dashed-method", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37816
37817 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37818 // NOTE: This assert does NOT call the function.
37819 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->Dashed_method())>, "Should be returning void here");
37820 MOZ_KnownLive(self)(self)->Dashed_method();
37821 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37821); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37821; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37822 args.rval().setUndefined();
37823 return true;
37824}
37825
37826static const JSJitInfo dashed_method_methodinfo = {
37827 { (JSJitGetterOp)dashed_method },
37828 { prototypes::id::TestExampleInterface },
37829 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37830 JSJitInfo::Method,
37831 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37832 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37833 true, /* isInfallible. False in setters. */
37834 false, /* isMovable. Not relevant for setters. */
37835 false, /* isEliminatable. Not relevant for setters. */
37836 false, /* isAlwaysInSlot. Only relevant for getters. */
37837 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37838 false, /* isTypedMethod. Only relevant for methods. */
37839 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37840};
37841
37842MOZ_CAN_RUN_SCRIPT static bool
37843get_nonEnumerableAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37844{
37845 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37848( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37846 "TestExampleInterface", "nonEnumerableAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37848( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37847 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37848( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37848 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37848( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37849
37850 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37851 bool result(MOZ_KnownLive(self)(self)->NonEnumerableAttr());
37852 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37852); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37852; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37853 args.rval().setBoolean(result);
37854 return true;
37855}
37856
37857MOZ_CAN_RUN_SCRIPT static bool
37858set_nonEnumerableAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37859{
37860 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37863( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37861 "TestExampleInterface", "nonEnumerableAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37863( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37862 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37863( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37863 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37863( cx, "TestExampleInterface"
, "nonEnumerableAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37864
37865 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37866 bool arg0;
37867 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
37868 return false;
37869 }
37870 // NOTE: This assert does NOT call the function.
37871 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNonEnumerableAttr(arg0))>, "Should be returning void here");
37872 MOZ_KnownLive(self)(self)->SetNonEnumerableAttr(arg0);
37873 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37873); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37873; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37874
37875 return true;
37876}
37877
37878static const JSJitInfo nonEnumerableAttr_getterinfo = {
37879 { get_nonEnumerableAttr },
37880 { prototypes::id::TestExampleInterface },
37881 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37882 JSJitInfo::Getter,
37883 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37884 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
37885 true, /* isInfallible. False in setters. */
37886 false, /* isMovable. Not relevant for setters. */
37887 false, /* isEliminatable. Not relevant for setters. */
37888 false, /* isAlwaysInSlot. Only relevant for getters. */
37889 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37890 false, /* isTypedMethod. Only relevant for methods. */
37891 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37892};
37893static const JSJitInfo nonEnumerableAttr_setterinfo = {
37894 { (JSJitGetterOp)set_nonEnumerableAttr },
37895 { prototypes::id::TestExampleInterface },
37896 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37897 JSJitInfo::Setter,
37898 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37899 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37900 false, /* isInfallible. False in setters. */
37901 false, /* isMovable. Not relevant for setters. */
37902 false, /* isEliminatable. Not relevant for setters. */
37903 false, /* isAlwaysInSlot. Only relevant for getters. */
37904 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37905 false, /* isTypedMethod. Only relevant for methods. */
37906 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37907};
37908
37909MOZ_CAN_RUN_SCRIPT static bool
37910nonEnumerableMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
37911{
37912 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37915( cx, "TestExampleInterface"
, "nonEnumerableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37913 "TestExampleInterface", "nonEnumerableMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37915( cx, "TestExampleInterface"
, "nonEnumerableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37914 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject37915( cx, "TestExampleInterface"
, "nonEnumerableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
37915 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37915( cx, "TestExampleInterface"
, "nonEnumerableMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
37916
37917 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37918 // NOTE: This assert does NOT call the function.
37919 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NonEnumerableMethod())>, "Should be returning void here");
37920 MOZ_KnownLive(self)(self)->NonEnumerableMethod();
37921 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37921); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37921; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37922 args.rval().setUndefined();
37923 return true;
37924}
37925
37926static const JSJitInfo nonEnumerableMethod_methodinfo = {
37927 { (JSJitGetterOp)nonEnumerableMethod },
37928 { prototypes::id::TestExampleInterface },
37929 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
37930 JSJitInfo::Method,
37931 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
37932 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
37933 true, /* isInfallible. False in setters. */
37934 false, /* isMovable. Not relevant for setters. */
37935 false, /* isEliminatable. Not relevant for setters. */
37936 false, /* isAlwaysInSlot. Only relevant for getters. */
37937 false, /* isLazilyCachedInSlot. Only relevant for getters. */
37938 false, /* isTypedMethod. Only relevant for methods. */
37939 0 /* Reserved slot index, if we're stored in a slot, else 0. */
37940};
37941
37942MOZ_CAN_RUN_SCRIPT static bool
37943get_allowSharedArrayBufferViewTypedef(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
37944{
37945 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37948( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37946 "TestExampleInterface", "allowSharedArrayBufferViewTypedef", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37948( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37947 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject37948( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37948 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37948( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
37949
37950 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37951 JS::Rooted<JSObject*> result(cx);
37952 // NOTE: This assert does NOT call the function.
37953 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetAllowSharedArrayBufferViewTypedef(cx, &result))>, "Should be returning void here");
37954 MOZ_KnownLive(self)(self)->GetAllowSharedArrayBufferViewTypedef(cx, &result);
37955 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37955); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37955; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37956 JS::ExposeObjectToActiveJS(result);
37957 args.rval().setObject(*result);
37958 if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
37959 return false;
37960 }
37961 return true;
37962}
37963
37964MOZ_CAN_RUN_SCRIPT static bool
37965set_allowSharedArrayBufferViewTypedef(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
37966{
37967 BindingCallContext cx(cx_, "TestExampleInterface.allowSharedArrayBufferViewTypedef setter");
37968 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject37971( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37969 "TestExampleInterface", "allowSharedArrayBufferViewTypedef", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject37971( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37970 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject37971( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
37971 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject37971( cx, "TestExampleInterface"
, "allowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
37972
37973 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
37974 RootedSpiderMonkeyInterface<ArrayBufferView> arg0(cx);
37975 if (args[0].isObject()) {
37976 if (!arg0.Init(&args[0].toObject())) {
37977 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "ArrayBufferView");
37978 return false;
37979 }
37980 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
37981 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value being assigned");
37982 return false;
37983 }
37984 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
37985 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value being assigned");
37986 return false;
37987 }
37988 } else {
37989 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
37990 return false;
37991 }
37992 // NOTE: This assert does NOT call the function.
37993 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAllowSharedArrayBufferViewTypedef(Constify(arg0)))>, "Should be returning void here");
37994 MOZ_KnownLive(self)(self)->SetAllowSharedArrayBufferViewTypedef(Constify(arg0));
37995 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 37995); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 37995; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
37996
37997 return true;
37998}
37999
38000static const JSJitInfo allowSharedArrayBufferViewTypedef_getterinfo = {
38001 { get_allowSharedArrayBufferViewTypedef },
38002 { prototypes::id::TestExampleInterface },
38003 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38004 JSJitInfo::Getter,
38005 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38006 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
38007 false, /* isInfallible. False in setters. */
38008 false, /* isMovable. Not relevant for setters. */
38009 false, /* isEliminatable. Not relevant for setters. */
38010 false, /* isAlwaysInSlot. Only relevant for getters. */
38011 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38012 false, /* isTypedMethod. Only relevant for methods. */
38013 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38014};
38015static const JSJitInfo allowSharedArrayBufferViewTypedef_setterinfo = {
38016 { (JSJitGetterOp)set_allowSharedArrayBufferViewTypedef },
38017 { prototypes::id::TestExampleInterface },
38018 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38019 JSJitInfo::Setter,
38020 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38021 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38022 false, /* isInfallible. False in setters. */
38023 false, /* isMovable. Not relevant for setters. */
38024 false, /* isEliminatable. Not relevant for setters. */
38025 false, /* isAlwaysInSlot. Only relevant for getters. */
38026 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38027 false, /* isTypedMethod. Only relevant for methods. */
38028 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38029};
38030
38031MOZ_CAN_RUN_SCRIPT static bool
38032get_allowSharedArrayBufferView(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
38033{
38034 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38037( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38035 "TestExampleInterface", "allowSharedArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38037( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38036 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject38037( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38037 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38037( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38038
38039 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38040 JS::Rooted<JSObject*> result(cx);
38041 // NOTE: This assert does NOT call the function.
38042 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetAllowSharedArrayBufferView(cx, &result))>, "Should be returning void here");
38043 MOZ_KnownLive(self)(self)->GetAllowSharedArrayBufferView(cx, &result);
38044 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38044); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38044; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38045 JS::ExposeObjectToActiveJS(result);
38046 args.rval().setObject(*result);
38047 if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
38048 return false;
38049 }
38050 return true;
38051}
38052
38053MOZ_CAN_RUN_SCRIPT static bool
38054set_allowSharedArrayBufferView(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
38055{
38056 BindingCallContext cx(cx_, "TestExampleInterface.allowSharedArrayBufferView setter");
38057 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38060( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38058 "TestExampleInterface", "allowSharedArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38060( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38059 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject38060( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38060 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38060( cx, "TestExampleInterface"
, "allowSharedArrayBufferView", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38061
38062 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38063 RootedSpiderMonkeyInterface<ArrayBufferView> arg0(cx);
38064 if (args[0].isObject()) {
38065 if (!arg0.Init(&args[0].toObject())) {
38066 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "ArrayBufferView");
38067 return false;
38068 }
38069 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
38070 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value being assigned");
38071 return false;
38072 }
38073 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
38074 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value being assigned");
38075 return false;
38076 }
38077 } else {
38078 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
38079 return false;
38080 }
38081 // NOTE: This assert does NOT call the function.
38082 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAllowSharedArrayBufferView(Constify(arg0)))>, "Should be returning void here");
38083 MOZ_KnownLive(self)(self)->SetAllowSharedArrayBufferView(Constify(arg0));
38084 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38084); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38084; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38085
38086 return true;
38087}
38088
38089static const JSJitInfo allowSharedArrayBufferView_getterinfo = {
38090 { get_allowSharedArrayBufferView },
38091 { prototypes::id::TestExampleInterface },
38092 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38093 JSJitInfo::Getter,
38094 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38095 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
38096 false, /* isInfallible. False in setters. */
38097 false, /* isMovable. Not relevant for setters. */
38098 false, /* isEliminatable. Not relevant for setters. */
38099 false, /* isAlwaysInSlot. Only relevant for getters. */
38100 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38101 false, /* isTypedMethod. Only relevant for methods. */
38102 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38103};
38104static const JSJitInfo allowSharedArrayBufferView_setterinfo = {
38105 { (JSJitGetterOp)set_allowSharedArrayBufferView },
38106 { prototypes::id::TestExampleInterface },
38107 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38108 JSJitInfo::Setter,
38109 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38110 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38111 false, /* isInfallible. False in setters. */
38112 false, /* isMovable. Not relevant for setters. */
38113 false, /* isEliminatable. Not relevant for setters. */
38114 false, /* isAlwaysInSlot. Only relevant for getters. */
38115 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38116 false, /* isTypedMethod. Only relevant for methods. */
38117 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38118};
38119
38120MOZ_CAN_RUN_SCRIPT static bool
38121get_allowSharedNullableArrayBufferView(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
38122{
38123 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38126( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38124 "TestExampleInterface", "allowSharedNullableArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38126( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38125 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject38126( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38126 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38126( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38127
38128 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38129 JS::Rooted<JSObject*> result(cx);
38130 // NOTE: This assert does NOT call the function.
38131 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetAllowSharedNullableArrayBufferView(cx, &result))>, "Should be returning void here");
38132 MOZ_KnownLive(self)(self)->GetAllowSharedNullableArrayBufferView(cx, &result);
38133 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38133); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38133; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38134 if (result) {
38135 JS::ExposeObjectToActiveJS(result);
38136 }
38137 args.rval().setObjectOrNull(result);
38138 if (!MaybeWrapNonDOMObjectOrNullValue(cx, args.rval())) {
38139 return false;
38140 }
38141 return true;
38142}
38143
38144MOZ_CAN_RUN_SCRIPT static bool
38145set_allowSharedNullableArrayBufferView(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
38146{
38147 BindingCallContext cx(cx_, "TestExampleInterface.allowSharedNullableArrayBufferView setter");
38148 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38151( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38149 "TestExampleInterface", "allowSharedNullableArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38151( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38150 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject38151( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38151 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38151( cx, "TestExampleInterface"
, "allowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38152
38153 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38154 RootedSpiderMonkeyInterface<Nullable<ArrayBufferView>> arg0(cx);
38155 if (args[0].isObject()) {
38156 if (!arg0.SetValue().Init(&args[0].toObject())) {
38157 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "ArrayBufferViewOrNull");
38158 return false;
38159 }
38160 if (JS::IsLargeArrayBufferView(arg0.SetValue().Obj())) {
38161 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value being assigned");
38162 return false;
38163 }
38164 if (JS::IsResizableArrayBufferView(arg0.SetValue().Obj())) {
38165 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value being assigned");
38166 return false;
38167 }
38168 } else if (args[0].isNullOrUndefined()) {
38169 arg0.SetNull();
38170 } else {
38171 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
38172 return false;
38173 }
38174 // NOTE: This assert does NOT call the function.
38175 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAllowSharedNullableArrayBufferView(Constify(arg0)))>, "Should be returning void here");
38176 MOZ_KnownLive(self)(self)->SetAllowSharedNullableArrayBufferView(Constify(arg0));
38177 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38177); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38177; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38178
38179 return true;
38180}
38181
38182static const JSJitInfo allowSharedNullableArrayBufferView_getterinfo = {
38183 { get_allowSharedNullableArrayBufferView },
38184 { prototypes::id::TestExampleInterface },
38185 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38186 JSJitInfo::Getter,
38187 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38188 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
38189 false, /* isInfallible. False in setters. */
38190 false, /* isMovable. Not relevant for setters. */
38191 false, /* isEliminatable. Not relevant for setters. */
38192 false, /* isAlwaysInSlot. Only relevant for getters. */
38193 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38194 false, /* isTypedMethod. Only relevant for methods. */
38195 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38196};
38197static const JSJitInfo allowSharedNullableArrayBufferView_setterinfo = {
38198 { (JSJitGetterOp)set_allowSharedNullableArrayBufferView },
38199 { prototypes::id::TestExampleInterface },
38200 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38201 JSJitInfo::Setter,
38202 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38203 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38204 false, /* isInfallible. False in setters. */
38205 false, /* isMovable. Not relevant for setters. */
38206 false, /* isEliminatable. Not relevant for setters. */
38207 false, /* isAlwaysInSlot. Only relevant for getters. */
38208 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38209 false, /* isTypedMethod. Only relevant for methods. */
38210 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38211};
38212
38213MOZ_CAN_RUN_SCRIPT static bool
38214get_allowSharedArrayBuffer(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
38215{
38216 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38219( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38217 "TestExampleInterface", "allowSharedArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38219( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38218 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject38219( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38219 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38219( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
38220
38221 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38222 JS::Rooted<JSObject*> result(cx);
38223 // NOTE: This assert does NOT call the function.
38224 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetAllowSharedArrayBuffer(cx, &result))>, "Should be returning void here");
38225 MOZ_KnownLive(self)(self)->GetAllowSharedArrayBuffer(cx, &result);
38226 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38226); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38226; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38227 JS::ExposeObjectToActiveJS(result);
38228 args.rval().setObject(*result);
38229 if (!MaybeWrapNonDOMObjectValue(cx, args.rval())) {
38230 return false;
38231 }
38232 return true;
38233}
38234
38235MOZ_CAN_RUN_SCRIPT static bool
38236set_allowSharedArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
38237{
38238 BindingCallContext cx(cx_, "TestExampleInterface.allowSharedArrayBuffer setter");
38239 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38242( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38240 "TestExampleInterface", "allowSharedArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38242( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38241 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject38242( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38242 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38242( cx, "TestExampleInterface"
, "allowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
38243
38244 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38245 RootedSpiderMonkeyInterface<ArrayBuffer> arg0(cx);
38246 if (args[0].isObject()) {
38247 if (!arg0.Init(&args[0].toObject())) {
38248 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "ArrayBuffer");
38249 return false;
38250 }
38251 if (JS::IsLargeArrayBufferMaybeShared(arg0.Obj())) {
38252 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value being assigned");
38253 return false;
38254 }
38255 if (JS::IsResizableArrayBufferMaybeShared(arg0.Obj())) {
38256 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value being assigned");
38257 return false;
38258 }
38259 } else {
38260 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
38261 return false;
38262 }
38263 // NOTE: This assert does NOT call the function.
38264 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAllowSharedArrayBuffer(Constify(arg0)))>, "Should be returning void here");
38265 MOZ_KnownLive(self)(self)->SetAllowSharedArrayBuffer(Constify(arg0));
38266 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38266); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38266; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38267
38268 return true;
38269}
38270
38271static const JSJitInfo allowSharedArrayBuffer_getterinfo = {
38272 { get_allowSharedArrayBuffer },
38273 { prototypes::id::TestExampleInterface },
38274 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38275 JSJitInfo::Getter,
38276 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38277 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
38278 false, /* isInfallible. False in setters. */
38279 false, /* isMovable. Not relevant for setters. */
38280 false, /* isEliminatable. Not relevant for setters. */
38281 false, /* isAlwaysInSlot. Only relevant for getters. */
38282 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38283 false, /* isTypedMethod. Only relevant for methods. */
38284 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38285};
38286static const JSJitInfo allowSharedArrayBuffer_setterinfo = {
38287 { (JSJitGetterOp)set_allowSharedArrayBuffer },
38288 { prototypes::id::TestExampleInterface },
38289 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38290 JSJitInfo::Setter,
38291 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38292 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38293 false, /* isInfallible. False in setters. */
38294 false, /* isMovable. Not relevant for setters. */
38295 false, /* isEliminatable. Not relevant for setters. */
38296 false, /* isAlwaysInSlot. Only relevant for getters. */
38297 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38298 false, /* isTypedMethod. Only relevant for methods. */
38299 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38300};
38301
38302MOZ_CAN_RUN_SCRIPT static bool
38303get_allowSharedNullableArrayBuffer(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
38304{
38305 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38308( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38306 "TestExampleInterface", "allowSharedNullableArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38308( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38307 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject38308( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38308 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38308( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38309
38310 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38311 JS::Rooted<JSObject*> result(cx);
38312 // NOTE: This assert does NOT call the function.
38313 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetAllowSharedNullableArrayBuffer(cx, &result))>, "Should be returning void here");
38314 MOZ_KnownLive(self)(self)->GetAllowSharedNullableArrayBuffer(cx, &result);
38315 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38315); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38315; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38316 if (result) {
38317 JS::ExposeObjectToActiveJS(result);
38318 }
38319 args.rval().setObjectOrNull(result);
38320 if (!MaybeWrapNonDOMObjectOrNullValue(cx, args.rval())) {
38321 return false;
38322 }
38323 return true;
38324}
38325
38326MOZ_CAN_RUN_SCRIPT static bool
38327set_allowSharedNullableArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
38328{
38329 BindingCallContext cx(cx_, "TestExampleInterface.allowSharedNullableArrayBuffer setter");
38330 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38333( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38331 "TestExampleInterface", "allowSharedNullableArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38333( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38332 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject38333( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38333 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38333( cx, "TestExampleInterface"
, "allowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38334
38335 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38336 RootedSpiderMonkeyInterface<Nullable<ArrayBuffer>> arg0(cx);
38337 if (args[0].isObject()) {
38338 if (!arg0.SetValue().Init(&args[0].toObject())) {
38339 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Value being assigned", "ArrayBufferOrNull");
38340 return false;
38341 }
38342 if (JS::IsLargeArrayBufferMaybeShared(arg0.SetValue().Obj())) {
38343 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Value being assigned");
38344 return false;
38345 }
38346 if (JS::IsResizableArrayBufferMaybeShared(arg0.SetValue().Obj())) {
38347 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Value being assigned");
38348 return false;
38349 }
38350 } else if (args[0].isNullOrUndefined()) {
38351 arg0.SetNull();
38352 } else {
38353 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Value being assigned");
38354 return false;
38355 }
38356 // NOTE: This assert does NOT call the function.
38357 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetAllowSharedNullableArrayBuffer(Constify(arg0)))>, "Should be returning void here");
38358 MOZ_KnownLive(self)(self)->SetAllowSharedNullableArrayBuffer(Constify(arg0));
38359 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38359); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38359; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38360
38361 return true;
38362}
38363
38364static const JSJitInfo allowSharedNullableArrayBuffer_getterinfo = {
38365 { get_allowSharedNullableArrayBuffer },
38366 { prototypes::id::TestExampleInterface },
38367 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38368 JSJitInfo::Getter,
38369 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38370 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
38371 false, /* isInfallible. False in setters. */
38372 false, /* isMovable. Not relevant for setters. */
38373 false, /* isEliminatable. Not relevant for setters. */
38374 false, /* isAlwaysInSlot. Only relevant for getters. */
38375 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38376 false, /* isTypedMethod. Only relevant for methods. */
38377 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38378};
38379static const JSJitInfo allowSharedNullableArrayBuffer_setterinfo = {
38380 { (JSJitGetterOp)set_allowSharedNullableArrayBuffer },
38381 { prototypes::id::TestExampleInterface },
38382 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38383 JSJitInfo::Setter,
38384 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38385 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38386 false, /* isInfallible. False in setters. */
38387 false, /* isMovable. Not relevant for setters. */
38388 false, /* isEliminatable. Not relevant for setters. */
38389 false, /* isAlwaysInSlot. Only relevant for getters. */
38390 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38391 false, /* isTypedMethod. Only relevant for methods. */
38392 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38393};
38394
38395MOZ_CAN_RUN_SCRIPT static bool
38396passAllowSharedArrayBufferViewTypedef(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38397{
38398 BindingCallContext cx(cx_, "TestExampleInterface.passAllowSharedArrayBufferViewTypedef");
38399 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38402( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38400 "TestExampleInterface", "passAllowSharedArrayBufferViewTypedef", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38402( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38401 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38402( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38402 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38402( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferViewTypedef", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38403
38404 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38405 if (!args.requireAtLeast(cx, "TestExampleInterface.passAllowSharedArrayBufferViewTypedef", 1)) {
38406 return false;
38407 }
38408 RootedSpiderMonkeyInterface<ArrayBufferView> arg0(cx);
38409 if (args[0].isObject()) {
38410 if (!arg0.Init(&args[0].toObject())) {
38411 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferView");
38412 return false;
38413 }
38414 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
38415 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
38416 return false;
38417 }
38418 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
38419 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
38420 return false;
38421 }
38422 } else {
38423 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
38424 return false;
38425 }
38426 // NOTE: This assert does NOT call the function.
38427 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAllowSharedArrayBufferViewTypedef(Constify(arg0)))>, "Should be returning void here");
38428 MOZ_KnownLive(self)(self)->PassAllowSharedArrayBufferViewTypedef(Constify(arg0));
38429 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38429); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38429; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38430 args.rval().setUndefined();
38431 return true;
38432}
38433
38434static const JSJitInfo passAllowSharedArrayBufferViewTypedef_methodinfo = {
38435 { (JSJitGetterOp)passAllowSharedArrayBufferViewTypedef },
38436 { prototypes::id::TestExampleInterface },
38437 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38438 JSJitInfo::Method,
38439 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38440 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38441 false, /* isInfallible. False in setters. */
38442 false, /* isMovable. Not relevant for setters. */
38443 false, /* isEliminatable. Not relevant for setters. */
38444 false, /* isAlwaysInSlot. Only relevant for getters. */
38445 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38446 false, /* isTypedMethod. Only relevant for methods. */
38447 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38448};
38449
38450MOZ_CAN_RUN_SCRIPT static bool
38451passAllowSharedArrayBufferView(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38452{
38453 BindingCallContext cx(cx_, "TestExampleInterface.passAllowSharedArrayBufferView");
38454 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38457( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38455 "TestExampleInterface", "passAllowSharedArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38457( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38456 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38457( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38457 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38457( cx, "TestExampleInterface"
, "passAllowSharedArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38458
38459 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38460 if (!args.requireAtLeast(cx, "TestExampleInterface.passAllowSharedArrayBufferView", 1)) {
38461 return false;
38462 }
38463 RootedSpiderMonkeyInterface<ArrayBufferView> arg0(cx);
38464 if (args[0].isObject()) {
38465 if (!arg0.Init(&args[0].toObject())) {
38466 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferView");
38467 return false;
38468 }
38469 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
38470 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
38471 return false;
38472 }
38473 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
38474 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
38475 return false;
38476 }
38477 } else {
38478 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
38479 return false;
38480 }
38481 // NOTE: This assert does NOT call the function.
38482 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAllowSharedArrayBufferView(Constify(arg0)))>, "Should be returning void here");
38483 MOZ_KnownLive(self)(self)->PassAllowSharedArrayBufferView(Constify(arg0));
38484 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38484); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38484; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38485 args.rval().setUndefined();
38486 return true;
38487}
38488
38489static const JSJitInfo passAllowSharedArrayBufferView_methodinfo = {
38490 { (JSJitGetterOp)passAllowSharedArrayBufferView },
38491 { prototypes::id::TestExampleInterface },
38492 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38493 JSJitInfo::Method,
38494 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38495 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38496 false, /* isInfallible. False in setters. */
38497 false, /* isMovable. Not relevant for setters. */
38498 false, /* isEliminatable. Not relevant for setters. */
38499 false, /* isAlwaysInSlot. Only relevant for getters. */
38500 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38501 false, /* isTypedMethod. Only relevant for methods. */
38502 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38503};
38504
38505MOZ_CAN_RUN_SCRIPT static bool
38506passAllowSharedNullableArrayBufferView(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38507{
38508 BindingCallContext cx(cx_, "TestExampleInterface.passAllowSharedNullableArrayBufferView");
38509 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38512( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38510 "TestExampleInterface", "passAllowSharedNullableArrayBufferView", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38512( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38511 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38512( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38512 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38512( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBufferView", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38513
38514 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38515 if (!args.requireAtLeast(cx, "TestExampleInterface.passAllowSharedNullableArrayBufferView", 1)) {
38516 return false;
38517 }
38518 RootedSpiderMonkeyInterface<Nullable<ArrayBufferView>> arg0(cx);
38519 if (args[0].isObject()) {
38520 if (!arg0.SetValue().Init(&args[0].toObject())) {
38521 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferViewOrNull");
38522 return false;
38523 }
38524 if (JS::IsLargeArrayBufferView(arg0.SetValue().Obj())) {
38525 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
38526 return false;
38527 }
38528 if (JS::IsResizableArrayBufferView(arg0.SetValue().Obj())) {
38529 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
38530 return false;
38531 }
38532 } else if (args[0].isNullOrUndefined()) {
38533 arg0.SetNull();
38534 } else {
38535 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
38536 return false;
38537 }
38538 // NOTE: This assert does NOT call the function.
38539 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAllowSharedNullableArrayBufferView(Constify(arg0)))>, "Should be returning void here");
38540 MOZ_KnownLive(self)(self)->PassAllowSharedNullableArrayBufferView(Constify(arg0));
38541 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38541); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38541; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38542 args.rval().setUndefined();
38543 return true;
38544}
38545
38546static const JSJitInfo passAllowSharedNullableArrayBufferView_methodinfo = {
38547 { (JSJitGetterOp)passAllowSharedNullableArrayBufferView },
38548 { prototypes::id::TestExampleInterface },
38549 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38550 JSJitInfo::Method,
38551 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38552 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38553 false, /* isInfallible. False in setters. */
38554 false, /* isMovable. Not relevant for setters. */
38555 false, /* isEliminatable. Not relevant for setters. */
38556 false, /* isAlwaysInSlot. Only relevant for getters. */
38557 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38558 false, /* isTypedMethod. Only relevant for methods. */
38559 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38560};
38561
38562MOZ_CAN_RUN_SCRIPT static bool
38563passAllowSharedArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38564{
38565 BindingCallContext cx(cx_, "TestExampleInterface.passAllowSharedArrayBuffer");
38566 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38569( cx, "TestExampleInterface"
, "passAllowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38567 "TestExampleInterface", "passAllowSharedArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38569( cx, "TestExampleInterface"
, "passAllowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38568 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38569( cx, "TestExampleInterface"
, "passAllowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38569 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38569( cx, "TestExampleInterface"
, "passAllowSharedArrayBuffer", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38570
38571 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38572 if (!args.requireAtLeast(cx, "TestExampleInterface.passAllowSharedArrayBuffer", 1)) {
38573 return false;
38574 }
38575 RootedSpiderMonkeyInterface<ArrayBuffer> arg0(cx);
38576 if (args[0].isObject()) {
38577 if (!arg0.Init(&args[0].toObject())) {
38578 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBuffer");
38579 return false;
38580 }
38581 if (JS::IsLargeArrayBufferMaybeShared(arg0.Obj())) {
38582 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
38583 return false;
38584 }
38585 if (JS::IsResizableArrayBufferMaybeShared(arg0.Obj())) {
38586 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
38587 return false;
38588 }
38589 } else {
38590 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
38591 return false;
38592 }
38593 // NOTE: This assert does NOT call the function.
38594 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAllowSharedArrayBuffer(Constify(arg0)))>, "Should be returning void here");
38595 MOZ_KnownLive(self)(self)->PassAllowSharedArrayBuffer(Constify(arg0));
38596 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38596); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38596; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38597 args.rval().setUndefined();
38598 return true;
38599}
38600
38601static const JSJitInfo passAllowSharedArrayBuffer_methodinfo = {
38602 { (JSJitGetterOp)passAllowSharedArrayBuffer },
38603 { prototypes::id::TestExampleInterface },
38604 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38605 JSJitInfo::Method,
38606 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38607 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38608 false, /* isInfallible. False in setters. */
38609 false, /* isMovable. Not relevant for setters. */
38610 false, /* isEliminatable. Not relevant for setters. */
38611 false, /* isAlwaysInSlot. Only relevant for getters. */
38612 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38613 false, /* isTypedMethod. Only relevant for methods. */
38614 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38615};
38616
38617MOZ_CAN_RUN_SCRIPT static bool
38618passAllowSharedNullableArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38619{
38620 BindingCallContext cx(cx_, "TestExampleInterface.passAllowSharedNullableArrayBuffer");
38621 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38624( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38622 "TestExampleInterface", "passAllowSharedNullableArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38624( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38623 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38624( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38624 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38624( cx, "TestExampleInterface"
, "passAllowSharedNullableArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38625
38626 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38627 if (!args.requireAtLeast(cx, "TestExampleInterface.passAllowSharedNullableArrayBuffer", 1)) {
38628 return false;
38629 }
38630 RootedSpiderMonkeyInterface<Nullable<ArrayBuffer>> arg0(cx);
38631 if (args[0].isObject()) {
38632 if (!arg0.SetValue().Init(&args[0].toObject())) {
38633 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 1", "ArrayBufferOrNull");
38634 return false;
38635 }
38636 if (JS::IsLargeArrayBufferMaybeShared(arg0.SetValue().Obj())) {
38637 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
38638 return false;
38639 }
38640 if (JS::IsResizableArrayBufferMaybeShared(arg0.SetValue().Obj())) {
38641 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
38642 return false;
38643 }
38644 } else if (args[0].isNullOrUndefined()) {
38645 arg0.SetNull();
38646 } else {
38647 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 1");
38648 return false;
38649 }
38650 // NOTE: This assert does NOT call the function.
38651 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassAllowSharedNullableArrayBuffer(Constify(arg0)))>, "Should be returning void here");
38652 MOZ_KnownLive(self)(self)->PassAllowSharedNullableArrayBuffer(Constify(arg0));
38653 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38653); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38653; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38654 args.rval().setUndefined();
38655 return true;
38656}
38657
38658static const JSJitInfo passAllowSharedNullableArrayBuffer_methodinfo = {
38659 { (JSJitGetterOp)passAllowSharedNullableArrayBuffer },
38660 { prototypes::id::TestExampleInterface },
38661 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38662 JSJitInfo::Method,
38663 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38664 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38665 false, /* isInfallible. False in setters. */
38666 false, /* isMovable. Not relevant for setters. */
38667 false, /* isEliminatable. Not relevant for setters. */
38668 false, /* isAlwaysInSlot. Only relevant for getters. */
38669 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38670 false, /* isTypedMethod. Only relevant for methods. */
38671 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38672};
38673
38674MOZ_CAN_RUN_SCRIPT static bool
38675passUnionArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38676{
38677 BindingCallContext cx(cx_, "TestExampleInterface.passUnionArrayBuffer");
38678 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38681( cx, "TestExampleInterface"
, "passUnionArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38679 "TestExampleInterface", "passUnionArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38681( cx, "TestExampleInterface"
, "passUnionArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38680 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38681( cx, "TestExampleInterface"
, "passUnionArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
38681 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38681( cx, "TestExampleInterface"
, "passUnionArrayBuffer", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
38682
38683 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38684 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionArrayBuffer", 1)) {
38685 return false;
38686 }
38687 StringOrArrayBuffer arg0;
38688 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
38689 return false;
38690 }
38691 // NOTE: This assert does NOT call the function.
38692 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionArrayBuffer(Constify(arg0)))>, "Should be returning void here");
38693 MOZ_KnownLive(self)(self)->PassUnionArrayBuffer(Constify(arg0));
38694 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38694); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38694; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38695 args.rval().setUndefined();
38696 return true;
38697}
38698
38699static const JSJitInfo passUnionArrayBuffer_methodinfo = {
38700 { (JSJitGetterOp)passUnionArrayBuffer },
38701 { prototypes::id::TestExampleInterface },
38702 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38703 JSJitInfo::Method,
38704 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38705 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38706 false, /* isInfallible. False in setters. */
38707 false, /* isMovable. Not relevant for setters. */
38708 false, /* isEliminatable. Not relevant for setters. */
38709 false, /* isAlwaysInSlot. Only relevant for getters. */
38710 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38711 false, /* isTypedMethod. Only relevant for methods. */
38712 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38713};
38714
38715MOZ_CAN_RUN_SCRIPT static bool
38716passUnionAllowSharedArrayBuffer(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38717{
38718 BindingCallContext cx(cx_, "TestExampleInterface.passUnionAllowSharedArrayBuffer");
38719 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38722( cx, "TestExampleInterface"
, "passUnionAllowSharedArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38720 "TestExampleInterface", "passUnionAllowSharedArrayBuffer", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38722( cx, "TestExampleInterface"
, "passUnionAllowSharedArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38721 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38722( cx, "TestExampleInterface"
, "passUnionAllowSharedArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38722 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38722( cx, "TestExampleInterface"
, "passUnionAllowSharedArrayBuffer", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38723
38724 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38725 if (!args.requireAtLeast(cx, "TestExampleInterface.passUnionAllowSharedArrayBuffer", 1)) {
38726 return false;
38727 }
38728 StringOrMaybeSharedArrayBuffer arg0;
38729 if (!arg0.Init(cx, args[0], "Argument 1", false)) {
38730 return false;
38731 }
38732 // NOTE: This assert does NOT call the function.
38733 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->PassUnionAllowSharedArrayBuffer(Constify(arg0)))>, "Should be returning void here");
38734 MOZ_KnownLive(self)(self)->PassUnionAllowSharedArrayBuffer(Constify(arg0));
38735 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38735); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38735; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38736 args.rval().setUndefined();
38737 return true;
38738}
38739
38740static const JSJitInfo passUnionAllowSharedArrayBuffer_methodinfo = {
38741 { (JSJitGetterOp)passUnionAllowSharedArrayBuffer },
38742 { prototypes::id::TestExampleInterface },
38743 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38744 JSJitInfo::Method,
38745 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38746 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38747 false, /* isInfallible. False in setters. */
38748 false, /* isMovable. Not relevant for setters. */
38749 false, /* isEliminatable. Not relevant for setters. */
38750 false, /* isAlwaysInSlot. Only relevant for getters. */
38751 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38752 false, /* isTypedMethod. Only relevant for methods. */
38753 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38754};
38755
38756MOZ_CAN_RUN_SCRIPT static bool
38757get_reflectedHTMLAttributeReturningFrozenArray(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
38758{
38759 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38762( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38760 "TestExampleInterface", "reflectedHTMLAttributeReturningFrozenArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38762( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38761 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject38762( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38762 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38762( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38763
38764 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38765 // Have to either root across the getter call or reget after.
38766 bool isXray;
38767 JS::Rooted<JSObject*> slotStorage(cx, GetCachedSlotStorageObject(cx, obj, &isXray));
38768 if (!slotStorage) {
38769 return false;
38770 }
38771 const size_t slotIndex = isXray ? (xpc::JSSLOT_EXPANDO_COUNT + 20) : (DOM_INSTANCE_RESERVED_SLOTS1 + 20);
38772 MOZ_ASSERT(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage)))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
)))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage
))))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
, "../TestExampleGenBinding.cpp", 38772); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "slotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(slotStorage))"
")"); do { *((volatile int*)__null) = 38772; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
38773 JS::Rooted<JS::Value> cachedVal(cx, JS::GetReservedSlot(slotStorage, slotIndex));
38774 bool hasCachedValue = !cachedVal.isUndefined();
38775 bool useCachedValue = false;
38776 Nullable<nsTArray<StrongPtrForMember<mozilla::dom::Element>>> result;
38777 // NOTE: This assert does NOT call the function.
38778 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->GetReflectedHTMLAttributeReturningFrozenArray(hasCachedValue ? &useCachedValue : nullptr, result))>, "Should be returning void here");
38779 MOZ_KnownLive(self)(self)->GetReflectedHTMLAttributeReturningFrozenArray(hasCachedValue ? &useCachedValue : nullptr, result);
38780 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38780); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38780; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38781 MOZ_ASSERT_IF(useCachedValue, hasCachedValue)do { if (useCachedValue) { do { static_assert( mozilla::detail
::AssertionConditionType<decltype(hasCachedValue)>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(hasCachedValue))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("hasCachedValue", "../TestExampleGenBinding.cpp", 38781); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "hasCachedValue" ")"); do { *((volatile int
*)__null) = 38781; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false); } } while (false)
;
38782 if (hasCachedValue && useCachedValue) {
38783 args.rval().set(cachedVal);
38784 // The cached value is in the compartment of slotStorage,
38785 // so wrap into the caller compartment as needed.
38786 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
38787 }
38788
38789 ClearCachedReflectedHTMLAttributeReturningFrozenArrayValue(self);
38790
38791 {
38792 JS::Rooted<JSObject*> conversionScope(cx, isXray ? JS::CurrentGlobalOrNull(cx) : slotStorage);
38793 JSAutoRealm ar(cx, conversionScope);
38794 do { // block we break out of when done wrapping
38795
38796 if (result.IsNull()) {
38797 args.rval().setNull();
38798 break;
38799 }
38800
38801 uint32_t length = result.Value().Length();
38802 JS::Rooted<JSObject*> returnArray(cx, JS::NewArrayObject(cx, length));
38803 if (!returnArray) {
38804 return false;
38805 }
38806 // Scope for 'tmp'
38807 {
38808 JS::Rooted<JS::Value> tmp(cx);
38809 for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
38810 // Control block to let us common up the JS_DefineElement calls when there
38811 // are different ways to succeed at wrapping the object.
38812 do {
38813 if (!GetOrCreateDOMReflector(cx, result.Value()[sequenceIdx0], &tmp)) {
38814 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38814); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 38814; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
38815 return false;
38816 }
38817 break;
38818 } while (false);
38819 if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
38820 JSPROP_ENUMERATE)) {
38821 return false;
38822 }
38823 }
38824 }
38825 args.rval().setObject(*returnArray);
38826 break;
38827 } while (false);
38828 if (args.rval().isObject()) {
38829 JS::Rooted<JSObject*> rvalObj(cx, &args.rval().toObject());
38830 if (!JS_FreezeObject(cx, rvalObj)) {
38831 return false;
38832 }
38833 }
38834 }
38835 { // And now store things in the realm of our slotStorage.
38836 JSAutoRealm ar(cx, slotStorage);
38837 // Make a copy so that we don't do unnecessary wrapping on args.rval().
38838 JS::Rooted<JS::Value> storedVal(cx, args.rval());
38839 if (!MaybeWrapNonDOMObjectOrNullValue(cx, &storedVal)) {
38840 return false;
38841 }
38842 JS::SetReservedSlot(slotStorage, slotIndex, storedVal);
38843 if (!isXray) {
38844 // In the Xray case we don't need to do this, because getting the
38845 // expando object already preserved our wrapper.
38846 PreserveWrapper(self);
38847 }
38848 }
38849 // And now make sure args.rval() is in the caller realm.
38850 return MaybeWrapNonDOMObjectOrNullValue(cx, args.rval());
38851}
38852
38853MOZ_CAN_RUN_SCRIPT static bool
38854set_reflectedHTMLAttributeReturningFrozenArray(JSContext* cx_, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
38855{
38856 BindingCallContext cx(cx_, "TestExampleInterface.reflectedHTMLAttributeReturningFrozenArray setter");
38857 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38860( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38858 "TestExampleInterface", "reflectedHTMLAttributeReturningFrozenArray", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38860( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38859 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject38860( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
38860 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38860( cx, "TestExampleInterface"
, "reflectedHTMLAttributeReturningFrozenArray", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
38861
38862 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38863 Nullable<Sequence<OwningNonNull<mozilla::dom::Element>>> arg0;
38864 if (args[0].isObject()) {
38865 JS::ForOfIterator iter(cx);
38866 if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
38867 return false;
38868 }
38869 if (!iter.valueIsIterable()) {
38870 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "sequence");
38871 return false;
38872 }
38873 Sequence<OwningNonNull<mozilla::dom::Element>> &arr = arg0.SetValue();
38874 JS::Rooted<JS::Value> temp(cx);
38875 while (true) {
38876 bool done;
38877 if (!iter.next(&temp, &done)) {
38878 return false;
38879 }
38880 if (done) {
38881 break;
38882 }
38883 OwningNonNull<mozilla::dom::Element>* slotPtr = arr.AppendElement(mozilla::fallible);
38884 if (!slotPtr) {
38885 JS_ReportOutOfMemory(cx);
38886 return false;
38887 }
38888 OwningNonNull<mozilla::dom::Element>& slot = *slotPtr;
38889 if (temp.isObject()) {
38890 static_assert(IsRefcounted<mozilla::dom::Element>::value, "We can only store refcounted classes.");
38891 {
38892 // Our JSContext should be in the right global to do unwrapping in.
38893 nsresult rv = UnwrapObject<prototypes::id::Element, mozilla::dom::Element>(&temp, slot, cx);
38894 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
38895 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Element of value being assigned", "Element");
38896 return false;
38897 }
38898 }
38899 } else {
38900 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Element of value being assigned");
38901 return false;
38902 }
38903 }
38904 } else if (args[0].isNullOrUndefined()) {
38905 arg0.SetNull();
38906 } else {
38907 cx.ThrowErrorMessage<MSG_CONVERSION_ERROR>("Value being assigned", "sequence");
38908 return false;
38909 }
38910 // NOTE: This assert does NOT call the function.
38911 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetReflectedHTMLAttributeReturningFrozenArray(Constify(arg0)))>, "Should be returning void here");
38912 MOZ_KnownLive(self)(self)->SetReflectedHTMLAttributeReturningFrozenArray(Constify(arg0));
38913 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 38913); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 38913; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
38914
38915 return true;
38916}
38917
38918static const JSJitInfo reflectedHTMLAttributeReturningFrozenArray_getterinfo = {
38919 { get_reflectedHTMLAttributeReturningFrozenArray },
38920 { prototypes::id::TestExampleInterface },
38921 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38922 JSJitInfo::Getter,
38923 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38924 JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
38925 false, /* isInfallible. False in setters. */
38926 false, /* isMovable. Not relevant for setters. */
38927 false, /* isEliminatable. Not relevant for setters. */
38928 false, /* isAlwaysInSlot. Only relevant for getters. */
38929 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38930 false, /* isTypedMethod. Only relevant for methods. */
38931 (DOM_INSTANCE_RESERVED_SLOTS1 + 20) /* Reserved slot index, if we're stored in a slot, else 0. */
38932};
38933static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 20) <= JSJitInfo::maxSlotIndex, "We won't fit");
38934static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 20) < 22, "There is no slot for us");
38935static const JSJitInfo reflectedHTMLAttributeReturningFrozenArray_setterinfo = {
38936 { (JSJitGetterOp)set_reflectedHTMLAttributeReturningFrozenArray },
38937 { prototypes::id::TestExampleInterface },
38938 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38939 JSJitInfo::Setter,
38940 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38941 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
38942 false, /* isInfallible. False in setters. */
38943 false, /* isMovable. Not relevant for setters. */
38944 false, /* isEliminatable. Not relevant for setters. */
38945 false, /* isAlwaysInSlot. Only relevant for getters. */
38946 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38947 false, /* isTypedMethod. Only relevant for methods. */
38948 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38949};
38950
38951MOZ_CAN_RUN_SCRIPT static bool
38952toJSON(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
38953{
38954 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject38957( cx, "TestExampleInterface"
, "toJSON", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
38955 "TestExampleInterface", "toJSON", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject38957( cx, "TestExampleInterface"
, "toJSON", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
38956 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject38957( cx, "TestExampleInterface"
, "toJSON", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
38957 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject38957( cx, "TestExampleInterface"
, "toJSON", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_METHOD) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
38958
38959 auto* self = static_cast<mozilla::dom::TestExampleInterface*>(void_self);
38960 JS::Rooted<JSObject*> result(cx, JS_NewPlainObject(cx));
38961 if (!result) {
38962 return false;
38963 }
38964 if (!TestExampleInterface_Binding::CollectJSONAttributes(cx, obj, MOZ_KnownLive(self)(self), result)) {
38965 return false;
38966 }
38967 args.rval().setObject(*result);
38968 return true;
38969}
38970
38971static const JSJitInfo toJSON_methodinfo = {
38972 { (JSJitGetterOp)toJSON },
38973 { prototypes::id::TestExampleInterface },
38974 { PrototypeTraits<prototypes::id::TestExampleInterface>::Depth },
38975 JSJitInfo::Method,
38976 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
38977 JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
38978 false, /* isInfallible. False in setters. */
38979 false, /* isMovable. Not relevant for setters. */
38980 false, /* isEliminatable. Not relevant for setters. */
38981 false, /* isAlwaysInSlot. Only relevant for getters. */
38982 false, /* isLazilyCachedInSlot. Only relevant for getters. */
38983 false, /* isTypedMethod. Only relevant for methods. */
38984 0 /* Reserved slot index, if we're stored in a slot, else 0. */
38985};
38986
38987static bool
38988_addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
38989{
38990 mozilla::dom::TestExampleInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleInterface>(obj);
38991 // We don't want to preserve if we don't have a wrapper, and we
38992 // obviously can't preserve if we're not initialized.
38993 if (self && self->GetWrapperPreserveColor()) {
38994 PreserveWrapper(self);
38995 }
38996 return true;
38997}
38998
38999static void
39000_finalize(JS::GCContext* gcx, JSObject* obj)
39001{
39002 mozilla::dom::TestExampleInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleInterface>(obj);
39003 if (self) {
39004 JS::SetReservedSlot(obj, DOM_OBJECT_SLOT0, JS::UndefinedValue());
39005 {
39006 JS::Value val = JS::GetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9));
39007 if (!val.isUndefined()) {
39008 JSObject* obj = &val.toObject();
39009 js::SetProxyReservedSlot(obj, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0, JS::UndefinedValue());
39010 }
39011 }
39012 {
39013 JS::Value val = JS::GetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10));
39014 if (!val.isUndefined()) {
39015 JSObject* obj = &val.toObject();
39016 js::SetProxyReservedSlot(obj, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0, JS::UndefinedValue());
39017 }
39018 }
39019 {
39020 JS::Value val = JS::GetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11));
39021 if (!val.isUndefined()) {
39022 JSObject* obj = &val.toObject();
39023 js::SetProxyReservedSlot(obj, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0, JS::UndefinedValue());
39024 }
39025 }
39026 {
39027 JS::Value val = JS::GetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12));
39028 if (!val.isUndefined()) {
39029 JSObject* obj = &val.toObject();
39030 js::SetProxyReservedSlot(obj, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0, JS::UndefinedValue());
39031 }
39032 }
39033 {
39034 JS::Value val = JS::GetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13));
39035 if (!val.isUndefined()) {
39036 JSObject* obj = &val.toObject();
39037 js::SetProxyReservedSlot(obj, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT0, JS::UndefinedValue());
39038 }
39039 }
39040 ClearWrapper(self, self, obj);
39041 if (size_t mallocBytes = BindingJSObjectMallocBytes(self)) {
39042 JS::RemoveAssociatedMemory(obj, mallocBytes,
39043 JS::MemoryUse::DOMBinding);
39044 }
39045 AddForDeferredFinalization<mozilla::dom::TestExampleInterface>(self);
39046 }
39047}
39048
39049static nsWrapperCache*
39050_getWrapperCache(JS::Handle<JSObject*> obj)
39051{
39052 mozilla::dom::TestExampleInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleInterface>(obj);
39053 return self;
39054}
39055
39056static size_t
39057_objectMoved(JSObject* obj, JSObject* old)
39058{
39059 mozilla::dom::TestExampleInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleInterface>(obj);
39060 if (self) {
39061 UpdateWrapper(self, self, obj, old);
39062 }
39063
39064 return 0;
39065}
39066
39067static const JSFunctionSpec sStaticMethods_specs[] = {
39068 JS_FNSPEC("staticMethod", staticMethod, nullptr, 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("staticMethod"), {staticMethod, nullptr
}, 1, JSPROP_ENUMERATE, nullptr}
,
39069 JS_FNSPEC("staticMethodWithContext", staticMethodWithContext, nullptr, 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("staticMethodWithContext"), {staticMethodWithContext
, nullptr}, 1, JSPROP_ENUMERATE, nullptr}
,
39070 JS_FNSPEC("staticDeprecatedMethod", staticDeprecatedMethod, nullptr, 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("staticDeprecatedMethod"), {staticDeprecatedMethod
, nullptr}, 1, JSPROP_ENUMERATE, nullptr}
,
39071 JS_FNSPEC("staticDeprecatedMethodWithContext", staticDeprecatedMethodWithContext, nullptr, 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("staticDeprecatedMethodWithContext"), {
staticDeprecatedMethodWithContext, nullptr}, 1, JSPROP_ENUMERATE
, nullptr}
,
39072 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
39073};
39074
39075
39076static const Prefable<const JSFunctionSpec> sStaticMethods[] = {
39077 { nullptr, &sStaticMethods_specs[0] },
39078 { nullptr, nullptr }
39079};
39080
39081static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39082 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39083static_assert(4 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39084 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39085
39086static const JSPropertySpec sStaticAttributes_specs[] = {
39087 JSPropertySpec::nativeAccessors("staticAttribute", JSPROP_ENUMERATE, get_staticAttribute, nullptr, set_staticAttribute, nullptr),
39088 JSPropertySpec::nativeAccessors("staticDeprecatedAttribute", JSPROP_ENUMERATE, get_staticDeprecatedAttribute, nullptr, set_staticDeprecatedAttribute, nullptr),
39089 JS_PS_ENDJSPropertySpec::sentinel()
39090};
39091
39092
39093static const Prefable<const JSPropertySpec> sStaticAttributes[] = {
39094 { nullptr, &sStaticAttributes_specs[0] },
39095 { nullptr, nullptr }
39096};
39097
39098static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39099 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39100static_assert(2 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39101 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39102
39103static const JSFunctionSpec sMethods_specs[] = {
39104 JS_FNSPEC("passByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passByte_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passByte"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passByte_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39105 JS_FNSPEC("receiveByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveByte"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveByte_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39106 JS_FNSPEC("passOptionalByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalByte"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalByte_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39107 JS_FNSPEC("passOptionalByteBeforeRequired", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalByteBeforeRequired_methodinfo), 2, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalByteBeforeRequired"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalByteBeforeRequired_methodinfo
)}, 2, JSPROP_ENUMERATE, nullptr}
,
39108 JS_FNSPEC("passOptionalByteWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalByteWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalByteWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalByteWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39109 JS_FNSPEC("passOptionalByteWithDefaultBeforeRequired", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalByteWithDefaultBeforeRequired_methodinfo), 2, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalByteWithDefaultBeforeRequired"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalByteWithDefaultBeforeRequired_methodinfo
)}, 2, JSPROP_ENUMERATE, nullptr}
,
39110 JS_FNSPEC("passNullableByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableByte_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableByte"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableByte_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39111 JS_FNSPEC("passOptionalNullableByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableByte"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableByte_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39112 JS_FNSPEC("passVariadicByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicByte"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passVariadicByte_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39113 JS_FNSPEC("returnByteSideEffectFree", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&returnByteSideEffectFree_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("returnByteSideEffectFree"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&returnByteSideEffectFree_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39114 JS_FNSPEC("returnDOMDependentByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&returnDOMDependentByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("returnDOMDependentByte"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&returnDOMDependentByte_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39115 JS_FNSPEC("returnConstantByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&returnConstantByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("returnConstantByte"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&returnConstantByte_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39116 JS_FNSPEC("returnDeviceStateDependentByte", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&returnDeviceStateDependentByte_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("returnDeviceStateDependentByte"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&returnDeviceStateDependentByte_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39117 JS_FNSPEC("passShort", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passShort_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passShort"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passShort_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39118 JS_FNSPEC("receiveShort", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveShort_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveShort"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveShort_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39119 JS_FNSPEC("passOptionalShort", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalShort_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalShort"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalShort_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39120 JS_FNSPEC("passOptionalShortWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalShortWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalShortWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalShortWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39121 JS_FNSPEC("passLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passLong_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passLong"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passLong_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39122 JS_FNSPEC("receiveLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveLong"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveLong_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39123 JS_FNSPEC("passOptionalLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalLong"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalLong_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39124 JS_FNSPEC("passOptionalLongWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalLongWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalLongWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalLongWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39125 JS_FNSPEC("passLongLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passLongLong_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passLongLong"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passLongLong_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39126 JS_FNSPEC("receiveLongLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveLongLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveLongLong"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveLongLong_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39127 JS_FNSPEC("passOptionalLongLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalLongLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalLongLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalLongLong_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39128 JS_FNSPEC("passOptionalLongLongWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalLongLongWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalLongLongWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalLongLongWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39129 JS_FNSPEC("passOctet", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOctet_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOctet"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passOctet_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39130 JS_FNSPEC("receiveOctet", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveOctet_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveOctet"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveOctet_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39131 JS_FNSPEC("passOptionalOctet", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalOctet_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalOctet"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalOctet_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39132 JS_FNSPEC("passOptionalOctetWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalOctetWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalOctetWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalOctetWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39133 JS_FNSPEC("passUnsignedShort", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnsignedShort_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnsignedShort"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passUnsignedShort_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39134 JS_FNSPEC("receiveUnsignedShort", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnsignedShort_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnsignedShort"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveUnsignedShort_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39135 JS_FNSPEC("passOptionalUnsignedShort", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedShort_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnsignedShort"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalUnsignedShort_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39136 JS_FNSPEC("passOptionalUnsignedShortWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedShortWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnsignedShortWithDefault")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalUnsignedShortWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39137 JS_FNSPEC("passUnsignedLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnsignedLong_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnsignedLong"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passUnsignedLong_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39138 JS_FNSPEC("receiveUnsignedLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnsignedLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnsignedLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveUnsignedLong_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39139 JS_FNSPEC("passOptionalUnsignedLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnsignedLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalUnsignedLong_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39140 JS_FNSPEC("passOptionalUnsignedLongWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedLongWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnsignedLongWithDefault"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalUnsignedLongWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39141 JS_FNSPEC("passUnsignedLongLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnsignedLongLong_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnsignedLongLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnsignedLongLong_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39142 JS_FNSPEC("receiveUnsignedLongLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnsignedLongLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnsignedLongLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveUnsignedLongLong_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39143 JS_FNSPEC("passOptionalUnsignedLongLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedLongLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnsignedLongLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalUnsignedLongLong_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39144 JS_FNSPEC("passOptionalUnsignedLongLongWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedLongLongWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnsignedLongLongWithDefault"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalUnsignedLongLongWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39145 JS_FNSPEC("passFloat", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passFloat_methodinfo), 16, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passFloat"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passFloat_methodinfo)}, 16, JSPROP_ENUMERATE, nullptr}
,
39146 JS_FNSPEC("passLenientFloat", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passLenientFloat_methodinfo), 16, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passLenientFloat"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passLenientFloat_methodinfo)}, 16, JSPROP_ENUMERATE
, nullptr}
,
39147 JS_FNSPEC("receiveSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveSelf"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveSelf_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39148 JS_FNSPEC("receiveNullableSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableSelf"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableSelf_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39149 JS_FNSPEC("receiveWeakSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakSelf"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveWeakSelf_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39150 JS_FNSPEC("receiveWeakNullableSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakNullableSelf"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveWeakNullableSelf_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39151 JS_FNSPEC("passSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSelf"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passSelf_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39152 JS_FNSPEC("passNullableSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableSelf_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableSelf"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableSelf_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39153 JS_FNSPEC("passOptionalSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSelf"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalSelf_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39154 JS_FNSPEC("passOptionalNonNullSelf", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNonNullSelf_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNonNullSelf"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNonNullSelf_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39155 JS_FNSPEC("passOptionalSelfWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSelfWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSelfWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalSelfWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39156 JS_FNSPEC("receiveNonWrapperCacheInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNonWrapperCacheInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNonWrapperCacheInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNonWrapperCacheInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39157 JS_FNSPEC("receiveNullableNonWrapperCacheInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableNonWrapperCacheInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableNonWrapperCacheInterface"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableNonWrapperCacheInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39158 JS_FNSPEC("receiveNonWrapperCacheInterfaceSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNonWrapperCacheInterfaceSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNonWrapperCacheInterfaceSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNonWrapperCacheInterfaceSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39159 JS_FNSPEC("receiveNullableNonWrapperCacheInterfaceSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableNonWrapperCacheInterfaceSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableNonWrapperCacheInterfaceSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableNonWrapperCacheInterfaceSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39160 JS_FNSPEC("receiveNonWrapperCacheInterfaceNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNonWrapperCacheInterfaceNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNonWrapperCacheInterfaceNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNonWrapperCacheInterfaceNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39161 JS_FNSPEC("receiveNullableNonWrapperCacheInterfaceNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableNonWrapperCacheInterfaceNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableNonWrapperCacheInterfaceNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableNonWrapperCacheInterfaceNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39162 JS_FNSPEC("receiveExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveExternal_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveExternal"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveExternal_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39163 JS_FNSPEC("receiveNullableExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableExternal_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableExternal"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableExternal_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39164 JS_FNSPEC("receiveWeakExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakExternal_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakExternal"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveWeakExternal_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39165 JS_FNSPEC("receiveWeakNullableExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableExternal_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakNullableExternal"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveWeakNullableExternal_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39166 JS_FNSPEC("passExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passExternal_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passExternal"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passExternal_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39167 JS_FNSPEC("passNullableExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableExternal_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableExternal"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableExternal_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39168 JS_FNSPEC("passOptionalExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalExternal_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalExternal"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalExternal_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39169 JS_FNSPEC("passOptionalNonNullExternal", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNonNullExternal_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNonNullExternal"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNonNullExternal_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39170 JS_FNSPEC("passOptionalExternalWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalExternalWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalExternalWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalExternalWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39171 JS_FNSPEC("receiveCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveCallbackInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveCallbackInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveCallbackInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39172 JS_FNSPEC("receiveNullableCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableCallbackInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableCallbackInterface"), {(
GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveNullableCallbackInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39173 JS_FNSPEC("receiveWeakCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakCallbackInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakCallbackInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveWeakCallbackInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39174 JS_FNSPEC("receiveWeakNullableCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableCallbackInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakNullableCallbackInterface")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveWeakNullableCallbackInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39175 JS_FNSPEC("passCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passCallbackInterface_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passCallbackInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passCallbackInterface_methodinfo)},
1, JSPROP_ENUMERATE, nullptr}
,
39176 JS_FNSPEC("passNullableCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableCallbackInterface_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableCallbackInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableCallbackInterface_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39177 JS_FNSPEC("passOptionalCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalCallbackInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalCallbackInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalCallbackInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39178 JS_FNSPEC("passOptionalNonNullCallbackInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNonNullCallbackInterface_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNonNullCallbackInterface")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalNonNullCallbackInterface_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39179 JS_FNSPEC("passOptionalCallbackInterfaceWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalCallbackInterfaceWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalCallbackInterfaceWithDefault"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalCallbackInterfaceWithDefault_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39180 JS_FNSPEC("receiveSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveSequence"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveSequence_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39181 JS_FNSPEC("receiveNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableSequence_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39182 JS_FNSPEC("receiveSequenceOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveSequenceOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveSequenceOfNullableInts"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveSequenceOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39183 JS_FNSPEC("receiveNullableSequenceOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableSequenceOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableSequenceOfNullableInts"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableSequenceOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39184 JS_FNSPEC("passSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequence"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passSequence_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39185 JS_FNSPEC("passNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableSequence_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39186 JS_FNSPEC("passSequenceOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfNullableInts_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfNullableInts"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfNullableInts_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39187 JS_FNSPEC("passOptionalSequenceOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSequenceOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSequenceOfNullableInts"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalSequenceOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39188 JS_FNSPEC("passOptionalNullableSequenceOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceOfNullableInts"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39189 JS_FNSPEC("receiveCastableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveCastableObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveCastableObjectSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveCastableObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39190 JS_FNSPEC("receiveCallbackObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveCallbackObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveCallbackObjectSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveCallbackObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39191 JS_FNSPEC("receiveNullableCastableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableCastableObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableCastableObjectSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableCastableObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39192 JS_FNSPEC("receiveNullableCallbackObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableCallbackObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableCallbackObjectSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableCallbackObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39193 JS_FNSPEC("receiveCastableObjectNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveCastableObjectNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveCastableObjectNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveCastableObjectNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39194 JS_FNSPEC("receiveNullableCastableObjectNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableCastableObjectNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableCastableObjectNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveNullableCastableObjectNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39195 JS_FNSPEC("receiveWeakCastableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakCastableObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakCastableObjectSequence"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveWeakCastableObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39196 JS_FNSPEC("receiveWeakNullableCastableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableCastableObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakNullableCastableObjectSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableCastableObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39197 JS_FNSPEC("receiveWeakCastableObjectNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakCastableObjectNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakCastableObjectNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveWeakCastableObjectNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39198 JS_FNSPEC("receiveWeakNullableCastableObjectNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableCastableObjectNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveWeakNullableCastableObjectNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&receiveWeakNullableCastableObjectNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39199 JS_FNSPEC("passCastableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passCastableObjectSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passCastableObjectSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passCastableObjectSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39200 JS_FNSPEC("passNullableCastableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableCastableObjectSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableCastableObjectSequence"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableCastableObjectSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39201 JS_FNSPEC("passCastableObjectNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passCastableObjectNullableSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passCastableObjectNullableSequence"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passCastableObjectNullableSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39202 JS_FNSPEC("passNullableCastableObjectNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableCastableObjectNullableSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableCastableObjectNullableSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passNullableCastableObjectNullableSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39203 JS_FNSPEC("passOptionalSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalSequence_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39204 JS_FNSPEC("passOptionalSequenceWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSequenceWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSequenceWithDefaultValue")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalSequenceWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39205 JS_FNSPEC("passOptionalNullableSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39206 JS_FNSPEC("passOptionalNullableSequenceWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39207 JS_FNSPEC("passOptionalNullableSequenceWithDefaultValue2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceWithDefaultValue2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceWithDefaultValue2"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceWithDefaultValue2_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39208 JS_FNSPEC("passOptionalObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalObjectSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39209 JS_FNSPEC("passExternalInterfaceSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passExternalInterfaceSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passExternalInterfaceSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passExternalInterfaceSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39210 JS_FNSPEC("passNullableExternalInterfaceSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableExternalInterfaceSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableExternalInterfaceSequence"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passNullableExternalInterfaceSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39211 JS_FNSPEC("receiveStringSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveStringSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveStringSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveStringSequence_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
39212 JS_FNSPEC("passStringSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passStringSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passStringSequence"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passStringSequence_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39213 JS_FNSPEC("receiveByteStringSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveByteStringSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveByteStringSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveByteStringSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39214 JS_FNSPEC("passByteStringSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passByteStringSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passByteStringSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passByteStringSequence_methodinfo)}
, 1, JSPROP_ENUMERATE, nullptr}
,
39215 JS_FNSPEC("receiveUTF8StringSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUTF8StringSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUTF8StringSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveUTF8StringSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39216 JS_FNSPEC("passUTF8StringSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUTF8StringSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUTF8StringSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUTF8StringSequence_methodinfo)}
, 1, JSPROP_ENUMERATE, nullptr}
,
39217 JS_FNSPEC("receiveAnySequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveAnySequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveAnySequence"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveAnySequence_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39218 JS_FNSPEC("receiveNullableAnySequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableAnySequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableAnySequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableAnySequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39219 JS_FNSPEC("receiveObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveObjectSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveObjectSequence_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
39220 JS_FNSPEC("receiveNullableObjectSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableObjectSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableObjectSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableObjectSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39221 JS_FNSPEC("passSequenceOfSequences", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfSequences_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfSequences"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfSequences_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39222 JS_FNSPEC("passSequenceOfSequencesOfSequences", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfSequencesOfSequences_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfSequencesOfSequences"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passSequenceOfSequencesOfSequences_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39223 JS_FNSPEC("passRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecord"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passRecord_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39224 JS_FNSPEC("passNullableRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableRecord"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableRecord_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39225 JS_FNSPEC("passRecordOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfNullableInts_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfNullableInts"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRecordOfNullableInts_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39226 JS_FNSPEC("passOptionalRecordOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalRecordOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalRecordOfNullableInts"), {(
GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalRecordOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39227 JS_FNSPEC("passOptionalNullableRecordOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableRecordOfNullableInts"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39228 JS_FNSPEC("passCastableObjectRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passCastableObjectRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passCastableObjectRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passCastableObjectRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39229 JS_FNSPEC("passNullableCastableObjectRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableCastableObjectRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableCastableObjectRecord"), {(
GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableCastableObjectRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39230 JS_FNSPEC("passCastableObjectNullableRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passCastableObjectNullableRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passCastableObjectNullableRecord"), {(
GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passCastableObjectNullableRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39231 JS_FNSPEC("passNullableCastableObjectNullableRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableCastableObjectNullableRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableCastableObjectNullableRecord"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passNullableCastableObjectNullableRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39232 JS_FNSPEC("passOptionalRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalRecord_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalRecord"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalRecord_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39233 JS_FNSPEC("passOptionalNullableRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecord_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableRecord_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39234 JS_FNSPEC("passOptionalNullableRecordWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableRecordWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39235 JS_FNSPEC("passOptionalObjectRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalObjectRecord_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalObjectRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalObjectRecord_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39236 JS_FNSPEC("passExternalInterfaceRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passExternalInterfaceRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passExternalInterfaceRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passExternalInterfaceRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39237 JS_FNSPEC("passNullableExternalInterfaceRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableExternalInterfaceRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableExternalInterfaceRecord"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableExternalInterfaceRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39238 JS_FNSPEC("passStringRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passStringRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passStringRecord"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passStringRecord_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39239 JS_FNSPEC("passByteStringRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passByteStringRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passByteStringRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passByteStringRecord_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39240 JS_FNSPEC("passUTF8StringRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUTF8StringRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUTF8StringRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUTF8StringRecord_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39241 JS_FNSPEC("passRecordOfRecords", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfRecords_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfRecords"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRecordOfRecords_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39242 JS_FNSPEC("receiveRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveRecord_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveRecord"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveRecord_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39243 JS_FNSPEC("receiveNullableRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableRecord_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableRecord_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
39244 JS_FNSPEC("receiveRecordOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveRecordOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveRecordOfNullableInts"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveRecordOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39245 JS_FNSPEC("receiveNullableRecordOfNullableInts", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableRecordOfNullableInts_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableRecordOfNullableInts"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveNullableRecordOfNullableInts_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39246 JS_FNSPEC("receiveAnyRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveAnyRecord_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveAnyRecord"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveAnyRecord_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39247 JS_FNSPEC("passArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passArrayBuffer"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passArrayBuffer_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39248 JS_FNSPEC("passNullableArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableArrayBuffer_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39249 JS_FNSPEC("passOptionalArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalArrayBuffer_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalArrayBuffer_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39250 JS_FNSPEC("passOptionalNullableArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableArrayBuffer_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableArrayBuffer_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39251 JS_FNSPEC("passOptionalNullableArrayBufferWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableArrayBufferWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableArrayBufferWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableArrayBufferWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39252 JS_FNSPEC("passArrayBufferView", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passArrayBufferView_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passArrayBufferView"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passArrayBufferView_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39253 JS_FNSPEC("passInt8Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passInt8Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passInt8Array"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passInt8Array_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39254 JS_FNSPEC("passInt16Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passInt16Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passInt16Array"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passInt16Array_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39255 JS_FNSPEC("passInt32Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passInt32Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passInt32Array"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passInt32Array_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39256 JS_FNSPEC("passUint8Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUint8Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUint8Array"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUint8Array_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39257 JS_FNSPEC("passUint16Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUint16Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUint16Array"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passUint16Array_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39258 JS_FNSPEC("passUint32Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUint32Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUint32Array"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passUint32Array_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39259 JS_FNSPEC("passUint8ClampedArray", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUint8ClampedArray_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUint8ClampedArray"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUint8ClampedArray_methodinfo)},
1, JSPROP_ENUMERATE, nullptr}
,
39260 JS_FNSPEC("passFloat32Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passFloat32Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passFloat32Array"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passFloat32Array_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39261 JS_FNSPEC("passFloat64Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passFloat64Array_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passFloat64Array"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passFloat64Array_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39262 JS_FNSPEC("passSequenceOfArrayBuffers", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfArrayBuffers_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfArrayBuffers"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfArrayBuffers_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39263 JS_FNSPEC("passSequenceOfNullableArrayBuffers", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfNullableArrayBuffers_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfNullableArrayBuffers"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passSequenceOfNullableArrayBuffers_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39264 JS_FNSPEC("passRecordOfArrayBuffers", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfArrayBuffers_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfArrayBuffers"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRecordOfArrayBuffers_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39265 JS_FNSPEC("passRecordOfNullableArrayBuffers", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfNullableArrayBuffers_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfNullableArrayBuffers"), {(
GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passRecordOfNullableArrayBuffers_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39266 JS_FNSPEC("passVariadicTypedArray", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicTypedArray_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicTypedArray"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicTypedArray_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39267 JS_FNSPEC("passVariadicNullableTypedArray", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicNullableTypedArray_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicNullableTypedArray"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicNullableTypedArray_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39268 JS_FNSPEC("receiveUint8Array", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUint8Array_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUint8Array"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveUint8Array_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39269 JS_FNSPEC("passString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passString"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passString_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39270 JS_FNSPEC("passNullableString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableString"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableString_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39271 JS_FNSPEC("passOptionalString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalString"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalString_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39272 JS_FNSPEC("passOptionalStringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalStringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalStringWithDefaultValue"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalStringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39273 JS_FNSPEC("passOptionalNullableString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableString_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39274 JS_FNSPEC("passOptionalNullableStringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableStringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableStringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableStringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39275 JS_FNSPEC("passVariadicString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicString"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passVariadicString_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39276 JS_FNSPEC("passByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passByteString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passByteString"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passByteString_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39277 JS_FNSPEC("passNullableByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableByteString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableByteString_methodinfo)}
, 1, JSPROP_ENUMERATE, nullptr}
,
39278 JS_FNSPEC("passOptionalByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalByteString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalByteString_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39279 JS_FNSPEC("passOptionalByteStringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalByteStringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalByteStringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalByteStringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39280 JS_FNSPEC("passOptionalNullableByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableByteString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableByteString_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39281 JS_FNSPEC("passOptionalNullableByteStringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableByteStringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableByteStringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableByteStringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39282 JS_FNSPEC("passVariadicByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicByteString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicByteString_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39283 JS_FNSPEC("passUnionByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionByteString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionByteString_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39284 JS_FNSPEC("passOptionalUnionByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnionByteString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnionByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalUnionByteString_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39285 JS_FNSPEC("passOptionalUnionByteStringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnionByteStringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnionByteStringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalUnionByteStringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39286 JS_FNSPEC("passUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUTF8String_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUTF8String"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUTF8String_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39287 JS_FNSPEC("passNullableUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUTF8String_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableUTF8String_methodinfo)}
, 1, JSPROP_ENUMERATE, nullptr}
,
39288 JS_FNSPEC("passOptionalUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUTF8String_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalUTF8String_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39289 JS_FNSPEC("passOptionalUTF8StringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUTF8StringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUTF8StringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalUTF8StringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39290 JS_FNSPEC("passOptionalNullableUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableUTF8String_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableUTF8String_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39291 JS_FNSPEC("passOptionalNullableUTF8StringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableUTF8StringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableUTF8StringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableUTF8StringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39292 JS_FNSPEC("passVariadicUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicUTF8String_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicUTF8String_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39293 JS_FNSPEC("passUnionUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionUTF8String_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionUTF8String_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39294 JS_FNSPEC("passOptionalUnionUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnionUTF8String_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnionUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalUnionUTF8String_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39295 JS_FNSPEC("passOptionalUnionUTF8StringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnionUTF8StringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnionUTF8StringWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalUnionUTF8StringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39296 JS_FNSPEC("passSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSVS_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSVS"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passSVS_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39297 JS_FNSPEC("passNullableSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableSVS_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableSVS"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableSVS_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39298 JS_FNSPEC("passOptionalSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSVS_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSVS"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalSVS_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39299 JS_FNSPEC("passOptionalSVSWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSVSWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSVSWithDefaultValue"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalSVSWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39300 JS_FNSPEC("passOptionalNullableSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSVS_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSVS"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableSVS_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39301 JS_FNSPEC("passOptionalNullableSVSWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSVSWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSVSWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSVSWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39302 JS_FNSPEC("passVariadicSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicSVS_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicSVS"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passVariadicSVS_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39303 JS_FNSPEC("receiveSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveSVS_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveSVS"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveSVS_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39304 JS_FNSPEC("passJSString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passJSString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passJSString"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passJSString_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39305 JS_FNSPEC("passOptionalJSStringWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalJSStringWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalJSStringWithDefaultValue")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalJSStringWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39306 JS_FNSPEC("receiveJSString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveJSString_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveJSString"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveJSString_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39307 JS_FNSPEC("passEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passEnum_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passEnum"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passEnum_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39308 JS_FNSPEC("passNullableEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableEnum_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableEnum"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableEnum_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39309 JS_FNSPEC("passOptionalEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalEnum_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalEnum"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalEnum_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39310 JS_FNSPEC("passEnumWithDefault", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passEnumWithDefault_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passEnumWithDefault"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passEnumWithDefault_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39311 JS_FNSPEC("passOptionalNullableEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableEnum_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableEnum"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableEnum_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39312 JS_FNSPEC("passOptionalNullableEnumWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableEnumWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableEnumWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableEnumWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39313 JS_FNSPEC("passOptionalNullableEnumWithDefaultValue2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableEnumWithDefaultValue2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableEnumWithDefaultValue2"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableEnumWithDefaultValue2_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39314 JS_FNSPEC("receiveEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveEnum_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveEnum"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveEnum_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39315 JS_FNSPEC("receiveNullableEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableEnum_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableEnum"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableEnum_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39316 JS_FNSPEC("passCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passCallback_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passCallback"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passCallback_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39317 JS_FNSPEC("passNullableCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableCallback_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableCallback"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableCallback_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39318 JS_FNSPEC("passOptionalCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalCallback_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalCallback"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalCallback_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39319 JS_FNSPEC("passOptionalNullableCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableCallback_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableCallback"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableCallback_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39320 JS_FNSPEC("passOptionalNullableCallbackWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableCallbackWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableCallbackWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableCallbackWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39321 JS_FNSPEC("receiveCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveCallback_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveCallback"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveCallback_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39322 JS_FNSPEC("receiveNullableCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableCallback_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableCallback"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableCallback_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39323 JS_FNSPEC("passNullableTreatAsNullCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableTreatAsNullCallback_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableTreatAsNullCallback"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableTreatAsNullCallback_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39324 JS_FNSPEC("passOptionalNullableTreatAsNullCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableTreatAsNullCallback_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableTreatAsNullCallback"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableTreatAsNullCallback_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39325 JS_FNSPEC("passOptionalNullableTreatAsNullCallbackWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableTreatAsNullCallbackWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableTreatAsNullCallbackWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableTreatAsNullCallbackWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39326 JS_FNSPEC("passAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAny"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passAny_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39327 JS_FNSPEC("passVariadicAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicAny"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passVariadicAny_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39328 JS_FNSPEC("passOptionalAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalAny"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalAny_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39329 JS_FNSPEC("passAnyDefaultNull", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAnyDefaultNull_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAnyDefaultNull"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passAnyDefaultNull_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39330 JS_FNSPEC("passSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfAny"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passSequenceOfAny_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39331 JS_FNSPEC("passNullableSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableSequenceOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableSequenceOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableSequenceOfAny_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39332 JS_FNSPEC("passOptionalSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSequenceOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSequenceOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalSequenceOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39333 JS_FNSPEC("passOptionalNullableSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceOfAny"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passOptionalNullableSequenceOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39334 JS_FNSPEC("passOptionalSequenceOfAnyWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalSequenceOfAnyWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalSequenceOfAnyWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalSequenceOfAnyWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39335 JS_FNSPEC("passSequenceOfSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfSequenceOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfSequenceOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfSequenceOfAny_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39336 JS_FNSPEC("passSequenceOfNullableSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfNullableSequenceOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfNullableSequenceOfAny"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passSequenceOfNullableSequenceOfAny_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39337 JS_FNSPEC("passNullableSequenceOfNullableSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableSequenceOfNullableSequenceOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableSequenceOfNullableSequenceOfAny"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passNullableSequenceOfNullableSequenceOfAny_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39338 JS_FNSPEC("passOptionalNullableSequenceOfNullableSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableSequenceOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceOfNullableSequenceOfAny"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableSequenceOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39339 JS_FNSPEC("passRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfAny"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passRecordOfAny_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39340 JS_FNSPEC("passNullableRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableRecordOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableRecordOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableRecordOfAny_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39341 JS_FNSPEC("passOptionalRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalRecordOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalRecordOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalRecordOfAny_methodinfo)
}, 0, JSPROP_ENUMERATE, nullptr}
,
39342 JS_FNSPEC("passOptionalNullableRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableRecordOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableRecordOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39343 JS_FNSPEC("passOptionalRecordOfAnyWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalRecordOfAnyWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalRecordOfAnyWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalRecordOfAnyWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39344 JS_FNSPEC("passRecordOfRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfRecordOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfRecordOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRecordOfRecordOfAny_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39345 JS_FNSPEC("passRecordOfNullableRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfNullableRecordOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfNullableRecordOfAny"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRecordOfNullableRecordOfAny_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39346 JS_FNSPEC("passNullableRecordOfNullableRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableRecordOfNullableRecordOfAny_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableRecordOfNullableRecordOfAny"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passNullableRecordOfNullableRecordOfAny_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39347 JS_FNSPEC("passOptionalNullableRecordOfNullableRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfNullableRecordOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableRecordOfNullableRecordOfAny"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfNullableRecordOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39348 JS_FNSPEC("passOptionalNullableRecordOfNullableSequenceOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfNullableSequenceOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableRecordOfNullableSequenceOfAny"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableRecordOfNullableSequenceOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39349 JS_FNSPEC("passOptionalNullableSequenceOfNullableRecordOfAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableRecordOfAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceOfNullableRecordOfAny"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableRecordOfAny_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39350 JS_FNSPEC("receiveAny", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveAny_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveAny"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveAny_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39351 JS_FNSPEC("passObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passObject"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passObject_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39352 JS_FNSPEC("passVariadicObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicObject"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passVariadicObject_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39353 JS_FNSPEC("passNullableObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableObject"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableObject_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39354 JS_FNSPEC("passVariadicNullableObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicNullableObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicNullableObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicNullableObject_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39355 JS_FNSPEC("passOptionalObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalObject"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalObject_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39356 JS_FNSPEC("passOptionalNullableObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableObject_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39357 JS_FNSPEC("passOptionalNullableObjectWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableObjectWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableObjectWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableObjectWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39358 JS_FNSPEC("passSequenceOfObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfObject_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39359 JS_FNSPEC("passSequenceOfNullableObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfNullableObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfNullableObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfNullableObject_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39360 JS_FNSPEC("passNullableSequenceOfObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableSequenceOfObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableSequenceOfObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passNullableSequenceOfObject_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39361 JS_FNSPEC("passOptionalNullableSequenceOfNullableSequenceOfObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableSequenceOfObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceOfNullableSequenceOfObject"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableSequenceOfObject_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39362 JS_FNSPEC("passOptionalNullableSequenceOfNullableSequenceOfNullableObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableSequenceOfNullableObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableSequenceOfNullableSequenceOfNullableObject"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableSequenceOfNullableSequenceOfNullableObject_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39363 JS_FNSPEC("passRecordOfObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfObject"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passRecordOfObject_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39364 JS_FNSPEC("receiveObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveObject"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveObject_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39365 JS_FNSPEC("receiveNullableObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableObject_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableObject_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
39366 JS_FNSPEC("passUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39367 JS_FNSPEC("passUnion2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion2_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion2"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion2_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39368 JS_FNSPEC("passUnion3", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion3_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion3"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion3_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39369 JS_FNSPEC("passUnion4", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion4_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion4"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion4_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39370 JS_FNSPEC("passUnion5", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion5_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion5"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion5_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39371 JS_FNSPEC("passUnion6", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion6_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion6"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion6_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39372 JS_FNSPEC("passUnion7", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion7_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion7"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion7_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39373 JS_FNSPEC("passUnion8", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion8_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion8"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion8_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39374 JS_FNSPEC("passUnion9", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion9_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion9"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion9_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39375 JS_FNSPEC("passUnion10", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion10_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion10"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion10_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39376 JS_FNSPEC("passUnion11", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion11_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion11"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion11_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39377 JS_FNSPEC("passUnion12", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion12_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion12"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion12_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39378 JS_FNSPEC("passUnion13", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion13_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion13"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion13_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39379 JS_FNSPEC("passUnion14", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion14_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion14"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion14_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39380 JS_FNSPEC("passUnion15", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion15_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion15"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion15_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39381 JS_FNSPEC("passUnion16", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion16_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion16"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion16_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39382 JS_FNSPEC("passUnion17", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion17_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion17"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion17_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39383 JS_FNSPEC("passUnion18", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion18_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion18"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion18_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39384 JS_FNSPEC("passUnion19", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion19_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion19"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion19_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39385 JS_FNSPEC("passUnion20", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion20_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion20"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion20_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39386 JS_FNSPEC("passUnion21", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion21_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion21"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion21_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39387 JS_FNSPEC("passUnion22", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion22_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion22"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion22_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39388 JS_FNSPEC("passUnion23", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion23_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion23"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion23_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39389 JS_FNSPEC("passUnion24", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion24_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion24"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion24_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39390 JS_FNSPEC("passUnion25", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion25_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion25"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion25_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39391 JS_FNSPEC("passUnion26", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion26_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion26"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion26_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39392 JS_FNSPEC("passUnion27", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion27_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion27"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion27_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39393 JS_FNSPEC("passUnion28", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnion28_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnion28"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passUnion28_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39394 JS_FNSPEC("passUnionWithCallback", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithCallback_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithCallback"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithCallback_methodinfo)},
1, JSPROP_ENUMERATE, nullptr}
,
39395 JS_FNSPEC("passUnionWithByteString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithByteString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithByteString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithByteString_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39396 JS_FNSPEC("passUnionWithUTF8String", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithUTF8String_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithUTF8String"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithUTF8String_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39397 JS_FNSPEC("passUnionWithRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithRecord_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39398 JS_FNSPEC("passUnionWithRecordAndSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithRecordAndSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithRecordAndSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithRecordAndSequence_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39399 JS_FNSPEC("passUnionWithSequenceAndRecord", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithSequenceAndRecord_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithSequenceAndRecord"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithSequenceAndRecord_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39400 JS_FNSPEC("passUnionWithSVS", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithSVS_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithSVS"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passUnionWithSVS_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39401 JS_FNSPEC("passUnionWithNullable", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithNullable_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithNullable"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithNullable_methodinfo)},
1, JSPROP_ENUMERATE, nullptr}
,
39402 JS_FNSPEC("passNullableUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnion_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnion"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passNullableUnion_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39403 JS_FNSPEC("passOptionalUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalUnion_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalUnion"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passOptionalUnion_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39404 JS_FNSPEC("passOptionalNullableUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableUnion_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableUnion"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalNullableUnion_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39405 JS_FNSPEC("passOptionalNullableUnionWithDefaultValue", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalNullableUnionWithDefaultValue_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalNullableUnionWithDefaultValue"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passOptionalNullableUnionWithDefaultValue_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39406 JS_FNSPEC("passUnionWithArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithArrayBuffer_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39407 JS_FNSPEC("passUnionWithArrayBufferOrNull", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithArrayBufferOrNull_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithArrayBufferOrNull"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithArrayBufferOrNull_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39408 JS_FNSPEC("passUnionWithTypedArrays", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithTypedArrays_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithTypedArrays"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithTypedArrays_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39409 JS_FNSPEC("passUnionWithTypedArraysOrNull", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithTypedArraysOrNull_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithTypedArraysOrNull"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithTypedArraysOrNull_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39410 JS_FNSPEC("passUnionWithString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithString_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithString"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithString_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39411 JS_FNSPEC("passUnionWithEnum", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithEnum_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithEnum"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passUnionWithEnum_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39412 JS_FNSPEC("passUnionWithObject", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithObject_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithObject"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithObject_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39413 JS_FNSPEC("passUnionWithDefaultValue1", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue1_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue1"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue1_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39414 JS_FNSPEC("passUnionWithDefaultValue2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue2"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue2_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39415 JS_FNSPEC("passUnionWithDefaultValue3", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue3_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue3"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue3_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39416 JS_FNSPEC("passUnionWithDefaultValue4", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue4_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue4"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue4_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39417 JS_FNSPEC("passUnionWithDefaultValue5", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue5_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue5"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue5_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39418 JS_FNSPEC("passUnionWithDefaultValue6", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue6_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue6"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue6_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39419 JS_FNSPEC("passUnionWithDefaultValue7", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue7_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue7"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue7_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39420 JS_FNSPEC("passUnionWithDefaultValue8", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue8_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue8"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue8_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39421 JS_FNSPEC("passUnionWithDefaultValue9", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue9_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue9"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue9_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39422 JS_FNSPEC("passUnionWithDefaultValue10", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue10_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue10"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue10_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39423 JS_FNSPEC("passUnionWithDefaultValue11", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue11_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue11"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue11_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39424 JS_FNSPEC("passUnionWithDefaultValue12", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue12_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue12"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue12_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39425 JS_FNSPEC("passUnionWithDefaultValue13", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue13_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue13"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue13_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39426 JS_FNSPEC("passUnionWithDefaultValue14", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue14_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue14"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue14_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39427 JS_FNSPEC("passUnionWithDefaultValue15", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue15_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue15"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue15_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39428 JS_FNSPEC("passUnionWithDefaultValue16", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue16_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue16"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue16_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39429 JS_FNSPEC("passUnionWithDefaultValue17", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue17_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue17"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue17_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39430 JS_FNSPEC("passUnionWithDefaultValue18", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue18_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue18"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue18_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39431 JS_FNSPEC("passUnionWithDefaultValue19", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue19_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue19"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue19_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39432 JS_FNSPEC("passUnionWithDefaultValue20", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue20_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue20"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue20_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39433 JS_FNSPEC("passUnionWithDefaultValue21", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue21_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue21"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue21_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39434 JS_FNSPEC("passUnionWithDefaultValue22", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue22_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue22"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue22_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39435 JS_FNSPEC("passUnionWithDefaultValue23", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue23_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue23"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue23_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39436 JS_FNSPEC("passUnionWithDefaultValue24", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue24_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue24"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue24_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39437 JS_FNSPEC("passUnionWithDefaultValue25", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionWithDefaultValue25_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionWithDefaultValue25"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionWithDefaultValue25_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39438 JS_FNSPEC("passNullableUnionWithDefaultValue1", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue1_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue1"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue1_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39439 JS_FNSPEC("passNullableUnionWithDefaultValue2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue2"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue2_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39440 JS_FNSPEC("passNullableUnionWithDefaultValue3", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue3_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue3"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue3_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39441 JS_FNSPEC("passNullableUnionWithDefaultValue4", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue4_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue4"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue4_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39442 JS_FNSPEC("passNullableUnionWithDefaultValue5", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue5_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue5"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue5_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39443 JS_FNSPEC("passNullableUnionWithDefaultValue6", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue6_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue6"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue6_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39444 JS_FNSPEC("passNullableUnionWithDefaultValue7", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue7_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue7"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue7_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39445 JS_FNSPEC("passNullableUnionWithDefaultValue8", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue8_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue8"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue8_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39446 JS_FNSPEC("passNullableUnionWithDefaultValue9", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue9_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue9"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue9_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39447 JS_FNSPEC("passNullableUnionWithDefaultValue10", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue10_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue10"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue10_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39448 JS_FNSPEC("passNullableUnionWithDefaultValue11", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue11_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue11"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue11_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39449 JS_FNSPEC("passNullableUnionWithDefaultValue12", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue12_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue12"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue12_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39450 JS_FNSPEC("passNullableUnionWithDefaultValue13", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue13_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue13"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue13_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39451 JS_FNSPEC("passNullableUnionWithDefaultValue14", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue14_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue14"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue14_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39452 JS_FNSPEC("passNullableUnionWithDefaultValue15", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue15_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue15"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue15_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39453 JS_FNSPEC("passNullableUnionWithDefaultValue16", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue16_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue16"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue16_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39454 JS_FNSPEC("passNullableUnionWithDefaultValue17", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue17_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue17"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue17_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39455 JS_FNSPEC("passNullableUnionWithDefaultValue18", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue18_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue18"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue18_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39456 JS_FNSPEC("passNullableUnionWithDefaultValue19", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue19_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue19"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue19_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39457 JS_FNSPEC("passNullableUnionWithDefaultValue20", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue20_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue20"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue20_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39458 JS_FNSPEC("passNullableUnionWithDefaultValue21", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue21_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue21"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue21_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39459 JS_FNSPEC("passNullableUnionWithDefaultValue22", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue22_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue22"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue22_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39460 JS_FNSPEC("passNullableUnionWithDefaultValue23", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue23_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue23"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue23_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39461 JS_FNSPEC("passNullableUnionWithDefaultValue24", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue24_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue24"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue24_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39462 JS_FNSPEC("passNullableUnionWithDefaultValue25", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue25_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue25"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue25_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39463 JS_FNSPEC("passNullableUnionWithDefaultValue26", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue26_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue26"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue26_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39464 JS_FNSPEC("passNullableUnionWithDefaultValue27", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue27_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue27"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue27_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39465 JS_FNSPEC("passNullableUnionWithDefaultValue28", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passNullableUnionWithDefaultValue28_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passNullableUnionWithDefaultValue28"),
{(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passNullableUnionWithDefaultValue28_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39466 JS_FNSPEC("passSequenceOfUnions", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfUnions_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfUnions"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfUnions_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39467 JS_FNSPEC("passSequenceOfUnions2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfUnions2_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfUnions2"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfUnions2_methodinfo)},
1, JSPROP_ENUMERATE, nullptr}
,
39468 JS_FNSPEC("passVariadicUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicUnion_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicUnion"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passVariadicUnion_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39469 JS_FNSPEC("passSequenceOfNullableUnions", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfNullableUnions_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfNullableUnions"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfNullableUnions_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39470 JS_FNSPEC("passVariadicNullableUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicNullableUnion_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicNullableUnion"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicNullableUnion_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39471 JS_FNSPEC("passRecordOfUnions", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfUnions_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfUnions"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passRecordOfUnions_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39472 JS_FNSPEC("receiveUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnion_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnion"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveUnion_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39473 JS_FNSPEC("receiveUnion2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnion2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnion2"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&receiveUnion2_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39474 JS_FNSPEC("receiveUnionContainingNull", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnionContainingNull_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnionContainingNull"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveUnionContainingNull_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39475 JS_FNSPEC("receiveNullableUnion", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableUnion_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableUnion"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableUnion_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39476 JS_FNSPEC("receiveNullableUnion2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableUnion2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableUnion2"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableUnion2_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
39477 JS_FNSPEC("receiveUnionWithUndefined", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnionWithUndefined_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnionWithUndefined"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveUnionWithUndefined_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39478 JS_FNSPEC("receiveUnionWithNullableUndefined", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnionWithNullableUndefined_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnionWithNullableUndefined"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveUnionWithNullableUndefined_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39479 JS_FNSPEC("receiveUnionWithUndefinedAndNullable", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveUnionWithUndefinedAndNullable_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveUnionWithUndefinedAndNullable")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveUnionWithUndefinedAndNullable_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39480 JS_FNSPEC("receiveNullableUnionWithUndefined", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableUnionWithUndefined_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableUnionWithUndefined"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&receiveNullableUnionWithUndefined_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39481 JS_FNSPEC("passPromise", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passPromise_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passPromise"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passPromise_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39482 JS_FNSPEC("passOptionalPromise", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOptionalPromise_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOptionalPromise"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOptionalPromise_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39483 JS_FNSPEC("passPromiseSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passPromiseSequence_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passPromiseSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passPromiseSequence_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39484 JS_FNSPEC("receivePromise", (GenericMethod<NormalThisPolicy, ConvertExceptionsToPromises>), reinterpret_cast<const JSJitInfo*>(&receivePromise_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receivePromise"), {(GenericMethod<NormalThisPolicy
, ConvertExceptionsToPromises>), reinterpret_cast<const
JSJitInfo*>(&receivePromise_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39485 JS_FNSPEC("receiveAddrefedPromise", (GenericMethod<NormalThisPolicy, ConvertExceptionsToPromises>), reinterpret_cast<const JSJitInfo*>(&receiveAddrefedPromise_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveAddrefedPromise"), {(GenericMethod
<NormalThisPolicy, ConvertExceptionsToPromises>), reinterpret_cast
<const JSJitInfo*>(&receiveAddrefedPromise_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39486 JS_FNSPEC("methodRenamedFrom", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&methodRenamedFrom_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("methodRenamedFrom"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&methodRenamedFrom_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39487 JS_FNSPEC("passDictionary", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passDictionary_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passDictionary"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&passDictionary_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39488 JS_FNSPEC("passDictionary2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passDictionary2_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passDictionary2"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&passDictionary2_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39489 JS_FNSPEC("receiveDictionary", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveDictionary_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveDictionary"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&receiveDictionary_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39490 JS_FNSPEC("receiveNullableDictionary", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveNullableDictionary_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveNullableDictionary"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveNullableDictionary_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39491 JS_FNSPEC("passOtherDictionary", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passOtherDictionary_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passOtherDictionary"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passOtherDictionary_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39492 JS_FNSPEC("passSequenceOfDictionaries", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passSequenceOfDictionaries_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passSequenceOfDictionaries"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passSequenceOfDictionaries_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39493 JS_FNSPEC("passRecordOfDictionaries", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRecordOfDictionaries_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRecordOfDictionaries"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRecordOfDictionaries_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39494 JS_FNSPEC("passDictionaryOrLong", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passDictionaryOrLong_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passDictionaryOrLong"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passDictionaryOrLong_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39495 JS_FNSPEC("passDictContainingDict", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passDictContainingDict_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passDictContainingDict"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passDictContainingDict_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39496 JS_FNSPEC("passDictContainingSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passDictContainingSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passDictContainingSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passDictContainingSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39497 JS_FNSPEC("receiveDictContainingSequence", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&receiveDictContainingSequence_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("receiveDictContainingSequence"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&receiveDictContainingSequence_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39498 JS_FNSPEC("passVariadicDictionary", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicDictionary_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicDictionary"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicDictionary_methodinfo)}
, 0, JSPROP_ENUMERATE, nullptr}
,
39499 JS_FNSPEC("dontEnforceRangeOrClamp", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&dontEnforceRangeOrClamp_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("dontEnforceRangeOrClamp"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&dontEnforceRangeOrClamp_methodinfo)
}, 1, JSPROP_ENUMERATE, nullptr}
,
39500 JS_FNSPEC("doEnforceRange", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&doEnforceRange_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("doEnforceRange"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&doEnforceRange_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr
}
,
39501 JS_FNSPEC("doEnforceRangeNullable", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&doEnforceRangeNullable_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("doEnforceRangeNullable"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&doEnforceRangeNullable_methodinfo)}
, 1, JSPROP_ENUMERATE, nullptr}
,
39502 JS_FNSPEC("doClamp", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&doClamp_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("doClamp"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&doClamp_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39503 JS_FNSPEC("doClampNullable", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&doClampNullable_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("doClampNullable"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&doClampNullable_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39504 JS_FNSPEC("exerciseTypedefInterfaces1", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&exerciseTypedefInterfaces1_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("exerciseTypedefInterfaces1"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&exerciseTypedefInterfaces1_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39505 JS_FNSPEC("exerciseTypedefInterfaces2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&exerciseTypedefInterfaces2_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("exerciseTypedefInterfaces2"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&exerciseTypedefInterfaces2_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39506 JS_FNSPEC("exerciseTypedefInterfaces3", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&exerciseTypedefInterfaces3_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("exerciseTypedefInterfaces3"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&exerciseTypedefInterfaces3_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39507 JS_FNSPEC("deprecatedMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&deprecatedMethod_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("deprecatedMethod"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&deprecatedMethod_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
39508 JS_FNSPEC("deprecatedMethodWithContext", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&deprecatedMethodWithContext_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("deprecatedMethodWithContext"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&deprecatedMethodWithContext_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39509 JS_FNSPEC("overload1", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload1_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload1"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload1_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39510 JS_FNSPEC("overload2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload2_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload2"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload2_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39511 JS_FNSPEC("overload3", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload3_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload3"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload3_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39512 JS_FNSPEC("overload4", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload4_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload4"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload4_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39513 JS_FNSPEC("overload5", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload5_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload5"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload5_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39514 JS_FNSPEC("overload6", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload6_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload6"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload6_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39515 JS_FNSPEC("overload7", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload7_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload7"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload7_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39516 JS_FNSPEC("overload8", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload8_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload8"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload8_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39517 JS_FNSPEC("overload9", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload9_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload9"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload9_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39518 JS_FNSPEC("overload10", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload10_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload10"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload10_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39519 JS_FNSPEC("overload11", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload11_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload11"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload11_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39520 JS_FNSPEC("overload12", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload12_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload12"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload12_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39521 JS_FNSPEC("overload13", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload13_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload13"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload13_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39522 JS_FNSPEC("overload14", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload14_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload14"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload14_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39523 JS_FNSPEC("overload15", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload15_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload15"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload15_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39524 JS_FNSPEC("overload16", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload16_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload16"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload16_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39525 JS_FNSPEC("overload17", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload17_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload17"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload17_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39526 JS_FNSPEC("overload18", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload18_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload18"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload18_methodinfo)}, 1, JSPROP_ENUMERATE, nullptr}
,
39527 JS_FNSPEC("overload19", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload19_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload19"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload19_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39528 JS_FNSPEC("overload20", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&overload20_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("overload20"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&overload20_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39529 JS_FNSPEC("passVariadicThirdArg", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passVariadicThirdArg_methodinfo), 2, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passVariadicThirdArg"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passVariadicThirdArg_methodinfo)}, 2
, JSPROP_ENUMERATE, nullptr}
,
39530 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39531 JS_FNSPEC("prefable10", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable10_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable10"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable10_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39532 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39533 JS_FNSPEC("prefable11", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable11_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable11"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable11_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39534 JS_FNSPEC("prefable13", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable13_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable13"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable13_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39535 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39536 JS_FNSPEC("prefable17", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable17_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable17"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable17_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39537 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39538 JS_FNSPEC("prefable18", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable18_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable18"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable18_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39539 JS_FNSPEC("prefable19", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable19_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable19"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable19_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39540 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39541 JS_FNSPEC("prefable20", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&prefable20_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("prefable20"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&prefable20_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39542 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39543 JS_FNSPEC("conditionalOnSecureContext5", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&conditionalOnSecureContext5_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("conditionalOnSecureContext5"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&conditionalOnSecureContext5_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39544 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39545 JS_FNSPEC("conditionalOnSecureContext6", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&conditionalOnSecureContext6_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("conditionalOnSecureContext6"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&conditionalOnSecureContext6_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39546 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39547 JS_FNSPEC("conditionalOnSecureContext7", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&conditionalOnSecureContext7_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("conditionalOnSecureContext7"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&conditionalOnSecureContext7_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39548 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39549 JS_FNSPEC("conditionalOnSecureContext8", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&conditionalOnSecureContext8_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("conditionalOnSecureContext8"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&conditionalOnSecureContext8_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39550 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39551 JS_FNSPEC("conditionalOnSecureContext10", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&conditionalOnSecureContext10_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("conditionalOnSecureContext10"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&conditionalOnSecureContext10_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39552 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
,
39553 JS_FNSPEC("passRenamedInterface", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passRenamedInterface_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passRenamedInterface"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passRenamedInterface_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39554 JS_FNSPEC("throwingMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&throwingMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("throwingMethod"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&throwingMethod_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39555 JS_FNSPEC("canOOMMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&canOOMMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("canOOMMethod"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&canOOMMethod_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39556 JS_FNSPEC("needsSubjectPrincipalMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&needsSubjectPrincipalMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("needsSubjectPrincipalMethod"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&needsSubjectPrincipalMethod_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39557 JS_FNSPEC("needsNonSystemSubjectPrincipalMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&needsNonSystemSubjectPrincipalMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("needsNonSystemSubjectPrincipalMethod")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&needsNonSystemSubjectPrincipalMethod_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39558 JS_FNSPEC("needsCallerTypeMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&needsCallerTypeMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("needsCallerTypeMethod"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&needsCallerTypeMethod_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
39559 JS_FNSPEC("ceReactionsMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&ceReactionsMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("ceReactionsMethod"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&ceReactionsMethod_methodinfo)}, 0, JSPROP_ENUMERATE
, nullptr}
,
39560 JS_FNSPEC("ceReactionsMethodOverload", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&ceReactionsMethodOverload_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("ceReactionsMethodOverload"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&ceReactionsMethodOverload_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
39561 JS_FNSPEC("passArgsWithDefaults", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passArgsWithDefaults_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passArgsWithDefaults"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passArgsWithDefaults_methodinfo)}, 0
, JSPROP_ENUMERATE, nullptr}
,
39562 JS_FNSPEC("toJSON", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&toJSON_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("toJSON"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&toJSON_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr}
,
39563 JS_FNSPEC("dashed-method", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&dashed_method_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("dashed-method"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&dashed_method_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39564 JS_FNSPEC("nonEnumerableMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&nonEnumerableMethod_methodinfo), 0, 0, nullptr){JSFunctionSpec::Name("nonEnumerableMethod"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&nonEnumerableMethod_methodinfo)}, 0
, 0, nullptr}
,
39565 JS_FNSPEC("passAllowSharedArrayBufferViewTypedef", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAllowSharedArrayBufferViewTypedef_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAllowSharedArrayBufferViewTypedef"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passAllowSharedArrayBufferViewTypedef_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39566 JS_FNSPEC("passAllowSharedArrayBufferView", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAllowSharedArrayBufferView_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAllowSharedArrayBufferView"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passAllowSharedArrayBufferView_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39567 JS_FNSPEC("passAllowSharedNullableArrayBufferView", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAllowSharedNullableArrayBufferView_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAllowSharedNullableArrayBufferView"
), {(GenericMethod<NormalThisPolicy, ThrowExceptions>),
reinterpret_cast<const JSJitInfo*>(&passAllowSharedNullableArrayBufferView_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39568 JS_FNSPEC("passAllowSharedArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAllowSharedArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAllowSharedArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passAllowSharedArrayBuffer_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39569 JS_FNSPEC("passAllowSharedNullableArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passAllowSharedNullableArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passAllowSharedNullableArrayBuffer"), {
(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&passAllowSharedNullableArrayBuffer_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39570 JS_FNSPEC("passUnionArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionArrayBuffer_methodinfo)}, 1
, JSPROP_ENUMERATE, nullptr}
,
39571 JS_FNSPEC("passUnionAllowSharedArrayBuffer", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&passUnionAllowSharedArrayBuffer_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("passUnionAllowSharedArrayBuffer"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&passUnionAllowSharedArrayBuffer_methodinfo
)}, 1, JSPROP_ENUMERATE, nullptr}
,
39572 JS_FNSPEC("toString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&__stringifier_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("toString"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&__stringifier_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
39573 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
39574};
39575
39576static const PrefableDisablers sMethods_disablers427 = {
39577 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), nullptr
39578};
39579
39580static const PrefableDisablers sMethods_disablers429 = {
39581 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), &nsGenericHTMLElement::LegacyTouchAPIEnabled
39582};
39583
39584static const PrefableDisablers sMethods_disablers432 = {
39585 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), &TestFuncControlledMember
39586};
39587
39588static const PrefableDisablers sMethods_disablers434 = {
39589 WebIDLPrefIndex::NoPref, 0, false, OriginTrial(0), &TestFuncControlledMember
39590};
39591
39592static const PrefableDisablers sMethods_disablers437 = {
39593 WebIDLPrefIndex::NoPref, 0, false, OriginTrial::TestTrial, nullptr
39594};
39595
39596static const PrefableDisablers sMethods_disablers439 = {
39597 WebIDLPrefIndex::NoPref, 0, true, OriginTrial(0), nullptr
39598};
39599
39600static const PrefableDisablers sMethods_disablers441 = {
39601 WebIDLPrefIndex::dom_webidl_test1, 0, true, OriginTrial(0), nullptr
39602};
39603
39604static const PrefableDisablers sMethods_disablers443 = {
39605 WebIDLPrefIndex::dom_webidl_test1, 0, true, OriginTrial(0), &nsGenericHTMLElement::LegacyTouchAPIEnabled
39606};
39607
39608static const PrefableDisablers sMethods_disablers445 = {
39609 WebIDLPrefIndex::dom_webidl_test1, 0, true, OriginTrial(0), &TestFuncControlledMember
39610};
39611
39612static const PrefableDisablers sMethods_disablers447 = {
39613 WebIDLPrefIndex::NoPref, 0, true, OriginTrial::TestTrial, nullptr
39614};
39615
39616static const Prefable<const JSFunctionSpec> sMethods[] = {
39617 { nullptr, &sMethods_specs[0] },
39618 { &sMethods_disablers427, &sMethods_specs[427] },
39619 { &sMethods_disablers429, &sMethods_specs[429] },
39620 { &sMethods_disablers432, &sMethods_specs[432] },
39621 { &sMethods_disablers434, &sMethods_specs[434] },
39622 { &sMethods_disablers437, &sMethods_specs[437] },
39623 { &sMethods_disablers439, &sMethods_specs[439] },
39624 { &sMethods_disablers441, &sMethods_specs[441] },
39625 { &sMethods_disablers443, &sMethods_specs[443] },
39626 { &sMethods_disablers445, &sMethods_specs[445] },
39627 { &sMethods_disablers447, &sMethods_specs[447] },
39628 { nullptr, &sMethods_specs[449] },
39629 { nullptr, nullptr }
39630};
39631
39632static_assert(12 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39633 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39634static_assert(426 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39635 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39636
39637static const JSPropertySpec sAttributes_specs[] = {
39638 JSPropertySpec::nativeAccessors("readonlyByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyByte_getterinfo, nullptr, nullptr),
39639 JSPropertySpec::nativeAccessors("writableByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableByte_getterinfo, GenericSetter<NormalThisPolicy>, &writableByte_setterinfo),
39640 JSPropertySpec::nativeAccessors("cachedByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &cachedByte_getterinfo, nullptr, nullptr),
39641 JSPropertySpec::nativeAccessors("cachedConstantByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &cachedConstantByte_getterinfo, nullptr, nullptr),
39642 JSPropertySpec::nativeAccessors("cachedWritableByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &cachedWritableByte_getterinfo, GenericSetter<NormalThisPolicy>, &cachedWritableByte_setterinfo),
39643 JSPropertySpec::nativeAccessors("sideEffectFreeByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &sideEffectFreeByte_getterinfo, GenericSetter<NormalThisPolicy>, &sideEffectFreeByte_setterinfo),
39644 JSPropertySpec::nativeAccessors("domDependentByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &domDependentByte_getterinfo, GenericSetter<NormalThisPolicy>, &domDependentByte_setterinfo),
39645 JSPropertySpec::nativeAccessors("constantByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &constantByte_getterinfo, nullptr, nullptr),
39646 JSPropertySpec::nativeAccessors("deviceStateDependentByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &deviceStateDependentByte_getterinfo, nullptr, nullptr),
39647 JSPropertySpec::nativeAccessors("readonlyShort", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyShort_getterinfo, nullptr, nullptr),
39648 JSPropertySpec::nativeAccessors("writableShort", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableShort_getterinfo, GenericSetter<NormalThisPolicy>, &writableShort_setterinfo),
39649 JSPropertySpec::nativeAccessors("readonlyLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyLong_getterinfo, nullptr, nullptr),
39650 JSPropertySpec::nativeAccessors("writableLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableLong_getterinfo, GenericSetter<NormalThisPolicy>, &writableLong_setterinfo),
39651 JSPropertySpec::nativeAccessors("readonlyLongLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyLongLong_getterinfo, nullptr, nullptr),
39652 JSPropertySpec::nativeAccessors("writableLongLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableLongLong_getterinfo, GenericSetter<NormalThisPolicy>, &writableLongLong_setterinfo),
39653 JSPropertySpec::nativeAccessors("readonlyOctet", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyOctet_getterinfo, nullptr, nullptr),
39654 JSPropertySpec::nativeAccessors("writableOctet", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableOctet_getterinfo, GenericSetter<NormalThisPolicy>, &writableOctet_setterinfo),
39655 JSPropertySpec::nativeAccessors("readonlyUnsignedShort", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyUnsignedShort_getterinfo, nullptr, nullptr),
39656 JSPropertySpec::nativeAccessors("writableUnsignedShort", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnsignedShort_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnsignedShort_setterinfo),
39657 JSPropertySpec::nativeAccessors("readonlyUnsignedLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyUnsignedLong_getterinfo, nullptr, nullptr),
39658 JSPropertySpec::nativeAccessors("writableUnsignedLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnsignedLong_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnsignedLong_setterinfo),
39659 JSPropertySpec::nativeAccessors("readonlyUnsignedLongLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyUnsignedLongLong_getterinfo, nullptr, nullptr),
39660 JSPropertySpec::nativeAccessors("writableUnsignedLongLong", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnsignedLongLong_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnsignedLongLong_setterinfo),
39661 JSPropertySpec::nativeAccessors("writableFloat", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableFloat_getterinfo, GenericSetter<NormalThisPolicy>, &writableFloat_setterinfo),
39662 JSPropertySpec::nativeAccessors("writableUnrestrictedFloat", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnrestrictedFloat_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnrestrictedFloat_setterinfo),
39663 JSPropertySpec::nativeAccessors("writableNullableFloat", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableNullableFloat_getterinfo, GenericSetter<NormalThisPolicy>, &writableNullableFloat_setterinfo),
39664 JSPropertySpec::nativeAccessors("writableNullableUnrestrictedFloat", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableNullableUnrestrictedFloat_getterinfo, GenericSetter<NormalThisPolicy>, &writableNullableUnrestrictedFloat_setterinfo),
39665 JSPropertySpec::nativeAccessors("writableDouble", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableDouble_getterinfo, GenericSetter<NormalThisPolicy>, &writableDouble_setterinfo),
39666 JSPropertySpec::nativeAccessors("writableUnrestrictedDouble", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnrestrictedDouble_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnrestrictedDouble_setterinfo),
39667 JSPropertySpec::nativeAccessors("writableNullableDouble", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableNullableDouble_getterinfo, GenericSetter<NormalThisPolicy>, &writableNullableDouble_setterinfo),
39668 JSPropertySpec::nativeAccessors("writableNullableUnrestrictedDouble", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableNullableUnrestrictedDouble_getterinfo, GenericSetter<NormalThisPolicy>, &writableNullableUnrestrictedDouble_setterinfo),
39669 JSPropertySpec::nativeAccessors("lenientFloatAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &lenientFloatAttr_getterinfo, GenericSetter<NormalThisPolicy>, &lenientFloatAttr_setterinfo),
39670 JSPropertySpec::nativeAccessors("lenientDoubleAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &lenientDoubleAttr_getterinfo, GenericSetter<NormalThisPolicy>, &lenientDoubleAttr_setterinfo),
39671 JSPropertySpec::nativeAccessors("nonNullSelf", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nonNullSelf_getterinfo, GenericSetter<NormalThisPolicy>, &nonNullSelf_setterinfo),
39672 JSPropertySpec::nativeAccessors("nullableSelf", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nullableSelf_getterinfo, GenericSetter<NormalThisPolicy>, &nullableSelf_setterinfo),
39673 JSPropertySpec::nativeAccessors("cachedSelf", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &cachedSelf_getterinfo, nullptr, nullptr),
39674 JSPropertySpec::nativeAccessors("nonNullExternal", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nonNullExternal_getterinfo, GenericSetter<NormalThisPolicy>, &nonNullExternal_setterinfo),
39675 JSPropertySpec::nativeAccessors("nullableExternal", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nullableExternal_getterinfo, GenericSetter<NormalThisPolicy>, &nullableExternal_setterinfo),
39676 JSPropertySpec::nativeAccessors("nonNullCallbackInterface", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nonNullCallbackInterface_getterinfo, GenericSetter<NormalThisPolicy>, &nonNullCallbackInterface_setterinfo),
39677 JSPropertySpec::nativeAccessors("nullableCallbackInterface", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nullableCallbackInterface_getterinfo, GenericSetter<NormalThisPolicy>, &nullableCallbackInterface_setterinfo),
39678 JSPropertySpec::nativeAccessors("readonlySequence", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlySequence_getterinfo, nullptr, nullptr),
39679 JSPropertySpec::nativeAccessors("readonlySequenceOfDictionaries", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlySequenceOfDictionaries_getterinfo, nullptr, nullptr),
39680 JSPropertySpec::nativeAccessors("readonlyNullableSequenceOfDictionaries", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyNullableSequenceOfDictionaries_getterinfo, nullptr, nullptr),
39681 JSPropertySpec::nativeAccessors("readonlyFrozenSequence", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyFrozenSequence_getterinfo, nullptr, nullptr),
39682 JSPropertySpec::nativeAccessors("readonlyFrozenNullableSequence", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyFrozenNullableSequence_getterinfo, nullptr, nullptr),
39683 JSPropertySpec::nativeAccessors("uint8ArrayAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &uint8ArrayAttr_getterinfo, GenericSetter<NormalThisPolicy>, &uint8ArrayAttr_setterinfo),
39684 JSPropertySpec::nativeAccessors("readonlyJSStringAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyJSStringAttr_getterinfo, nullptr, nullptr),
39685 JSPropertySpec::nativeAccessors("jsStringAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &jsStringAttr_getterinfo, GenericSetter<NormalThisPolicy>, &jsStringAttr_setterinfo),
39686 JSPropertySpec::nativeAccessors("enumAttribute", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &enumAttribute_getterinfo, GenericSetter<NormalThisPolicy>, &enumAttribute_setterinfo),
39687 JSPropertySpec::nativeAccessors("readonlyEnumAttribute", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyEnumAttribute_getterinfo, nullptr, nullptr),
39688 JSPropertySpec::nativeAccessors("writableUnion", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnion_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnion_setterinfo),
39689 JSPropertySpec::nativeAccessors("writableUnionContainingNull", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnionContainingNull_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnionContainingNull_setterinfo),
39690 JSPropertySpec::nativeAccessors("writableNullableUnion", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableNullableUnion_getterinfo, GenericSetter<NormalThisPolicy>, &writableNullableUnion_setterinfo),
39691 JSPropertySpec::nativeAccessors("writableUnionWithUndefined", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnionWithUndefined_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnionWithUndefined_setterinfo),
39692 JSPropertySpec::nativeAccessors("writableUnionWithNullableUndefined", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnionWithNullableUndefined_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnionWithNullableUndefined_setterinfo),
39693 JSPropertySpec::nativeAccessors("writableUnionWithUndefinedAndNullable", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableUnionWithUndefinedAndNullable_getterinfo, GenericSetter<NormalThisPolicy>, &writableUnionWithUndefinedAndNullable_setterinfo),
39694 JSPropertySpec::nativeAccessors("writableNullableUnionWithUndefined", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableNullableUnionWithUndefined_getterinfo, GenericSetter<NormalThisPolicy>, &writableNullableUnionWithUndefined_setterinfo),
39695 JSPropertySpec::nativeAccessors("booleanObservableArray", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &booleanObservableArray_getterinfo, GenericSetter<NormalThisPolicy>, &booleanObservableArray_setterinfo),
39696 JSPropertySpec::nativeAccessors("objectObservableArray", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &objectObservableArray_getterinfo, GenericSetter<NormalThisPolicy>, &objectObservableArray_setterinfo),
39697 JSPropertySpec::nativeAccessors("anyObservableArray", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &anyObservableArray_getterinfo, GenericSetter<NormalThisPolicy>, &anyObservableArray_setterinfo),
39698 JSPropertySpec::nativeAccessors("interfaceObservableArray", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &interfaceObservableArray_getterinfo, GenericSetter<NormalThisPolicy>, &interfaceObservableArray_setterinfo),
39699 JSPropertySpec::nativeAccessors("nullableObservableArray", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nullableObservableArray_getterinfo, GenericSetter<NormalThisPolicy>, &nullableObservableArray_setterinfo),
39700 JSPropertySpec::nativeAccessors("attributeGetterRenamedFrom", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &attributeGetterRenamedFrom_getterinfo, nullptr, nullptr),
39701 JSPropertySpec::nativeAccessors("attributeRenamedFrom", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &attributeRenamedFrom_getterinfo, GenericSetter<NormalThisPolicy>, &attributeRenamedFrom_setterinfo),
39702 JSPropertySpec::nativeAccessors("readonlyDictionary", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyDictionary_getterinfo, nullptr, nullptr),
39703 JSPropertySpec::nativeAccessors("readonlyNullableDictionary", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyNullableDictionary_getterinfo, nullptr, nullptr),
39704 JSPropertySpec::nativeAccessors("writableDictionary", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableDictionary_getterinfo, GenericSetter<NormalThisPolicy>, &writableDictionary_setterinfo),
39705 JSPropertySpec::nativeAccessors("readonlyFrozenDictionary", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyFrozenDictionary_getterinfo, nullptr, nullptr),
39706 JSPropertySpec::nativeAccessors("readonlyFrozenNullableDictionary", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &readonlyFrozenNullableDictionary_getterinfo, nullptr, nullptr),
39707 JSPropertySpec::nativeAccessors("writableFrozenDictionary", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &writableFrozenDictionary_getterinfo, GenericSetter<NormalThisPolicy>, &writableFrozenDictionary_setterinfo),
39708 JSPropertySpec::nativeAccessors("enforcedByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &enforcedByte_getterinfo, GenericSetter<NormalThisPolicy>, &enforcedByte_setterinfo),
39709 JSPropertySpec::nativeAccessors("enforcedByteNullable", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &enforcedByteNullable_getterinfo, GenericSetter<NormalThisPolicy>, &enforcedByteNullable_setterinfo),
39710 JSPropertySpec::nativeAccessors("clampedByte", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &clampedByte_getterinfo, GenericSetter<NormalThisPolicy>, &clampedByte_setterinfo),
39711 JSPropertySpec::nativeAccessors("clampedByteNullable", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &clampedByteNullable_getterinfo, GenericSetter<NormalThisPolicy>, &clampedByteNullable_setterinfo),
39712 JSPropertySpec::nativeAccessors("deprecatedAttribute", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &deprecatedAttribute_getterinfo, GenericSetter<NormalThisPolicy>, &deprecatedAttribute_setterinfo),
39713 JS_PS_ENDJSPropertySpec::sentinel(),
39714 JSPropertySpec::nativeAccessors("prefable1", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable1_getterinfo, nullptr, nullptr),
39715 JSPropertySpec::nativeAccessors("prefable2", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable2_getterinfo, nullptr, nullptr),
39716 JS_PS_ENDJSPropertySpec::sentinel(),
39717 JSPropertySpec::nativeAccessors("prefable3", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable3_getterinfo, nullptr, nullptr),
39718 JSPropertySpec::nativeAccessors("prefable4", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable4_getterinfo, nullptr, nullptr),
39719 JS_PS_ENDJSPropertySpec::sentinel(),
39720 JSPropertySpec::nativeAccessors("prefable5", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable5_getterinfo, nullptr, nullptr),
39721 JS_PS_ENDJSPropertySpec::sentinel(),
39722 JSPropertySpec::nativeAccessors("prefable6", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable6_getterinfo, nullptr, nullptr),
39723 JSPropertySpec::nativeAccessors("prefable7", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable7_getterinfo, nullptr, nullptr),
39724 JS_PS_ENDJSPropertySpec::sentinel(),
39725 JSPropertySpec::nativeAccessors("prefable8", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable8_getterinfo, nullptr, nullptr),
39726 JS_PS_ENDJSPropertySpec::sentinel(),
39727 JSPropertySpec::nativeAccessors("prefable9", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable9_getterinfo, nullptr, nullptr),
39728 JS_PS_ENDJSPropertySpec::sentinel(),
39729 JSPropertySpec::nativeAccessors("prefable12", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable12_getterinfo, nullptr, nullptr),
39730 JSPropertySpec::nativeAccessors("prefable14", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable14_getterinfo, nullptr, nullptr),
39731 JS_PS_ENDJSPropertySpec::sentinel(),
39732 JSPropertySpec::nativeAccessors("prefable15", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable15_getterinfo, nullptr, nullptr),
39733 JSPropertySpec::nativeAccessors("prefable16", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable16_getterinfo, nullptr, nullptr),
39734 JS_PS_ENDJSPropertySpec::sentinel(),
39735 JSPropertySpec::nativeAccessors("prefable21", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable21_getterinfo, nullptr, nullptr),
39736 JS_PS_ENDJSPropertySpec::sentinel(),
39737 JSPropertySpec::nativeAccessors("prefable22", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefable22_getterinfo, nullptr, nullptr),
39738 JS_PS_ENDJSPropertySpec::sentinel(),
39739 JSPropertySpec::nativeAccessors("conditionalOnSecureContext1", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &conditionalOnSecureContext1_getterinfo, nullptr, nullptr),
39740 JS_PS_ENDJSPropertySpec::sentinel(),
39741 JSPropertySpec::nativeAccessors("conditionalOnSecureContext2", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &conditionalOnSecureContext2_getterinfo, nullptr, nullptr),
39742 JS_PS_ENDJSPropertySpec::sentinel(),
39743 JSPropertySpec::nativeAccessors("conditionalOnSecureContext3", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &conditionalOnSecureContext3_getterinfo, nullptr, nullptr),
39744 JS_PS_ENDJSPropertySpec::sentinel(),
39745 JSPropertySpec::nativeAccessors("conditionalOnSecureContext4", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &conditionalOnSecureContext4_getterinfo, nullptr, nullptr),
39746 JS_PS_ENDJSPropertySpec::sentinel(),
39747 JSPropertySpec::nativeAccessors("conditionalOnSecureContext9", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &conditionalOnSecureContext9_getterinfo, nullptr, nullptr),
39748 JS_PS_ENDJSPropertySpec::sentinel(),
39749 JSPropertySpec::nativeAccessors("attrWithLenientThis", JSPROP_ENUMERATE, GenericGetter<LenientThisPolicy, ThrowExceptions>, &attrWithLenientThis_getterinfo, GenericSetter<LenientThisPolicy>, &attrWithLenientThis_setterinfo),
39750 JSPropertySpec::nativeAccessors("putForwardsAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &putForwardsAttr_getterinfo, GenericSetter<NormalThisPolicy>, &putForwardsAttr_setterinfo),
39751 JSPropertySpec::nativeAccessors("putForwardsAttr2", JSPROP_ENUMERATE, GenericGetter<LenientThisPolicy, ThrowExceptions>, &putForwardsAttr2_getterinfo, GenericSetter<LenientThisPolicy>, &putForwardsAttr2_setterinfo),
39752 JSPropertySpec::nativeAccessors("throwingAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &throwingAttr_getterinfo, GenericSetter<NormalThisPolicy>, &throwingAttr_setterinfo),
39753 JSPropertySpec::nativeAccessors("throwingGetterAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &throwingGetterAttr_getterinfo, GenericSetter<NormalThisPolicy>, &throwingGetterAttr_setterinfo),
39754 JSPropertySpec::nativeAccessors("throwingSetterAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &throwingSetterAttr_getterinfo, GenericSetter<NormalThisPolicy>, &throwingSetterAttr_setterinfo),
39755 JSPropertySpec::nativeAccessors("canOOMAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &canOOMAttr_getterinfo, GenericSetter<NormalThisPolicy>, &canOOMAttr_setterinfo),
39756 JSPropertySpec::nativeAccessors("canOOMGetterAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &canOOMGetterAttr_getterinfo, GenericSetter<NormalThisPolicy>, &canOOMGetterAttr_setterinfo),
39757 JSPropertySpec::nativeAccessors("canOOMSetterAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &canOOMSetterAttr_getterinfo, GenericSetter<NormalThisPolicy>, &canOOMSetterAttr_setterinfo),
39758 JSPropertySpec::nativeAccessors("needsSubjectPrincipalAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &needsSubjectPrincipalAttr_getterinfo, GenericSetter<NormalThisPolicy>, &needsSubjectPrincipalAttr_setterinfo),
39759 JSPropertySpec::nativeAccessors("needsNonSystemSubjectPrincipalAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &needsNonSystemSubjectPrincipalAttr_getterinfo, GenericSetter<NormalThisPolicy>, &needsNonSystemSubjectPrincipalAttr_setterinfo),
39760 JSPropertySpec::nativeAccessors("needsCallerTypeAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &needsCallerTypeAttr_getterinfo, GenericSetter<NormalThisPolicy>, &needsCallerTypeAttr_setterinfo),
39761 JSPropertySpec::nativeAccessors("ceReactionsAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &ceReactionsAttr_getterinfo, GenericSetter<NormalThisPolicy>, &ceReactionsAttr_setterinfo),
39762 JSPropertySpec::nativeAccessors("toJSONShouldSkipThis", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &toJSONShouldSkipThis_getterinfo, GenericSetter<NormalThisPolicy>, &toJSONShouldSkipThis_setterinfo),
39763 JSPropertySpec::nativeAccessors("toJSONShouldSkipThis2", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &toJSONShouldSkipThis2_getterinfo, GenericSetter<NormalThisPolicy>, &toJSONShouldSkipThis2_setterinfo),
39764 JSPropertySpec::nativeAccessors("toJSONShouldSkipThis3", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &toJSONShouldSkipThis3_getterinfo, GenericSetter<NormalThisPolicy>, &toJSONShouldSkipThis3_setterinfo),
39765 JSPropertySpec::nativeAccessors("dashed-attribute", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &dashed_attribute_getterinfo, GenericSetter<NormalThisPolicy>, &dashed_attribute_setterinfo),
39766 JSPropertySpec::nativeAccessors("nonEnumerableAttr", 0, GenericGetter<NormalThisPolicy, ThrowExceptions>, &nonEnumerableAttr_getterinfo, GenericSetter<NormalThisPolicy>, &nonEnumerableAttr_setterinfo),
39767 JSPropertySpec::nativeAccessors("allowSharedArrayBufferViewTypedef", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &allowSharedArrayBufferViewTypedef_getterinfo, GenericSetter<NormalThisPolicy>, &allowSharedArrayBufferViewTypedef_setterinfo),
39768 JSPropertySpec::nativeAccessors("allowSharedArrayBufferView", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &allowSharedArrayBufferView_getterinfo, GenericSetter<NormalThisPolicy>, &allowSharedArrayBufferView_setterinfo),
39769 JSPropertySpec::nativeAccessors("allowSharedNullableArrayBufferView", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &allowSharedNullableArrayBufferView_getterinfo, GenericSetter<NormalThisPolicy>, &allowSharedNullableArrayBufferView_setterinfo),
39770 JSPropertySpec::nativeAccessors("allowSharedArrayBuffer", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &allowSharedArrayBuffer_getterinfo, GenericSetter<NormalThisPolicy>, &allowSharedArrayBuffer_setterinfo),
39771 JSPropertySpec::nativeAccessors("allowSharedNullableArrayBuffer", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &allowSharedNullableArrayBuffer_getterinfo, GenericSetter<NormalThisPolicy>, &allowSharedNullableArrayBuffer_setterinfo),
39772 JSPropertySpec::nativeAccessors("reflectedHTMLAttributeReturningFrozenArray", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &reflectedHTMLAttributeReturningFrozenArray_getterinfo, GenericSetter<NormalThisPolicy>, &reflectedHTMLAttributeReturningFrozenArray_setterinfo),
39773 JS_PS_ENDJSPropertySpec::sentinel()
39774};
39775
39776static const PrefableDisablers sAttributes_disablers76 = {
39777 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), nullptr
39778};
39779
39780static const PrefableDisablers sAttributes_disablers79 = {
39781 WebIDLPrefIndex::dom_webidl_test2, 0, false, OriginTrial(0), nullptr
39782};
39783
39784static const PrefableDisablers sAttributes_disablers82 = {
39785 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), nullptr
39786};
39787
39788static const PrefableDisablers sAttributes_disablers84 = {
39789 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), &nsGenericHTMLElement::LegacyTouchAPIEnabled
39790};
39791
39792static const PrefableDisablers sAttributes_disablers87 = {
39793 WebIDLPrefIndex::dom_webidl_test2, 0, false, OriginTrial(0), &nsGenericHTMLElement::LegacyTouchAPIEnabled
39794};
39795
39796static const PrefableDisablers sAttributes_disablers89 = {
39797 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), &nsGenericHTMLElement::LegacyTouchAPIEnabled
39798};
39799
39800static const PrefableDisablers sAttributes_disablers91 = {
39801 WebIDLPrefIndex::dom_webidl_test1, 0, false, OriginTrial(0), &TestFuncControlledMember
39802};
39803
39804static const PrefableDisablers sAttributes_disablers94 = {
39805 WebIDLPrefIndex::NoPref, 0, false, OriginTrial(0), &TestFuncControlledMember
39806};
39807
39808static const PrefableDisablers sAttributes_disablers97 = {
39809 WebIDLPrefIndex::NoPref, 0, false, OriginTrial::TestTrial, nullptr
39810};
39811
39812static const PrefableDisablers sAttributes_disablers99 = {
39813 WebIDLPrefIndex::NoPref, 0, false, OriginTrial::TestTrial, &TestFuncControlledMember
39814};
39815
39816static const PrefableDisablers sAttributes_disablers101 = {
39817 WebIDLPrefIndex::NoPref, 0, true, OriginTrial(0), nullptr
39818};
39819
39820static const PrefableDisablers sAttributes_disablers103 = {
39821 WebIDLPrefIndex::dom_webidl_test1, 0, true, OriginTrial(0), nullptr
39822};
39823
39824static const PrefableDisablers sAttributes_disablers105 = {
39825 WebIDLPrefIndex::dom_webidl_test1, 0, true, OriginTrial(0), &nsGenericHTMLElement::LegacyTouchAPIEnabled
39826};
39827
39828static const PrefableDisablers sAttributes_disablers107 = {
39829 WebIDLPrefIndex::dom_webidl_test1, 0, true, OriginTrial(0), &TestFuncControlledMember
39830};
39831
39832static const PrefableDisablers sAttributes_disablers109 = {
39833 WebIDLPrefIndex::NoPref, 0, true, OriginTrial::TestTrial, nullptr
39834};
39835
39836static const Prefable<const JSPropertySpec> sAttributes[] = {
39837 { nullptr, &sAttributes_specs[0] },
39838 { &sAttributes_disablers76, &sAttributes_specs[76] },
39839 { &sAttributes_disablers79, &sAttributes_specs[79] },
39840 { &sAttributes_disablers82, &sAttributes_specs[82] },
39841 { &sAttributes_disablers84, &sAttributes_specs[84] },
39842 { &sAttributes_disablers87, &sAttributes_specs[87] },
39843 { &sAttributes_disablers89, &sAttributes_specs[89] },
39844 { &sAttributes_disablers91, &sAttributes_specs[91] },
39845 { &sAttributes_disablers94, &sAttributes_specs[94] },
39846 { &sAttributes_disablers97, &sAttributes_specs[97] },
39847 { &sAttributes_disablers99, &sAttributes_specs[99] },
39848 { &sAttributes_disablers101, &sAttributes_specs[101] },
39849 { &sAttributes_disablers103, &sAttributes_specs[103] },
39850 { &sAttributes_disablers105, &sAttributes_specs[105] },
39851 { &sAttributes_disablers107, &sAttributes_specs[107] },
39852 { &sAttributes_disablers109, &sAttributes_specs[109] },
39853 { nullptr, &sAttributes_specs[111] },
39854 { nullptr, nullptr }
39855};
39856
39857static_assert(17 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39858 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39859static_assert(75 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39860 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39861
39862static const JSPropertySpec sChromeAttributes_specs[] = {
39863 JSPropertySpec::nativeAccessors("putForwardsAttr3", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &putForwardsAttr3_getterinfo, GenericSetter<NormalThisPolicy>, &putForwardsAttr3_setterinfo),
39864 JS_PS_ENDJSPropertySpec::sentinel()
39865};
39866
39867
39868static const Prefable<const JSPropertySpec> sChromeAttributes[] = {
39869 { nullptr, &sChromeAttributes_specs[0] },
39870 { nullptr, nullptr }
39871};
39872
39873static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39874 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39875static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39876 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39877
39878static const JSFunctionSpec sUnforgeableMethods_specs[] = {
39879 JS_FNSPEC("unforgeableMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&unforgeableMethod_methodinfo), 0, JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY, nullptr){JSFunctionSpec::Name("unforgeableMethod"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&unforgeableMethod_methodinfo)}, 0, JSPROP_ENUMERATE
| JSPROP_PERMANENT | JSPROP_READONLY, nullptr}
,
39880 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
39881};
39882
39883
39884static const Prefable<const JSFunctionSpec> sUnforgeableMethods[] = {
39885 { nullptr, &sUnforgeableMethods_specs[0] },
39886 { nullptr, nullptr }
39887};
39888
39889static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39890 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39891static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39892 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39893
39894static const JSFunctionSpec sChromeUnforgeableMethods_specs[] = {
39895 JS_FNSPEC("unforgeableMethod2", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&unforgeableMethod2_methodinfo), 0, JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY, nullptr){JSFunctionSpec::Name("unforgeableMethod2"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&unforgeableMethod2_methodinfo)}, 0, JSPROP_ENUMERATE
| JSPROP_PERMANENT | JSPROP_READONLY, nullptr}
,
39896 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
39897};
39898
39899
39900static const Prefable<const JSFunctionSpec> sChromeUnforgeableMethods[] = {
39901 { nullptr, &sChromeUnforgeableMethods_specs[0] },
39902 { nullptr, nullptr }
39903};
39904
39905static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39906 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39907static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39908 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39909
39910static const JSPropertySpec sUnforgeableAttributes_specs[] = {
39911 JSPropertySpec::nativeAccessors("unforgeableAttr", JSPROP_ENUMERATE | JSPROP_PERMANENT, GenericGetter<NormalThisPolicy, ThrowExceptions>, &unforgeableAttr_getterinfo, nullptr, nullptr),
39912 JS_PS_ENDJSPropertySpec::sentinel()
39913};
39914
39915
39916static const Prefable<const JSPropertySpec> sUnforgeableAttributes[] = {
39917 { nullptr, &sUnforgeableAttributes_specs[0] },
39918 { nullptr, nullptr }
39919};
39920
39921static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39922 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39923static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39924 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39925
39926static const JSPropertySpec sChromeUnforgeableAttributes_specs[] = {
39927 JSPropertySpec::nativeAccessors("unforgeableAttr2", JSPROP_ENUMERATE | JSPROP_PERMANENT, GenericGetter<NormalThisPolicy, ThrowExceptions>, &unforgeableAttr2_getterinfo, nullptr, nullptr),
39928 JS_PS_ENDJSPropertySpec::sentinel()
39929};
39930
39931
39932static const Prefable<const JSPropertySpec> sChromeUnforgeableAttributes[] = {
39933 { nullptr, &sChromeUnforgeableAttributes_specs[0] },
39934 { nullptr, nullptr }
39935};
39936
39937static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39938 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39939static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39940 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39941
39942static const ConstantSpec sConstants_specs[] = {
39943 { "myLongConstant", JS::Int32Value(5) },
39944 { "nonEnumerableConst", JS::BooleanValue(true) },
39945 { 0, JS::UndefinedValue() }
39946};
39947
39948
39949static const Prefable<const ConstantSpec> sConstants[] = {
39950 { nullptr, &sConstants_specs[0] },
39951 { nullptr, nullptr }
39952};
39953
39954static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
39955 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
39956static_assert(2 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
39957 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
39958
39959
39960static uint16_t sNativeProperties_sortedPropertyIndices[587];
39961static PropertyInfo sNativeProperties_propertyInfos[587];
39962
39963static const NativePropertiesN<7> sNativeProperties = {
39964 true, 0 /* sStaticMethods */,
39965 true, 1 /* sStaticAttributes */,
39966 true, 2 /* sMethods */,
39967 true, 3 /* sAttributes */,
39968 true, 4 /* sUnforgeableMethods */,
39969 true, 5 /* sUnforgeableAttributes */,
39970 true, 6 /* sConstants */,
39971 -1,
39972 587,
39973 sNativeProperties_sortedPropertyIndices,
39974 {
39975 { sStaticMethods, &sNativeProperties_propertyInfos[0] },
39976 { sStaticAttributes, &sNativeProperties_propertyInfos[4] },
39977 { sMethods, &sNativeProperties_propertyInfos[6] },
39978 { sAttributes, &sNativeProperties_propertyInfos[464] },
39979 { sUnforgeableMethods, &sNativeProperties_propertyInfos[583] },
39980 { sUnforgeableAttributes, &sNativeProperties_propertyInfos[584] },
39981 { sConstants, &sNativeProperties_propertyInfos[585] }
39982 }
39983};
39984static_assert(587 < 1ull << (CHAR_BIT8 * sizeof(sNativeProperties.propertyInfoCount)),
39985 "We have a property info count that is oversized");
39986
39987static uint16_t sChromeOnlyNativeProperties_sortedPropertyIndices[3];
39988static PropertyInfo sChromeOnlyNativeProperties_propertyInfos[3];
39989
39990static const NativePropertiesN<3> sChromeOnlyNativeProperties = {
39991 false, 0,
39992 false, 0,
39993 false, 0,
39994 true, 0 /* sChromeAttributes */,
39995 true, 1 /* sChromeUnforgeableMethods */,
39996 true, 2 /* sChromeUnforgeableAttributes */,
39997 false, 0,
39998 -1,
39999 3,
40000 sChromeOnlyNativeProperties_sortedPropertyIndices,
40001 {
40002 { sChromeAttributes, &sChromeOnlyNativeProperties_propertyInfos[0] },
40003 { sChromeUnforgeableMethods, &sChromeOnlyNativeProperties_propertyInfos[1] },
40004 { sChromeUnforgeableAttributes, &sChromeOnlyNativeProperties_propertyInfos[2] }
40005 }
40006};
40007static_assert(3 < 1ull << (CHAR_BIT8 * sizeof(sChromeOnlyNativeProperties.propertyInfoCount)),
40008 "We have a property info count that is oversized");
40009
40010MOZ_CAN_RUN_SCRIPT bool
40011CollectJSONAttributes(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::TestExampleInterface* self, JS::Rooted<JSObject*>& result)
40012{
40013 JS::Rooted<JSObject*> unwrappedObj(cx, js::CheckedUnwrapStatic(obj));
40014 if (!unwrappedObj) {
40015 // How did that happen? We managed to get called with that
40016 // object as "this"! Just give up on sanity.
40017 return false;
40018 }
40019
40020 { // scope for "temp"
40021 JS::Rooted<JS::Value> temp(cx);
40022 if (!get_readonlyByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40023 return false;
40024 }
40025 if (!JS_DefineProperty(cx, result, "readonlyByte", temp, JSPROP_ENUMERATE)) {
40026 return false;
40027 }
40028 }
40029 { // scope for "temp"
40030 JS::Rooted<JS::Value> temp(cx);
40031 if (!get_writableByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40032 return false;
40033 }
40034 if (!JS_DefineProperty(cx, result, "writableByte", temp, JSPROP_ENUMERATE)) {
40035 return false;
40036 }
40037 }
40038 { // scope for "temp"
40039 JS::Rooted<JS::Value> temp(cx);
40040 if (!get_cachedByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40041 return false;
40042 }
40043 if (!JS_DefineProperty(cx, result, "cachedByte", temp, JSPROP_ENUMERATE)) {
40044 return false;
40045 }
40046 }
40047 { // scope for "temp"
40048 JS::Rooted<JS::Value> temp(cx);
40049 if (!get_cachedConstantByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40050 return false;
40051 }
40052 if (!JS_DefineProperty(cx, result, "cachedConstantByte", temp, JSPROP_ENUMERATE)) {
40053 return false;
40054 }
40055 }
40056 { // scope for "temp"
40057 JS::Rooted<JS::Value> temp(cx);
40058 if (!get_cachedWritableByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40059 return false;
40060 }
40061 if (!JS_DefineProperty(cx, result, "cachedWritableByte", temp, JSPROP_ENUMERATE)) {
40062 return false;
40063 }
40064 }
40065 { // scope for "temp"
40066 JS::Rooted<JS::Value> temp(cx);
40067 if (!get_sideEffectFreeByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40068 return false;
40069 }
40070 if (!JS_DefineProperty(cx, result, "sideEffectFreeByte", temp, JSPROP_ENUMERATE)) {
40071 return false;
40072 }
40073 }
40074 { // scope for "temp"
40075 JS::Rooted<JS::Value> temp(cx);
40076 if (!get_domDependentByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40077 return false;
40078 }
40079 if (!JS_DefineProperty(cx, result, "domDependentByte", temp, JSPROP_ENUMERATE)) {
40080 return false;
40081 }
40082 }
40083 { // scope for "temp"
40084 JS::Rooted<JS::Value> temp(cx);
40085 if (!get_constantByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40086 return false;
40087 }
40088 if (!JS_DefineProperty(cx, result, "constantByte", temp, JSPROP_ENUMERATE)) {
40089 return false;
40090 }
40091 }
40092 { // scope for "temp"
40093 JS::Rooted<JS::Value> temp(cx);
40094 if (!get_deviceStateDependentByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40095 return false;
40096 }
40097 if (!JS_DefineProperty(cx, result, "deviceStateDependentByte", temp, JSPROP_ENUMERATE)) {
40098 return false;
40099 }
40100 }
40101 { // scope for "temp"
40102 JS::Rooted<JS::Value> temp(cx);
40103 if (!get_readonlyShort(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40104 return false;
40105 }
40106 if (!JS_DefineProperty(cx, result, "readonlyShort", temp, JSPROP_ENUMERATE)) {
40107 return false;
40108 }
40109 }
40110 { // scope for "temp"
40111 JS::Rooted<JS::Value> temp(cx);
40112 if (!get_writableShort(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40113 return false;
40114 }
40115 if (!JS_DefineProperty(cx, result, "writableShort", temp, JSPROP_ENUMERATE)) {
40116 return false;
40117 }
40118 }
40119 { // scope for "temp"
40120 JS::Rooted<JS::Value> temp(cx);
40121 if (!get_readonlyLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40122 return false;
40123 }
40124 if (!JS_DefineProperty(cx, result, "readonlyLong", temp, JSPROP_ENUMERATE)) {
40125 return false;
40126 }
40127 }
40128 { // scope for "temp"
40129 JS::Rooted<JS::Value> temp(cx);
40130 if (!get_writableLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40131 return false;
40132 }
40133 if (!JS_DefineProperty(cx, result, "writableLong", temp, JSPROP_ENUMERATE)) {
40134 return false;
40135 }
40136 }
40137 { // scope for "temp"
40138 JS::Rooted<JS::Value> temp(cx);
40139 if (!get_readonlyLongLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40140 return false;
40141 }
40142 if (!JS_DefineProperty(cx, result, "readonlyLongLong", temp, JSPROP_ENUMERATE)) {
40143 return false;
40144 }
40145 }
40146 { // scope for "temp"
40147 JS::Rooted<JS::Value> temp(cx);
40148 if (!get_writableLongLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40149 return false;
40150 }
40151 if (!JS_DefineProperty(cx, result, "writableLongLong", temp, JSPROP_ENUMERATE)) {
40152 return false;
40153 }
40154 }
40155 { // scope for "temp"
40156 JS::Rooted<JS::Value> temp(cx);
40157 if (!get_readonlyOctet(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40158 return false;
40159 }
40160 if (!JS_DefineProperty(cx, result, "readonlyOctet", temp, JSPROP_ENUMERATE)) {
40161 return false;
40162 }
40163 }
40164 { // scope for "temp"
40165 JS::Rooted<JS::Value> temp(cx);
40166 if (!get_writableOctet(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40167 return false;
40168 }
40169 if (!JS_DefineProperty(cx, result, "writableOctet", temp, JSPROP_ENUMERATE)) {
40170 return false;
40171 }
40172 }
40173 { // scope for "temp"
40174 JS::Rooted<JS::Value> temp(cx);
40175 if (!get_readonlyUnsignedShort(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40176 return false;
40177 }
40178 if (!JS_DefineProperty(cx, result, "readonlyUnsignedShort", temp, JSPROP_ENUMERATE)) {
40179 return false;
40180 }
40181 }
40182 { // scope for "temp"
40183 JS::Rooted<JS::Value> temp(cx);
40184 if (!get_writableUnsignedShort(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40185 return false;
40186 }
40187 if (!JS_DefineProperty(cx, result, "writableUnsignedShort", temp, JSPROP_ENUMERATE)) {
40188 return false;
40189 }
40190 }
40191 { // scope for "temp"
40192 JS::Rooted<JS::Value> temp(cx);
40193 if (!get_readonlyUnsignedLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40194 return false;
40195 }
40196 if (!JS_DefineProperty(cx, result, "readonlyUnsignedLong", temp, JSPROP_ENUMERATE)) {
40197 return false;
40198 }
40199 }
40200 { // scope for "temp"
40201 JS::Rooted<JS::Value> temp(cx);
40202 if (!get_writableUnsignedLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40203 return false;
40204 }
40205 if (!JS_DefineProperty(cx, result, "writableUnsignedLong", temp, JSPROP_ENUMERATE)) {
40206 return false;
40207 }
40208 }
40209 { // scope for "temp"
40210 JS::Rooted<JS::Value> temp(cx);
40211 if (!get_readonlyUnsignedLongLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40212 return false;
40213 }
40214 if (!JS_DefineProperty(cx, result, "readonlyUnsignedLongLong", temp, JSPROP_ENUMERATE)) {
40215 return false;
40216 }
40217 }
40218 { // scope for "temp"
40219 JS::Rooted<JS::Value> temp(cx);
40220 if (!get_writableUnsignedLongLong(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40221 return false;
40222 }
40223 if (!JS_DefineProperty(cx, result, "writableUnsignedLongLong", temp, JSPROP_ENUMERATE)) {
40224 return false;
40225 }
40226 }
40227 { // scope for "temp"
40228 JS::Rooted<JS::Value> temp(cx);
40229 if (!get_writableFloat(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40230 return false;
40231 }
40232 if (!JS_DefineProperty(cx, result, "writableFloat", temp, JSPROP_ENUMERATE)) {
40233 return false;
40234 }
40235 }
40236 { // scope for "temp"
40237 JS::Rooted<JS::Value> temp(cx);
40238 if (!get_writableUnrestrictedFloat(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40239 return false;
40240 }
40241 if (!JS_DefineProperty(cx, result, "writableUnrestrictedFloat", temp, JSPROP_ENUMERATE)) {
40242 return false;
40243 }
40244 }
40245 { // scope for "temp"
40246 JS::Rooted<JS::Value> temp(cx);
40247 if (!get_writableNullableFloat(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40248 return false;
40249 }
40250 if (!JS_DefineProperty(cx, result, "writableNullableFloat", temp, JSPROP_ENUMERATE)) {
40251 return false;
40252 }
40253 }
40254 { // scope for "temp"
40255 JS::Rooted<JS::Value> temp(cx);
40256 if (!get_writableNullableUnrestrictedFloat(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40257 return false;
40258 }
40259 if (!JS_DefineProperty(cx, result, "writableNullableUnrestrictedFloat", temp, JSPROP_ENUMERATE)) {
40260 return false;
40261 }
40262 }
40263 { // scope for "temp"
40264 JS::Rooted<JS::Value> temp(cx);
40265 if (!get_writableDouble(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40266 return false;
40267 }
40268 if (!JS_DefineProperty(cx, result, "writableDouble", temp, JSPROP_ENUMERATE)) {
40269 return false;
40270 }
40271 }
40272 { // scope for "temp"
40273 JS::Rooted<JS::Value> temp(cx);
40274 if (!get_writableUnrestrictedDouble(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40275 return false;
40276 }
40277 if (!JS_DefineProperty(cx, result, "writableUnrestrictedDouble", temp, JSPROP_ENUMERATE)) {
40278 return false;
40279 }
40280 }
40281 { // scope for "temp"
40282 JS::Rooted<JS::Value> temp(cx);
40283 if (!get_writableNullableDouble(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40284 return false;
40285 }
40286 if (!JS_DefineProperty(cx, result, "writableNullableDouble", temp, JSPROP_ENUMERATE)) {
40287 return false;
40288 }
40289 }
40290 { // scope for "temp"
40291 JS::Rooted<JS::Value> temp(cx);
40292 if (!get_writableNullableUnrestrictedDouble(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40293 return false;
40294 }
40295 if (!JS_DefineProperty(cx, result, "writableNullableUnrestrictedDouble", temp, JSPROP_ENUMERATE)) {
40296 return false;
40297 }
40298 }
40299 { // scope for "temp"
40300 JS::Rooted<JS::Value> temp(cx);
40301 if (!get_lenientFloatAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40302 return false;
40303 }
40304 if (!JS_DefineProperty(cx, result, "lenientFloatAttr", temp, JSPROP_ENUMERATE)) {
40305 return false;
40306 }
40307 }
40308 { // scope for "temp"
40309 JS::Rooted<JS::Value> temp(cx);
40310 if (!get_lenientDoubleAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40311 return false;
40312 }
40313 if (!JS_DefineProperty(cx, result, "lenientDoubleAttr", temp, JSPROP_ENUMERATE)) {
40314 return false;
40315 }
40316 }
40317 { // scope for "temp"
40318 JS::Rooted<JS::Value> temp(cx);
40319 if (!get_nonNullSelf(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40320 return false;
40321 }
40322 if (!JS_DefineProperty(cx, result, "nonNullSelf", temp, JSPROP_ENUMERATE)) {
40323 return false;
40324 }
40325 }
40326 { // scope for "temp"
40327 JS::Rooted<JS::Value> temp(cx);
40328 if (!get_nullableSelf(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40329 return false;
40330 }
40331 if (!JS_DefineProperty(cx, result, "nullableSelf", temp, JSPROP_ENUMERATE)) {
40332 return false;
40333 }
40334 }
40335 { // scope for "temp"
40336 JS::Rooted<JS::Value> temp(cx);
40337 if (!get_cachedSelf(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40338 return false;
40339 }
40340 if (!JS_DefineProperty(cx, result, "cachedSelf", temp, JSPROP_ENUMERATE)) {
40341 return false;
40342 }
40343 }
40344 { // scope for "temp"
40345 JS::Rooted<JS::Value> temp(cx);
40346 if (!get_readonlySequence(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40347 return false;
40348 }
40349 if (!JS_DefineProperty(cx, result, "readonlySequence", temp, JSPROP_ENUMERATE)) {
40350 return false;
40351 }
40352 }
40353 { // scope for "temp"
40354 JS::Rooted<JS::Value> temp(cx);
40355 if (!get_readonlyFrozenSequence(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40356 return false;
40357 }
40358 if (!JS_DefineProperty(cx, result, "readonlyFrozenSequence", temp, JSPROP_ENUMERATE)) {
40359 return false;
40360 }
40361 }
40362 { // scope for "temp"
40363 JS::Rooted<JS::Value> temp(cx);
40364 if (!get_readonlyFrozenNullableSequence(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40365 return false;
40366 }
40367 if (!JS_DefineProperty(cx, result, "readonlyFrozenNullableSequence", temp, JSPROP_ENUMERATE)) {
40368 return false;
40369 }
40370 }
40371 { // scope for "temp"
40372 JS::Rooted<JS::Value> temp(cx);
40373 if (!get_readonlyJSStringAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40374 return false;
40375 }
40376 if (!JS_DefineProperty(cx, result, "readonlyJSStringAttr", temp, JSPROP_ENUMERATE)) {
40377 return false;
40378 }
40379 }
40380 { // scope for "temp"
40381 JS::Rooted<JS::Value> temp(cx);
40382 if (!get_jsStringAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40383 return false;
40384 }
40385 if (!JS_DefineProperty(cx, result, "jsStringAttr", temp, JSPROP_ENUMERATE)) {
40386 return false;
40387 }
40388 }
40389 { // scope for "temp"
40390 JS::Rooted<JS::Value> temp(cx);
40391 if (!get_enumAttribute(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40392 return false;
40393 }
40394 if (!JS_DefineProperty(cx, result, "enumAttribute", temp, JSPROP_ENUMERATE)) {
40395 return false;
40396 }
40397 }
40398 { // scope for "temp"
40399 JS::Rooted<JS::Value> temp(cx);
40400 if (!get_readonlyEnumAttribute(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40401 return false;
40402 }
40403 if (!JS_DefineProperty(cx, result, "readonlyEnumAttribute", temp, JSPROP_ENUMERATE)) {
40404 return false;
40405 }
40406 }
40407 { // scope for "temp"
40408 JS::Rooted<JS::Value> temp(cx);
40409 if (!get_booleanObservableArray(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40410 return false;
40411 }
40412 if (!JS_DefineProperty(cx, result, "booleanObservableArray", temp, JSPROP_ENUMERATE)) {
40413 return false;
40414 }
40415 }
40416 { // scope for "temp"
40417 JS::Rooted<JS::Value> temp(cx);
40418 if (!get_objectObservableArray(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40419 return false;
40420 }
40421 if (!JS_DefineProperty(cx, result, "objectObservableArray", temp, JSPROP_ENUMERATE)) {
40422 return false;
40423 }
40424 }
40425 { // scope for "temp"
40426 JS::Rooted<JS::Value> temp(cx);
40427 if (!get_interfaceObservableArray(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40428 return false;
40429 }
40430 if (!JS_DefineProperty(cx, result, "interfaceObservableArray", temp, JSPROP_ENUMERATE)) {
40431 return false;
40432 }
40433 }
40434 { // scope for "temp"
40435 JS::Rooted<JS::Value> temp(cx);
40436 if (!get_nullableObservableArray(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40437 return false;
40438 }
40439 if (!JS_DefineProperty(cx, result, "nullableObservableArray", temp, JSPROP_ENUMERATE)) {
40440 return false;
40441 }
40442 }
40443 { // scope for "temp"
40444 JS::Rooted<JS::Value> temp(cx);
40445 if (!get_attributeGetterRenamedFrom(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40446 return false;
40447 }
40448 if (!JS_DefineProperty(cx, result, "attributeGetterRenamedFrom", temp, JSPROP_ENUMERATE)) {
40449 return false;
40450 }
40451 }
40452 { // scope for "temp"
40453 JS::Rooted<JS::Value> temp(cx);
40454 if (!get_attributeRenamedFrom(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40455 return false;
40456 }
40457 if (!JS_DefineProperty(cx, result, "attributeRenamedFrom", temp, JSPROP_ENUMERATE)) {
40458 return false;
40459 }
40460 }
40461 { // scope for "temp"
40462 JS::Rooted<JS::Value> temp(cx);
40463 if (!get_enforcedByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40464 return false;
40465 }
40466 if (!JS_DefineProperty(cx, result, "enforcedByte", temp, JSPROP_ENUMERATE)) {
40467 return false;
40468 }
40469 }
40470 { // scope for "temp"
40471 JS::Rooted<JS::Value> temp(cx);
40472 if (!get_enforcedByteNullable(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40473 return false;
40474 }
40475 if (!JS_DefineProperty(cx, result, "enforcedByteNullable", temp, JSPROP_ENUMERATE)) {
40476 return false;
40477 }
40478 }
40479 { // scope for "temp"
40480 JS::Rooted<JS::Value> temp(cx);
40481 if (!get_clampedByte(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40482 return false;
40483 }
40484 if (!JS_DefineProperty(cx, result, "clampedByte", temp, JSPROP_ENUMERATE)) {
40485 return false;
40486 }
40487 }
40488 { // scope for "temp"
40489 JS::Rooted<JS::Value> temp(cx);
40490 if (!get_clampedByteNullable(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40491 return false;
40492 }
40493 if (!JS_DefineProperty(cx, result, "clampedByteNullable", temp, JSPROP_ENUMERATE)) {
40494 return false;
40495 }
40496 }
40497 { // scope for "temp"
40498 JS::Rooted<JS::Value> temp(cx);
40499 if (!get_deprecatedAttribute(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40500 return false;
40501 }
40502 if (!JS_DefineProperty(cx, result, "deprecatedAttribute", temp, JSPROP_ENUMERATE)) {
40503 return false;
40504 }
40505 }
40506 // This is unfortunately a linear scan through sAttributes, but we
40507 // only do it for things which _might_ be disabled, which should
40508 // help keep the performance problems down.
40509 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable1, sAttributes)) {
40510 JS::Rooted<JS::Value> temp(cx);
40511 if (!get_prefable1(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40512 return false;
40513 }
40514 if (!JS_DefineProperty(cx, result, "prefable1", temp, JSPROP_ENUMERATE)) {
40515 return false;
40516 }
40517 }
40518 // This is unfortunately a linear scan through sAttributes, but we
40519 // only do it for things which _might_ be disabled, which should
40520 // help keep the performance problems down.
40521 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable2, sAttributes)) {
40522 JS::Rooted<JS::Value> temp(cx);
40523 if (!get_prefable2(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40524 return false;
40525 }
40526 if (!JS_DefineProperty(cx, result, "prefable2", temp, JSPROP_ENUMERATE)) {
40527 return false;
40528 }
40529 }
40530 // This is unfortunately a linear scan through sAttributes, but we
40531 // only do it for things which _might_ be disabled, which should
40532 // help keep the performance problems down.
40533 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable3, sAttributes)) {
40534 JS::Rooted<JS::Value> temp(cx);
40535 if (!get_prefable3(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40536 return false;
40537 }
40538 if (!JS_DefineProperty(cx, result, "prefable3", temp, JSPROP_ENUMERATE)) {
40539 return false;
40540 }
40541 }
40542 // This is unfortunately a linear scan through sAttributes, but we
40543 // only do it for things which _might_ be disabled, which should
40544 // help keep the performance problems down.
40545 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable4, sAttributes)) {
40546 JS::Rooted<JS::Value> temp(cx);
40547 if (!get_prefable4(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40548 return false;
40549 }
40550 if (!JS_DefineProperty(cx, result, "prefable4", temp, JSPROP_ENUMERATE)) {
40551 return false;
40552 }
40553 }
40554 // This is unfortunately a linear scan through sAttributes, but we
40555 // only do it for things which _might_ be disabled, which should
40556 // help keep the performance problems down.
40557 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable5, sAttributes)) {
40558 JS::Rooted<JS::Value> temp(cx);
40559 if (!get_prefable5(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40560 return false;
40561 }
40562 if (!JS_DefineProperty(cx, result, "prefable5", temp, JSPROP_ENUMERATE)) {
40563 return false;
40564 }
40565 }
40566 // This is unfortunately a linear scan through sAttributes, but we
40567 // only do it for things which _might_ be disabled, which should
40568 // help keep the performance problems down.
40569 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable6, sAttributes)) {
40570 JS::Rooted<JS::Value> temp(cx);
40571 if (!get_prefable6(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40572 return false;
40573 }
40574 if (!JS_DefineProperty(cx, result, "prefable6", temp, JSPROP_ENUMERATE)) {
40575 return false;
40576 }
40577 }
40578 // This is unfortunately a linear scan through sAttributes, but we
40579 // only do it for things which _might_ be disabled, which should
40580 // help keep the performance problems down.
40581 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable7, sAttributes)) {
40582 JS::Rooted<JS::Value> temp(cx);
40583 if (!get_prefable7(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40584 return false;
40585 }
40586 if (!JS_DefineProperty(cx, result, "prefable7", temp, JSPROP_ENUMERATE)) {
40587 return false;
40588 }
40589 }
40590 // This is unfortunately a linear scan through sAttributes, but we
40591 // only do it for things which _might_ be disabled, which should
40592 // help keep the performance problems down.
40593 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable8, sAttributes)) {
40594 JS::Rooted<JS::Value> temp(cx);
40595 if (!get_prefable8(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40596 return false;
40597 }
40598 if (!JS_DefineProperty(cx, result, "prefable8", temp, JSPROP_ENUMERATE)) {
40599 return false;
40600 }
40601 }
40602 // This is unfortunately a linear scan through sAttributes, but we
40603 // only do it for things which _might_ be disabled, which should
40604 // help keep the performance problems down.
40605 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable9, sAttributes)) {
40606 JS::Rooted<JS::Value> temp(cx);
40607 if (!get_prefable9(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40608 return false;
40609 }
40610 if (!JS_DefineProperty(cx, result, "prefable9", temp, JSPROP_ENUMERATE)) {
40611 return false;
40612 }
40613 }
40614 // This is unfortunately a linear scan through sAttributes, but we
40615 // only do it for things which _might_ be disabled, which should
40616 // help keep the performance problems down.
40617 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable12, sAttributes)) {
40618 JS::Rooted<JS::Value> temp(cx);
40619 if (!get_prefable12(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40620 return false;
40621 }
40622 if (!JS_DefineProperty(cx, result, "prefable12", temp, JSPROP_ENUMERATE)) {
40623 return false;
40624 }
40625 }
40626 // This is unfortunately a linear scan through sAttributes, but we
40627 // only do it for things which _might_ be disabled, which should
40628 // help keep the performance problems down.
40629 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable14, sAttributes)) {
40630 JS::Rooted<JS::Value> temp(cx);
40631 if (!get_prefable14(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40632 return false;
40633 }
40634 if (!JS_DefineProperty(cx, result, "prefable14", temp, JSPROP_ENUMERATE)) {
40635 return false;
40636 }
40637 }
40638 // This is unfortunately a linear scan through sAttributes, but we
40639 // only do it for things which _might_ be disabled, which should
40640 // help keep the performance problems down.
40641 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable15, sAttributes)) {
40642 JS::Rooted<JS::Value> temp(cx);
40643 if (!get_prefable15(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40644 return false;
40645 }
40646 if (!JS_DefineProperty(cx, result, "prefable15", temp, JSPROP_ENUMERATE)) {
40647 return false;
40648 }
40649 }
40650 // This is unfortunately a linear scan through sAttributes, but we
40651 // only do it for things which _might_ be disabled, which should
40652 // help keep the performance problems down.
40653 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable16, sAttributes)) {
40654 JS::Rooted<JS::Value> temp(cx);
40655 if (!get_prefable16(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40656 return false;
40657 }
40658 if (!JS_DefineProperty(cx, result, "prefable16", temp, JSPROP_ENUMERATE)) {
40659 return false;
40660 }
40661 }
40662 // This is unfortunately a linear scan through sAttributes, but we
40663 // only do it for things which _might_ be disabled, which should
40664 // help keep the performance problems down.
40665 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable21, sAttributes)) {
40666 JS::Rooted<JS::Value> temp(cx);
40667 if (!get_prefable21(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40668 return false;
40669 }
40670 if (!JS_DefineProperty(cx, result, "prefable21", temp, JSPROP_ENUMERATE)) {
40671 return false;
40672 }
40673 }
40674 // This is unfortunately a linear scan through sAttributes, but we
40675 // only do it for things which _might_ be disabled, which should
40676 // help keep the performance problems down.
40677 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_prefable22, sAttributes)) {
40678 JS::Rooted<JS::Value> temp(cx);
40679 if (!get_prefable22(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40680 return false;
40681 }
40682 if (!JS_DefineProperty(cx, result, "prefable22", temp, JSPROP_ENUMERATE)) {
40683 return false;
40684 }
40685 }
40686 // This is unfortunately a linear scan through sAttributes, but we
40687 // only do it for things which _might_ be disabled, which should
40688 // help keep the performance problems down.
40689 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_conditionalOnSecureContext1, sAttributes)) {
40690 JS::Rooted<JS::Value> temp(cx);
40691 if (!get_conditionalOnSecureContext1(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40692 return false;
40693 }
40694 if (!JS_DefineProperty(cx, result, "conditionalOnSecureContext1", temp, JSPROP_ENUMERATE)) {
40695 return false;
40696 }
40697 }
40698 // This is unfortunately a linear scan through sAttributes, but we
40699 // only do it for things which _might_ be disabled, which should
40700 // help keep the performance problems down.
40701 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_conditionalOnSecureContext2, sAttributes)) {
40702 JS::Rooted<JS::Value> temp(cx);
40703 if (!get_conditionalOnSecureContext2(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40704 return false;
40705 }
40706 if (!JS_DefineProperty(cx, result, "conditionalOnSecureContext2", temp, JSPROP_ENUMERATE)) {
40707 return false;
40708 }
40709 }
40710 // This is unfortunately a linear scan through sAttributes, but we
40711 // only do it for things which _might_ be disabled, which should
40712 // help keep the performance problems down.
40713 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_conditionalOnSecureContext3, sAttributes)) {
40714 JS::Rooted<JS::Value> temp(cx);
40715 if (!get_conditionalOnSecureContext3(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40716 return false;
40717 }
40718 if (!JS_DefineProperty(cx, result, "conditionalOnSecureContext3", temp, JSPROP_ENUMERATE)) {
40719 return false;
40720 }
40721 }
40722 // This is unfortunately a linear scan through sAttributes, but we
40723 // only do it for things which _might_ be disabled, which should
40724 // help keep the performance problems down.
40725 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_conditionalOnSecureContext4, sAttributes)) {
40726 JS::Rooted<JS::Value> temp(cx);
40727 if (!get_conditionalOnSecureContext4(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40728 return false;
40729 }
40730 if (!JS_DefineProperty(cx, result, "conditionalOnSecureContext4", temp, JSPROP_ENUMERATE)) {
40731 return false;
40732 }
40733 }
40734 // This is unfortunately a linear scan through sAttributes, but we
40735 // only do it for things which _might_ be disabled, which should
40736 // help keep the performance problems down.
40737 if (IsGetterEnabled(cx, unwrappedObj, (JSJitGetterOp)get_conditionalOnSecureContext9, sAttributes)) {
40738 JS::Rooted<JS::Value> temp(cx);
40739 if (!get_conditionalOnSecureContext9(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40740 return false;
40741 }
40742 if (!JS_DefineProperty(cx, result, "conditionalOnSecureContext9", temp, JSPROP_ENUMERATE)) {
40743 return false;
40744 }
40745 }
40746 { // scope for "temp"
40747 JS::Rooted<JS::Value> temp(cx);
40748 if (!get_attrWithLenientThis(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40749 return false;
40750 }
40751 if (!JS_DefineProperty(cx, result, "attrWithLenientThis", temp, JSPROP_ENUMERATE)) {
40752 return false;
40753 }
40754 }
40755 { // scope for "temp"
40756 JS::Rooted<JS::Value> temp(cx);
40757 if (!get_unforgeableAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40758 return false;
40759 }
40760 if (!JS_DefineProperty(cx, result, "unforgeableAttr", temp, JSPROP_ENUMERATE)) {
40761 return false;
40762 }
40763 }
40764 { // scope for "temp"
40765 JS::Rooted<JS::Value> temp(cx);
40766 if (!get_unforgeableAttr2(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40767 return false;
40768 }
40769 if (!JS_DefineProperty(cx, result, "unforgeableAttr2", temp, JSPROP_ENUMERATE)) {
40770 return false;
40771 }
40772 }
40773 { // scope for "temp"
40774 JS::Rooted<JS::Value> temp(cx);
40775 if (!get_putForwardsAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40776 return false;
40777 }
40778 if (!JS_DefineProperty(cx, result, "putForwardsAttr", temp, JSPROP_ENUMERATE)) {
40779 return false;
40780 }
40781 }
40782 { // scope for "temp"
40783 JS::Rooted<JS::Value> temp(cx);
40784 if (!get_putForwardsAttr2(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40785 return false;
40786 }
40787 if (!JS_DefineProperty(cx, result, "putForwardsAttr2", temp, JSPROP_ENUMERATE)) {
40788 return false;
40789 }
40790 }
40791 { // scope for "temp"
40792 JS::Rooted<JS::Value> temp(cx);
40793 if (!get_putForwardsAttr3(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40794 return false;
40795 }
40796 if (!JS_DefineProperty(cx, result, "putForwardsAttr3", temp, JSPROP_ENUMERATE)) {
40797 return false;
40798 }
40799 }
40800 { // scope for "temp"
40801 JS::Rooted<JS::Value> temp(cx);
40802 if (!get_throwingAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40803 return false;
40804 }
40805 if (!JS_DefineProperty(cx, result, "throwingAttr", temp, JSPROP_ENUMERATE)) {
40806 return false;
40807 }
40808 }
40809 { // scope for "temp"
40810 JS::Rooted<JS::Value> temp(cx);
40811 if (!get_throwingGetterAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40812 return false;
40813 }
40814 if (!JS_DefineProperty(cx, result, "throwingGetterAttr", temp, JSPROP_ENUMERATE)) {
40815 return false;
40816 }
40817 }
40818 { // scope for "temp"
40819 JS::Rooted<JS::Value> temp(cx);
40820 if (!get_throwingSetterAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40821 return false;
40822 }
40823 if (!JS_DefineProperty(cx, result, "throwingSetterAttr", temp, JSPROP_ENUMERATE)) {
40824 return false;
40825 }
40826 }
40827 { // scope for "temp"
40828 JS::Rooted<JS::Value> temp(cx);
40829 if (!get_canOOMAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40830 return false;
40831 }
40832 if (!JS_DefineProperty(cx, result, "canOOMAttr", temp, JSPROP_ENUMERATE)) {
40833 return false;
40834 }
40835 }
40836 { // scope for "temp"
40837 JS::Rooted<JS::Value> temp(cx);
40838 if (!get_canOOMGetterAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40839 return false;
40840 }
40841 if (!JS_DefineProperty(cx, result, "canOOMGetterAttr", temp, JSPROP_ENUMERATE)) {
40842 return false;
40843 }
40844 }
40845 { // scope for "temp"
40846 JS::Rooted<JS::Value> temp(cx);
40847 if (!get_canOOMSetterAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40848 return false;
40849 }
40850 if (!JS_DefineProperty(cx, result, "canOOMSetterAttr", temp, JSPROP_ENUMERATE)) {
40851 return false;
40852 }
40853 }
40854 { // scope for "temp"
40855 JS::Rooted<JS::Value> temp(cx);
40856 if (!get_needsSubjectPrincipalAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40857 return false;
40858 }
40859 if (!JS_DefineProperty(cx, result, "needsSubjectPrincipalAttr", temp, JSPROP_ENUMERATE)) {
40860 return false;
40861 }
40862 }
40863 { // scope for "temp"
40864 JS::Rooted<JS::Value> temp(cx);
40865 if (!get_needsNonSystemSubjectPrincipalAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40866 return false;
40867 }
40868 if (!JS_DefineProperty(cx, result, "needsNonSystemSubjectPrincipalAttr", temp, JSPROP_ENUMERATE)) {
40869 return false;
40870 }
40871 }
40872 { // scope for "temp"
40873 JS::Rooted<JS::Value> temp(cx);
40874 if (!get_needsCallerTypeAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40875 return false;
40876 }
40877 if (!JS_DefineProperty(cx, result, "needsCallerTypeAttr", temp, JSPROP_ENUMERATE)) {
40878 return false;
40879 }
40880 }
40881 { // scope for "temp"
40882 JS::Rooted<JS::Value> temp(cx);
40883 if (!get_ceReactionsAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40884 return false;
40885 }
40886 if (!JS_DefineProperty(cx, result, "ceReactionsAttr", temp, JSPROP_ENUMERATE)) {
40887 return false;
40888 }
40889 }
40890 { // scope for "temp"
40891 JS::Rooted<JS::Value> temp(cx);
40892 if (!get_dashed_attribute(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40893 return false;
40894 }
40895 if (!JS_DefineProperty(cx, result, "dashed_attribute", temp, JSPROP_ENUMERATE)) {
40896 return false;
40897 }
40898 }
40899 { // scope for "temp"
40900 JS::Rooted<JS::Value> temp(cx);
40901 if (!get_nonEnumerableAttr(cx, obj, self, JSJitGetterCallArgs(&temp))) {
40902 return false;
40903 }
40904 if (!JS_DefineProperty(cx, result, "nonEnumerableAttr", temp, JSPROP_ENUMERATE)) {
40905 return false;
40906 }
40907 }
40908 return true;
40909}
40910
40911// This may allocate too many slots, because we only really need
40912// slots for our non-interface-typed members that we cache. But
40913// allocating slots only for those would make the slot index
40914// computations much more complicated, so let's do this the simple
40915// way for now.
40916DEFINE_XRAY_EXPANDO_CLASS(static, sXrayExpandoObjectClass, 21)static const JSClass sXrayExpandoObjectClass = { "XrayExpandoObject"
, JSCLASS_HAS_RESERVED_SLOTS(xpc::JSSLOT_EXPANDO_COUNT + (21)
) | JSCLASS_FOREGROUND_FINALIZE, &xpc::XrayExpandoObjectClassOps
}
;
40917
40918bool sNativePropertiesInited = false;
40919const NativePropertyHooks sNativePropertyHooks = {
40920 nullptr,
40921 { sNativeProperties.Upcast(), sChromeOnlyNativeProperties.Upcast(), &sNativePropertiesInited },
40922 prototypes::id::TestExampleInterface,
40923 constructors::id::TestExampleInterface,
40924 &sXrayExpandoObjectClass
40925};
40926
40927static bool
40928_constructor(JSContext* cx_, unsigned argc, JS::Value* vp)
40929{
40930 BindingCallContext cx(cx_, "TestExampleInterface constructor");
40931 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject40933( cx, "TestExampleInterface"
, "constructor", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
40932 "TestExampleInterface", "constructor", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject40933( cx, "TestExampleInterface"
, "constructor", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
40933 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject40933( cx, "TestExampleInterface"
, "constructor", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
40934
40935 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
40936 JS::Rooted<JSObject*> obj(cx, &args.callee());
40937 if (!args.isConstructing()) {
40938 return ThrowConstructorWithoutNew(cx, "TestExampleInterface");
40939 }
40940
40941 JS::Rooted<JSObject*> desiredProto(cx);
40942 if (!GetDesiredProto(cx, args,
40943 prototypes::id::TestExampleInterface,
40944 CreateInterfaceObjects,
40945 &desiredProto)) {
40946 return false;
40947 }
40948
40949 unsigned argcount = std::min(args.length(), 2u);
40950 switch (argcount) {
40951 case 0: {
40952 GlobalObject global(cx, obj);
40953 if (global.Failed()) {
40954 return false;
40955 }
40956
40957 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
40958 Maybe<JSAutoRealm> ar;
40959 if (objIsXray) {
40960 // Since our object is an Xray, we can just CheckedUnwrapStatic:
40961 // we know Xrays have no dynamic unwrap behavior.
40962 obj = js::CheckedUnwrapStatic(obj);
40963 if (!obj) {
40964 return false;
40965 }
40966 ar.emplace(cx, obj);
40967 if (!JS_WrapObject(cx, &desiredProto)) {
40968 return false;
40969 }
40970 }
40971 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global)));
40972 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 40972); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 40972; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
40973 static_assert(!std::is_pointer_v<decltype(result)>,
40974 "NewObject implies that we need to keep the object alive with a strong reference.");
40975 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
40976 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 40976); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 40976; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
40977 return false;
40978 }
40979 return true;
40980 break;
40981 }
40982 case 1: {
40983 if (args[0].isNullOrUndefined()) {
40984 mozilla::dom::TestInterface* arg0;
40985 arg0 = nullptr;
40986 GlobalObject global(cx, obj);
40987 if (global.Failed()) {
40988 return false;
40989 }
40990
40991 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
40992 Maybe<JSAutoRealm> ar;
40993 if (objIsXray) {
40994 // Since our object is an Xray, we can just CheckedUnwrapStatic:
40995 // we know Xrays have no dynamic unwrap behavior.
40996 obj = js::CheckedUnwrapStatic(obj);
40997 if (!obj) {
40998 return false;
40999 }
41000 ar.emplace(cx, obj);
41001 if (!JS_WrapObject(cx, &desiredProto)) {
41002 return false;
41003 }
41004 }
41005 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, MOZ_KnownLive(Constify(arg0))(Constify(arg0)))));
41006 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41006); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41006; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41007 static_assert(!std::is_pointer_v<decltype(result)>,
41008 "NewObject implies that we need to keep the object alive with a strong reference.");
41009 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41010 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41010); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41010; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41011 return false;
41012 }
41013 return true;
41014 }
41015 if (args[0].isObject()) {
41016 do {
41017 mozilla::dom::TestInterface* arg0;
41018 {
41019 // Our JSContext should be in the right global to do unwrapping in.
41020 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
41021 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
41022 break;
41023 }
41024 }
41025 GlobalObject global(cx, obj);
41026 if (global.Failed()) {
41027 return false;
41028 }
41029
41030 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
41031 Maybe<JSAutoRealm> ar;
41032 if (objIsXray) {
41033 // Since our object is an Xray, we can just CheckedUnwrapStatic:
41034 // we know Xrays have no dynamic unwrap behavior.
41035 obj = js::CheckedUnwrapStatic(obj);
41036 if (!obj) {
41037 return false;
41038 }
41039 ar.emplace(cx, obj);
41040 if (!JS_WrapObject(cx, &desiredProto)) {
41041 return false;
41042 }
41043 }
41044 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, MOZ_KnownLive(Constify(arg0))(Constify(arg0)))));
41045 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41045); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41045; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41046 static_assert(!std::is_pointer_v<decltype(result)>,
41047 "NewObject implies that we need to keep the object alive with a strong reference.");
41048 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41049 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41049); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41049; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41050 return false;
41051 }
41052 return true;
41053 } while (false);
41054 do {
41055 RootedSpiderMonkeyInterface<ArrayBuffer> arg0(cx);
41056 if (!arg0.Init(&args[0].toObject())) {
41057 break;
41058 }
41059 if (JS::IsSharedArrayBufferObject(arg0.Obj())) {
41060 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
41061 return false;
41062 }
41063 if (JS::IsLargeArrayBufferMaybeShared(arg0.Obj())) {
41064 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
41065 return false;
41066 }
41067 if (JS::IsResizableArrayBufferMaybeShared(arg0.Obj())) {
41068 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
41069 return false;
41070 }
41071 GlobalObject global(cx, obj);
41072 if (global.Failed()) {
41073 return false;
41074 }
41075
41076 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
41077 Maybe<JSAutoRealm> ar;
41078 if (objIsXray) {
41079 // Since our object is an Xray, we can just CheckedUnwrapStatic:
41080 // we know Xrays have no dynamic unwrap behavior.
41081 obj = js::CheckedUnwrapStatic(obj);
41082 if (!obj) {
41083 return false;
41084 }
41085 ar.emplace(cx, obj);
41086 if (!JS_WrapObject(cx, &desiredProto)) {
41087 return false;
41088 }
41089 if (!arg0.WrapIntoNewCompartment(cx)) {
41090 return false;
41091 }
41092 }
41093 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, Constify(arg0))));
41094 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41094); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41094; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41095 static_assert(!std::is_pointer_v<decltype(result)>,
41096 "NewObject implies that we need to keep the object alive with a strong reference.");
41097 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41098 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41098); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41098; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41099 return false;
41100 }
41101 return true;
41102 } while (false);
41103 do {
41104 RootedSpiderMonkeyInterface<Uint8Array> arg0(cx);
41105 if (!arg0.Init(&args[0].toObject())) {
41106 break;
41107 }
41108 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
41109 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
41110 return false;
41111 }
41112 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
41113 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
41114 return false;
41115 }
41116 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
41117 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
41118 return false;
41119 }
41120 GlobalObject global(cx, obj);
41121 if (global.Failed()) {
41122 return false;
41123 }
41124
41125 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
41126 Maybe<JSAutoRealm> ar;
41127 if (objIsXray) {
41128 // Since our object is an Xray, we can just CheckedUnwrapStatic:
41129 // we know Xrays have no dynamic unwrap behavior.
41130 obj = js::CheckedUnwrapStatic(obj);
41131 if (!obj) {
41132 return false;
41133 }
41134 ar.emplace(cx, obj);
41135 if (!JS_WrapObject(cx, &desiredProto)) {
41136 return false;
41137 }
41138 if (!arg0.WrapIntoNewCompartment(cx)) {
41139 return false;
41140 }
41141 }
41142 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, Constify(arg0))));
41143 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41143); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41143; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41144 static_assert(!std::is_pointer_v<decltype(result)>,
41145 "NewObject implies that we need to keep the object alive with a strong reference.");
41146 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41147 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41147); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41147; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41148 return false;
41149 }
41150 return true;
41151 } while (false);
41152 }
41153 GlobalObject global(cx, obj);
41154 if (global.Failed()) {
41155 return false;
41156 }
41157
41158 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
41159 binding_detail::FakeString<char16_t> arg0;
41160 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
41161 return false;
41162 }
41163 Maybe<JSAutoRealm> ar;
41164 if (objIsXray) {
41165 // Since our object is an Xray, we can just CheckedUnwrapStatic:
41166 // we know Xrays have no dynamic unwrap behavior.
41167 obj = js::CheckedUnwrapStatic(obj);
41168 if (!obj) {
41169 return false;
41170 }
41171 ar.emplace(cx, obj);
41172 if (!JS_WrapObject(cx, &desiredProto)) {
41173 return false;
41174 }
41175 }
41176 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, NonNullHelper(Constify(arg0)))));
41177 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41177); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41177; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41178 static_assert(!std::is_pointer_v<decltype(result)>,
41179 "NewObject implies that we need to keep the object alive with a strong reference.");
41180 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41181 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41181); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41181; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41182 return false;
41183 }
41184 return true;
41185 break;
41186 }
41187 case 2: {
41188 uint32_t arg0;
41189 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
41190 return false;
41191 }
41192 if (args[1].isObject()) {
41193 do {
41194 NonNull<mozilla::dom::TestInterface> arg1;
41195 {
41196 // Our JSContext should be in the right global to do unwrapping in.
41197 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[1], arg1, cx);
41198 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
41199 break;
41200 }
41201 }
41202 GlobalObject global(cx, obj);
41203 if (global.Failed()) {
41204 return false;
41205 }
41206
41207 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
41208 Maybe<JSAutoRealm> ar;
41209 if (objIsXray) {
41210 // Since our object is an Xray, we can just CheckedUnwrapStatic:
41211 // we know Xrays have no dynamic unwrap behavior.
41212 obj = js::CheckedUnwrapStatic(obj);
41213 if (!obj) {
41214 return false;
41215 }
41216 ar.emplace(cx, obj);
41217 if (!JS_WrapObject(cx, &desiredProto)) {
41218 return false;
41219 }
41220 }
41221 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, arg0, MOZ_KnownLive(NonNullHelper(arg1))(NonNullHelper(arg1)))));
41222 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41222); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41222; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41223 static_assert(!std::is_pointer_v<decltype(result)>,
41224 "NewObject implies that we need to keep the object alive with a strong reference.");
41225 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41226 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41226); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41226; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41227 return false;
41228 }
41229 return true;
41230 } while (false);
41231 }
41232 GlobalObject global(cx, obj);
41233 if (global.Failed()) {
41234 return false;
41235 }
41236
41237 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
41238 Nullable<bool> arg1;
41239 if (args[1].isNullOrUndefined()) {
41240 arg1.SetNull();
41241 } else if (!ValueToPrimitive<bool, eDefault>(cx, args[1], "Argument 2", &arg1.SetValue())) {
41242 return false;
41243 }
41244 Maybe<JSAutoRealm> ar;
41245 if (objIsXray) {
41246 // Since our object is an Xray, we can just CheckedUnwrapStatic:
41247 // we know Xrays have no dynamic unwrap behavior.
41248 obj = js::CheckedUnwrapStatic(obj);
41249 if (!obj) {
41250 return false;
41251 }
41252 ar.emplace(cx, obj);
41253 if (!JS_WrapObject(cx, &desiredProto)) {
41254 return false;
41255 }
41256 }
41257 auto result(StrongOrRawPtr<mozilla::dom::TestExampleInterface>(mozilla::dom::TestExampleInterface::Constructor(global, arg0, Constify(arg1))));
41258 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41258); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41258; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41259 static_assert(!std::is_pointer_v<decltype(result)>,
41260 "NewObject implies that we need to keep the object alive with a strong reference.");
41261 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
41262 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41262); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 41262; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41263 return false;
41264 }
41265 return true;
41266 break;
41267 }
41268 default: {
41269 // Using nsPrintfCString here would require including that
41270 // header. Let's not worry about it.
41271 nsAutoCString argCountStr;
41272 argCountStr.AppendPrintf("%u", args.length());
41273 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
41274 }
41275 }
41276 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 41276); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 41276; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
41277 return false;
41278}
41279
41280static const DOMInterfaceInfo sInterfaceObjectInfo = {
41281 { _constructor, &sNativePropertyHooks },
41282 JS::GetRealmFunctionPrototypeHandle,
41283 prototypes::id::TestExampleInterface,
41284 PrototypeTraits<prototypes::id::TestExampleInterface>::Depth,
41285 true,
41286};
41287
41288bool sLegacyFactoryFunctionNativePropertiesInited = true;
41289const NativePropertyHooks sLegacyFactoryFunctionNativePropertyHooks = {
41290 nullptr,
41291 { nullptr, nullptr, &sLegacyFactoryFunctionNativePropertiesInited },
41292 prototypes::id::TestExampleInterface,
41293 constructors::id::TestExampleInterface,
41294 nullptr
41295};
41296
41297static const LegacyFactoryFunction legacyFactoryFunctions[] = {
41298 { "Example", { _Example, &sLegacyFactoryFunctionNativePropertyHooks }, 0 },
41299 { "Example2", { _Example2, &sLegacyFactoryFunctionNativePropertyHooks }, 1 },
41300};
41301
41302MOZ_CAN_RUN_SCRIPT static bool
41303_legacycaller(JSContext* cx_, unsigned argc, JS::Value* vp)
41304{
41305 BindingCallContext cx(cx_, "TestExampleInterface legacy caller");
41306 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
41307 JS::Rooted<JSObject*> obj(cx, &args.callee());
41308
41309 mozilla::dom::TestExampleInterface* self;
41310 JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
41311 {
41312 // Our JSContext should be in the right global to do unwrapping in.
41313 nsresult rv = UnwrapObject<prototypes::id::TestExampleInterface, mozilla::dom::TestExampleInterface>(&rootSelf, self, cx);
41314 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
41315 MOZ_CRASH("Unexpected object in '_legacycaller' hook")do { do { } while (false); MOZ_ReportCrash("" "Unexpected object in '_legacycaller' hook"
, "../TestExampleGenBinding.cpp", 41315); AnnotateMozCrashReason
("MOZ_CRASH(" "Unexpected object in '_legacycaller' hook" ")"
); do { *((volatile int*)__null) = 41315; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
41316 return false;
41317 }
41318 }
41319 if (!args.requireAtLeast(cx, "TestExampleInterface legacy caller", 2)) {
41320 return false;
41321 }
41322 uint32_t arg0;
41323 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
41324 return false;
41325 }
41326 NonNull<mozilla::dom::TestInterface> arg1;
41327 if (args[1].isObject()) {
41328 {
41329 // Our JSContext should be in the right global to do unwrapping in.
41330 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[1], arg1, cx);
41331 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
41332 cx.ThrowErrorMessage<MSG_DOES_NOT_IMPLEMENT_INTERFACE>("Argument 2", "TestInterface");
41333 return false;
41334 }
41335 }
41336 } else {
41337 cx.ThrowErrorMessage<MSG_NOT_OBJECT>("Argument 2");
41338 return false;
41339 }
41340 int16_t result(MOZ_KnownLive(self)(self)->LegacyCall(args.thisv(), arg0, MOZ_KnownLive(NonNullHelper(arg1))(NonNullHelper(arg1))));
41341 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41341); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41341; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41342 args.rval().setInt32(int32_t(result));
41343 return true;
41344}
41345
41346static const DOMIfaceAndProtoJSClass sPrototypeClass = {
41347 {
41348 "TestExampleInterfacePrototype",
41349 JSCLASS_IS_DOMIFACEANDPROTOJSCLASSJSCLASS_USERBIT2 | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE0 + 1 /* slot for the JSObject holding the unforgeable properties */),
41350 JS_NULL_CLASS_OPS,
41351 JS_NULL_CLASS_SPEC,
41352 JS_NULL_CLASS_EXT,
41353 JS_NULL_OBJECT_OPS
41354 },
41355 eInterfacePrototype,
41356 prototypes::id::TestExampleInterface,
41357 PrototypeTraits<prototypes::id::TestExampleInterface>::Depth,
41358 &sNativePropertyHooks,
41359 JS::GetRealmObjectPrototype
41360};
41361
41362static JS::Handle<JSObject*>
41363GetProtoObjectHandle(JSContext* aCx);
41364
41365static const JSClassOps sClassOps = {
41366 _addProperty, /* addProperty */
41367 nullptr, /* delProperty */
41368 nullptr, /* enumerate */
41369 nullptr, /* newEnumerate */
41370 nullptr, /* resolve */
41371 nullptr, /* mayResolve */
41372 _finalize, /* finalize */
41373 _legacycaller, /* call */
41374 nullptr, /* construct */
41375 nullptr, /* trace */
41376};
41377
41378static const js::ClassExtension sClassExtension = {
41379 _objectMoved /* objectMovedOp */
41380};
41381
41382static const DOMJSClass sClass = {
41383 { "TestExampleInterface",
41384 JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(22),
41385 &sClassOps,
41386 JS_NULL_CLASS_SPEC,
41387 &sClassExtension,
41388 JS_NULL_OBJECT_OPS
41389 },
41390 { prototypes::id::TestExampleInterface, 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 },
41391 std::is_base_of_v<nsISupports, mozilla::dom::TestExampleInterface>,
41392 &sNativePropertyHooks,
41393 FindAssociatedGlobalForNative<mozilla::dom::TestExampleInterface>::Get,
41394 GetProtoObjectHandle,
41395 GetCCParticipant<mozilla::dom::TestExampleInterface>::Get(),
41396 nullptr,
41397 _getWrapperCache
41398};
41399static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS1,
41400 "Must have the right minimal number of reserved slots.");
41401static_assert(22 >= 22,
41402 "Must have enough reserved slots.");
41403
41404static bool
41405UpdateMemberSlots(JSContext* aCx, JS::Handle<JSObject*> aWrapper, mozilla::dom::TestExampleInterface* aObject)
41406{
41407 JS::Rooted<JS::Value> temp(aCx);
41408 JSJitGetterCallArgs args(&temp);
41409
41410 static_assert((DOM_INSTANCE_RESERVED_SLOTS1 + 1) < JS::shadow::Object::MAX_FIXED_SLOTS,
41411 "Not enough fixed slots to fit 'TestExampleInterface.cachedConstantByte. Ion's visitGetDOMMemberV/visitGetDOMMemberT assume StoreInSlot things are all in fixed slots.");
41412 if (!get_cachedConstantByte(aCx, aWrapper, aObject, args)) {
41413 return false;
41414 }
41415 // Getter handled setting our reserved slots
41416
41417 return true;
41418}
41419
41420bool
41421Wrap(JSContext* aCx, mozilla::dom::TestExampleInterface* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
41422{
41423 static_assert(!std::is_base_of_v<NonRefcountedDOMObject, mozilla::dom::TestExampleInterface>,
41424 "Shouldn't have wrappercached things that are not refcounted.");
41425 static_assert(std::is_same_v<decltype(aObject), mozilla::dom::TestExampleInterface*>);
41426 MOZ_ASSERT(ToSupportsIsCorrect(aObject))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsCorrect(aObject))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(ToSupportsIsCorrect(aObject)
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"ToSupportsIsCorrect(aObject)", "../TestExampleGenBinding.cpp"
, 41426); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsCorrect(aObject)"
")"); do { *((volatile int*)__null) = 41426; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
41427 MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx))do { if (aGivenProto) { do { static_assert( mozilla::detail::
AssertionConditionType<decltype(js::IsObjectInContextCompartment
(aGivenProto, aCx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(js::IsObjectInContextCompartment
(aGivenProto, aCx)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("js::IsObjectInContextCompartment(aGivenProto, aCx)", "../TestExampleGenBinding.cpp"
, 41427); AnnotateMozCrashReason("MOZ_ASSERT" "(" "js::IsObjectInContextCompartment(aGivenProto, aCx)"
")"); do { *((volatile int*)__null) = 41427; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
41428 MOZ_ASSERT(!aCache->GetWrapper(),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 41430); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 41430; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
41429 "You should probably not be using Wrap() directly; use "do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 41430); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 41430; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
41430 "GetOrCreateDOMReflector instead")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 41430); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 41430; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41431
41432 MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 41433); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 41433; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
41433 "nsISupports must be on our primary inheritance chain")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 41433); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 41433; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
41434
41435 // If the wrapper cache contains a dead reflector then finalize that
41436 // now, ensuring that the finalizer for the old reflector always
41437 // runs before the new reflector is created and attached. This
41438 // avoids the awkward situation where there are multiple reflector
41439 // objects that contain pointers to the same native.
41440
41441 if (JSObject* oldReflector = aCache->GetWrapperMaybeDead()) {
41442 _finalize(nullptr /* unused */, oldReflector);
41443 MOZ_ASSERT(!aCache->GetWrapperMaybeDead())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapperMaybeDead())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapperMaybeDead
()))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("!aCache->GetWrapperMaybeDead()", "../TestExampleGenBinding.cpp"
, 41443); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapperMaybeDead()"
")"); do { *((volatile int*)__null) = 41443; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
41444 }
41445
41446 JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
41447 if (!global) {
41448 return false;
41449 }
41450 MOZ_ASSERT(JS_IsGlobalObject(global))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsGlobalObject(global))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsGlobalObject(global))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsGlobalObject(global)"
, "../TestExampleGenBinding.cpp", 41450); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsGlobalObject(global)" ")"); do { *((volatile
int*)__null) = 41450; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
41451 JS::AssertObjectIsNotGray(global);
41452
41453 // That might have ended up wrapping us already, due to the wonders
41454 // of XBL. Check for that, and bail out as needed.
41455 aReflector.set(aCache->GetWrapper());
41456 if (aReflector) {
41457#ifdef DEBUG1
41458 AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
41459#endif // DEBUG
41460 return true;
41461 }
41462
41463 JSAutoRealm ar(aCx, global);
41464 JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
41465 if (!canonicalProto) {
41466 return false;
41467 }
41468 JS::Rooted<JSObject*> proto(aCx);
41469 if (aGivenProto) {
41470 proto = aGivenProto;
41471 // Unfortunately, while aGivenProto was in the compartment of aCx
41472 // coming in, we changed compartments to that of "parent" so may need
41473 // to wrap the proto here.
41474 if (js::GetContextCompartment(aCx) != JS::GetCompartment(proto)) {
41475 if (!JS_WrapObject(aCx, &proto)) {
41476 return false;
41477 }
41478 }
41479 } else {
41480 proto = canonicalProto;
41481 }
41482
41483 BindingJSObjectCreator<mozilla::dom::TestExampleInterface> creator(aCx);
41484 creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
41485 if (!aReflector) {
41486 return false;
41487 }
41488
41489 aCache->SetWrapper(aReflector);
41490
41491 // Important: do unforgeable property setup after we have handed
41492 // over ownership of the C++ object to obj as needed, so that if
41493 // we fail and it ends up GCed it won't have problems in the
41494 // finalizer trying to drop its ownership of the C++ object.
41495 JS::Rooted<JSObject*> unforgeableHolder(aCx,
41496 &JS::GetReservedSlot(canonicalProto, DOM_INTERFACE_PROTO_SLOTS_BASE0).toObject());
41497 if (!JS_InitializePropertiesFromCompatibleNativeObject(aCx, aReflector, unforgeableHolder)) {
41498 aCache->ReleaseWrapper(aObject);
41499 aCache->ClearWrapper();
41500 return false;
41501 }
41502 if (!UpdateMemberSlots(aCx, aReflector, aObject)) {
41503 aCache->ReleaseWrapper(aObject);
41504 aCache->ClearWrapper();
41505 return false;
41506 }
41507 creator.InitializationSucceeded();
41508
41509 MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 41510); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 41510; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
41510 aCache->GetWrapperPreserveColor() == aReflector)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 41510); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 41510; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
41511 // If proto != canonicalProto, we have to preserve our wrapper;
41512 // otherwise we won't be able to properly recreate it later, since
41513 // we won't know what proto to use. Note that we don't check
41514 // aGivenProto here, since it's entirely possible (and even
41515 // somewhat common) to have a non-null aGivenProto which is the
41516 // same as canonicalProto.
41517 if (proto != canonicalProto) {
41518 PreserveWrapper(aObject);
41519 }
41520
41521 return true;
41522}
41523
41524void
41525ClearCachedCachedByteValue(mozilla::dom::TestExampleInterface* aObject)
41526{
41527 JSObject* obj;
41528 obj = aObject->GetWrapper();
41529 if (!obj) {
41530 return;
41531 }
41532 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 0), JS::UndefinedValue());
41533 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 0));
41534}
41535
41536void
41537ClearCachedCachedWritableByteValue(mozilla::dom::TestExampleInterface* aObject)
41538{
41539 JSObject* obj;
41540 obj = aObject->GetWrapper();
41541 if (!obj) {
41542 return;
41543 }
41544 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 2), JS::UndefinedValue());
41545 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 2));
41546}
41547
41548void
41549ClearCachedCachedSelfValue(mozilla::dom::TestExampleInterface* aObject)
41550{
41551 JSObject* obj;
41552 obj = aObject->GetWrapper();
41553 if (!obj) {
41554 return;
41555 }
41556 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 3), JS::UndefinedValue());
41557 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 3));
41558}
41559
41560void
41561ClearCachedReadonlySequenceValue(mozilla::dom::TestExampleInterface* aObject)
41562{
41563 JSObject* obj;
41564 obj = aObject->GetWrapper();
41565 if (!obj) {
41566 return;
41567 }
41568 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 4), JS::UndefinedValue());
41569 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 4));
41570}
41571
41572void
41573ClearCachedReadonlySequenceOfDictionariesValue(mozilla::dom::TestExampleInterface* aObject)
41574{
41575 JSObject* obj;
41576 obj = aObject->GetWrapper();
41577 if (!obj) {
41578 return;
41579 }
41580 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 5), JS::UndefinedValue());
41581 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 5));
41582}
41583
41584void
41585ClearCachedReadonlyNullableSequenceOfDictionariesValue(mozilla::dom::TestExampleInterface* aObject)
41586{
41587 JSObject* obj;
41588 obj = aObject->GetWrapper();
41589 if (!obj) {
41590 return;
41591 }
41592 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 6), JS::UndefinedValue());
41593 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 6));
41594}
41595
41596void
41597ClearCachedReadonlyFrozenSequenceValue(mozilla::dom::TestExampleInterface* aObject)
41598{
41599 JSObject* obj;
41600 obj = aObject->GetWrapper();
41601 if (!obj) {
41602 return;
41603 }
41604 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 7), JS::UndefinedValue());
41605 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 7));
41606}
41607
41608void
41609ClearCachedReadonlyFrozenNullableSequenceValue(mozilla::dom::TestExampleInterface* aObject)
41610{
41611 JSObject* obj;
41612 obj = aObject->GetWrapper();
41613 if (!obj) {
41614 return;
41615 }
41616 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 8), JS::UndefinedValue());
41617 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 8));
41618}
41619
41620void
41621ClearCachedBooleanObservableArrayValue(mozilla::dom::TestExampleInterface* aObject)
41622{
41623 JSObject* obj;
41624 obj = aObject->GetWrapper();
41625 if (!obj) {
41626 return;
41627 }
41628 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 9), JS::UndefinedValue());
41629 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 9));
41630}
41631
41632void
41633ClearCachedObjectObservableArrayValue(mozilla::dom::TestExampleInterface* aObject)
41634{
41635 JSObject* obj;
41636 obj = aObject->GetWrapper();
41637 if (!obj) {
41638 return;
41639 }
41640 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 10), JS::UndefinedValue());
41641 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 10));
41642}
41643
41644void
41645ClearCachedAnyObservableArrayValue(mozilla::dom::TestExampleInterface* aObject)
41646{
41647 JSObject* obj;
41648 obj = aObject->GetWrapper();
41649 if (!obj) {
41650 return;
41651 }
41652 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 11), JS::UndefinedValue());
41653 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 11));
41654}
41655
41656void
41657ClearCachedInterfaceObservableArrayValue(mozilla::dom::TestExampleInterface* aObject)
41658{
41659 JSObject* obj;
41660 obj = aObject->GetWrapper();
41661 if (!obj) {
41662 return;
41663 }
41664 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 12), JS::UndefinedValue());
41665 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 12));
41666}
41667
41668void
41669ClearCachedNullableObservableArrayValue(mozilla::dom::TestExampleInterface* aObject)
41670{
41671 JSObject* obj;
41672 obj = aObject->GetWrapper();
41673 if (!obj) {
41674 return;
41675 }
41676 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 13), JS::UndefinedValue());
41677 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 13));
41678}
41679
41680void
41681ClearCachedReadonlyDictionaryValue(mozilla::dom::TestExampleInterface* aObject)
41682{
41683 JSObject* obj;
41684 obj = aObject->GetWrapper();
41685 if (!obj) {
41686 return;
41687 }
41688 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 14), JS::UndefinedValue());
41689 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 14));
41690}
41691
41692void
41693ClearCachedReadonlyNullableDictionaryValue(mozilla::dom::TestExampleInterface* aObject)
41694{
41695 JSObject* obj;
41696 obj = aObject->GetWrapper();
41697 if (!obj) {
41698 return;
41699 }
41700 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 15), JS::UndefinedValue());
41701 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 15));
41702}
41703
41704void
41705ClearCachedWritableDictionaryValue(mozilla::dom::TestExampleInterface* aObject)
41706{
41707 JSObject* obj;
41708 obj = aObject->GetWrapper();
41709 if (!obj) {
41710 return;
41711 }
41712 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 16), JS::UndefinedValue());
41713 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 16));
41714}
41715
41716void
41717ClearCachedReadonlyFrozenDictionaryValue(mozilla::dom::TestExampleInterface* aObject)
41718{
41719 JSObject* obj;
41720 obj = aObject->GetWrapper();
41721 if (!obj) {
41722 return;
41723 }
41724 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 17), JS::UndefinedValue());
41725 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 17));
41726}
41727
41728void
41729ClearCachedReadonlyFrozenNullableDictionaryValue(mozilla::dom::TestExampleInterface* aObject)
41730{
41731 JSObject* obj;
41732 obj = aObject->GetWrapper();
41733 if (!obj) {
41734 return;
41735 }
41736 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 18), JS::UndefinedValue());
41737 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 18));
41738}
41739
41740void
41741ClearCachedWritableFrozenDictionaryValue(mozilla::dom::TestExampleInterface* aObject)
41742{
41743 JSObject* obj;
41744 obj = aObject->GetWrapper();
41745 if (!obj) {
41746 return;
41747 }
41748 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 19), JS::UndefinedValue());
41749 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 19));
41750}
41751
41752void
41753ClearCachedReflectedHTMLAttributeReturningFrozenArrayValue(mozilla::dom::TestExampleInterface* aObject)
41754{
41755 JSObject* obj;
41756 obj = aObject->GetWrapper();
41757 if (!obj) {
41758 return;
41759 }
41760 JS::SetReservedSlot(obj, (DOM_INSTANCE_RESERVED_SLOTS1 + 20), JS::UndefinedValue());
41761 xpc::ClearXrayExpandoSlots(obj, (xpc::JSSLOT_EXPANDO_COUNT + 20));
41762}
41763
41764void
41765CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, DefineInterfaceProperty aDefineOnGlobal)
41766{
41767 JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::TestExampleInterface);
41768 JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::TestExampleInterface);
41769
41770 JS::Handle<JSObject*> parentProto(JS::GetRealmObjectPrototypeHandle(aCx));
41771 if (!parentProto) {
41772 return;
41773 }
41774
41775 JS::Handle<JSObject*> constructorProto(JS::GetRealmFunctionPrototypeHandle(aCx));
41776 if (!constructorProto) {
41777 return;
41778 }
41779
41780 dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
41781 &sPrototypeClass, protoCache,
41782 constructorProto, &sInterfaceObjectInfo, 0, false, Span(legacyFactoryFunctions),
41783 interfaceCache,
41784 sNativeProperties.Upcast(),
41785 sChromeOnlyNativeProperties.Upcast(),
41786 "TestExampleInterface",
41787 aDefineOnGlobal != DefineInterfaceProperty::No,
41788 nullptr,
41789 false,
41790 nullptr);
41791
41792 JS::AssertObjectIsNotGray(*protoCache);
41793 JS::Handle<JSObject*> proto = JS::Handle<JSObject*>::fromMarkedLocation(protoCache->unsafeAddress());
41794 if (!proto) {
41795 *protoCache = nullptr;
41796 if (interfaceCache) {
41797 *interfaceCache = nullptr;
41798 }
41799 return;
41800 }
41801
41802 JS::Rooted<JSObject*> unforgeableHolder(
41803 aCx, JS_NewObjectWithoutMetadata(aCx, sClass.ToJSClass(), proto));
41804 if (!unforgeableHolder) {
41805 *protoCache = nullptr;
41806 if (interfaceCache) {
41807 *interfaceCache = nullptr;
41808 }
41809 return;
41810 }
41811
41812 if (!DefineLegacyUnforgeableAttributes(aCx, unforgeableHolder, sUnforgeableAttributes)) {
41813 *protoCache = nullptr;
41814 if (interfaceCache) {
41815 *interfaceCache = nullptr;
41816 }
41817 return;
41818 }
41819 if (nsContentUtils::ThreadsafeIsSystemCaller(aCx)) {
41820 if (!DefineLegacyUnforgeableAttributes(aCx, unforgeableHolder, sChromeUnforgeableAttributes)) {
41821 *protoCache = nullptr;
41822 if (interfaceCache) {
41823 *interfaceCache = nullptr;
41824 }
41825 return;
41826 }
41827 }
41828 if (!DefineLegacyUnforgeableMethods(aCx, unforgeableHolder, sUnforgeableMethods)) {
41829 *protoCache = nullptr;
41830 if (interfaceCache) {
41831 *interfaceCache = nullptr;
41832 }
41833 return;
41834 }
41835 if (nsContentUtils::ThreadsafeIsSystemCaller(aCx)) {
41836 if (!DefineLegacyUnforgeableMethods(aCx, unforgeableHolder, sChromeUnforgeableMethods)) {
41837 *protoCache = nullptr;
41838 if (interfaceCache) {
41839 *interfaceCache = nullptr;
41840 }
41841 return;
41842 }
41843 }
41844
41845 if (*protoCache) {
41846 JS::SetReservedSlot(*protoCache, DOM_INTERFACE_PROTO_SLOTS_BASE0,
41847 JS::ObjectValue(*unforgeableHolder));
41848 }
41849}
41850
41851static JS::Handle<JSObject*>
41852GetProtoObjectHandle(JSContext* aCx)
41853{
41854 /* Get the interface prototype object for this class. This will create the
41855 object as needed. */
41856 return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestExampleInterface,
41857 &CreateInterfaceObjects,
41858 DefineInterfaceProperty::CheckExposure);
41859
41860}
41861
41862JS::Handle<JSObject*>
41863GetConstructorObjectHandle(JSContext* aCx)
41864{
41865 /* Get the interface object for this class. This will create the object as
41866 needed. */
41867
41868 return GetPerInterfaceObjectHandle(aCx, constructors::id::TestExampleInterface,
41869 &CreateInterfaceObjects,
41870 DefineInterfaceProperty::CheckExposure);
41871}
41872
41873} // namespace TestExampleInterface_Binding
41874
41875
41876
41877namespace TestExampleProxyInterface_Binding {
41878
41879MOZ_CAN_RUN_SCRIPT static bool
41880longIndexedGetter(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
41881{
41882 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject41885( cx, "TestExampleProxyInterface"
, "longIndexedGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41883 "TestExampleProxyInterface", "longIndexedGetter", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject41885( cx, "TestExampleProxyInterface"
, "longIndexedGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41884 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject41885( cx, "TestExampleProxyInterface"
, "longIndexedGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41885 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject41885( cx, "TestExampleProxyInterface"
, "longIndexedGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
41886
41887 auto* self = static_cast<mozilla::dom::TestExampleProxyInterface*>(void_self);
41888 if (!args.requireAtLeast(cx, "TestExampleProxyInterface.longIndexedGetter", 1)) {
41889 return false;
41890 }
41891 uint32_t arg0;
41892 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
41893 return false;
41894 }
41895 int32_t result(MOZ_KnownLive(self)(self)->LongIndexedGetter(arg0));
41896 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41896); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41896; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41897 args.rval().setInt32(int32_t(result));
41898 return true;
41899}
41900
41901static const JSJitInfo longIndexedGetter_methodinfo = {
41902 { (JSJitGetterOp)longIndexedGetter },
41903 { prototypes::id::TestExampleProxyInterface },
41904 { PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth },
41905 JSJitInfo::Method,
41906 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
41907 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
41908 false, /* isInfallible. False in setters. */
41909 false, /* isMovable. Not relevant for setters. */
41910 false, /* isEliminatable. Not relevant for setters. */
41911 false, /* isAlwaysInSlot. Only relevant for getters. */
41912 false, /* isLazilyCachedInSlot. Only relevant for getters. */
41913 false, /* isTypedMethod. Only relevant for methods. */
41914 0 /* Reserved slot index, if we're stored in a slot, else 0. */
41915};
41916
41917MOZ_CAN_RUN_SCRIPT static bool
41918longIndexedSetter(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
41919{
41920 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject41923( cx, "TestExampleProxyInterface"
, "longIndexedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41921 "TestExampleProxyInterface", "longIndexedSetter", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject41923( cx, "TestExampleProxyInterface"
, "longIndexedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41922 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject41923( cx, "TestExampleProxyInterface"
, "longIndexedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41923 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject41923( cx, "TestExampleProxyInterface"
, "longIndexedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
41924
41925 auto* self = static_cast<mozilla::dom::TestExampleProxyInterface*>(void_self);
41926 if (!args.requireAtLeast(cx, "TestExampleProxyInterface.longIndexedSetter", 2)) {
41927 return false;
41928 }
41929 uint32_t arg0;
41930 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
41931 return false;
41932 }
41933 int32_t arg1;
41934 if (!ValueToPrimitive<int32_t, eDefault>(cx, args[1], "Argument 2", &arg1)) {
41935 return false;
41936 }
41937 // NOTE: This assert does NOT call the function.
41938 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->LongIndexedSetter(arg0, arg1))>, "Should be returning void here");
41939 MOZ_KnownLive(self)(self)->LongIndexedSetter(arg0, arg1);
41940 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41940); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41940; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41941 args.rval().setUndefined();
41942 return true;
41943}
41944
41945static const JSJitInfo longIndexedSetter_methodinfo = {
41946 { (JSJitGetterOp)longIndexedSetter },
41947 { prototypes::id::TestExampleProxyInterface },
41948 { PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth },
41949 JSJitInfo::Method,
41950 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
41951 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
41952 false, /* isInfallible. False in setters. */
41953 false, /* isMovable. Not relevant for setters. */
41954 false, /* isEliminatable. Not relevant for setters. */
41955 false, /* isAlwaysInSlot. Only relevant for getters. */
41956 false, /* isLazilyCachedInSlot. Only relevant for getters. */
41957 false, /* isTypedMethod. Only relevant for methods. */
41958 0 /* Reserved slot index, if we're stored in a slot, else 0. */
41959};
41960
41961MOZ_CAN_RUN_SCRIPT static bool
41962get_length(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
41963{
41964 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject41967( cx, "TestExampleProxyInterface"
, "length", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
41965 "TestExampleProxyInterface", "length", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject41967( cx, "TestExampleProxyInterface"
, "length", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
41966 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject41967( cx, "TestExampleProxyInterface"
, "length", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
41967 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject41967( cx, "TestExampleProxyInterface"
, "length", JS::ProfilingCategoryPair::DOM, uint32_t(js::ProfilingStackFrame
::Flags::STRING_TEMPLATE_GETTER) | uint32_t(js::ProfilingStackFrame
::Flags::RELEVANT_FOR_JS))
;
41968
41969 auto* self = static_cast<mozilla::dom::TestExampleProxyInterface*>(void_self);
41970 uint32_t result(MOZ_KnownLive(self)(self)->Length());
41971 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 41971); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 41971; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
41972 args.rval().setNumber(result);
41973 return true;
41974}
41975
41976static const JSJitInfo length_getterinfo = {
41977 { get_length },
41978 { prototypes::id::TestExampleProxyInterface },
41979 { PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth },
41980 JSJitInfo::Getter,
41981 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
41982 JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
41983 true, /* isInfallible. False in setters. */
41984 false, /* isMovable. Not relevant for setters. */
41985 false, /* isEliminatable. Not relevant for setters. */
41986 false, /* isAlwaysInSlot. Only relevant for getters. */
41987 false, /* isLazilyCachedInSlot. Only relevant for getters. */
41988 false, /* isTypedMethod. Only relevant for methods. */
41989 0 /* Reserved slot index, if we're stored in a slot, else 0. */
41990};
41991
41992MOZ_CAN_RUN_SCRIPT static bool
41993myStringifier(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
41994{
41995 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject41998( cx, "TestExampleProxyInterface"
, "myStringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41996 "TestExampleProxyInterface", "myStringifier", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject41998( cx, "TestExampleProxyInterface"
, "myStringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41997 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject41998( cx, "TestExampleProxyInterface"
, "myStringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
41998 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject41998( cx, "TestExampleProxyInterface"
, "myStringifier", JS::ProfilingCategoryPair::DOM, uint32_t(js
::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
41999
42000 auto* self = static_cast<mozilla::dom::TestExampleProxyInterface*>(void_self);
42001 DOMString result;
42002 // NOTE: This assert does NOT call the function.
42003 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->MyStringifier(result))>, "Should be returning void here");
42004 MOZ_KnownLive(self)(self)->MyStringifier(result);
42005 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42005); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42005; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42006 if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
42007 return false;
42008 }
42009 return true;
42010}
42011
42012static const JSJitInfo myStringifier_methodinfo = {
42013 { (JSJitGetterOp)myStringifier },
42014 { prototypes::id::TestExampleProxyInterface },
42015 { PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth },
42016 JSJitInfo::Method,
42017 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
42018 JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
42019 false, /* isInfallible. False in setters. */
42020 false, /* isMovable. Not relevant for setters. */
42021 false, /* isEliminatable. Not relevant for setters. */
42022 false, /* isAlwaysInSlot. Only relevant for getters. */
42023 false, /* isLazilyCachedInSlot. Only relevant for getters. */
42024 false, /* isTypedMethod. Only relevant for methods. */
42025 0 /* Reserved slot index, if we're stored in a slot, else 0. */
42026};
42027
42028MOZ_CAN_RUN_SCRIPT static bool
42029shortNameGetter(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
42030{
42031 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject42034( cx, "TestExampleProxyInterface"
, "shortNameGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42032 "TestExampleProxyInterface", "shortNameGetter", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject42034( cx, "TestExampleProxyInterface"
, "shortNameGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42033 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject42034( cx, "TestExampleProxyInterface"
, "shortNameGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42034 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject42034( cx, "TestExampleProxyInterface"
, "shortNameGetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
42035
42036 auto* self = static_cast<mozilla::dom::TestExampleProxyInterface*>(void_self);
42037 if (!args.requireAtLeast(cx, "TestExampleProxyInterface.shortNameGetter", 1)) {
42038 return false;
42039 }
42040 binding_detail::FakeString<char16_t> arg0;
42041 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
42042 return false;
42043 }
42044 int16_t result(MOZ_KnownLive(self)(self)->ShortNameGetter(NonNullHelper(Constify(arg0))));
42045 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42045); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42045; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42046 args.rval().setInt32(int32_t(result));
42047 return true;
42048}
42049
42050static const JSJitInfo shortNameGetter_methodinfo = {
42051 { (JSJitGetterOp)shortNameGetter },
42052 { prototypes::id::TestExampleProxyInterface },
42053 { PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth },
42054 JSJitInfo::Method,
42055 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
42056 JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
42057 false, /* isInfallible. False in setters. */
42058 false, /* isMovable. Not relevant for setters. */
42059 false, /* isEliminatable. Not relevant for setters. */
42060 false, /* isAlwaysInSlot. Only relevant for getters. */
42061 false, /* isLazilyCachedInSlot. Only relevant for getters. */
42062 false, /* isTypedMethod. Only relevant for methods. */
42063 0 /* Reserved slot index, if we're stored in a slot, else 0. */
42064};
42065
42066MOZ_CAN_RUN_SCRIPT static bool
42067shortNamedSetter(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
42068{
42069 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject42072( cx, "TestExampleProxyInterface"
, "shortNamedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42070 "TestExampleProxyInterface", "shortNamedSetter", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject42072( cx, "TestExampleProxyInterface"
, "shortNamedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42071 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject42072( cx, "TestExampleProxyInterface"
, "shortNamedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42072 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject42072( cx, "TestExampleProxyInterface"
, "shortNamedSetter", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
42073
42074 auto* self = static_cast<mozilla::dom::TestExampleProxyInterface*>(void_self);
42075 if (!args.requireAtLeast(cx, "TestExampleProxyInterface.shortNamedSetter", 2)) {
42076 return false;
42077 }
42078 binding_detail::FakeString<char16_t> arg0;
42079 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
42080 return false;
42081 }
42082 int16_t arg1;
42083 if (!ValueToPrimitive<int16_t, eDefault>(cx, args[1], "Argument 2", &arg1)) {
42084 return false;
42085 }
42086 // NOTE: This assert does NOT call the function.
42087 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->ShortNamedSetter(NonNullHelper(Constify(arg0)), arg1))>, "Should be returning void here");
42088 MOZ_KnownLive(self)(self)->ShortNamedSetter(NonNullHelper(Constify(arg0)), arg1);
42089 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42089); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42089; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42090 args.rval().setUndefined();
42091 return true;
42092}
42093
42094static const JSJitInfo shortNamedSetter_methodinfo = {
42095 { (JSJitGetterOp)shortNamedSetter },
42096 { prototypes::id::TestExampleProxyInterface },
42097 { PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth },
42098 JSJitInfo::Method,
42099 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
42100 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
42101 false, /* isInfallible. False in setters. */
42102 false, /* isMovable. Not relevant for setters. */
42103 false, /* isEliminatable. Not relevant for setters. */
42104 false, /* isAlwaysInSlot. Only relevant for getters. */
42105 false, /* isLazilyCachedInSlot. Only relevant for getters. */
42106 false, /* isTypedMethod. Only relevant for methods. */
42107 0 /* Reserved slot index, if we're stored in a slot, else 0. */
42108};
42109
42110static const JSFunctionSpec sMethods_specs[] = {
42111 JS_FNSPEC("longIndexedGetter", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&longIndexedGetter_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("longIndexedGetter"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&longIndexedGetter_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
42112 JS_FNSPEC("longIndexedSetter", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&longIndexedSetter_methodinfo), 2, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("longIndexedSetter"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&longIndexedSetter_methodinfo)}, 2, JSPROP_ENUMERATE
, nullptr}
,
42113 JS_FNSPEC("myStringifier", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&myStringifier_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("myStringifier"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&myStringifier_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
42114 JS_FNSPEC("shortNameGetter", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&shortNameGetter_methodinfo), 1, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("shortNameGetter"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&shortNameGetter_methodinfo)}, 1, JSPROP_ENUMERATE
, nullptr}
,
42115 JS_FNSPEC("shortNamedSetter", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&shortNamedSetter_methodinfo), 2, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("shortNamedSetter"), {(GenericMethod<
NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const
JSJitInfo*>(&shortNamedSetter_methodinfo)}, 2, JSPROP_ENUMERATE
, nullptr}
,
42116 JS_SYM_FNSPEC(iterator, nullptr, nullptr, 0, 0, "$ArrayValues"){JSFunctionSpec::Name(::JS::SymbolCode::iterator), {nullptr, nullptr
}, 0, 0, "$ArrayValues"}
,
42117 JS_FNSPEC("toString", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&myStringifier_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("toString"), {(GenericMethod<NormalThisPolicy
, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>
(&myStringifier_methodinfo)}, 0, JSPROP_ENUMERATE, nullptr
}
,
42118 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
42119};
42120
42121
42122static const Prefable<const JSFunctionSpec> sMethods[] = {
42123 { nullptr, &sMethods_specs[0] },
42124 { nullptr, nullptr }
42125};
42126
42127static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
42128 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
42129static_assert(7 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
42130 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
42131
42132static const JSPropertySpec sAttributes_specs[] = {
42133 JSPropertySpec::nativeAccessors("length", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &length_getterinfo, nullptr, nullptr),
42134 JS_PS_ENDJSPropertySpec::sentinel()
42135};
42136
42137
42138static const Prefable<const JSPropertySpec> sAttributes[] = {
42139 { nullptr, &sAttributes_specs[0] },
42140 { nullptr, nullptr }
42141};
42142
42143static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
42144 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
42145static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
42146 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
42147
42148
42149static uint16_t sNativeProperties_sortedPropertyIndices[8];
42150static PropertyInfo sNativeProperties_propertyInfos[8];
42151
42152static const NativePropertiesN<2> sNativeProperties = {
42153 false, 0,
42154 false, 0,
42155 true, 0 /* sMethods */,
42156 true, 1 /* sAttributes */,
42157 false, 0,
42158 false, 0,
42159 false, 0,
42160 -1,
42161 8,
42162 sNativeProperties_sortedPropertyIndices,
42163 {
42164 { sMethods, &sNativeProperties_propertyInfos[0] },
42165 { sAttributes, &sNativeProperties_propertyInfos[7] }
42166 }
42167};
42168static_assert(8 < 1ull << (CHAR_BIT8 * sizeof(sNativeProperties.propertyInfoCount)),
42169 "We have a property info count that is oversized");
42170
42171static_assert(std::is_base_of_v<nsISupports, mozilla::dom::TestExampleProxyInterface>,
42172 "We don't support non-nsISupports native classes for "
42173 "proxy-based bindings yet");
42174
42175
42176class DOMProxyHandler : public mozilla::dom::DOMProxyHandler
42177{
42178public:
42179 explicit constexpr DOMProxyHandler()
42180 {
42181 }
42182
42183 bool
42184 getOwnPropDescriptor(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool ignoreNamedProps, JS::MutableHandle<Maybe<JS::PropertyDescriptor>> desc) const override;
42185
42186 bool
42187 defineProperty(JSContext* cx_, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::Handle<JS::PropertyDescriptor> desc, JS::ObjectOpResult& opresult, bool* done) const override;
42188
42189 using mozilla::dom::DOMProxyHandler::defineProperty;
42190
42191 bool
42192 ownPropNames(JSContext* cx, JS::Handle<JSObject*> proxy, unsigned flags, JS::MutableHandleVector<jsid> props) const override;
42193
42194 bool
42195 hasOwn(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool* bp) const override;
42196
42197 bool
42198 get(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<JS::Value> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) const override;
42199
42200 const char*
42201 className(JSContext* cx, JS::Handle<JSObject*> proxy) const override;
42202
42203 bool
42204 finalizeInBackground(const JS::Value& priv) const override;
42205
42206 void
42207 finalize(JS::GCContext* gcx, JSObject* proxy) const override;
42208
42209 static const DOMProxyHandler*
42210 getInstance();
42211
42212 bool
42213 delete_(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::ObjectOpResult& opresult) const override;
42214
42215 bool
42216 getElements(JSContext* cx, JS::Handle<JSObject*> proxy, uint32_t begin, uint32_t end, js::ElementAdder* adder) const override;
42217
42218 bool
42219 setCustom(JSContext* cx_, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::Handle<JS::Value> v, bool* done) const override;
42220
42221 size_t
42222 objectMoved(JSObject* obj, JSObject* old) const override;
42223};
42224
42225MOZ_ALWAYS_INLINEinline bool
42226IsProxy(JSObject* obj)
42227{
42228 return js::IsProxy(obj) && js::GetProxyHandler(obj) == DOMProxyHandler::getInstance();
42229}
42230
42231MOZ_ALWAYS_INLINEinline mozilla::dom::TestExampleProxyInterface*
42232UnwrapProxy(JSObject* obj)
42233{
42234 MOZ_ASSERT(js::IsProxy(obj))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(js::IsProxy(obj))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(js::IsProxy(obj)))), 0))) { do
{ } while (false); MOZ_ReportAssertionFailure("js::IsProxy(obj)"
, "../TestExampleGenBinding.cpp", 42234); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "js::IsProxy(obj)" ")"); do { *((volatile int
*)__null) = 42234; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42235 if (js::GetProxyHandler(obj) != DOMProxyHandler::getInstance()) {
42236 MOZ_ASSERT(xpc::WrapperFactory::IsXrayWrapper(obj))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(xpc::WrapperFactory::IsXrayWrapper(obj))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(xpc::WrapperFactory::IsXrayWrapper(obj)))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("xpc::WrapperFactory::IsXrayWrapper(obj)"
, "../TestExampleGenBinding.cpp", 42236); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "xpc::WrapperFactory::IsXrayWrapper(obj)" ")"
); do { *((volatile int*)__null) = 42236; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
42237 obj = js::UncheckedUnwrap(obj);
42238 }
42239 MOZ_ASSERT(IsProxy(obj))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsProxy(obj))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsProxy(obj)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("IsProxy(obj)", "../TestExampleGenBinding.cpp"
, 42239); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsProxy(obj)"
")"); do { *((volatile int*)__null) = 42239; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
42240 return static_cast<mozilla::dom::TestExampleProxyInterface*>(js::GetProxyReservedSlot(obj, DOM_OBJECT_SLOT0).toPrivate());
42241}
42242
42243static bool
42244DeleteNamedProperty(JSContext* cx, JS::Handle<JSObject*> xray, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::ObjectOpResult& opresult)
42245{
42246 MOZ_ASSERT(xpc::WrapperFactory::IsXrayWrapper(xray))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(xpc::WrapperFactory::IsXrayWrapper(xray))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(xpc::WrapperFactory::IsXrayWrapper(xray)))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("xpc::WrapperFactory::IsXrayWrapper(xray)"
, "../TestExampleGenBinding.cpp", 42246); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "xpc::WrapperFactory::IsXrayWrapper(xray)" ")"
); do { *((volatile int*)__null) = 42246; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
42247 MOZ_ASSERT(js::IsProxy(proxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(js::IsProxy(proxy))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(js::IsProxy(proxy)))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("js::IsProxy(proxy)"
, "../TestExampleGenBinding.cpp", 42247); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "js::IsProxy(proxy)" ")"); do { *((volatile
int*)__null) = 42247; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42248 MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
, "../TestExampleGenBinding.cpp", 42248); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
")"); do { *((volatile int*)__null) = 42248; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
42249 JSAutoRealm ar(cx, proxy);
42250 bool deleteSucceeded = false;
42251 bool found = false;
42252 FakeString<char16_t> nomnom;
42253 bool isSymbol;
42254 if (!ConvertIdToString(cx, id, nomnom, isSymbol)) {
42255 return false;
42256 }
42257 if (!isSymbol) {
42258 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42259 // NOTE: This assert does NOT call the function.
42260 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NamedDeleter(NonNullHelper(Constify(nomnom)), found))>, "Should be returning void here");
42261 MOZ_KnownLive(self)(self)->NamedDeleter(NonNullHelper(Constify(nomnom)), found);
42262 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42262); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42262; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42263 }
42264 deleteSucceeded = true;
42265 if (!found || deleteSucceeded) {
42266 return opresult.succeed();
42267 }
42268 return opresult.failCantDelete();
42269}
42270
42271const NativeNamedOrIndexedPropertyHooks sNativeNamedOrIndexedPropertyHooks = {
42272 binding_detail::ResolveOwnProperty,
42273 binding_detail::EnumerateOwnProperties,
42274 DeleteNamedProperty
42275};
42276bool sNativePropertiesInited = false;
42277const NativePropertyHooks sNativePropertyHooks = {
42278 &sNativeNamedOrIndexedPropertyHooks,
42279 { sNativeProperties.Upcast(), nullptr, &sNativePropertiesInited },
42280 prototypes::id::TestExampleProxyInterface,
42281 constructors::id::TestExampleProxyInterface,
42282 &DefaultXrayExpandoObjectClass
42283};
42284
42285static const DOMInterfaceInfo sInterfaceObjectInfo = {
42286 { ThrowingConstructor, &sNativePropertyHooks },
42287 JS::GetRealmFunctionPrototypeHandle,
42288 prototypes::id::TestExampleProxyInterface,
42289 PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth,
42290 true,
42291};
42292
42293static const DOMIfaceAndProtoJSClass sPrototypeClass = {
42294 {
42295 "TestExampleProxyInterfacePrototype",
42296 JSCLASS_IS_DOMIFACEANDPROTOJSCLASSJSCLASS_USERBIT2 | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE0),
42297 JS_NULL_CLASS_OPS,
42298 JS_NULL_CLASS_SPEC,
42299 JS_NULL_CLASS_EXT,
42300 JS_NULL_OBJECT_OPS
42301 },
42302 eInterfacePrototype,
42303 prototypes::id::TestExampleProxyInterface,
42304 PrototypeTraits<prototypes::id::TestExampleProxyInterface>::Depth,
42305 &sNativePropertyHooks,
42306 JS::GetRealmObjectPrototype
42307};
42308
42309static JS::Handle<JSObject*>
42310GetProtoObjectHandle(JSContext* aCx);
42311
42312bool
42313DOMProxyHandler::getOwnPropDescriptor(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool ignoreNamedProps, JS::MutableHandle<Maybe<JS::PropertyDescriptor>> desc) const
42314{
42315 bool isXray = xpc::WrapperFactory::IsXrayWrapper(proxy);
42316 uint32_t index = GetArrayIndexFromId(id);
42317 if (IsArrayIndex(index)) {
42318 JS::Rooted<JS::Value> value(cx);
42319 uint32_t ix = index;
42320 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42321 bool found = false;
42322 int32_t result(MOZ_KnownLive(self)(self)->IndexedGetter(ix, found));
42323 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42323); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42323; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42324
42325 if (found) {
42326 value.setInt32(int32_t(result));
42327 desc.set(mozilla::Some(JS::PropertyDescriptor::Data(value, { JS::PropertyAttribute::Configurable, JS::PropertyAttribute::Enumerable, JS::PropertyAttribute::Writable })));
42328 return true;
42329 }
42330 }
42331
42332 JS::Rooted<JSObject*> expando(cx);
42333 if (!isXray &&(expando = GetExpandoObject(proxy))) {
42334 if (!JS_GetOwnPropertyDescriptorById(cx, expando, id, desc)) {
42335 return false;
42336 }
42337 if (desc.isSome()) {
42338 return true;
42339 }
42340 }
42341
42342 bool callNamedGetter = false;
42343 if (!IsArrayIndex(index) && !ignoreNamedProps) {
42344 bool hasOnProto;
42345 if (!HasPropertyOnPrototype(cx, proxy, id, &hasOnProto)) {
42346 return false;
42347 }
42348 callNamedGetter = !hasOnProto;
42349 }
42350 if (callNamedGetter) {
42351 JS::Rooted<JS::Value> value(cx);
42352 FakeString<char16_t> nom;
42353 bool isSymbol;
42354 if (!ConvertIdToString(cx, id, nom, isSymbol)) {
42355 return false;
42356 }
42357 if (!isSymbol) {
42358 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42359 bool found = false;
42360 int16_t result(MOZ_KnownLive(self)(self)->NamedGetter(NonNullHelper(Constify(nom)), found));
42361 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42361); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42361; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42362
42363 if (found) {
42364 value.setInt32(int32_t(result));
42365 desc.set(mozilla::Some(JS::PropertyDescriptor::Data(value, { JS::PropertyAttribute::Configurable, JS::PropertyAttribute::Enumerable, JS::PropertyAttribute::Writable })));
42366 return true;
42367 }
42368 }
42369 }
42370
42371 desc.reset();
42372 return true;
42373}
42374
42375bool
42376DOMProxyHandler::defineProperty(JSContext* cx_, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::Handle<JS::PropertyDescriptor> desc, JS::ObjectOpResult& opresult, bool* done) const
42377{
42378 uint32_t index = GetArrayIndexFromId(id);
42379 if (IsArrayIndex(index)) {
42380 JSContext* cx = cx_;
42381 *done = true;
42382 // https://webidl.spec.whatwg.org/#legacy-platform-object-defineownproperty
42383 // Step 1.1. The no-indexed-setter case is handled by step 1.2.
42384 if (!desc.isDataDescriptor()) {
42385 return opresult.failNotDataDescriptor();
42386 }
42387
42388 uint32_t y = index;
42389 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42390 JS::Rooted<JS::Value> rootedValue(cx, desc.value());
42391 int32_t z;
42392 if (!ValueToPrimitive<int32_t, eDefault>(cx, desc.value(), "Value being assigned to TestExampleProxyInterface setter", &z)) {
42393 return false;
42394 }
42395 // NOTE: This assert does NOT call the function.
42396 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->IndexedSetter(y, z))>, "Should be returning void here");
42397 MOZ_KnownLive(self)(self)->IndexedSetter(y, z);
42398 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42398); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42398; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42399 return opresult.succeed();
42400 }
42401 JSContext* cx = cx_;
42402 // https://webidl.spec.whatwg.org/#legacy-platform-object-defineownproperty
42403 // Step 2.2.2.1.
42404 if (!desc.isDataDescriptor()) {
42405 *done = true;
42406 return opresult.failNotDataDescriptor();
42407 }
42408 FakeString<char16_t> me;
42409 bool isSymbol;
42410 if (!ConvertIdToString(cx, id, me, isSymbol)) {
42411 return false;
42412 }
42413 if (!isSymbol) {
42414 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42415 JS::Rooted<JS::Value> rootedValue(cx, desc.value());
42416 int16_t value;
42417 if (!ValueToPrimitive<int16_t, eDefault>(cx, desc.value(), "Value being assigned to TestExampleProxyInterface setter", &value)) {
42418 return false;
42419 }
42420 // NOTE: This assert does NOT call the function.
42421 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NamedSetter(NonNullHelper(Constify(me)), value))>, "Should be returning void here");
42422 MOZ_KnownLive(self)(self)->NamedSetter(NonNullHelper(Constify(me)), value);
42423 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42423); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42423; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42424 *done = true;
42425 return opresult.succeed();
42426 }
42427 return mozilla::dom::DOMProxyHandler::defineProperty(cx_, proxy, id, desc, opresult, done);
42428}
42429
42430
42431bool
42432DOMProxyHandler::ownPropNames(JSContext* cx, JS::Handle<JSObject*> proxy, unsigned flags, JS::MutableHandleVector<jsid> props) const
42433{
42434 bool isXray = xpc::WrapperFactory::IsXrayWrapper(proxy);
42435
42436 uint32_t length = UnwrapProxy(proxy)->Length();
42437 MOZ_ASSERT(int32_t(length) >= 0)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(int32_t(length) >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(int32_t(length) >= 0))), 0
))) { do { } while (false); MOZ_ReportAssertionFailure("int32_t(length) >= 0"
, "../TestExampleGenBinding.cpp", 42437); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "int32_t(length) >= 0" ")"); do { *((volatile
int*)__null) = 42437; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42438 for (int32_t i = 0; i < int32_t(length); ++i) {
42439 if (!props.append(JS::PropertyKey::Int(i))) {
42440 return false;
42441 }
42442 }
42443
42444 nsTArray<nsString> names;
42445 UnwrapProxy(proxy)->GetSupportedNames(names);
42446 if (!AppendNamedPropertyIds(cx, proxy, names, false, props)) {
42447 return false;
42448 }
42449
42450 JS::Rooted<JSObject*> expando(cx);
42451 if (!isXray &&(expando = DOMProxyHandler::GetExpandoObject(proxy)) &&
42452 !js::GetPropertyKeys(cx, expando, flags, props)) {
42453 return false;
42454 }
42455
42456 return true;
42457}
42458
42459bool
42460DOMProxyHandler::hasOwn(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool* bp) const
42461{
42462 MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42463); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42463; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42463 "Should not have a XrayWrapper here")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42463); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42463; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42464 uint32_t index = GetArrayIndexFromId(id);
42465 if (IsArrayIndex(index)) {
42466 bool found = false;
42467 uint32_t ix = index;
42468 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42469 int32_t result(MOZ_KnownLive(self)(self)->IndexedGetter(ix, found));
42470 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42470); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42470; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42471 (void)result;
42472
42473 *bp = found;
42474 return true;
42475 }
42476
42477
42478 JS::Rooted<JSObject*> expando(cx, GetExpandoObject(proxy));
42479 if (expando) {
42480 bool b = true;
42481 bool ok = JS_HasPropertyById(cx, expando, id, &b);
42482 *bp = !!b;
42483 if (!ok || *bp) {
42484 return ok;
42485 }
42486 }
42487
42488 bool hasOnProto;
42489 if (!HasPropertyOnPrototype(cx, proxy, id, &hasOnProto)) {
42490 return false;
42491 }
42492 if (!hasOnProto) {
42493 bool found = false;
42494 FakeString<char16_t> nom;
42495 bool isSymbol;
42496 if (!ConvertIdToString(cx, id, nom, isSymbol)) {
42497 return false;
42498 }
42499 if (!isSymbol) {
42500 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42501 int16_t result(MOZ_KnownLive(self)(self)->NamedGetter(NonNullHelper(Constify(nom)), found));
42502 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42502); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42502; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42503 (void)result;
42504 }
42505
42506 *bp = found;
42507 return true;
42508 }
42509 *bp = false;
42510 return true;
42511}
42512
42513bool
42514DOMProxyHandler::get(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<JS::Value> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) const
42515{
42516 MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42517); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42517; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42517 "Should not have a XrayWrapper here")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42517); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42517; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42518
42519 uint32_t index = GetArrayIndexFromId(id);
42520 if (IsArrayIndex(index)) {
42521 uint32_t ix = index;
42522 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42523 bool found = false;
42524 int32_t result(MOZ_KnownLive(self)(self)->IndexedGetter(ix, found));
42525 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42525); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42525; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42526
42527 if (found) {
42528 vp.setInt32(int32_t(result));
42529 return true;
42530 }
42531 // Even if we don't have this index, we don't forward the
42532 // get on to our expando object.
42533 } else {
42534 bool expandoHasProp = false;
42535 { // Scope for expando
42536 JS::Rooted<JSObject*> expando(cx, DOMProxyHandler::GetExpandoObject(proxy));
42537 if (expando) {
42538 if (!JS_HasPropertyById(cx, expando, id, &expandoHasProp)) {
42539 return false;
42540 }
42541
42542 if (expandoHasProp) {
42543 // Forward the get to the expando object, but our receiver is whatever our
42544 // receiver is.
42545 if (!JS_ForwardGetPropertyTo(cx, expando, id, receiver, vp)) {
42546 return false;
42547 }
42548 }
42549 }
42550 }
42551
42552 if (expandoHasProp) {
42553 return true;
42554 }
42555 }
42556
42557 bool foundOnPrototype;
42558 if (!GetPropertyOnPrototype(cx, proxy, receiver, id, &foundOnPrototype, vp)) {
42559 return false;
42560 }
42561
42562 if (foundOnPrototype) {
42563 return true;
42564 }
42565
42566 MOZ_ASSERT(vp.isUndefined())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(vp.isUndefined())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(vp.isUndefined()))), 0))) { do
{ } while (false); MOZ_ReportAssertionFailure("vp.isUndefined()"
, "../TestExampleGenBinding.cpp", 42566); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "vp.isUndefined()" ")"); do { *((volatile int
*)__null) = 42566; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42567 if (!IsArrayIndex(index)) {
42568 FakeString<char16_t> nom;
42569 bool isSymbol;
42570 if (!ConvertIdToString(cx, id, nom, isSymbol)) {
42571 return false;
42572 }
42573 if (!isSymbol) {
42574 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42575 bool found = false;
42576 int16_t result(MOZ_KnownLive(self)(self)->NamedGetter(NonNullHelper(Constify(nom)), found));
42577 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42577); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42577; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42578
42579 if (found) {
42580 vp.setInt32(int32_t(result));
42581 return true;
42582 }
42583 }
42584 }
42585
42586 return true;
42587}
42588
42589const char*
42590DOMProxyHandler::className(JSContext* cx, JS::Handle<JSObject*> proxy) const
42591{
42592 return "TestExampleProxyInterface";
42593}
42594
42595bool
42596DOMProxyHandler::finalizeInBackground(const JS::Value& priv) const
42597{
42598 return false;
42599}
42600
42601void
42602DOMProxyHandler::finalize(JS::GCContext* gcx, JSObject* proxy) const
42603{
42604 mozilla::dom::TestExampleProxyInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleProxyInterface>(proxy);
42605 if (self) {
42606 JS::SetReservedSlot(proxy, DOM_OBJECT_SLOT0, JS::UndefinedValue());
42607 ClearWrapper(self, self, proxy);
42608 if (size_t mallocBytes = BindingJSObjectMallocBytes(self)) {
42609 JS::RemoveAssociatedMemory(proxy, mallocBytes,
42610 JS::MemoryUse::DOMBinding);
42611 }
42612 AddForDeferredFinalization<mozilla::dom::TestExampleProxyInterface>(self);
42613 }
42614}
42615
42616const DOMProxyHandler*
42617DOMProxyHandler::getInstance()
42618{
42619 static const DOMProxyHandler instance;
42620 return &instance;
42621}
42622
42623bool
42624DOMProxyHandler::delete_(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::ObjectOpResult& opresult) const
42625{
42626 MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42627); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42627; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42627 "Should not have a XrayWrapper here")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42627); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42627; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42628
42629 uint32_t index = GetArrayIndexFromId(id);
42630 if (IsArrayIndex(index)) {
42631 bool deleteSucceeded;
42632 bool found = false;
42633 uint32_t ix = index;
42634 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42635 int32_t result(MOZ_KnownLive(self)(self)->IndexedGetter(ix, found));
42636 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42636); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42636; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42637 (void)result;
42638 deleteSucceeded = !found;
42639 return deleteSucceeded ? opresult.succeed() : opresult.failCantDelete();
42640 }
42641 // Try named delete only if the named property visibility
42642 // algorithm says the property is visible.
42643 bool tryNamedDelete = true;
42644 { // Scope for expando
42645 JS::Rooted<JSObject*> expando(cx, DOMProxyHandler::GetExpandoObject(proxy));
42646 if (expando) {
42647 bool hasProp;
42648 if (!JS_HasPropertyById(cx, expando, id, &hasProp)) {
42649 return false;
42650 }
42651 tryNamedDelete = !hasProp;
42652 }
42653 }
42654 if (tryNamedDelete) {
42655 bool hasOnProto;
42656 if (!HasPropertyOnPrototype(cx, proxy, id, &hasOnProto)) {
42657 return false;
42658 }
42659 tryNamedDelete = !hasOnProto;
42660 }
42661 if (tryNamedDelete) {
42662 bool found = false;
42663 bool deleteSucceeded;
42664 FakeString<char16_t> nomnom;
42665 bool isSymbol;
42666 if (!ConvertIdToString(cx, id, nomnom, isSymbol)) {
42667 return false;
42668 }
42669 if (!isSymbol) {
42670 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42671 // NOTE: This assert does NOT call the function.
42672 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NamedDeleter(NonNullHelper(Constify(nomnom)), found))>, "Should be returning void here");
42673 MOZ_KnownLive(self)(self)->NamedDeleter(NonNullHelper(Constify(nomnom)), found);
42674 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42674); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42674; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42675 }
42676 deleteSucceeded = true;
42677 if (found) {
42678 return deleteSucceeded ? opresult.succeed() : opresult.failCantDelete();
42679 }
42680 }
42681
42682 return dom::DOMProxyHandler::delete_(cx, proxy, id, opresult);
42683}
42684
42685bool
42686DOMProxyHandler::getElements(JSContext* cx, JS::Handle<JSObject*> proxy, uint32_t begin, uint32_t end, js::ElementAdder* adder) const
42687{
42688 JS::Rooted<JS::Value> temp(cx);
42689 MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42690); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42690; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42690 "Should not have a XrayWrapper here")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42690); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42690; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42691
42692 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42693 uint32_t length = self->Length();
42694 // Compute the end of the indices we'll get ourselves
42695 uint32_t ourEnd = std::max(begin, std::min(end, length));
42696
42697 for (uint32_t index = begin; index < ourEnd; ++index) {
42698 uint32_t ix = index;
42699 bool found = false;
42700 int32_t result(MOZ_KnownLive(self)(self)->IndexedGetter(ix, found));
42701 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42701); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42701; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42702
42703 MOZ_ASSERT(found)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(found)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(found))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("found", "../TestExampleGenBinding.cpp"
, 42703); AnnotateMozCrashReason("MOZ_ASSERT" "(" "found" ")"
); do { *((volatile int*)__null) = 42703; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
42704 temp.setInt32(int32_t(result));
42705 if (!adder->append(cx, temp)) return false;
42706 continue;
42707 }
42708
42709 if (end > ourEnd) {
42710 JS::Rooted<JSObject*> proto(cx);
42711 if (!js::GetObjectProto(cx, proxy, &proto)) {
42712 return false;
42713 }
42714 return js::GetElementsWithAdder(cx, proto, proxy, ourEnd, end, adder);
42715 }
42716
42717 return true;
42718}
42719
42720bool
42721DOMProxyHandler::setCustom(JSContext* cx_, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, JS::Handle<JS::Value> v, bool* done) const
42722{
42723 MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42724); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42724; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42724 "Should not have a XrayWrapper here")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!xpc::WrapperFactory::IsXrayWrapper(proxy))>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!xpc::WrapperFactory::IsXrayWrapper(proxy)))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!xpc::WrapperFactory::IsXrayWrapper(proxy)"
" (" "Should not have a XrayWrapper here" ")", "../TestExampleGenBinding.cpp"
, 42724); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!xpc::WrapperFactory::IsXrayWrapper(proxy)"
") (" "Should not have a XrayWrapper here" ")"); do { *((volatile
int*)__null) = 42724; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42725 uint32_t index = GetArrayIndexFromId(id);
42726 if (IsArrayIndex(index)) {
42727 JSContext* cx = cx_;
42728 uint32_t y = index;
42729 mozilla::dom::TestExampleProxyInterface* self = UnwrapProxy(proxy);
42730 JS::Rooted<JS::Value> rootedValue(cx, v);
42731 int32_t z;
42732 if (!ValueToPrimitive<int32_t, eDefault>(cx, v, "Value being assigned to TestExampleProxyInterface setter", &z)) {
42733 return false;
42734 }
42735 // NOTE: This assert does NOT call the function.
42736 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->IndexedSetter(y, z))>, "Should be returning void here");
42737 MOZ_KnownLive(self)(self)->IndexedSetter(y, z);
42738 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 42738); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 42738; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
42739 *done = true;
42740 return true;
42741 }
42742
42743 *done = false;
42744 return true;
42745}
42746
42747size_t
42748DOMProxyHandler::objectMoved(JSObject* obj, JSObject* old) const
42749{
42750 mozilla::dom::TestExampleProxyInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleProxyInterface>(obj);
42751 if (self) {
42752 UpdateWrapper(self, self, obj, old);
42753 }
42754
42755 return 0;
42756}
42757
42758static const DOMJSClass sClass = {
42759 PROXY_CLASS_DEF("TestExampleProxyInterface",{"TestExampleProxyInterface", JSClass::NON_NATIVE | JSCLASS_IS_PROXY
| JSCLASS_DELAY_METADATA_BUILDER | js::CheckProxyFlags<JSCLASS_IS_DOMJSCLASS
| JSCLASS_HAS_RESERVED_SLOTS(1)>(), &js::ProxyClassOps
, JS_NULL_CLASS_SPEC, &js::ProxyClassExtension, &js::
ProxyObjectOps}
42760 JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(1)){"TestExampleProxyInterface", JSClass::NON_NATIVE | JSCLASS_IS_PROXY
| JSCLASS_DELAY_METADATA_BUILDER | js::CheckProxyFlags<JSCLASS_IS_DOMJSCLASS
| JSCLASS_HAS_RESERVED_SLOTS(1)>(), &js::ProxyClassOps
, JS_NULL_CLASS_SPEC, &js::ProxyClassExtension, &js::
ProxyObjectOps}
,
42761 { prototypes::id::TestExampleProxyInterface, 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 },
42762 std::is_base_of_v<nsISupports, mozilla::dom::TestExampleProxyInterface>,
42763 &sNativePropertyHooks,
42764 FindAssociatedGlobalForNative<mozilla::dom::TestExampleProxyInterface>::Get,
42765 GetProtoObjectHandle,
42766 GetCCParticipant<mozilla::dom::TestExampleProxyInterface>::Get(),
42767 nullptr,
42768 nullptr
42769};
42770
42771bool
42772Wrap(JSContext* aCx, mozilla::dom::TestExampleProxyInterface* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
42773{
42774 static_assert(!std::is_base_of_v<NonRefcountedDOMObject, mozilla::dom::TestExampleProxyInterface>,
42775 "Shouldn't have wrappercached things that are not refcounted.");
42776 static_assert(std::is_same_v<decltype(aObject), mozilla::dom::TestExampleProxyInterface*>);
42777 MOZ_ASSERT(ToSupportsIsCorrect(aObject))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsCorrect(aObject))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(ToSupportsIsCorrect(aObject)
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"ToSupportsIsCorrect(aObject)", "../TestExampleGenBinding.cpp"
, 42777); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsCorrect(aObject)"
")"); do { *((volatile int*)__null) = 42777; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
42778 MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx))do { if (aGivenProto) { do { static_assert( mozilla::detail::
AssertionConditionType<decltype(js::IsObjectInContextCompartment
(aGivenProto, aCx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(js::IsObjectInContextCompartment
(aGivenProto, aCx)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("js::IsObjectInContextCompartment(aGivenProto, aCx)", "../TestExampleGenBinding.cpp"
, 42778); AnnotateMozCrashReason("MOZ_ASSERT" "(" "js::IsObjectInContextCompartment(aGivenProto, aCx)"
")"); do { *((volatile int*)__null) = 42778; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
42779 MOZ_ASSERT(!aCache->GetWrapper(),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 42781); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 42781; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42780 "You should probably not be using Wrap() directly; use "do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 42781); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 42781; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
42781 "GetOrCreateDOMReflector instead")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 42781); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 42781; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42782
42783 MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 42784); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 42784; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
42784 "nsISupports must be on our primary inheritance chain")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 42784); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 42784; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
42785
42786 // If the wrapper cache contains a dead reflector then finalize that
42787 // now, ensuring that the finalizer for the old reflector always
42788 // runs before the new reflector is created and attached. This
42789 // avoids the awkward situation where there are multiple reflector
42790 // objects that contain pointers to the same native.
42791
42792 if (JSObject* oldReflector = aCache->GetWrapperMaybeDead()) {
42793 DOMProxyHandler::getInstance()->finalize(nullptr /* unused */, oldReflector);
42794 MOZ_ASSERT(!aCache->GetWrapperMaybeDead())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapperMaybeDead())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapperMaybeDead
()))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("!aCache->GetWrapperMaybeDead()", "../TestExampleGenBinding.cpp"
, 42794); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapperMaybeDead()"
")"); do { *((volatile int*)__null) = 42794; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
42795 }
42796
42797 JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
42798 if (!global) {
42799 return false;
42800 }
42801 MOZ_ASSERT(JS_IsGlobalObject(global))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsGlobalObject(global))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsGlobalObject(global))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsGlobalObject(global)"
, "../TestExampleGenBinding.cpp", 42801); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsGlobalObject(global)" ")"); do { *((volatile
int*)__null) = 42801; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
42802 JS::AssertObjectIsNotGray(global);
42803
42804 // That might have ended up wrapping us already, due to the wonders
42805 // of XBL. Check for that, and bail out as needed.
42806 aReflector.set(aCache->GetWrapper());
42807 if (aReflector) {
42808#ifdef DEBUG1
42809 AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
42810#endif // DEBUG
42811 return true;
42812 }
42813
42814 JSAutoRealm ar(aCx, global);
42815 JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
42816 if (!canonicalProto) {
42817 return false;
42818 }
42819 JS::Rooted<JSObject*> proto(aCx);
42820 if (aGivenProto) {
42821 proto = aGivenProto;
42822 // Unfortunately, while aGivenProto was in the compartment of aCx
42823 // coming in, we changed compartments to that of "parent" so may need
42824 // to wrap the proto here.
42825 if (js::GetContextCompartment(aCx) != JS::GetCompartment(proto)) {
42826 if (!JS_WrapObject(aCx, &proto)) {
42827 return false;
42828 }
42829 }
42830 } else {
42831 proto = canonicalProto;
42832 }
42833
42834 BindingJSObjectCreator<mozilla::dom::TestExampleProxyInterface> creator(aCx);
42835 creator.CreateProxyObject(aCx, &sClass.mBase, DOMProxyHandler::getInstance(),
42836 proto, /* aLazyProto = */ false,
42837 aObject, JS::UndefinedHandleValue, aReflector);
42838 if (!aReflector) {
42839 return false;
42840 }
42841
42842 aCache->SetWrapper(aReflector);
42843 creator.InitializationSucceeded();
42844
42845 MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 42846); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 42846; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
42846 aCache->GetWrapperPreserveColor() == aReflector)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 42846); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 42846; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
42847 // If proto != canonicalProto, we have to preserve our wrapper;
42848 // otherwise we won't be able to properly recreate it later, since
42849 // we won't know what proto to use. Note that we don't check
42850 // aGivenProto here, since it's entirely possible (and even
42851 // somewhat common) to have a non-null aGivenProto which is the
42852 // same as canonicalProto.
42853 if (proto != canonicalProto) {
42854 PreserveWrapper(aObject);
42855 }
42856
42857 return true;
42858}
42859
42860void
42861CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, DefineInterfaceProperty aDefineOnGlobal)
42862{
42863 JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::TestExampleProxyInterface);
42864 JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::TestExampleProxyInterface);
42865
42866 JS::Handle<JSObject*> parentProto(JS::GetRealmObjectPrototypeHandle(aCx));
42867 if (!parentProto) {
42868 return;
42869 }
42870
42871 JS::Handle<JSObject*> constructorProto(JS::GetRealmFunctionPrototypeHandle(aCx));
42872 if (!constructorProto) {
42873 return;
42874 }
42875
42876 dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
42877 &sPrototypeClass, protoCache,
42878 constructorProto, &sInterfaceObjectInfo, 0, false, Span<const LegacyFactoryFunction, 0>{},
42879 interfaceCache,
42880 sNativeProperties.Upcast(),
42881 nullptr,
42882 "TestExampleProxyInterface",
42883 aDefineOnGlobal != DefineInterfaceProperty::No,
42884 nullptr,
42885 false,
42886 nullptr);
42887}
42888
42889static JS::Handle<JSObject*>
42890GetProtoObjectHandle(JSContext* aCx)
42891{
42892 /* Get the interface prototype object for this class. This will create the
42893 object as needed. */
42894 return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestExampleProxyInterface,
42895 &CreateInterfaceObjects,
42896 DefineInterfaceProperty::CheckExposure);
42897
42898}
42899
42900JS::Handle<JSObject*>
42901GetConstructorObjectHandle(JSContext* aCx)
42902{
42903 /* Get the interface object for this class. This will create the object as
42904 needed. */
42905
42906 return GetPerInterfaceObjectHandle(aCx, constructors::id::TestExampleProxyInterface,
42907 &CreateInterfaceObjects,
42908 DefineInterfaceProperty::CheckExposure);
42909}
42910
42911} // namespace TestExampleProxyInterface_Binding
42912
42913
42914
42915namespace TestExampleThrowingConstructorInterface_Binding {
42916
42917static bool
42918_addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
42919{
42920 mozilla::dom::TestExampleThrowingConstructorInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleThrowingConstructorInterface>(obj);
42921 // We don't want to preserve if we don't have a wrapper, and we
42922 // obviously can't preserve if we're not initialized.
42923 if (self && self->GetWrapperPreserveColor()) {
42924 PreserveWrapper(self);
42925 }
42926 return true;
42927}
42928
42929static void
42930_finalize(JS::GCContext* gcx, JSObject* obj)
42931{
42932 mozilla::dom::TestExampleThrowingConstructorInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleThrowingConstructorInterface>(obj);
42933 if (self) {
42934 JS::SetReservedSlot(obj, DOM_OBJECT_SLOT0, JS::UndefinedValue());
42935 ClearWrapper(self, self, obj);
42936 if (size_t mallocBytes = BindingJSObjectMallocBytes(self)) {
42937 JS::RemoveAssociatedMemory(obj, mallocBytes,
42938 JS::MemoryUse::DOMBinding);
42939 }
42940 AddForDeferredFinalization<mozilla::dom::TestExampleThrowingConstructorInterface>(self);
42941 }
42942}
42943
42944static nsWrapperCache*
42945_getWrapperCache(JS::Handle<JSObject*> obj)
42946{
42947 mozilla::dom::TestExampleThrowingConstructorInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleThrowingConstructorInterface>(obj);
42948 return self;
42949}
42950
42951static size_t
42952_objectMoved(JSObject* obj, JSObject* old)
42953{
42954 mozilla::dom::TestExampleThrowingConstructorInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleThrowingConstructorInterface>(obj);
42955 if (self) {
42956 UpdateWrapper(self, self, obj, old);
42957 }
42958
42959 return 0;
42960}
42961
42962bool sNativePropertiesInited = false;
42963const NativePropertyHooks sNativePropertyHooks = {
42964 nullptr,
42965 { nullptr, nullptr, &sNativePropertiesInited },
42966 prototypes::id::TestExampleThrowingConstructorInterface,
42967 constructors::id::TestExampleThrowingConstructorInterface,
42968 &DefaultXrayExpandoObjectClass
42969};
42970
42971static bool
42972_constructor(JSContext* cx_, unsigned argc, JS::Value* vp)
42973{
42974 BindingCallContext cx(cx_, "TestExampleThrowingConstructorInterface constructor");
42975 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject42977( cx, "TestExampleThrowingConstructorInterface"
, "constructor", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42976 "TestExampleThrowingConstructorInterface", "constructor", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject42977( cx, "TestExampleThrowingConstructorInterface"
, "constructor", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
42977 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject42977( cx, "TestExampleThrowingConstructorInterface"
, "constructor", JS::ProfilingCategoryPair::DOM, uint32_t(js::
ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
42978
42979 JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
42980 JS::Rooted<JSObject*> obj(cx, &args.callee());
42981 if (!args.isConstructing()) {
42982 return ThrowConstructorWithoutNew(cx, "TestExampleThrowingConstructorInterface");
42983 }
42984
42985 JS::Rooted<JSObject*> desiredProto(cx);
42986 if (!GetDesiredProto(cx, args,
42987 prototypes::id::TestExampleThrowingConstructorInterface,
42988 CreateInterfaceObjects,
42989 &desiredProto)) {
42990 return false;
42991 }
42992
42993 unsigned argcount = std::min(args.length(), 2u);
42994 switch (argcount) {
42995 case 0: {
42996 GlobalObject global(cx, obj);
42997 if (global.Failed()) {
42998 return false;
42999 }
43000
43001 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43002 Maybe<JSAutoRealm> ar;
43003 if (objIsXray) {
43004 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43005 // we know Xrays have no dynamic unwrap behavior.
43006 obj = js::CheckedUnwrapStatic(obj);
43007 if (!obj) {
43008 return false;
43009 }
43010 ar.emplace(cx, obj);
43011 if (!JS_WrapObject(cx, &desiredProto)) {
43012 return false;
43013 }
43014 }
43015 FastErrorResult rv;
43016 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, rv)));
43017 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43018 return false;
43019 }
43020 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43020); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43020; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43021 static_assert(!std::is_pointer_v<decltype(result)>,
43022 "NewObject implies that we need to keep the object alive with a strong reference.");
43023 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43024 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43024); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43024; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43025 return false;
43026 }
43027 return true;
43028 break;
43029 }
43030 case 1: {
43031 if (args[0].isNullOrUndefined()) {
43032 mozilla::dom::TestInterface* arg0;
43033 arg0 = nullptr;
43034 GlobalObject global(cx, obj);
43035 if (global.Failed()) {
43036 return false;
43037 }
43038
43039 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43040 Maybe<JSAutoRealm> ar;
43041 if (objIsXray) {
43042 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43043 // we know Xrays have no dynamic unwrap behavior.
43044 obj = js::CheckedUnwrapStatic(obj);
43045 if (!obj) {
43046 return false;
43047 }
43048 ar.emplace(cx, obj);
43049 if (!JS_WrapObject(cx, &desiredProto)) {
43050 return false;
43051 }
43052 }
43053 FastErrorResult rv;
43054 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, MOZ_KnownLive(Constify(arg0))(Constify(arg0)), rv)));
43055 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43056 return false;
43057 }
43058 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43058); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43058; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43059 static_assert(!std::is_pointer_v<decltype(result)>,
43060 "NewObject implies that we need to keep the object alive with a strong reference.");
43061 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43062 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43062); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43062; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43063 return false;
43064 }
43065 return true;
43066 }
43067 if (args[0].isObject()) {
43068 do {
43069 mozilla::dom::TestInterface* arg0;
43070 {
43071 // Our JSContext should be in the right global to do unwrapping in.
43072 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[0], arg0, cx);
43073 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
43074 break;
43075 }
43076 }
43077 GlobalObject global(cx, obj);
43078 if (global.Failed()) {
43079 return false;
43080 }
43081
43082 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43083 Maybe<JSAutoRealm> ar;
43084 if (objIsXray) {
43085 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43086 // we know Xrays have no dynamic unwrap behavior.
43087 obj = js::CheckedUnwrapStatic(obj);
43088 if (!obj) {
43089 return false;
43090 }
43091 ar.emplace(cx, obj);
43092 if (!JS_WrapObject(cx, &desiredProto)) {
43093 return false;
43094 }
43095 }
43096 FastErrorResult rv;
43097 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, MOZ_KnownLive(Constify(arg0))(Constify(arg0)), rv)));
43098 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43099 return false;
43100 }
43101 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43101); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43101; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43102 static_assert(!std::is_pointer_v<decltype(result)>,
43103 "NewObject implies that we need to keep the object alive with a strong reference.");
43104 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43105 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43105); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43105; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43106 return false;
43107 }
43108 return true;
43109 } while (false);
43110 do {
43111 RootedSpiderMonkeyInterface<ArrayBuffer> arg0(cx);
43112 if (!arg0.Init(&args[0].toObject())) {
43113 break;
43114 }
43115 if (JS::IsSharedArrayBufferObject(arg0.Obj())) {
43116 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
43117 return false;
43118 }
43119 if (JS::IsLargeArrayBufferMaybeShared(arg0.Obj())) {
43120 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
43121 return false;
43122 }
43123 if (JS::IsResizableArrayBufferMaybeShared(arg0.Obj())) {
43124 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
43125 return false;
43126 }
43127 GlobalObject global(cx, obj);
43128 if (global.Failed()) {
43129 return false;
43130 }
43131
43132 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43133 Maybe<JSAutoRealm> ar;
43134 if (objIsXray) {
43135 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43136 // we know Xrays have no dynamic unwrap behavior.
43137 obj = js::CheckedUnwrapStatic(obj);
43138 if (!obj) {
43139 return false;
43140 }
43141 ar.emplace(cx, obj);
43142 if (!JS_WrapObject(cx, &desiredProto)) {
43143 return false;
43144 }
43145 if (!arg0.WrapIntoNewCompartment(cx)) {
43146 return false;
43147 }
43148 }
43149 FastErrorResult rv;
43150 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, Constify(arg0), rv)));
43151 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43152 return false;
43153 }
43154 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43154); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43154; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43155 static_assert(!std::is_pointer_v<decltype(result)>,
43156 "NewObject implies that we need to keep the object alive with a strong reference.");
43157 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43158 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43158); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43158; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43159 return false;
43160 }
43161 return true;
43162 } while (false);
43163 do {
43164 RootedSpiderMonkeyInterface<Uint8Array> arg0(cx);
43165 if (!arg0.Init(&args[0].toObject())) {
43166 break;
43167 }
43168 if (JS::IsArrayBufferViewShared(arg0.Obj())) {
43169 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_SHARED>("Argument 1");
43170 return false;
43171 }
43172 if (JS::IsLargeArrayBufferView(arg0.Obj())) {
43173 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_LARGE>("Argument 1");
43174 return false;
43175 }
43176 if (JS::IsResizableArrayBufferView(arg0.Obj())) {
43177 cx.ThrowErrorMessage<MSG_TYPEDARRAY_IS_RESIZABLE>("Argument 1");
43178 return false;
43179 }
43180 GlobalObject global(cx, obj);
43181 if (global.Failed()) {
43182 return false;
43183 }
43184
43185 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43186 Maybe<JSAutoRealm> ar;
43187 if (objIsXray) {
43188 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43189 // we know Xrays have no dynamic unwrap behavior.
43190 obj = js::CheckedUnwrapStatic(obj);
43191 if (!obj) {
43192 return false;
43193 }
43194 ar.emplace(cx, obj);
43195 if (!JS_WrapObject(cx, &desiredProto)) {
43196 return false;
43197 }
43198 if (!arg0.WrapIntoNewCompartment(cx)) {
43199 return false;
43200 }
43201 }
43202 FastErrorResult rv;
43203 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, Constify(arg0), rv)));
43204 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43205 return false;
43206 }
43207 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43207); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43207; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43208 static_assert(!std::is_pointer_v<decltype(result)>,
43209 "NewObject implies that we need to keep the object alive with a strong reference.");
43210 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43211 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43211); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43211; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43212 return false;
43213 }
43214 return true;
43215 } while (false);
43216 }
43217 GlobalObject global(cx, obj);
43218 if (global.Failed()) {
43219 return false;
43220 }
43221
43222 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43223 binding_detail::FakeString<char16_t> arg0;
43224 if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
43225 return false;
43226 }
43227 Maybe<JSAutoRealm> ar;
43228 if (objIsXray) {
43229 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43230 // we know Xrays have no dynamic unwrap behavior.
43231 obj = js::CheckedUnwrapStatic(obj);
43232 if (!obj) {
43233 return false;
43234 }
43235 ar.emplace(cx, obj);
43236 if (!JS_WrapObject(cx, &desiredProto)) {
43237 return false;
43238 }
43239 }
43240 FastErrorResult rv;
43241 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, NonNullHelper(Constify(arg0)), rv)));
43242 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43243 return false;
43244 }
43245 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43245); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43245; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43246 static_assert(!std::is_pointer_v<decltype(result)>,
43247 "NewObject implies that we need to keep the object alive with a strong reference.");
43248 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43249 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43249); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43249; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43250 return false;
43251 }
43252 return true;
43253 break;
43254 }
43255 case 2: {
43256 uint32_t arg0;
43257 if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[0], "Argument 1", &arg0)) {
43258 return false;
43259 }
43260 if (args[1].isObject()) {
43261 do {
43262 NonNull<mozilla::dom::TestInterface> arg1;
43263 {
43264 // Our JSContext should be in the right global to do unwrapping in.
43265 nsresult rv = UnwrapObject<prototypes::id::TestInterface, mozilla::dom::TestInterface>(args[1], arg1, cx);
43266 if (NS_FAILED(rv)((bool)(__builtin_expect(!!(NS_FAILED_impl(rv)), 0)))) {
43267 break;
43268 }
43269 }
43270 GlobalObject global(cx, obj);
43271 if (global.Failed()) {
43272 return false;
43273 }
43274
43275 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43276 Maybe<JSAutoRealm> ar;
43277 if (objIsXray) {
43278 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43279 // we know Xrays have no dynamic unwrap behavior.
43280 obj = js::CheckedUnwrapStatic(obj);
43281 if (!obj) {
43282 return false;
43283 }
43284 ar.emplace(cx, obj);
43285 if (!JS_WrapObject(cx, &desiredProto)) {
43286 return false;
43287 }
43288 }
43289 FastErrorResult rv;
43290 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, arg0, MOZ_KnownLive(NonNullHelper(arg1))(NonNullHelper(arg1)), rv)));
43291 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43292 return false;
43293 }
43294 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43294); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43294; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43295 static_assert(!std::is_pointer_v<decltype(result)>,
43296 "NewObject implies that we need to keep the object alive with a strong reference.");
43297 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43298 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43298); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43298; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43299 return false;
43300 }
43301 return true;
43302 } while (false);
43303 }
43304 GlobalObject global(cx, obj);
43305 if (global.Failed()) {
43306 return false;
43307 }
43308
43309 bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
43310 Nullable<bool> arg1;
43311 if (args[1].isNullOrUndefined()) {
43312 arg1.SetNull();
43313 } else if (!ValueToPrimitive<bool, eDefault>(cx, args[1], "Argument 2", &arg1.SetValue())) {
43314 return false;
43315 }
43316 Maybe<JSAutoRealm> ar;
43317 if (objIsXray) {
43318 // Since our object is an Xray, we can just CheckedUnwrapStatic:
43319 // we know Xrays have no dynamic unwrap behavior.
43320 obj = js::CheckedUnwrapStatic(obj);
43321 if (!obj) {
43322 return false;
43323 }
43324 ar.emplace(cx, obj);
43325 if (!JS_WrapObject(cx, &desiredProto)) {
43326 return false;
43327 }
43328 }
43329 FastErrorResult rv;
43330 auto result(StrongOrRawPtr<mozilla::dom::TestExampleThrowingConstructorInterface>(mozilla::dom::TestExampleThrowingConstructorInterface::Constructor(global, arg0, Constify(arg1), rv)));
43331 if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"))(__builtin_expect(!!(rv.MaybeSetPendingException(cx, "TestExampleThrowingConstructorInterface constructor"
)), 0))
) {
43332 return false;
43333 }
43334 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43334); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43334; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43335 static_assert(!std::is_pointer_v<decltype(result)>,
43336 "NewObject implies that we need to keep the object alive with a strong reference.");
43337 if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
43338 MOZ_ASSERT(JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsExceptionPending(cx))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43338); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsExceptionPending(cx)" ")"); do { *((volatile
int*)__null) = 43338; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43339 return false;
43340 }
43341 return true;
43342 break;
43343 }
43344 default: {
43345 // Using nsPrintfCString here would require including that
43346 // header. Let's not worry about it.
43347 nsAutoCString argCountStr;
43348 argCountStr.AppendPrintf("%u", args.length());
43349 return cx.ThrowErrorMessage<MSG_INVALID_OVERLOAD_ARGCOUNT>(argCountStr.get());
43350 }
43351 }
43352 MOZ_CRASH("We have an always-returning default case")do { do { } while (false); MOZ_ReportCrash("" "We have an always-returning default case"
, "../TestExampleGenBinding.cpp", 43352); AnnotateMozCrashReason
("MOZ_CRASH(" "We have an always-returning default case" ")")
; do { *((volatile int*)__null) = 43352; __attribute__((nomerge
)) ::abort(); } while (false); } while (false)
;
43353 return false;
43354}
43355
43356static const DOMInterfaceInfo sInterfaceObjectInfo = {
43357 { _constructor, &sNativePropertyHooks },
43358 JS::GetRealmFunctionPrototypeHandle,
43359 prototypes::id::TestExampleThrowingConstructorInterface,
43360 PrototypeTraits<prototypes::id::TestExampleThrowingConstructorInterface>::Depth,
43361 true,
43362};
43363
43364static const DOMIfaceAndProtoJSClass sPrototypeClass = {
43365 {
43366 "TestExampleThrowingConstructorInterfacePrototype",
43367 JSCLASS_IS_DOMIFACEANDPROTOJSCLASSJSCLASS_USERBIT2 | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE0),
43368 JS_NULL_CLASS_OPS,
43369 JS_NULL_CLASS_SPEC,
43370 JS_NULL_CLASS_EXT,
43371 JS_NULL_OBJECT_OPS
43372 },
43373 eInterfacePrototype,
43374 prototypes::id::TestExampleThrowingConstructorInterface,
43375 PrototypeTraits<prototypes::id::TestExampleThrowingConstructorInterface>::Depth,
43376 &sNativePropertyHooks,
43377 JS::GetRealmObjectPrototype
43378};
43379
43380static JS::Handle<JSObject*>
43381GetProtoObjectHandle(JSContext* aCx);
43382
43383static const JSClassOps sClassOps = {
43384 _addProperty, /* addProperty */
43385 nullptr, /* delProperty */
43386 nullptr, /* enumerate */
43387 nullptr, /* newEnumerate */
43388 nullptr, /* resolve */
43389 nullptr, /* mayResolve */
43390 _finalize, /* finalize */
43391 nullptr, /* call */
43392 nullptr, /* construct */
43393 nullptr, /* trace */
43394};
43395
43396static const js::ClassExtension sClassExtension = {
43397 _objectMoved /* objectMovedOp */
43398};
43399
43400static const DOMJSClass sClass = {
43401 { "TestExampleThrowingConstructorInterface",
43402 JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
43403 &sClassOps,
43404 JS_NULL_CLASS_SPEC,
43405 &sClassExtension,
43406 JS_NULL_OBJECT_OPS
43407 },
43408 { prototypes::id::TestExampleThrowingConstructorInterface, 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 },
43409 std::is_base_of_v<nsISupports, mozilla::dom::TestExampleThrowingConstructorInterface>,
43410 &sNativePropertyHooks,
43411 FindAssociatedGlobalForNative<mozilla::dom::TestExampleThrowingConstructorInterface>::Get,
43412 GetProtoObjectHandle,
43413 GetCCParticipant<mozilla::dom::TestExampleThrowingConstructorInterface>::Get(),
43414 nullptr,
43415 _getWrapperCache
43416};
43417static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS1,
43418 "Must have the right minimal number of reserved slots.");
43419static_assert(1 >= 1,
43420 "Must have enough reserved slots.");
43421
43422bool
43423Wrap(JSContext* aCx, mozilla::dom::TestExampleThrowingConstructorInterface* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
43424{
43425 static_assert(!std::is_base_of_v<NonRefcountedDOMObject, mozilla::dom::TestExampleThrowingConstructorInterface>,
43426 "Shouldn't have wrappercached things that are not refcounted.");
43427 static_assert(std::is_same_v<decltype(aObject), mozilla::dom::TestExampleThrowingConstructorInterface*>);
43428 MOZ_ASSERT(ToSupportsIsCorrect(aObject))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsCorrect(aObject))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(ToSupportsIsCorrect(aObject)
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"ToSupportsIsCorrect(aObject)", "../TestExampleGenBinding.cpp"
, 43428); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsCorrect(aObject)"
")"); do { *((volatile int*)__null) = 43428; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
43429 MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx))do { if (aGivenProto) { do { static_assert( mozilla::detail::
AssertionConditionType<decltype(js::IsObjectInContextCompartment
(aGivenProto, aCx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(js::IsObjectInContextCompartment
(aGivenProto, aCx)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("js::IsObjectInContextCompartment(aGivenProto, aCx)", "../TestExampleGenBinding.cpp"
, 43429); AnnotateMozCrashReason("MOZ_ASSERT" "(" "js::IsObjectInContextCompartment(aGivenProto, aCx)"
")"); do { *((volatile int*)__null) = 43429; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
43430 MOZ_ASSERT(!aCache->GetWrapper(),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 43432); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 43432; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
43431 "You should probably not be using Wrap() directly; use "do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 43432); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 43432; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
43432 "GetOrCreateDOMReflector instead")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 43432); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 43432; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43433
43434 MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 43435); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 43435; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
43435 "nsISupports must be on our primary inheritance chain")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 43435); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 43435; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
43436
43437 // If the wrapper cache contains a dead reflector then finalize that
43438 // now, ensuring that the finalizer for the old reflector always
43439 // runs before the new reflector is created and attached. This
43440 // avoids the awkward situation where there are multiple reflector
43441 // objects that contain pointers to the same native.
43442
43443 if (JSObject* oldReflector = aCache->GetWrapperMaybeDead()) {
43444 _finalize(nullptr /* unused */, oldReflector);
43445 MOZ_ASSERT(!aCache->GetWrapperMaybeDead())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapperMaybeDead())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapperMaybeDead
()))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("!aCache->GetWrapperMaybeDead()", "../TestExampleGenBinding.cpp"
, 43445); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapperMaybeDead()"
")"); do { *((volatile int*)__null) = 43445; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
43446 }
43447
43448 JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
43449 if (!global) {
43450 return false;
43451 }
43452 MOZ_ASSERT(JS_IsGlobalObject(global))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsGlobalObject(global))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsGlobalObject(global))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsGlobalObject(global)"
, "../TestExampleGenBinding.cpp", 43452); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsGlobalObject(global)" ")"); do { *((volatile
int*)__null) = 43452; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
43453 JS::AssertObjectIsNotGray(global);
43454
43455 // That might have ended up wrapping us already, due to the wonders
43456 // of XBL. Check for that, and bail out as needed.
43457 aReflector.set(aCache->GetWrapper());
43458 if (aReflector) {
43459#ifdef DEBUG1
43460 AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
43461#endif // DEBUG
43462 return true;
43463 }
43464
43465 JSAutoRealm ar(aCx, global);
43466 JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
43467 if (!canonicalProto) {
43468 return false;
43469 }
43470 JS::Rooted<JSObject*> proto(aCx);
43471 if (aGivenProto) {
43472 proto = aGivenProto;
43473 // Unfortunately, while aGivenProto was in the compartment of aCx
43474 // coming in, we changed compartments to that of "parent" so may need
43475 // to wrap the proto here.
43476 if (js::GetContextCompartment(aCx) != JS::GetCompartment(proto)) {
43477 if (!JS_WrapObject(aCx, &proto)) {
43478 return false;
43479 }
43480 }
43481 } else {
43482 proto = canonicalProto;
43483 }
43484
43485 BindingJSObjectCreator<mozilla::dom::TestExampleThrowingConstructorInterface> creator(aCx);
43486 creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
43487 if (!aReflector) {
43488 return false;
43489 }
43490
43491 aCache->SetWrapper(aReflector);
43492 creator.InitializationSucceeded();
43493
43494 MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 43495); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 43495; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
43495 aCache->GetWrapperPreserveColor() == aReflector)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 43495); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 43495; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
43496 // If proto != canonicalProto, we have to preserve our wrapper;
43497 // otherwise we won't be able to properly recreate it later, since
43498 // we won't know what proto to use. Note that we don't check
43499 // aGivenProto here, since it's entirely possible (and even
43500 // somewhat common) to have a non-null aGivenProto which is the
43501 // same as canonicalProto.
43502 if (proto != canonicalProto) {
43503 PreserveWrapper(aObject);
43504 }
43505
43506 return true;
43507}
43508
43509void
43510CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, DefineInterfaceProperty aDefineOnGlobal)
43511{
43512 JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::TestExampleThrowingConstructorInterface);
43513 JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::TestExampleThrowingConstructorInterface);
43514
43515 JS::Handle<JSObject*> parentProto(JS::GetRealmObjectPrototypeHandle(aCx));
43516 if (!parentProto) {
43517 return;
43518 }
43519
43520 JS::Handle<JSObject*> constructorProto(JS::GetRealmFunctionPrototypeHandle(aCx));
43521 if (!constructorProto) {
43522 return;
43523 }
43524
43525 dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
43526 &sPrototypeClass, protoCache,
43527 constructorProto, &sInterfaceObjectInfo, 0, false, Span<const LegacyFactoryFunction, 0>{},
43528 interfaceCache,
43529 nullptr,
43530 nullptr,
43531 "TestExampleThrowingConstructorInterface",
43532 aDefineOnGlobal != DefineInterfaceProperty::No,
43533 nullptr,
43534 false,
43535 nullptr);
43536}
43537
43538static JS::Handle<JSObject*>
43539GetProtoObjectHandle(JSContext* aCx)
43540{
43541 /* Get the interface prototype object for this class. This will create the
43542 object as needed. */
43543 return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestExampleThrowingConstructorInterface,
43544 &CreateInterfaceObjects,
43545 DefineInterfaceProperty::CheckExposure);
43546
43547}
43548
43549JS::Handle<JSObject*>
43550GetConstructorObjectHandle(JSContext* aCx)
43551{
43552 /* Get the interface object for this class. This will create the object as
43553 needed. */
43554
43555 return GetPerInterfaceObjectHandle(aCx, constructors::id::TestExampleThrowingConstructorInterface,
43556 &CreateInterfaceObjects,
43557 DefineInterfaceProperty::CheckExposure);
43558}
43559
43560} // namespace TestExampleThrowingConstructorInterface_Binding
43561
43562
43563
43564namespace TestExampleWorkerInterface_Binding {
43565
43566MOZ_CAN_RUN_SCRIPT static bool
43567needsSubjectPrincipalMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
43568{
43569 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43572( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43570 "TestExampleWorkerInterface", "needsSubjectPrincipalMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43572( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43571 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject43572( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43572 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43572( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalMethod", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
43573
43574 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43575 NonNull<nsIPrincipal> subjectPrincipal;
43576 {
43577 JS::Realm* realm = js::GetContextRealm(cx);
43578 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 43578); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 43578; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
43579 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
43580 nsIPrincipal* principal = nsJSPrincipals::get(principals);
43581
43582 subjectPrincipal = principal;
43583 }
43584 // NOTE: This assert does NOT call the function.
43585 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NeedsSubjectPrincipalMethod(MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal))))>, "Should be returning void here");
43586 MOZ_KnownLive(self)(self)->NeedsSubjectPrincipalMethod(MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal)));
43587 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43587); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43587; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43588 args.rval().setUndefined();
43589 return true;
43590}
43591
43592static const JSJitInfo needsSubjectPrincipalMethod_methodinfo = {
43593 { (JSJitGetterOp)needsSubjectPrincipalMethod },
43594 { prototypes::id::TestExampleWorkerInterface },
43595 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43596 JSJitInfo::Method,
43597 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43598 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
43599 true, /* isInfallible. False in setters. */
43600 false, /* isMovable. Not relevant for setters. */
43601 false, /* isEliminatable. Not relevant for setters. */
43602 false, /* isAlwaysInSlot. Only relevant for getters. */
43603 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43604 false, /* isTypedMethod. Only relevant for methods. */
43605 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43606};
43607
43608MOZ_CAN_RUN_SCRIPT static bool
43609get_needsSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
43610{
43611 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43614( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43612 "TestExampleWorkerInterface", "needsSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43614( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43613 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject43614( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43614 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43614( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
43615
43616 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43617 NonNull<nsIPrincipal> subjectPrincipal;
43618 {
43619 JS::Realm* realm = js::GetContextRealm(cx);
43620 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 43620); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 43620; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
43621 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
43622 nsIPrincipal* principal = nsJSPrincipals::get(principals);
43623
43624 subjectPrincipal = principal;
43625 }
43626 bool result(MOZ_KnownLive(self)(self)->NeedsSubjectPrincipalAttr(MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal))));
43627 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43627); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43627; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43628 args.rval().setBoolean(result);
43629 return true;
43630}
43631
43632MOZ_CAN_RUN_SCRIPT static bool
43633set_needsSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
43634{
43635 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43638( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43636 "TestExampleWorkerInterface", "needsSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43638( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43637 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject43638( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43638 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43638( cx, "TestExampleWorkerInterface"
, "needsSubjectPrincipalAttr", JS::ProfilingCategoryPair::DOM
, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
43639
43640 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43641 bool arg0;
43642 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
43643 return false;
43644 }
43645 NonNull<nsIPrincipal> subjectPrincipal;
43646 {
43647 JS::Realm* realm = js::GetContextRealm(cx);
43648 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 43648); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 43648; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
43649 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
43650 nsIPrincipal* principal = nsJSPrincipals::get(principals);
43651
43652 subjectPrincipal = principal;
43653 }
43654 // NOTE: This assert does NOT call the function.
43655 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNeedsSubjectPrincipalAttr(arg0, MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal))))>, "Should be returning void here");
43656 MOZ_KnownLive(self)(self)->SetNeedsSubjectPrincipalAttr(arg0, MOZ_KnownLive(NonNullHelper(subjectPrincipal))(NonNullHelper(subjectPrincipal)));
43657 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43657); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43657; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43658
43659 return true;
43660}
43661
43662static const JSJitInfo needsSubjectPrincipalAttr_getterinfo = {
43663 { get_needsSubjectPrincipalAttr },
43664 { prototypes::id::TestExampleWorkerInterface },
43665 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43666 JSJitInfo::Getter,
43667 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43668 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
43669 true, /* isInfallible. False in setters. */
43670 false, /* isMovable. Not relevant for setters. */
43671 false, /* isEliminatable. Not relevant for setters. */
43672 false, /* isAlwaysInSlot. Only relevant for getters. */
43673 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43674 false, /* isTypedMethod. Only relevant for methods. */
43675 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43676};
43677static const JSJitInfo needsSubjectPrincipalAttr_setterinfo = {
43678 { (JSJitGetterOp)set_needsSubjectPrincipalAttr },
43679 { prototypes::id::TestExampleWorkerInterface },
43680 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43681 JSJitInfo::Setter,
43682 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43683 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
43684 false, /* isInfallible. False in setters. */
43685 false, /* isMovable. Not relevant for setters. */
43686 false, /* isEliminatable. Not relevant for setters. */
43687 false, /* isAlwaysInSlot. Only relevant for getters. */
43688 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43689 false, /* isTypedMethod. Only relevant for methods. */
43690 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43691};
43692
43693MOZ_CAN_RUN_SCRIPT static bool
43694needsCallerTypeMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
43695{
43696 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43699( cx, "TestExampleWorkerInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43697 "TestExampleWorkerInterface", "needsCallerTypeMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43699( cx, "TestExampleWorkerInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43698 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject43699( cx, "TestExampleWorkerInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43699 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43699( cx, "TestExampleWorkerInterface"
, "needsCallerTypeMethod", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
43700
43701 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43702 // NOTE: This assert does NOT call the function.
43703 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NeedsCallerTypeMethod(nsContentUtils::ThreadsafeIsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem))>, "Should be returning void here");
43704 MOZ_KnownLive(self)(self)->NeedsCallerTypeMethod(nsContentUtils::ThreadsafeIsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
43705 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43705); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43705; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43706 args.rval().setUndefined();
43707 return true;
43708}
43709
43710static const JSJitInfo needsCallerTypeMethod_methodinfo = {
43711 { (JSJitGetterOp)needsCallerTypeMethod },
43712 { prototypes::id::TestExampleWorkerInterface },
43713 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43714 JSJitInfo::Method,
43715 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43716 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
43717 true, /* isInfallible. False in setters. */
43718 false, /* isMovable. Not relevant for setters. */
43719 false, /* isEliminatable. Not relevant for setters. */
43720 false, /* isAlwaysInSlot. Only relevant for getters. */
43721 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43722 false, /* isTypedMethod. Only relevant for methods. */
43723 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43724};
43725
43726MOZ_CAN_RUN_SCRIPT static bool
43727get_needsCallerTypeAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
43728{
43729 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43732( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43730 "TestExampleWorkerInterface", "needsCallerTypeAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43732( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43731 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject43732( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43732 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43732( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
43733
43734 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43735 bool result(MOZ_KnownLive(self)(self)->NeedsCallerTypeAttr(nsContentUtils::ThreadsafeIsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem));
43736 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43736); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43736; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43737 args.rval().setBoolean(result);
43738 return true;
43739}
43740
43741MOZ_CAN_RUN_SCRIPT static bool
43742set_needsCallerTypeAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
43743{
43744 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43747( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43745 "TestExampleWorkerInterface", "needsCallerTypeAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43747( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43746 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject43747( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
43747 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43747( cx, "TestExampleWorkerInterface"
, "needsCallerTypeAttr", JS::ProfilingCategoryPair::DOM, uint32_t
(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) | uint32_t
(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))
;
43748
43749 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43750 bool arg0;
43751 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
43752 return false;
43753 }
43754 // NOTE: This assert does NOT call the function.
43755 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNeedsCallerTypeAttr(arg0, nsContentUtils::ThreadsafeIsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem))>, "Should be returning void here");
43756 MOZ_KnownLive(self)(self)->SetNeedsCallerTypeAttr(arg0, nsContentUtils::ThreadsafeIsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
43757 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43757); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43757; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43758
43759 return true;
43760}
43761
43762static const JSJitInfo needsCallerTypeAttr_getterinfo = {
43763 { get_needsCallerTypeAttr },
43764 { prototypes::id::TestExampleWorkerInterface },
43765 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43766 JSJitInfo::Getter,
43767 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43768 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
43769 true, /* isInfallible. False in setters. */
43770 false, /* isMovable. Not relevant for setters. */
43771 false, /* isEliminatable. Not relevant for setters. */
43772 false, /* isAlwaysInSlot. Only relevant for getters. */
43773 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43774 false, /* isTypedMethod. Only relevant for methods. */
43775 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43776};
43777static const JSJitInfo needsCallerTypeAttr_setterinfo = {
43778 { (JSJitGetterOp)set_needsCallerTypeAttr },
43779 { prototypes::id::TestExampleWorkerInterface },
43780 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43781 JSJitInfo::Setter,
43782 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43783 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
43784 false, /* isInfallible. False in setters. */
43785 false, /* isMovable. Not relevant for setters. */
43786 false, /* isEliminatable. Not relevant for setters. */
43787 false, /* isAlwaysInSlot. Only relevant for getters. */
43788 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43789 false, /* isTypedMethod. Only relevant for methods. */
43790 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43791};
43792
43793MOZ_CAN_RUN_SCRIPT static bool
43794needsNonSystemSubjectPrincipalMethod(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, const JSJitMethodCallArgs& args)
43795{
43796 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43799( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43797 "TestExampleWorkerInterface", "needsNonSystemSubjectPrincipalMethod", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43799( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43798 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD) |mozilla::AutoProfilerLabelHot raiiObject43799( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43799 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43799( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalMethod", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_METHOD
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
43800
43801 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43802 nsIPrincipal* subjectPrincipal;
43803 {
43804 JS::Realm* realm = js::GetContextRealm(cx);
43805 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 43805); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 43805; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
43806 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
43807 nsIPrincipal* principal = nsJSPrincipals::get(principals);
43808 if (principal->IsSystemPrincipal()) {
43809 principal = nullptr;
43810 }
43811
43812 subjectPrincipal = principal;
43813 }
43814 // NOTE: This assert does NOT call the function.
43815 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->NeedsNonSystemSubjectPrincipalMethod(MOZ_KnownLive(subjectPrincipal)(subjectPrincipal)))>, "Should be returning void here");
43816 MOZ_KnownLive(self)(self)->NeedsNonSystemSubjectPrincipalMethod(MOZ_KnownLive(subjectPrincipal)(subjectPrincipal));
43817 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43817); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43817; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43818 args.rval().setUndefined();
43819 return true;
43820}
43821
43822static const JSJitInfo needsNonSystemSubjectPrincipalMethod_methodinfo = {
43823 { (JSJitGetterOp)needsNonSystemSubjectPrincipalMethod },
43824 { prototypes::id::TestExampleWorkerInterface },
43825 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43826 JSJitInfo::Method,
43827 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43828 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
43829 true, /* isInfallible. False in setters. */
43830 false, /* isMovable. Not relevant for setters. */
43831 false, /* isEliminatable. Not relevant for setters. */
43832 false, /* isAlwaysInSlot. Only relevant for getters. */
43833 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43834 false, /* isTypedMethod. Only relevant for methods. */
43835 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43836};
43837
43838MOZ_CAN_RUN_SCRIPT static bool
43839get_needsNonSystemSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitGetterCallArgs args)
43840{
43841 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43844( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43842 "TestExampleWorkerInterface", "needsNonSystemSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43844( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43843 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER) |mozilla::AutoProfilerLabelHot raiiObject43844( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43844 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43844( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_GETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
43845
43846 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43847 nsIPrincipal* subjectPrincipal;
43848 {
43849 JS::Realm* realm = js::GetContextRealm(cx);
43850 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 43850); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 43850; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
43851 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
43852 nsIPrincipal* principal = nsJSPrincipals::get(principals);
43853 if (principal->IsSystemPrincipal()) {
43854 principal = nullptr;
43855 }
43856
43857 subjectPrincipal = principal;
43858 }
43859 bool result(MOZ_KnownLive(self)(self)->NeedsNonSystemSubjectPrincipalAttr(MOZ_KnownLive(subjectPrincipal)(subjectPrincipal)));
43860 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43860); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43860; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43861 args.rval().setBoolean(result);
43862 return true;
43863}
43864
43865MOZ_CAN_RUN_SCRIPT static bool
43866set_needsNonSystemSubjectPrincipalAttr(JSContext* cx, JS::Handle<JSObject*> obj, void* void_self, JSJitSetterCallArgs args)
43867{
43868 AUTO_PROFILER_LABEL_DYNAMIC_FAST(mozilla::AutoProfilerLabelHot raiiObject43871( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43869 "TestExampleWorkerInterface", "needsNonSystemSubjectPrincipalAttr", DOM, cx,mozilla::AutoProfilerLabelHot raiiObject43871( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43870 uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER) |mozilla::AutoProfilerLabelHot raiiObject43871( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
43871 uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS))mozilla::AutoProfilerLabelHot raiiObject43871( cx, "TestExampleWorkerInterface"
, "needsNonSystemSubjectPrincipalAttr", JS::ProfilingCategoryPair
::DOM, uint32_t(js::ProfilingStackFrame::Flags::STRING_TEMPLATE_SETTER
) | uint32_t(js::ProfilingStackFrame::Flags::RELEVANT_FOR_JS)
)
;
43872
43873 auto* self = static_cast<mozilla::dom::TestExampleWorkerInterface*>(void_self);
43874 bool arg0;
43875 if (!ValueToPrimitive<bool, eDefault>(cx, args[0], "Value being assigned", &arg0)) {
43876 return false;
43877 }
43878 nsIPrincipal* subjectPrincipal;
43879 {
43880 JS::Realm* realm = js::GetContextRealm(cx);
43881 MOZ_ASSERT(realm)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(realm)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(realm))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("realm", "../TestExampleGenBinding.cpp"
, 43881); AnnotateMozCrashReason("MOZ_ASSERT" "(" "realm" ")"
); do { *((volatile int*)__null) = 43881; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
43882 JSPrincipals* principals = JS::GetRealmPrincipals(realm);
43883 nsIPrincipal* principal = nsJSPrincipals::get(principals);
43884 if (principal->IsSystemPrincipal()) {
43885 principal = nullptr;
43886 }
43887
43888 subjectPrincipal = principal;
43889 }
43890 // NOTE: This assert does NOT call the function.
43891 static_assert(std::is_void_v<decltype(MOZ_KnownLive(self)(self)->SetNeedsNonSystemSubjectPrincipalAttr(arg0, MOZ_KnownLive(subjectPrincipal)(subjectPrincipal)))>, "Should be returning void here");
43892 MOZ_KnownLive(self)(self)->SetNeedsNonSystemSubjectPrincipalAttr(arg0, MOZ_KnownLive(subjectPrincipal)(subjectPrincipal));
43893 MOZ_ASSERT(!JS_IsExceptionPending(cx))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!JS_IsExceptionPending(cx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!JS_IsExceptionPending(cx)))
), 0))) { do { } while (false); MOZ_ReportAssertionFailure("!JS_IsExceptionPending(cx)"
, "../TestExampleGenBinding.cpp", 43893); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "!JS_IsExceptionPending(cx)" ")"); do { *((
volatile int*)__null) = 43893; __attribute__((nomerge)) ::abort
(); } while (false); } } while (false)
;
43894
43895 return true;
43896}
43897
43898static const JSJitInfo needsNonSystemSubjectPrincipalAttr_getterinfo = {
43899 { get_needsNonSystemSubjectPrincipalAttr },
43900 { prototypes::id::TestExampleWorkerInterface },
43901 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43902 JSJitInfo::Getter,
43903 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43904 JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
43905 true, /* isInfallible. False in setters. */
43906 false, /* isMovable. Not relevant for setters. */
43907 false, /* isEliminatable. Not relevant for setters. */
43908 false, /* isAlwaysInSlot. Only relevant for getters. */
43909 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43910 false, /* isTypedMethod. Only relevant for methods. */
43911 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43912};
43913static const JSJitInfo needsNonSystemSubjectPrincipalAttr_setterinfo = {
43914 { (JSJitGetterOp)set_needsNonSystemSubjectPrincipalAttr },
43915 { prototypes::id::TestExampleWorkerInterface },
43916 { PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth },
43917 JSJitInfo::Setter,
43918 JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
43919 JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
43920 false, /* isInfallible. False in setters. */
43921 false, /* isMovable. Not relevant for setters. */
43922 false, /* isEliminatable. Not relevant for setters. */
43923 false, /* isAlwaysInSlot. Only relevant for getters. */
43924 false, /* isLazilyCachedInSlot. Only relevant for getters. */
43925 false, /* isTypedMethod. Only relevant for methods. */
43926 0 /* Reserved slot index, if we're stored in a slot, else 0. */
43927};
43928
43929static bool
43930_addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
43931{
43932 mozilla::dom::TestExampleWorkerInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleWorkerInterface>(obj);
43933 // We don't want to preserve if we don't have a wrapper, and we
43934 // obviously can't preserve if we're not initialized.
43935 if (self && self->GetWrapperPreserveColor()) {
43936 PreserveWrapper(self);
43937 }
43938 return true;
43939}
43940
43941static void
43942_finalize(JS::GCContext* gcx, JSObject* obj)
43943{
43944 mozilla::dom::TestExampleWorkerInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleWorkerInterface>(obj);
43945 if (self) {
43946 JS::SetReservedSlot(obj, DOM_OBJECT_SLOT0, JS::UndefinedValue());
43947 ClearWrapper(self, self, obj);
43948 if (size_t mallocBytes = BindingJSObjectMallocBytes(self)) {
43949 JS::RemoveAssociatedMemory(obj, mallocBytes,
43950 JS::MemoryUse::DOMBinding);
43951 }
43952 AddForDeferredFinalization<mozilla::dom::TestExampleWorkerInterface>(self);
43953 }
43954}
43955
43956static nsWrapperCache*
43957_getWrapperCache(JS::Handle<JSObject*> obj)
43958{
43959 mozilla::dom::TestExampleWorkerInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleWorkerInterface>(obj);
43960 return self;
43961}
43962
43963static size_t
43964_objectMoved(JSObject* obj, JSObject* old)
43965{
43966 mozilla::dom::TestExampleWorkerInterface* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::TestExampleWorkerInterface>(obj);
43967 if (self) {
43968 UpdateWrapper(self, self, obj, old);
43969 }
43970
43971 return 0;
43972}
43973
43974static const JSFunctionSpec sMethods_specs[] = {
43975 JS_FNSPEC("needsSubjectPrincipalMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&needsSubjectPrincipalMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("needsSubjectPrincipalMethod"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&needsSubjectPrincipalMethod_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
43976 JS_FNSPEC("needsCallerTypeMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&needsCallerTypeMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("needsCallerTypeMethod"), {(GenericMethod
<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<
const JSJitInfo*>(&needsCallerTypeMethod_methodinfo)},
0, JSPROP_ENUMERATE, nullptr}
,
43977 JS_FNSPEC("needsNonSystemSubjectPrincipalMethod", (GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast<const JSJitInfo*>(&needsNonSystemSubjectPrincipalMethod_methodinfo), 0, JSPROP_ENUMERATE, nullptr){JSFunctionSpec::Name("needsNonSystemSubjectPrincipalMethod")
, {(GenericMethod<NormalThisPolicy, ThrowExceptions>), reinterpret_cast
<const JSJitInfo*>(&needsNonSystemSubjectPrincipalMethod_methodinfo
)}, 0, JSPROP_ENUMERATE, nullptr}
,
43978 JS_FS_END{JSFunctionSpec::Name(nullptr), {nullptr, nullptr}, 0, 0, nullptr
}
43979};
43980
43981
43982static const Prefable<const JSFunctionSpec> sMethods[] = {
43983 { nullptr, &sMethods_specs[0] },
43984 { nullptr, nullptr }
43985};
43986
43987static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
43988 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
43989static_assert(3 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
43990 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
43991
43992static const JSPropertySpec sAttributes_specs[] = {
43993 JSPropertySpec::nativeAccessors("needsSubjectPrincipalAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &needsSubjectPrincipalAttr_getterinfo, GenericSetter<NormalThisPolicy>, &needsSubjectPrincipalAttr_setterinfo),
43994 JSPropertySpec::nativeAccessors("needsCallerTypeAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &needsCallerTypeAttr_getterinfo, GenericSetter<NormalThisPolicy>, &needsCallerTypeAttr_setterinfo),
43995 JSPropertySpec::nativeAccessors("needsNonSystemSubjectPrincipalAttr", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &needsNonSystemSubjectPrincipalAttr_getterinfo, GenericSetter<NormalThisPolicy>, &needsNonSystemSubjectPrincipalAttr_setterinfo),
43996 JS_PS_ENDJSPropertySpec::sentinel()
43997};
43998
43999
44000static const Prefable<const JSPropertySpec> sAttributes[] = {
44001 { nullptr, &sAttributes_specs[0] },
44002 { nullptr, nullptr }
44003};
44004
44005static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX13,
44006 "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
44007static_assert(3 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX16,
44008 "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
44009
44010
44011static uint16_t sNativeProperties_sortedPropertyIndices[6];
44012static PropertyInfo sNativeProperties_propertyInfos[6];
44013
44014static const NativePropertiesN<2> sNativeProperties = {
44015 false, 0,
44016 false, 0,
44017 true, 0 /* sMethods */,
44018 true, 1 /* sAttributes */,
44019 false, 0,
44020 false, 0,
44021 false, 0,
44022 -1,
44023 6,
44024 sNativeProperties_sortedPropertyIndices,
44025 {
44026 { sMethods, &sNativeProperties_propertyInfos[0] },
44027 { sAttributes, &sNativeProperties_propertyInfos[3] }
44028 }
44029};
44030static_assert(6 < 1ull << (CHAR_BIT8 * sizeof(sNativeProperties.propertyInfoCount)),
44031 "We have a property info count that is oversized");
44032
44033bool sNativePropertiesInited = false;
44034const NativePropertyHooks sNativePropertyHooks = {
44035 nullptr,
44036 { sNativeProperties.Upcast(), nullptr, &sNativePropertiesInited },
44037 prototypes::id::TestExampleWorkerInterface,
44038 constructors::id::TestExampleWorkerInterface,
44039 &DefaultXrayExpandoObjectClass
44040};
44041
44042static const DOMInterfaceInfo sInterfaceObjectInfo = {
44043 { ThrowingConstructor, &sNativePropertyHooks },
44044 JS::GetRealmFunctionPrototypeHandle,
44045 prototypes::id::TestExampleWorkerInterface,
44046 PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth,
44047 true,
44048};
44049
44050static const DOMIfaceAndProtoJSClass sPrototypeClass = {
44051 {
44052 "TestExampleWorkerInterfacePrototype",
44053 JSCLASS_IS_DOMIFACEANDPROTOJSCLASSJSCLASS_USERBIT2 | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE0),
44054 JS_NULL_CLASS_OPS,
44055 JS_NULL_CLASS_SPEC,
44056 JS_NULL_CLASS_EXT,
44057 JS_NULL_OBJECT_OPS
44058 },
44059 eInterfacePrototype,
44060 prototypes::id::TestExampleWorkerInterface,
44061 PrototypeTraits<prototypes::id::TestExampleWorkerInterface>::Depth,
44062 &sNativePropertyHooks,
44063 JS::GetRealmObjectPrototype
44064};
44065
44066static JS::Handle<JSObject*>
44067GetProtoObjectHandle(JSContext* aCx);
44068
44069static const JSClassOps sClassOps = {
44070 _addProperty, /* addProperty */
44071 nullptr, /* delProperty */
44072 nullptr, /* enumerate */
44073 nullptr, /* newEnumerate */
44074 nullptr, /* resolve */
44075 nullptr, /* mayResolve */
44076 _finalize, /* finalize */
44077 nullptr, /* call */
44078 nullptr, /* construct */
44079 nullptr, /* trace */
44080};
44081
44082static const js::ClassExtension sClassExtension = {
44083 _objectMoved /* objectMovedOp */
44084};
44085
44086static const DOMJSClass sClass = {
44087 { "TestExampleWorkerInterface",
44088 JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
44089 &sClassOps,
44090 JS_NULL_CLASS_SPEC,
44091 &sClassExtension,
44092 JS_NULL_OBJECT_OPS
44093 },
44094 { prototypes::id::TestExampleWorkerInterface, 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 },
44095 std::is_base_of_v<nsISupports, mozilla::dom::TestExampleWorkerInterface>,
44096 &sNativePropertyHooks,
44097 FindAssociatedGlobalForNative<mozilla::dom::TestExampleWorkerInterface>::Get,
44098 GetProtoObjectHandle,
44099 GetCCParticipant<mozilla::dom::TestExampleWorkerInterface>::Get(),
44100 nullptr,
44101 _getWrapperCache
44102};
44103static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS1,
44104 "Must have the right minimal number of reserved slots.");
44105static_assert(1 >= 1,
44106 "Must have enough reserved slots.");
44107
44108bool
44109Wrap(JSContext* aCx, mozilla::dom::TestExampleWorkerInterface* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
44110{
44111 static_assert(!std::is_base_of_v<NonRefcountedDOMObject, mozilla::dom::TestExampleWorkerInterface>,
44112 "Shouldn't have wrappercached things that are not refcounted.");
44113 static_assert(std::is_same_v<decltype(aObject), mozilla::dom::TestExampleWorkerInterface*>);
44114 MOZ_ASSERT(ToSupportsIsCorrect(aObject))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsCorrect(aObject))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(ToSupportsIsCorrect(aObject)
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"ToSupportsIsCorrect(aObject)", "../TestExampleGenBinding.cpp"
, 44114); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsCorrect(aObject)"
")"); do { *((volatile int*)__null) = 44114; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
44115 MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx))do { if (aGivenProto) { do { static_assert( mozilla::detail::
AssertionConditionType<decltype(js::IsObjectInContextCompartment
(aGivenProto, aCx))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(js::IsObjectInContextCompartment
(aGivenProto, aCx)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("js::IsObjectInContextCompartment(aGivenProto, aCx)", "../TestExampleGenBinding.cpp"
, 44115); AnnotateMozCrashReason("MOZ_ASSERT" "(" "js::IsObjectInContextCompartment(aGivenProto, aCx)"
")"); do { *((volatile int*)__null) = 44115; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false); } } while
(false)
;
44116 MOZ_ASSERT(!aCache->GetWrapper(),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 44118); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 44118; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
44117 "You should probably not be using Wrap() directly; use "do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 44118); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 44118; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
44118 "GetOrCreateDOMReflector instead")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapper())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapper()))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("!aCache->GetWrapper()"
" (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")", "../TestExampleGenBinding.cpp"
, 44118); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapper()"
") (" "You should probably not be using Wrap() directly; use "
"GetOrCreateDOMReflector instead" ")"); do { *((volatile int
*)__null) = 44118; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
44119
44120 MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 44121); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 44121; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
44121 "nsISupports must be on our primary inheritance chain")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache
)))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)" " ("
"nsISupports must be on our primary inheritance chain" ")", "../TestExampleGenBinding.cpp"
, 44121); AnnotateMozCrashReason("MOZ_ASSERT" "(" "ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache)"
") (" "nsISupports must be on our primary inheritance chain"
")"); do { *((volatile int*)__null) = 44121; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
44122
44123 // If the wrapper cache contains a dead reflector then finalize that
44124 // now, ensuring that the finalizer for the old reflector always
44125 // runs before the new reflector is created and attached. This
44126 // avoids the awkward situation where there are multiple reflector
44127 // objects that contain pointers to the same native.
44128
44129 if (JSObject* oldReflector = aCache->GetWrapperMaybeDead()) {
44130 _finalize(nullptr /* unused */, oldReflector);
44131 MOZ_ASSERT(!aCache->GetWrapperMaybeDead())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!aCache->GetWrapperMaybeDead())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!aCache->GetWrapperMaybeDead
()))), 0))) { do { } while (false); MOZ_ReportAssertionFailure
("!aCache->GetWrapperMaybeDead()", "../TestExampleGenBinding.cpp"
, 44131); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!aCache->GetWrapperMaybeDead()"
")"); do { *((volatile int*)__null) = 44131; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
44132 }
44133
44134 JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
44135 if (!global) {
44136 return false;
44137 }
44138 MOZ_ASSERT(JS_IsGlobalObject(global))do { static_assert( mozilla::detail::AssertionConditionType<
decltype(JS_IsGlobalObject(global))>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(JS_IsGlobalObject(global))))
, 0))) { do { } while (false); MOZ_ReportAssertionFailure("JS_IsGlobalObject(global)"
, "../TestExampleGenBinding.cpp", 44138); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "JS_IsGlobalObject(global)" ")"); do { *((volatile
int*)__null) = 44138; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
44139 JS::AssertObjectIsNotGray(global);
44140
44141 // That might have ended up wrapping us already, due to the wonders
44142 // of XBL. Check for that, and bail out as needed.
44143 aReflector.set(aCache->GetWrapper());
44144 if (aReflector) {
44145#ifdef DEBUG1
44146 AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
44147#endif // DEBUG
44148 return true;
44149 }
44150
44151 JSAutoRealm ar(aCx, global);
44152 JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
44153 if (!canonicalProto) {
44154 return false;
44155 }
44156 JS::Rooted<JSObject*> proto(aCx);
44157 if (aGivenProto) {
44158 proto = aGivenProto;
44159 // Unfortunately, while aGivenProto was in the compartment of aCx
44160 // coming in, we changed compartments to that of "parent" so may need
44161 // to wrap the proto here.
44162 if (js::GetContextCompartment(aCx) != JS::GetCompartment(proto)) {
44163 if (!JS_WrapObject(aCx, &proto)) {
44164 return false;
44165 }
44166 }
44167 } else {
44168 proto = canonicalProto;
44169 }
44170
44171 BindingJSObjectCreator<mozilla::dom::TestExampleWorkerInterface> creator(aCx);
44172 creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
44173 if (!aReflector) {
44174 return false;
44175 }
44176
44177 aCache->SetWrapper(aReflector);
44178 creator.InitializationSucceeded();
44179
44180 MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 44181); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 44181; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
44181 aCache->GetWrapperPreserveColor() == aReflector)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aCache->GetWrapperPreserveColor() && aCache
->GetWrapperPreserveColor() == aReflector)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aCache->GetWrapperPreserveColor
() && aCache->GetWrapperPreserveColor() == aReflector
))), 0))) { do { } while (false); MOZ_ReportAssertionFailure(
"aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
, "../TestExampleGenBinding.cpp", 44181); AnnotateMozCrashReason
("MOZ_ASSERT" "(" "aCache->GetWrapperPreserveColor() && aCache->GetWrapperPreserveColor() == aReflector"
")"); do { *((volatile int*)__null) = 44181; __attribute__((
nomerge)) ::abort(); } while (false); } } while (false)
;
44182 // If proto != canonicalProto, we have to preserve our wrapper;
44183 // otherwise we won't be able to properly recreate it later, since
44184 // we won't know what proto to use. Note that we don't check
44185 // aGivenProto here, since it's entirely possible (and even
44186 // somewhat common) to have a non-null aGivenProto which is the
44187 // same as canonicalProto.
44188 if (proto != canonicalProto) {
44189 PreserveWrapper(aObject);
44190 }
44191
44192 return true;
44193}
44194
44195void
44196CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, DefineInterfaceProperty aDefineOnGlobal)
44197{
44198 JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::TestExampleWorkerInterface);
44199 JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::TestExampleWorkerInterface);
44200
44201 JS::Handle<JSObject*> parentProto(JS::GetRealmObjectPrototypeHandle(aCx));
44202 if (!parentProto) {
44203 return;
44204 }
44205
44206 JS::Handle<JSObject*> constructorProto(JS::GetRealmFunctionPrototypeHandle(aCx));
44207 if (!constructorProto) {
44208 return;
44209 }
44210
44211 dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
44212 &sPrototypeClass, protoCache,
44213 constructorProto, &sInterfaceObjectInfo, 0, false, Span<const LegacyFactoryFunction, 0>{},
44214 interfaceCache,
44215 sNativeProperties.Upcast(),
44216 nullptr,
44217 "TestExampleWorkerInterface",
44218 aDefineOnGlobal != DefineInterfaceProperty::No,
44219 nullptr,
44220 false,
44221 nullptr);
44222}
44223
44224static JS::Handle<JSObject*>
44225GetProtoObjectHandle(JSContext* aCx)
44226{
44227 /* Get the interface prototype object for this class. This will create the
44228 object as needed. */
44229 return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestExampleWorkerInterface,
44230 &CreateInterfaceObjects,
44231 DefineInterfaceProperty::CheckExposure);
44232
44233}
44234
44235JS::Handle<JSObject*>
44236GetConstructorObjectHandle(JSContext* aCx)
44237{
44238 /* Get the interface object for this class. This will create the object as
44239 needed. */
44240
44241 return GetPerInterfaceObjectHandle(aCx, constructors::id::TestExampleWorkerInterface,
44242 &CreateInterfaceObjects,
44243 DefineInterfaceProperty::CheckExposure);
44244}
44245
44246} // namespace TestExampleWorkerInterface_Binding
44247
44248
44249
44250} // namespace mozilla::dom

/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h

1/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3/* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7/* A class for optional values and in-place lazy construction. */
8
9#ifndef mozilla_Maybe_h
10#define mozilla_Maybe_h
11
12#include <functional>
13#include <new> // for placement new
14#include <ostream>
15#include <type_traits>
16#include <utility>
17
18#include "mozilla/Alignment.h"
19#include "mozilla/Assertions.h"
20#include "mozilla/Attributes.h"
21#include "mozilla/MaybeStorageBase.h"
22#include "mozilla/MemoryChecking.h"
23#include "mozilla/OperatorNewExtensions.h"
24#include "mozilla/Poison.h"
25#include "mozilla/ThreadSafety.h"
26
27class nsCycleCollectionTraversalCallback;
28
29template <typename T>
30inline void CycleCollectionNoteChild(
31 nsCycleCollectionTraversalCallback& aCallback, T* aChild, const char* aName,
32 uint32_t aFlags);
33
34namespace mozilla {
35
36struct Nothing {};
37
38inline constexpr bool operator==(const Nothing&, const Nothing&) {
39 return true;
40}
41
42template <class T>
43class Maybe;
44
45namespace detail {
46
47// You would think that poisoning Maybe instances could just be a call
48// to mozWritePoison. Unfortunately, using a simple call to
49// mozWritePoison generates poor code on MSVC for small structures. The
50// generated code contains (always not-taken) branches and does a bunch
51// of setup for `rep stos{l,q}`, even though we know at compile time
52// exactly how many words we're poisoning. Instead, we're going to
53// force MSVC to generate the code we want via recursive templates.
54
55// Write the given poisonValue into p at offset*sizeof(uintptr_t).
56template <size_t offset>
57inline void WritePoisonAtOffset(void* p, const uintptr_t poisonValue) {
58 memcpy(static_cast<char*>(p) + offset * sizeof(poisonValue), &poisonValue,
59 sizeof(poisonValue));
60}
61
62template <size_t Offset, size_t NOffsets>
63struct InlinePoisoner {
64 static void poison(void* p, const uintptr_t poisonValue) {
65 WritePoisonAtOffset<Offset>(p, poisonValue);
66 InlinePoisoner<Offset + 1, NOffsets>::poison(p, poisonValue);
67 }
68};
69
70template <size_t N>
71struct InlinePoisoner<N, N> {
72 static void poison(void*, const uintptr_t) {
73 // All done!
74 }
75};
76
77// We can't generate inline code for large structures, though, because we'll
78// blow out recursive template instantiation limits, and the code would be
79// bloated to boot. So provide a fallback to the out-of-line poisoner.
80template <size_t ObjectSize>
81struct OutOfLinePoisoner {
82 static MOZ_NEVER_INLINE__attribute__((noinline)) void poison(void* p, const uintptr_t) {
83 mozWritePoison(p, ObjectSize);
84 }
85};
86
87template <typename T>
88inline void PoisonObject(T* p) {
89 const uintptr_t POISON = mozPoisonValue();
90 std::conditional_t<(sizeof(T) <= 8 * sizeof(POISON)),
91 InlinePoisoner<0, sizeof(T) / sizeof(POISON)>,
92 OutOfLinePoisoner<sizeof(T)>>::poison(p, POISON);
93}
94
95template <typename T>
96struct MaybePoisoner {
97 static const size_t N = sizeof(T);
98
99 static void poison(void* aPtr) {
100#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED1
101 if (N >= sizeof(uintptr_t)) {
102 PoisonObject(static_cast<std::remove_cv_t<T>*>(aPtr));
103 }
104#endif
105 MOZ_MAKE_MEM_UNDEFINED(aPtr, N)do { } while (0);
106 }
107};
108
109template <typename T,
110 bool TriviallyDestructibleAndCopyable =
111 IsTriviallyDestructibleAndCopyable<T>,
112 bool Copyable = std::is_copy_constructible_v<T>,
113 bool Movable = std::is_move_constructible_v<T>>
114class Maybe_CopyMove_Enabler;
115
116#define MOZ_MAYBE_COPY_OPS() \
117 Maybe_CopyMove_Enabler(const Maybe_CopyMove_Enabler& aOther) { \
118 if (downcast(aOther).isSome()) { \
119 downcast(*this).emplace(*downcast(aOther)); \
120 } \
121 } \
122 \
123 Maybe_CopyMove_Enabler& operator=(const Maybe_CopyMove_Enabler& aOther) { \
124 return downcast(*this).template operator= <T>(downcast(aOther)); \
125 }
126
127#define MOZ_MAYBE_MOVE_OPS() \
128 constexpr Maybe_CopyMove_Enabler(Maybe_CopyMove_Enabler&& aOther) { \
129 if (downcast(aOther).isSome()) { \
130 downcast(*this).emplace(std::move(*downcast(aOther))); \
131 downcast(aOther).reset(); \
132 } \
133 } \
134 \
135 constexpr Maybe_CopyMove_Enabler& operator=( \
136 Maybe_CopyMove_Enabler&& aOther) { \
137 downcast(*this).template operator= <T>(std::move(downcast(aOther))); \
138 \
139 return *this; \
140 }
141
142#define MOZ_MAYBE_DOWNCAST() \
143 static constexpr Maybe<T>& downcast(Maybe_CopyMove_Enabler& aObj) { \
144 return static_cast<Maybe<T>&>(aObj); \
145 } \
146 static constexpr const Maybe<T>& downcast( \
147 const Maybe_CopyMove_Enabler& aObj) { \
148 return static_cast<const Maybe<T>&>(aObj); \
149 }
150
151template <typename T>
152class Maybe_CopyMove_Enabler<T, true, true, true> {
153 public:
154 Maybe_CopyMove_Enabler() = default;
155
156 Maybe_CopyMove_Enabler(const Maybe_CopyMove_Enabler&) = default;
157 Maybe_CopyMove_Enabler& operator=(const Maybe_CopyMove_Enabler&) = default;
158 constexpr Maybe_CopyMove_Enabler(Maybe_CopyMove_Enabler&& aOther) {
159 downcast(aOther).reset();
160 }
161 constexpr Maybe_CopyMove_Enabler& operator=(Maybe_CopyMove_Enabler&& aOther) {
162 downcast(aOther).reset();
163 return *this;
164 }
165
166 private:
167 MOZ_MAYBE_DOWNCAST()
168};
169
170template <typename T>
171class Maybe_CopyMove_Enabler<T, true, false, true> {
172 public:
173 Maybe_CopyMove_Enabler() = default;
174
175 Maybe_CopyMove_Enabler(const Maybe_CopyMove_Enabler&) = delete;
176 Maybe_CopyMove_Enabler& operator=(const Maybe_CopyMove_Enabler&) = delete;
177 constexpr Maybe_CopyMove_Enabler(Maybe_CopyMove_Enabler&& aOther) {
178 downcast(aOther).reset();
179 }
180 constexpr Maybe_CopyMove_Enabler& operator=(Maybe_CopyMove_Enabler&& aOther) {
181 downcast(aOther).reset();
182 return *this;
183 }
184
185 private:
186 MOZ_MAYBE_DOWNCAST()
187};
188
189template <typename T>
190class Maybe_CopyMove_Enabler<T, false, true, true> {
191 public:
192 Maybe_CopyMove_Enabler() = default;
193
194 MOZ_MAYBE_COPY_OPS()
195 MOZ_MAYBE_MOVE_OPS()
196
197 private:
198 MOZ_MAYBE_DOWNCAST()
199};
200
201template <typename T>
202class Maybe_CopyMove_Enabler<T, false, false, true> {
203 public:
204 Maybe_CopyMove_Enabler() = default;
205
206 Maybe_CopyMove_Enabler(const Maybe_CopyMove_Enabler&) = delete;
207 Maybe_CopyMove_Enabler& operator=(const Maybe_CopyMove_Enabler&) = delete;
208 MOZ_MAYBE_MOVE_OPS()
209
210 private:
211 MOZ_MAYBE_DOWNCAST()
212};
213
214template <typename T>
215class Maybe_CopyMove_Enabler<T, false, true, false> {
216 public:
217 Maybe_CopyMove_Enabler() = default;
218
219 MOZ_MAYBE_COPY_OPS()
220 Maybe_CopyMove_Enabler(Maybe_CopyMove_Enabler&&) = delete;
221 Maybe_CopyMove_Enabler& operator=(Maybe_CopyMove_Enabler&&) = delete;
222
223 private:
224 MOZ_MAYBE_DOWNCAST()
225};
226
227template <typename T, bool TriviallyDestructibleAndCopyable>
228class Maybe_CopyMove_Enabler<T, TriviallyDestructibleAndCopyable, false,
229 false> {
230 public:
231 Maybe_CopyMove_Enabler() = default;
232
233 Maybe_CopyMove_Enabler(const Maybe_CopyMove_Enabler&) = delete;
234 Maybe_CopyMove_Enabler& operator=(const Maybe_CopyMove_Enabler&) = delete;
235 Maybe_CopyMove_Enabler(Maybe_CopyMove_Enabler&&) = delete;
236 Maybe_CopyMove_Enabler& operator=(Maybe_CopyMove_Enabler&&) = delete;
237};
238
239#undef MOZ_MAYBE_COPY_OPS
240#undef MOZ_MAYBE_MOVE_OPS
241#undef MOZ_MAYBE_DOWNCAST
242
243template <typename T, bool TriviallyDestructibleAndCopyable =
244 IsTriviallyDestructibleAndCopyable<T>>
245struct MaybeStorage;
246
247template <typename T>
248struct MaybeStorage<T, false> : MaybeStorageBase<T> {
249 protected:
250 char mIsSome = false; // not bool -- guarantees minimal space consumption
251
252 MaybeStorage() = default;
4
Calling defaulted default constructor for 'MaybeStorageBase<mozilla::dom::AutoCEReaction, false>'
9
Returning from default constructor for 'MaybeStorageBase<mozilla::dom::AutoCEReaction, false>'
10
Returning without writing to 'this->mStorage.val.mReactionsStack.mRawPtr'
253 explicit MaybeStorage(const T& aVal)
254 : MaybeStorageBase<T>{aVal}, mIsSome{true} {}
255 explicit MaybeStorage(T&& aVal)
256 : MaybeStorageBase<T>{std::move(aVal)}, mIsSome{true} {}
257
258 template <typename... Args>
259 explicit MaybeStorage(std::in_place_t, Args&&... aArgs)
260 : MaybeStorageBase<T>{std::in_place, std::forward<Args>(aArgs)...},
261 mIsSome{true} {}
262
263 public:
264 // Copy and move operations are no-ops, since copying is moving is implemented
265 // by Maybe_CopyMove_Enabler.
266
267 MaybeStorage(const MaybeStorage&) : MaybeStorageBase<T>{} {}
268 MaybeStorage& operator=(const MaybeStorage&) { return *this; }
269 MaybeStorage(MaybeStorage&&) : MaybeStorageBase<T>{} {}
270 MaybeStorage& operator=(MaybeStorage&&) { return *this; }
271
272 ~MaybeStorage() {
273 if (mIsSome
20.1
Field 'mIsSome' is 0
20.1
Field 'mIsSome' is 0
20.1
Field 'mIsSome' is 0
20.1
Field 'mIsSome' is 0
20.1
Field 'mIsSome' is 0
20.1
Field 'mIsSome' is 0
) {
21
Taking false branch
274 this->addr()->T::~T();
275 }
276 }
22
Calling implicit destructor for 'MaybeStorageBase<mozilla::dom::AutoCEReaction, false>'
23
Calling '~Union'
277};
278
279template <typename T>
280struct MaybeStorage<T, true> : MaybeStorageBase<T> {
281 protected:
282 char mIsSome = false; // not bool -- guarantees minimal space consumption
283
284 constexpr MaybeStorage() = default;
285 constexpr explicit MaybeStorage(const T& aVal)
286 : MaybeStorageBase<T>{aVal}, mIsSome{true} {}
287 constexpr explicit MaybeStorage(T&& aVal)
288 : MaybeStorageBase<T>{std::move(aVal)}, mIsSome{true} {}
289
290 template <typename... Args>
291 constexpr explicit MaybeStorage(std::in_place_t, Args&&... aArgs)
292 : MaybeStorageBase<T>{std::in_place, std::forward<Args>(aArgs)...},
293 mIsSome{true} {}
294};
295
296template <typename T>
297struct IsMaybeImpl : std::false_type {};
298
299template <typename T>
300struct IsMaybeImpl<Maybe<T>> : std::true_type {};
301
302template <typename T>
303using IsMaybe = IsMaybeImpl<std::decay_t<T>>;
304
305} // namespace detail
306
307template <typename T, typename U = typename std::remove_cv<
308 typename std::remove_reference<T>::type>::type>
309constexpr Maybe<U> Some(T&& aValue);
310
311/*
312 * Maybe is a container class which contains either zero or one elements. It
313 * serves two roles. It can represent values which are *semantically* optional,
314 * augmenting a type with an explicit 'Nothing' value. In this role, it provides
315 * methods that make it easy to work with values that may be missing, along with
316 * equality and comparison operators so that Maybe values can be stored in
317 * containers. Maybe values can be constructed conveniently in expressions using
318 * type inference, as follows:
319 *
320 * void doSomething(Maybe<Foo> aFoo) {
321 * if (aFoo) // Make sure that aFoo contains a value...
322 * aFoo->takeAction(); // and then use |aFoo->| to access it.
323 * } // |*aFoo| also works!
324 *
325 * doSomething(Nothing()); // Passes a Maybe<Foo> containing no value.
326 * doSomething(Some(Foo(100))); // Passes a Maybe<Foo> containing |Foo(100)|.
327 *
328 * You'll note that it's important to check whether a Maybe contains a value
329 * before using it, using conversion to bool, |isSome()|, or |isNothing()|. You
330 * can avoid these checks, and sometimes write more readable code, using
331 * |valueOr()|, |ptrOr()|, and |refOr()|, which allow you to retrieve the value
332 * in the Maybe and provide a default for the 'Nothing' case. You can also use
333 * |apply()| to call a function only if the Maybe holds a value, and |map()| to
334 * transform the value in the Maybe, returning another Maybe with a possibly
335 * different type.
336 *
337 * Maybe's other role is to support lazily constructing objects without using
338 * dynamic storage. A Maybe directly contains storage for a value, but it's
339 * empty by default. |emplace()|, as mentioned above, can be used to construct a
340 * value in Maybe's storage. The value a Maybe contains can be destroyed by
341 * calling |reset()|; this will happen automatically if a Maybe is destroyed
342 * while holding a value.
343 *
344 * It's a common idiom in C++ to use a pointer as a 'Maybe' type, with a null
345 * value meaning 'Nothing' and any other value meaning 'Some'. You can convert
346 * from such a pointer to a Maybe value using 'ToMaybe()'.
347 *
348 * Maybe is inspired by similar types in the standard library of many other
349 * languages (e.g. Haskell's Maybe and Rust's Option). In the C++ world it's
350 * very similar to std::optional, which was proposed for C++14 and originated in
351 * Boost. The most important differences between Maybe and std::optional are:
352 *
353 * - std::optional<T> may be compared with T. We deliberately forbid that.
354 * - std::optional has |valueOr()|, equivalent to Maybe's |valueOr()|, but
355 * lacks corresponding methods for |refOr()| and |ptrOr()|.
356 * - std::optional lacks |map()| and |apply()|, making it less suitable for
357 * functional-style code.
358 * - std::optional lacks many convenience functions that Maybe has. Most
359 * unfortunately, it lacks equivalents of the type-inferred constructor
360 * functions |Some()| and |Nothing()|.
361 */
362template <class T>
363class MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS Maybe
364 : private detail::MaybeStorage<T>,
365 public detail::Maybe_CopyMove_Enabler<T> {
366 template <typename, bool, bool, bool>
367 friend class detail::Maybe_CopyMove_Enabler;
368
369 template <typename U, typename V>
370 friend constexpr Maybe<V> Some(U&& aValue);
371
372 struct SomeGuard {};
373
374 template <typename U>
375 constexpr Maybe(U&& aValue, SomeGuard)
376 : detail::MaybeStorage<T>{std::forward<U>(aValue)} {}
377
378 using detail::MaybeStorage<T>::mIsSome;
379 using detail::MaybeStorage<T>::mStorage;
380
381 void poisonData() { detail::MaybePoisoner<T>::poison(&mStorage.val); }
382
383 public:
384 using ValueType = T;
385
386 MOZ_ALLOW_TEMPORARY constexpr Maybe() = default;
3
Calling defaulted default constructor for 'MaybeStorage<mozilla::dom::AutoCEReaction, false>'
11
Returning from default constructor for 'MaybeStorage<mozilla::dom::AutoCEReaction, false>'
12
Returning without writing to 'this->mStorage.val.mReactionsStack.mRawPtr'
387
388 MOZ_ALLOW_TEMPORARY MOZ_IMPLICIT constexpr Maybe(Nothing) : Maybe{} {}
389
390 template <typename... Args>
391 constexpr explicit Maybe(std::in_place_t, Args&&... aArgs)
392 : detail::MaybeStorage<T>{std::in_place, std::forward<Args>(aArgs)...} {}
393
394 /**
395 * Maybe<T> can be copy-constructed from a Maybe<U> if T is constructible from
396 * a const U&.
397 */
398 template <typename U,
399 std::enable_if_t<std::is_constructible_v<T, const U&>, bool> = true>
400 MOZ_IMPLICIT Maybe(const Maybe<U>& aOther) {
401 if (aOther.isSome()) {
402 emplace(*aOther);
403 }
404 }
405
406 template <typename U, std::enable_if_t<!std::is_constructible_v<T, const U&>,
407 bool> = true>
408 explicit Maybe(const Maybe<U>& aOther) = delete;
409
410 /**
411 * Maybe<T> can be move-constructed from a Maybe<U> if T is constructible from
412 * a U&&.
413 */
414 template <typename U,
415 std::enable_if_t<std::is_constructible_v<T, U&&>, bool> = true>
416 MOZ_IMPLICIT Maybe(Maybe<U>&& aOther) {
417 if (aOther.isSome()) {
418 emplace(std::move(*aOther));
419 aOther.reset();
420 }
421 }
422 template <typename U,
423 std::enable_if_t<!std::is_constructible_v<T, U&&>, bool> = true>
424 explicit Maybe(Maybe<U>&& aOther) = delete;
425
426 template <typename U,
427 std::enable_if_t<std::is_constructible_v<T, const U&>, bool> = true>
428 Maybe& operator=(const Maybe<U>& aOther) {
429 if (aOther.isSome()) {
430 if (mIsSome) {
431 ref() = aOther.ref();
432 } else {
433 emplace(*aOther);
434 }
435 } else {
436 reset();
437 }
438 return *this;
439 }
440
441 template <typename U, std::enable_if_t<!std::is_constructible_v<T, const U&>,
442 bool> = true>
443 Maybe& operator=(const Maybe<U>& aOther) = delete;
444
445 template <typename U,
446 std::enable_if_t<std::is_constructible_v<T, U&&>, bool> = true>
447 Maybe& operator=(Maybe<U>&& aOther) {
448 if (aOther.isSome()) {
449 if (mIsSome) {
450 ref() = std::move(aOther.ref());
451 } else {
452 emplace(std::move(*aOther));
453 }
454 aOther.reset();
455 } else {
456 reset();
457 }
458
459 return *this;
460 }
461
462 template <typename U,
463 std::enable_if_t<!std::is_constructible_v<T, U&&>, bool> = true>
464 Maybe& operator=(Maybe<U>&& aOther) = delete;
465
466 constexpr Maybe& operator=(Nothing) {
467 reset();
468 return *this;
469 }
470
471 /* Methods that check whether this Maybe contains a value */
472 constexpr explicit operator bool() const { return isSome(); }
473 constexpr bool isSome() const { return mIsSome; }
474 constexpr bool isNothing() const { return !mIsSome; }
475
476 /* Returns the contents of this Maybe<T> by value. Unsafe unless |isSome()|.
477 */
478 constexpr T value() const&;
479 constexpr T value() &&;
480 constexpr T value() const&&;
481
482 /**
483 * Move the contents of this Maybe<T> out of internal storage and return it
484 * without calling the destructor. The internal storage is also reset to
485 * avoid multiple calls. Unsafe unless |isSome()|.
486 */
487 constexpr T extract() {
488 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 488); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 488; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
489 T v = std::move(mStorage.val);
490 reset();
491 return v;
492 }
493
494 /**
495 * Returns the value (possibly |Nothing()|) by moving it out of this Maybe<T>
496 * and leaving |Nothing()| in its place.
497 */
498 Maybe<T> take() { return std::exchange(*this, Nothing()); }
499
500 /*
501 * Returns the contents of this Maybe<T> by value. If |isNothing()|, returns
502 * the default value provided.
503 *
504 * Note: If the value passed to aDefault is not the result of a trivial
505 * expression, but expensive to evaluate, e.g. |valueOr(ExpensiveFunction())|,
506 * use |valueOrFrom| instead, e.g.
507 * |valueOrFrom([arg] { return ExpensiveFunction(arg); })|. This ensures
508 * that the expensive expression is only evaluated when its result will
509 * actually be used.
510 */
511 template <typename V>
512 constexpr T valueOr(V&& aDefault) const {
513 if (isSome()) {
514 return ref();
515 }
516 return std::forward<V>(aDefault);
517 }
518
519 /*
520 * Returns the contents of this Maybe<T> by value. If |isNothing()|, returns
521 * the value returned from the function or functor provided.
522 */
523 template <typename F>
524 constexpr T valueOrFrom(F&& aFunc) const {
525 if (isSome()) {
526 return ref();
527 }
528 return aFunc();
529 }
530
531 /* Returns the contents of this Maybe<T> by pointer. Unsafe unless |isSome()|.
532 */
533 T* ptr();
534 constexpr const T* ptr() const;
535
536 /*
537 * Returns the contents of this Maybe<T> by pointer. If |isNothing()|,
538 * returns the default value provided.
539 */
540 T* ptrOr(T* aDefault) {
541 if (isSome()) {
542 return ptr();
543 }
544 return aDefault;
545 }
546
547 constexpr const T* ptrOr(const T* aDefault) const {
548 if (isSome()) {
549 return ptr();
550 }
551 return aDefault;
552 }
553
554 /*
555 * Returns the contents of this Maybe<T> by pointer. If |isNothing()|,
556 * returns the value returned from the function or functor provided.
557 */
558 template <typename F>
559 T* ptrOrFrom(F&& aFunc) {
560 if (isSome()) {
561 return ptr();
562 }
563 return aFunc();
564 }
565
566 template <typename F>
567 const T* ptrOrFrom(F&& aFunc) const {
568 if (isSome()) {
569 return ptr();
570 }
571 return aFunc();
572 }
573
574 constexpr T* operator->();
575 constexpr const T* operator->() const;
576
577 /* Returns the contents of this Maybe<T> by ref. Unsafe unless |isSome()|. */
578 constexpr T& ref() &;
579 constexpr const T& ref() const&;
580 constexpr T&& ref() &&;
581 constexpr const T&& ref() const&&;
582
583 /*
584 * Returns the contents of this Maybe<T> by ref. If |isNothing()|, returns
585 * the default value provided.
586 */
587 constexpr T& refOr(T& aDefault) {
588 if (isSome()) {
589 return ref();
590 }
591 return aDefault;
592 }
593
594 constexpr const T& refOr(const T& aDefault) const {
595 if (isSome()) {
596 return ref();
597 }
598 return aDefault;
599 }
600
601 /*
602 * Returns the contents of this Maybe<T> by ref. If |isNothing()|, returns the
603 * value returned from the function or functor provided.
604 */
605 template <typename F>
606 constexpr T& refOrFrom(F&& aFunc) {
607 if (isSome()) {
608 return ref();
609 }
610 return aFunc();
611 }
612
613 template <typename F>
614 constexpr const T& refOrFrom(F&& aFunc) const {
615 if (isSome()) {
616 return ref();
617 }
618 return aFunc();
619 }
620
621 constexpr T& operator*() &;
622 constexpr const T& operator*() const&;
623 constexpr T&& operator*() &&;
624 constexpr const T&& operator*() const&&;
625
626 /* If |isSome()|, runs the provided function or functor on the contents of
627 * this Maybe. */
628 template <typename Func>
629 constexpr Maybe& apply(Func&& aFunc) & {
630 if (isSome()) {
631 std::forward<Func>(aFunc)(ref());
632 }
633 return *this;
634 }
635
636 template <typename Func>
637 constexpr const Maybe& apply(Func&& aFunc) const& {
638 if (isSome()) {
639 std::forward<Func>(aFunc)(ref());
640 }
641 return *this;
642 }
643
644 template <typename Func>
645 constexpr Maybe& apply(Func&& aFunc) && {
646 if (isSome()) {
647 std::forward<Func>(aFunc)(extract());
648 }
649 return *this;
650 }
651
652 template <typename Func>
653 constexpr Maybe& apply(Func&& aFunc) const&& {
654 if (isSome()) {
655 std::forward<Func>(aFunc)(extract());
656 }
657 return *this;
658 }
659
660 /*
661 * If |isSome()|, runs the provided function and returns the result wrapped
662 * in a Maybe. If |isNothing()|, returns an empty Maybe value with the same
663 * value type as what the provided function would have returned.
664 */
665 template <typename Func>
666 constexpr auto map(Func&& aFunc) & {
667 if (isSome()) {
668 return Some(std::forward<Func>(aFunc)(ref()));
669 }
670 return Maybe<decltype(std::forward<Func>(aFunc)(ref()))>{};
671 }
672
673 template <typename Func>
674 constexpr auto map(Func&& aFunc) const& {
675 if (isSome()) {
676 return Some(std::forward<Func>(aFunc)(ref()));
677 }
678 return Maybe<decltype(std::forward<Func>(aFunc)(ref()))>{};
679 }
680
681 template <typename Func>
682 constexpr auto map(Func&& aFunc) && {
683 if (isSome()) {
684 return Some(std::forward<Func>(aFunc)(extract()));
685 }
686 return Maybe<decltype(std::forward<Func>(aFunc)(extract()))>{};
687 }
688
689 template <typename Func>
690 constexpr auto map(Func&& aFunc) const&& {
691 if (isSome()) {
692 return Some(std::forward<Func>(aFunc)(extract()));
693 }
694 return Maybe<decltype(std::forward<Func>(aFunc)(extract()))>{};
695 }
696
697 /*
698 * If |isSome()|, runs the provided function or functor on the contents of
699 * this Maybe and returns the result. Note that the provided function or
700 * functor must return a Maybe<U> of any type U.
701 * If |isNothing()|, returns an empty Maybe value with the same type as what
702 * the provided function would have returned.
703 */
704 template <typename Func>
705 constexpr auto andThen(Func&& aFunc) & {
706 static_assert(std::is_invocable_v<Func, T&>);
707 using U = std::invoke_result_t<Func, T&>;
708 static_assert(detail::IsMaybe<U>::value);
709 if (isSome()) {
710 return std::invoke(std::forward<Func>(aFunc), ref());
711 }
712 return std::remove_cv_t<std::remove_reference_t<U>>{};
713 }
714
715 template <typename Func>
716 constexpr auto andThen(Func&& aFunc) const& {
717 static_assert(std::is_invocable_v<Func, const T&>);
718 using U = std::invoke_result_t<Func, const T&>;
719 static_assert(detail::IsMaybe<U>::value);
720 if (isSome()) {
721 return std::invoke(std::forward<Func>(aFunc), ref());
722 }
723 return std::remove_cv_t<std::remove_reference_t<U>>{};
724 }
725
726 template <typename Func>
727 constexpr auto andThen(Func&& aFunc) && {
728 static_assert(std::is_invocable_v<Func, T&&>);
729 using U = std::invoke_result_t<Func, T&&>;
730 static_assert(detail::IsMaybe<U>::value);
731 if (isSome()) {
732 return std::invoke(std::forward<Func>(aFunc), extract());
733 }
734 return std::remove_cv_t<std::remove_reference_t<U>>{};
735 }
736
737 template <typename Func>
738 constexpr auto andThen(Func&& aFunc) const&& {
739 static_assert(std::is_invocable_v<Func, const T&&>);
740 using U = std::invoke_result_t<Func, const T&&>;
741 static_assert(detail::IsMaybe<U>::value);
742 if (isSome()) {
743 return std::invoke(std::forward<Func>(aFunc), extract());
744 }
745 return std::remove_cv_t<std::remove_reference_t<U>>{};
746 }
747
748 /*
749 * If |isNothing()|, runs the provided function or functor and returns its
750 * result. If |isSome()|, returns the contained value wrapped in a Maybe.
751 */
752 template <typename Func>
753 constexpr Maybe orElse(Func&& aFunc) & {
754 static_assert(std::is_invocable_v<Func>);
755 using U = std::invoke_result_t<Func>;
756 static_assert(
757 std::is_same_v<Maybe, std::remove_cv_t<std::remove_reference_t<U>>>);
758 if (isSome()) {
759 return *this;
760 }
761 return std::invoke(std::forward<Func>(aFunc));
762 }
763
764 template <typename Func>
765 constexpr Maybe orElse(Func&& aFunc) const& {
766 static_assert(std::is_invocable_v<Func>);
767 using U = std::invoke_result_t<Func>;
768 static_assert(
769 std::is_same_v<Maybe, std::remove_cv_t<std::remove_reference_t<U>>>);
770 if (isSome()) {
771 return *this;
772 }
773 return std::invoke(std::forward<Func>(aFunc));
774 }
775
776 template <typename Func>
777 constexpr Maybe orElse(Func&& aFunc) && {
778 static_assert(std::is_invocable_v<Func>);
779 using U = std::invoke_result_t<Func>;
780 static_assert(
781 std::is_same_v<Maybe, std::remove_cv_t<std::remove_reference_t<U>>>);
782 if (isSome()) {
783 return std::move(*this);
784 }
785 return std::invoke(std::forward<Func>(aFunc));
786 }
787
788 template <typename Func>
789 constexpr Maybe orElse(Func&& aFunc) const&& {
790 static_assert(std::is_invocable_v<Func>);
791 using U = std::invoke_result_t<Func>;
792 static_assert(
793 std::is_same_v<Maybe, std::remove_cv_t<std::remove_reference_t<U>>>);
794 if (isSome()) {
795 return std::move(*this);
796 }
797 return std::invoke(std::forward<Func>(aFunc));
798 }
799
800 /* If |isSome()|, empties this Maybe and destroys its contents. */
801 constexpr void reset() {
802 if (isSome()) {
803 if constexpr (!std::is_trivially_destructible_v<T>) {
804 /*
805 * Static analyzer gets confused if we have Maybe<MutexAutoLock>,
806 * so we suppress thread-safety warnings here
807 */
808 MOZ_PUSH_IGNORE_THREAD_SAFETYGCC diagnostic push GCC diagnostic ignored "-Wthread-safety"
809 ref().T::~T();
810 MOZ_POP_THREAD_SAFETYGCC diagnostic pop
811 poisonData();
812 }
813 mIsSome = false;
814 }
815 }
816
817 /*
818 * Constructs a T value in-place in this empty Maybe<T>'s storage. The
819 * arguments to |emplace()| are the parameters to T's constructor.
820 */
821 template <typename... Args>
822 constexpr void emplace(Args&&... aArgs);
823
824 template <typename U>
825 constexpr std::enable_if_t<std::is_same_v<T, U> &&
826 std::is_copy_constructible_v<U> &&
827 !std::is_move_constructible_v<U>>
828 emplace(U&& aArgs) {
829 emplace(aArgs);
830 }
831
832 friend std::ostream& operator<<(std::ostream& aStream,
833 const Maybe<T>& aMaybe) {
834 if (aMaybe) {
835 aStream << aMaybe.ref();
836 } else {
837 aStream << "<Nothing>";
838 }
839 return aStream;
840 }
841};
842
843template <typename T>
844class Maybe<T&> {
845 public:
846 constexpr Maybe() = default;
847 constexpr MOZ_IMPLICIT Maybe(Nothing) {}
848
849 void emplace(T& aRef) { mValue = &aRef; }
850
851 /* Methods that check whether this Maybe contains a value */
852 constexpr explicit operator bool() const { return isSome(); }
853 constexpr bool isSome() const { return mValue; }
854 constexpr bool isNothing() const { return !mValue; }
855
856 T& ref() const {
857 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 857); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 857; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
858 return *mValue;
859 }
860
861 T* operator->() const { return &ref(); }
862 T& operator*() const { return ref(); }
863
864 // Deliberately not defining value and ptr accessors, as these may be
865 // confusing on a reference-typed Maybe.
866
867 // XXX Should we define refOr?
868
869 void reset() { mValue = nullptr; }
870
871 template <typename Func>
872 const Maybe& apply(Func&& aFunc) const {
873 if (isSome()) {
874 std::forward<Func>(aFunc)(ref());
875 }
876 return *this;
877 }
878
879 template <typename Func>
880 auto map(Func&& aFunc) const {
881 Maybe<decltype(std::forward<Func>(aFunc)(ref()))> val;
882 if (isSome()) {
883 val.emplace(std::forward<Func>(aFunc)(ref()));
884 }
885 return val;
886 }
887
888 template <typename Func>
889 constexpr auto andThen(Func&& aFunc) const {
890 static_assert(std::is_invocable_v<Func, T&>);
891 using U = std::invoke_result_t<Func, T&>;
892 static_assert(detail::IsMaybe<U>::value);
893 if (isSome()) {
894 return std::invoke(std::forward<Func>(aFunc), ref());
895 }
896 return std::remove_cv_t<std::remove_reference_t<U>>{};
897 }
898
899 template <typename Func>
900 constexpr Maybe orElse(Func&& aFunc) const {
901 static_assert(std::is_invocable_v<Func>);
902 using U = std::invoke_result_t<Func>;
903 static_assert(
904 std::is_same_v<Maybe, std::remove_cv_t<std::remove_reference_t<U>>>);
905 if (isSome()) {
906 return *this;
907 }
908 return std::invoke(std::forward<Func>(aFunc));
909 }
910
911 bool refEquals(const Maybe<T&>& aOther) const {
912 return mValue == aOther.mValue;
913 }
914
915 bool refEquals(const T& aOther) const { return mValue == &aOther; }
916
917 private:
918 T* mValue = nullptr;
919};
920
921template <typename T>
922constexpr T Maybe<T>::value() const& {
923 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 923); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 923; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
924 return ref();
925}
926
927template <typename T>
928constexpr T Maybe<T>::value() && {
929 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 929); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 929; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
930 return std::move(ref());
931}
932
933template <typename T>
934constexpr T Maybe<T>::value() const&& {
935 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 935); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 935; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
936 return std::move(ref());
937}
938
939template <typename T>
940T* Maybe<T>::ptr() {
941 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 941); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 941; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
942 return &ref();
943}
944
945template <typename T>
946constexpr const T* Maybe<T>::ptr() const {
947 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 947); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 947; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
948 return &ref();
949}
950
951template <typename T>
952constexpr T* Maybe<T>::operator->() {
953 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 953); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 953; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
954 return ptr();
955}
956
957template <typename T>
958constexpr const T* Maybe<T>::operator->() const {
959 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 959); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 959; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
960 return ptr();
961}
962
963template <typename T>
964constexpr T& Maybe<T>::ref() & {
965 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 965); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 965; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
966 return mStorage.val;
967}
968
969template <typename T>
970constexpr const T& Maybe<T>::ref() const& {
971 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 971); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 971; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
972 return mStorage.val;
973}
974
975template <typename T>
976constexpr T&& Maybe<T>::ref() && {
977 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 977); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 977; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
978 return std::move(mStorage.val);
979}
980
981template <typename T>
982constexpr const T&& Maybe<T>::ref() const&& {
983 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 983); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 983; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
984 return std::move(mStorage.val);
985}
986
987template <typename T>
988constexpr T& Maybe<T>::operator*() & {
989 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 989); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 989; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
990 return ref();
991}
992
993template <typename T>
994constexpr const T& Maybe<T>::operator*() const& {
995 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 995); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 995; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
996 return ref();
997}
998
999template <typename T>
1000constexpr T&& Maybe<T>::operator*() && {
1001 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 1001); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 1001; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
1002 return std::move(ref());
1003}
1004
1005template <typename T>
1006constexpr const T&& Maybe<T>::operator*() const&& {
1007 MOZ_RELEASE_ASSERT(isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 1007); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "isSome()"
")"); do { *((volatile int*)__null) = 1007; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
1008 return std::move(ref());
1009}
1010
1011template <typename T>
1012template <typename... Args>
1013constexpr void Maybe<T>::emplace(Args&&... aArgs) {
1014 MOZ_RELEASE_ASSERT(!isSome())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!isSome())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!isSome()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("!isSome()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Maybe.h"
, 1014); AnnotateMozCrashReason("MOZ_RELEASE_ASSERT" "(" "!isSome()"
")"); do { *((volatile int*)__null) = 1014; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
1015 ::new (KnownNotNull, &mStorage.val) T(std::forward<Args>(aArgs)...);
1016 mIsSome = true;
1017}
1018
1019/*
1020 * Some() creates a Maybe<T> value containing the provided T value. If T has a
1021 * move constructor, it's used to make this as efficient as possible.
1022 *
1023 * Some() selects the type of Maybe it returns by removing any const, volatile,
1024 * or reference qualifiers from the type of the value you pass to it. This gives
1025 * it more intuitive behavior when used in expressions, but it also means that
1026 * if you need to construct a Maybe value that holds a const, volatile, or
1027 * reference value, you need to use emplace() instead.
1028 */
1029template <typename T, typename U>
1030constexpr Maybe<U> Some(T&& aValue) {
1031 return {std::forward<T>(aValue), typename Maybe<U>::SomeGuard{}};
1032}
1033
1034template <typename T>
1035constexpr Maybe<T&> SomeRef(T& aValue) {
1036 Maybe<T&> value;
1037 value.emplace(aValue);
1038 return value;
1039}
1040
1041template <typename T>
1042constexpr Maybe<T&> ToMaybeRef(T* const aPtr) {
1043 return aPtr ? SomeRef(*aPtr) : Nothing{};
1044}
1045
1046template <typename T>
1047Maybe<std::remove_cv_t<std::remove_reference_t<T>>> ToMaybe(T* aPtr) {
1048 if (aPtr) {
1049 return Some(*aPtr);
1050 }
1051 return Nothing();
1052}
1053
1054/*
1055 * Two Maybe<T> values are equal if
1056 * - both are Nothing, or
1057 * - both are Some, and the values they contain are equal.
1058 */
1059template <typename T>
1060constexpr bool operator==(const Maybe<T>& aLHS, const Maybe<T>& aRHS) {
1061 static_assert(!std::is_reference_v<T>,
1062 "operator== is not defined for Maybe<T&>, compare values or "
1063 "addresses explicitly instead");
1064 if (aLHS.isNothing() != aRHS.isNothing()) {
1065 return false;
1066 }
1067 return aLHS.isNothing() || *aLHS == *aRHS;
1068}
1069
1070template <typename T>
1071constexpr bool operator!=(const Maybe<T>& aLHS, const Maybe<T>& aRHS) {
1072 return !(aLHS == aRHS);
1073}
1074
1075/*
1076 * We support comparison to Nothing to allow reasonable expressions like:
1077 * if (maybeValue == Nothing()) { ... }
1078 */
1079template <typename T>
1080constexpr bool operator==(const Maybe<T>& aLHS, const Nothing& aRHS) {
1081 return aLHS.isNothing();
1082}
1083
1084template <typename T>
1085constexpr bool operator!=(const Maybe<T>& aLHS, const Nothing& aRHS) {
1086 return !(aLHS == aRHS);
1087}
1088
1089template <typename T>
1090constexpr bool operator==(const Nothing& aLHS, const Maybe<T>& aRHS) {
1091 return aRHS.isNothing();
1092}
1093
1094template <typename T>
1095constexpr bool operator!=(const Nothing& aLHS, const Maybe<T>& aRHS) {
1096 return !(aLHS == aRHS);
1097}
1098
1099/*
1100 * Maybe<T> values are ordered in the same way T values are ordered, except that
1101 * Nothing comes before anything else.
1102 */
1103template <typename T>
1104constexpr bool operator<(const Maybe<T>& aLHS, const Maybe<T>& aRHS) {
1105 if (aLHS.isNothing()) {
1106 return aRHS.isSome();
1107 }
1108 if (aRHS.isNothing()) {
1109 return false;
1110 }
1111 return *aLHS < *aRHS;
1112}
1113
1114template <typename T>
1115constexpr bool operator>(const Maybe<T>& aLHS, const Maybe<T>& aRHS) {
1116 return !(aLHS < aRHS || aLHS == aRHS);
1117}
1118
1119template <typename T>
1120constexpr bool operator<=(const Maybe<T>& aLHS, const Maybe<T>& aRHS) {
1121 return aLHS < aRHS || aLHS == aRHS;
1122}
1123
1124template <typename T>
1125constexpr bool operator>=(const Maybe<T>& aLHS, const Maybe<T>& aRHS) {
1126 return !(aLHS < aRHS);
1127}
1128
1129template <typename T>
1130inline void ImplCycleCollectionTraverse(
1131 nsCycleCollectionTraversalCallback& aCallback, mozilla::Maybe<T>& aField,
1132 const char* aName, uint32_t aFlags = 0) {
1133 if (aField) {
1134 ImplCycleCollectionTraverse(aCallback, aField.ref(), aName, aFlags);
1135 }
1136}
1137
1138template <typename T>
1139inline void ImplCycleCollectionUnlink(mozilla::Maybe<T>& aField) {
1140 if (aField) {
1141 ImplCycleCollectionUnlink(aField.ref());
1142 }
1143}
1144
1145} // namespace mozilla
1146
1147#endif /* mozilla_Maybe_h */

/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MaybeStorageBase.h

1/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3/* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7/* Internal storage class used e.g. by Maybe and Result. This file doesn't
8 * contain any public declarations. */
9
10#ifndef mfbt_MaybeStorageBase_h
11#define mfbt_MaybeStorageBase_h
12
13#include <type_traits>
14#include <utility>
15
16namespace mozilla::detail {
17
18template <typename T>
19constexpr bool IsTriviallyDestructibleAndCopyable =
20 std::is_trivially_destructible_v<T> &&
21 (std::is_trivially_copy_constructible_v<T> ||
22 !std::is_copy_constructible_v<T>);
23
24template <typename T, bool TriviallyDestructibleAndCopyable =
25 IsTriviallyDestructibleAndCopyable<T>>
26struct MaybeStorageBase;
27
28template <typename T>
29struct MaybeStorageBase<T, false> {
30 protected:
31 using NonConstT = std::remove_const_t<T>;
32
33 union Union {
34 Union() {}
6
Returning without writing to 'this->val.mReactionsStack.mRawPtr'
35 explicit Union(const T& aVal) : val{aVal} {}
36 template <typename U,
37 typename = std::enable_if_t<std::is_move_constructible_v<U>>>
38 explicit Union(U&& aVal) : val{std::forward<U>(aVal)} {}
39 template <typename... Args>
40 explicit Union(std::in_place_t, Args&&... aArgs)
41 : val{std::forward<Args>(aArgs)...} {}
42
43 ~Union() {}
24
Calling '~AutoCEReaction'
44
45 NonConstT val;
46 } mStorage;
47
48 public:
49 MaybeStorageBase() = default;
5
Calling default constructor for 'Union'
7
Returning from default constructor for 'Union'
8
Returning without writing to 'this->mStorage.val.mReactionsStack.mRawPtr'
50 explicit MaybeStorageBase(const T& aVal) : mStorage{aVal} {}
51 explicit MaybeStorageBase(T&& aVal) : mStorage{std::move(aVal)} {}
52 template <typename... Args>
53 explicit MaybeStorageBase(std::in_place_t, Args&&... aArgs)
54 : mStorage{std::in_place, std::forward<Args>(aArgs)...} {}
55
56 const T* addr() const { return &mStorage.val; }
57 T* addr() { return &mStorage.val; }
58};
59
60template <typename T>
61struct MaybeStorageBase<T, true> {
62 protected:
63 using NonConstT = std::remove_const_t<T>;
64
65 union Union {
66 constexpr Union() : dummy() {}
67 constexpr explicit Union(const T& aVal) : val{aVal} {}
68 constexpr explicit Union(T&& aVal) : val{std::move(aVal)} {}
69 template <typename... Args>
70 constexpr explicit Union(std::in_place_t, Args&&... aArgs)
71 : val{std::forward<Args>(aArgs)...} {}
72
73 NonConstT val;
74 char dummy;
75 } mStorage;
76
77 public:
78 constexpr MaybeStorageBase() = default;
79 constexpr explicit MaybeStorageBase(const T& aVal) : mStorage{aVal} {}
80 constexpr explicit MaybeStorageBase(T&& aVal) : mStorage{std::move(aVal)} {}
81
82 template <typename... Args>
83 constexpr explicit MaybeStorageBase(std::in_place_t, Args&&... aArgs)
84 : mStorage{std::in_place, std::forward<Args>(aArgs)...} {}
85
86 constexpr const T* addr() const { return &mStorage.val; }
87 constexpr T* addr() { return &mStorage.val; }
88};
89
90} // namespace mozilla::detail
91
92#endif

/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h

1/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3/* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7#ifndef nsINode_h___
8#define nsINode_h___
9
10#include "mozilla/DoublyLinkedList.h"
11#include "mozilla/Likely.h"
12#include "mozilla/UniquePtr.h"
13#include "nsCOMPtr.h" // for member, local
14#include "nsGkAtoms.h" // for nsGkAtoms::baseURIProperty
15#include "mozilla/dom/NodeInfo.h" // member (in nsCOMPtr)
16#include "nsIWeakReference.h"
17#include "nsIMutationObserver.h"
18#include "nsNodeInfoManager.h" // for use in NodePrincipal()
19#include "nsPropertyTable.h" // for typedefs
20#include "mozilla/ErrorResult.h"
21#include "mozilla/LinkedList.h"
22#include "mozilla/MemoryReporting.h"
23#include "mozilla/dom/EventTarget.h" // for base class
24#include "js/TypeDecls.h" // for Handle, Value, JSObject, JSContext
25#include "mozilla/dom/DOMString.h"
26#include "mozilla/dom/BindingDeclarations.h"
27#include "mozilla/dom/NodeBinding.h"
28#include "nsTHashtable.h"
29#include <iosfwd>
30
31// Including 'windows.h' will #define GetClassInfo to something else.
32#ifdef XP_WIN
33# ifdef GetClassInfo
34# undef GetClassInfo
35# endif
36#endif
37
38class AttrArray;
39class nsAttrChildContentList;
40template <typename T>
41class nsCOMArray;
42class nsDOMAttributeMap;
43class nsGenericHTMLElement;
44class nsIAnimationObserver;
45class nsIContent;
46class nsIContentSecurityPolicy;
47class nsIFrame;
48class nsIFormControl;
49class nsIHTMLCollection;
50class nsMultiMutationObserver;
51class nsINode;
52class nsINodeList;
53class nsIPrincipal;
54class nsIURI;
55class nsNodeSupportsWeakRefTearoff;
56class nsDOMMutationObserver;
57class nsRange;
58class nsWindowSizes;
59
60namespace mozilla {
61class EventListenerManager;
62struct StyleSelectorList;
63template <typename T>
64class Maybe;
65class PresShell;
66class TextEditor;
67namespace dom {
68/**
69 * @return true if aChar is what the WHATWG defines as a 'ascii whitespace'.
70 * https://infra.spec.whatwg.org/#ascii-whitespace
71 */
72inline bool IsSpaceCharacter(char16_t aChar) {
73 return aChar == ' ' || aChar == '\t' || aChar == '\n' || aChar == '\r' ||
74 aChar == '\f';
75}
76inline bool IsSpaceCharacter(char aChar) {
77 return aChar == ' ' || aChar == '\t' || aChar == '\n' || aChar == '\r' ||
78 aChar == '\f';
79}
80class AbstractRange;
81class AccessibleNode;
82template <typename T>
83class AncestorsOfTypeIterator;
84struct BoxQuadOptions;
85struct ConvertCoordinateOptions;
86class DocGroup;
87class Document;
88class DocumentFragment;
89class DocumentOrShadowRoot;
90class DOMPoint;
91class DOMQuad;
92class DOMRectReadOnly;
93class Element;
94class EventHandlerNonNull;
95template <typename T>
96class FlatTreeAncestorsOfTypeIterator;
97template <typename T>
98class InclusiveAncestorsOfTypeIterator;
99template <typename T>
100class InclusiveFlatTreeAncestorsOfTypeIterator;
101class LinkStyle;
102class MutationObservers;
103template <typename T>
104class Optional;
105class OwningNodeOrString;
106class SelectionNodeCache;
107template <typename>
108class Sequence;
109class ShadowRoot;
110class SVGUseElement;
111class Text;
112class TextOrElementOrDocument;
113struct DOMPointInit;
114struct GetRootNodeOptions;
115enum class CallerType : uint32_t;
116} // namespace dom
117} // namespace mozilla
118
119#define NODE_FLAG_BIT(n_)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (n_)))
\
120 (nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED + (n_)))
121
122enum : uint32_t {
123 // This bit will be set if the node has a listener manager.
124 NODE_HAS_LISTENERMANAGER = NODE_FLAG_BIT(0)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (0)))
,
125
126 // Whether this node has had any properties set on it
127 NODE_HAS_PROPERTIES = NODE_FLAG_BIT(1)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (1)))
,
128
129 // Whether the node has some ancestor, possibly itself, that is native
130 // anonymous. This includes ancestors crossing XBL scopes, in cases when an
131 // XBL binding is attached to an element which has a native anonymous
132 // ancestor. This flag is set-once: once a node has it, it must not be
133 // removed.
134 // NOTE: Should only be used on nsIContent nodes
135 NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE = NODE_FLAG_BIT(2)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (2)))
,
136
137 // Whether this node is the root of a native anonymous (from the perspective
138 // of its parent) subtree. This flag is set-once: once a node has it, it
139 // must not be removed.
140 // NOTE: Should only be used on nsIContent nodes
141 NODE_IS_NATIVE_ANONYMOUS_ROOT = NODE_FLAG_BIT(3)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (3)))
,
142
143 NODE_IS_EDITABLE = NODE_FLAG_BIT(4)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (4)))
,
144
145 // Whether the node participates in a shadow tree.
146 NODE_IS_IN_SHADOW_TREE = NODE_FLAG_BIT(5)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (5)))
,
147
148 // This node needs to go through frame construction to get a frame (or
149 // undisplayed entry).
150 NODE_NEEDS_FRAME = NODE_FLAG_BIT(6)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (6)))
,
151
152 // At least one descendant in the flattened tree has NODE_NEEDS_FRAME set.
153 // This should be set on every node on the flattened tree path between the
154 // node(s) with NODE_NEEDS_FRAME and the root content.
155 NODE_DESCENDANTS_NEED_FRAMES = NODE_FLAG_BIT(7)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (7)))
,
156
157 // Set if the node has the accesskey attribute set.
158 NODE_HAS_ACCESSKEY = NODE_FLAG_BIT(8)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (8)))
,
159
160 NODE_HAS_BEEN_IN_UA_WIDGET = NODE_FLAG_BIT(9)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (9)))
,
161
162 // Set if the node has a nonce value and a header delivered CSP.
163 NODE_HAS_NONCE_AND_HEADER_CSP = NODE_FLAG_BIT(10)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (10)))
,
164
165 NODE_KEEPS_DOMARENA = NODE_FLAG_BIT(11)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (11)))
,
166
167 NODE_MAY_HAVE_ELEMENT_CHILDREN = NODE_FLAG_BIT(12)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (12)))
,
168
169 NODE_HAS_SCHEDULED_SELECTION_CHANGE_EVENT = NODE_FLAG_BIT(13)(nsWrapperCache::FlagsType(1U) << (WRAPPER_CACHE_FLAGS_BITS_USED
+ (13)))
,
170
171 // Remaining bits are node type specific.
172 NODE_TYPE_SPECIFIC_BITS_OFFSET = 14
173};
174
175// Flags for selectors that persist to the DOM node.
176enum class NodeSelectorFlags : uint32_t {
177 // Node has an :empty or :-moz-only-whitespace selector
178 HasEmptySelector = 1 << 0,
179
180 /// A child of the node has a selector such that any insertion,
181 /// removal, or appending of children requires restyling the parent, if the
182 /// parent is an element. If the parent is the shadow root, the child's
183 /// siblings are restyled.
184 HasSlowSelector = 1 << 1,
185
186 /// A child of the node has a :first-child, :-moz-first-node,
187 /// :only-child, :last-child or :-moz-last-node selector.
188 HasEdgeChildSelector = 1 << 2,
189
190 /// A child of the node has a selector such that any insertion or
191 /// removal of children requires restyling later siblings of that
192 /// element. Additionally (in this manner it is stronger than
193 /// NODE_HAS_SLOW_SELECTOR), if a child's style changes due to any
194 /// other content tree changes (e.g., the child changes to or from
195 /// matching :empty due to a grandchild insertion or removal), the
196 /// child's later siblings must also be restyled.
197 HasSlowSelectorLaterSiblings = 1 << 3,
198
199 /// HasSlowSelector* was set by the presence of :nth (But not of).
200 HasSlowSelectorNth = 1 << 4,
201
202 /// A child of this node might be matched by :nth-child(.. of <selector>) or
203 /// :nth-last-child(.. of <selector>). If a DOM mutation may have caused the
204 /// selector to either match or no longer match that child, the child's
205 /// siblings are restyled.
206 HasSlowSelectorNthOf = 1 << 5,
207
208 /// All instances of :nth flags.
209 HasSlowSelectorNthAll = HasSlowSelectorNthOf | HasSlowSelectorNth,
210
211 /// Set of selector flags that may trigger a restyle on DOM append, with
212 /// restyle on siblings or a single parent (And perhaps their subtrees).
213 AllSimpleRestyleFlagsForAppend = HasEmptySelector | HasSlowSelector |
214 HasEdgeChildSelector | HasSlowSelectorNthAll,
215
216 /// Set of selector flags that may trigger a restyle as a result of any
217 /// DOM mutation.
218 AllSimpleRestyleFlags =
219 AllSimpleRestyleFlagsForAppend | HasSlowSelectorLaterSiblings,
220
221 // This node was evaluated as an anchor for a relative selector.
222 RelativeSelectorAnchor = 1 << 6,
223
224 // This node was evaluated as an anchor for a relative selector, and that
225 // relative selector was not the subject of the overall selector.
226 RelativeSelectorAnchorNonSubject = 1 << 7,
227
228 // This node's sibling(s) performed a relative selector search to this node.
229 RelativeSelectorSearchDirectionSibling = 1 << 8,
230
231 // This node's ancestor(s) performed a relative selector search to this node.
232 RelativeSelectorSearchDirectionAncestor = 1 << 9,
233
234 // This node's sibling(s) and ancestor(s), and/or this node's ancestor's
235 // sibling(s) performed a relative selector search to this node.
236 RelativeSelectorSearchDirectionAncestorSibling =
237 RelativeSelectorSearchDirectionSibling |
238 RelativeSelectorSearchDirectionAncestor,
239};
240
241MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(NodeSelectorFlags)inline constexpr mozilla::CastableTypedEnumResult<NodeSelectorFlags
> operator |( NodeSelectorFlags a, NodeSelectorFlags b) { typedef
mozilla::CastableTypedEnumResult<NodeSelectorFlags> Result
; typedef mozilla::detail::UnsignedIntegerTypeForEnum<NodeSelectorFlags
>::Type U; return Result(NodeSelectorFlags(U(a) | U(b))); }
inline NodeSelectorFlags& operator |=(NodeSelectorFlags &
a, NodeSelectorFlags b) { return a = a | b; } inline constexpr
mozilla::CastableTypedEnumResult<NodeSelectorFlags> operator
&( NodeSelectorFlags a, NodeSelectorFlags b) { typedef mozilla
::CastableTypedEnumResult<NodeSelectorFlags> Result; typedef
mozilla::detail::UnsignedIntegerTypeForEnum<NodeSelectorFlags
>::Type U; return Result(NodeSelectorFlags(U(a) & U(b)
)); } inline NodeSelectorFlags& operator &=(NodeSelectorFlags
& a, NodeSelectorFlags b) { return a = a & b; } inline
constexpr mozilla::CastableTypedEnumResult<NodeSelectorFlags
> operator ^( NodeSelectorFlags a, NodeSelectorFlags b) { typedef
mozilla::CastableTypedEnumResult<NodeSelectorFlags> Result
; typedef mozilla::detail::UnsignedIntegerTypeForEnum<NodeSelectorFlags
>::Type U; return Result(NodeSelectorFlags(U(a) ^ U(b))); }
inline NodeSelectorFlags& operator ^=(NodeSelectorFlags &
a, NodeSelectorFlags b) { return a = a ^ b; } inline constexpr
mozilla::CastableTypedEnumResult<NodeSelectorFlags> operator
~(NodeSelectorFlags a) { typedef mozilla::CastableTypedEnumResult
<NodeSelectorFlags> Result; typedef mozilla::detail::UnsignedIntegerTypeForEnum
<NodeSelectorFlags>::Type U; return Result(NodeSelectorFlags
(~(U(a)))); }
;
242
243// Make sure we have space for our bits
244#define ASSERT_NODE_FLAGS_SPACE(n)static_assert(WRAPPER_CACHE_FLAGS_BITS_USED + (n) <= sizeof
(nsWrapperCache::FlagsType) * 8, "Not enough space for our bits"
)
\
245 static_assert(WRAPPER_CACHE_FLAGS_BITS_USED + (n) <= \
246 sizeof(nsWrapperCache::FlagsType) * 8, \
247 "Not enough space for our bits")
248ASSERT_NODE_FLAGS_SPACE(NODE_TYPE_SPECIFIC_BITS_OFFSET)static_assert(WRAPPER_CACHE_FLAGS_BITS_USED + (NODE_TYPE_SPECIFIC_BITS_OFFSET
) <= sizeof(nsWrapperCache::FlagsType) * 8, "Not enough space for our bits"
)
;
249
250/**
251 * Class used to detect unexpected mutations. To use the class create an
252 * nsMutationGuard on the stack before unexpected mutations could occur.
253 * You can then at any time call Mutated to check if any unexpected mutations
254 * have occurred.
255 */
256class nsMutationGuard {
257 public:
258 nsMutationGuard() { mStartingGeneration = sGeneration; }
259
260 /**
261 * Returns true if any unexpected mutations have occurred. You can pass in
262 * an 8-bit ignore count to ignore a number of expected mutations.
263 *
264 * We don't need to care about overflow because subtraction of uint64_t's is
265 * finding the difference between two elements of the group Z < 2^64. Once
266 * we know the difference between two elements we only need to check that is
267 * less than the given number of mutations to know less than that many
268 * mutations occured. Assuming constant 1ns mutations it would take 584
269 * years for sGeneration to fully wrap around so we can ignore a guard living
270 * through a full wrap around.
271 */
272 bool Mutated(uint8_t aIgnoreCount) {
273 return (sGeneration - mStartingGeneration) > aIgnoreCount;
274 }
275
276 // This function should be called whenever a mutation that we want to keep
277 // track of happen. For now this is only done when children are added or
278 // removed, but we might do it for attribute changes too in the future.
279 static void DidMutate() { sGeneration++; }
280
281 private:
282 // This is the value sGeneration had when the guard was constructed.
283 uint64_t mStartingGeneration;
284
285 // This value is incremented on every mutation, for the life of the process.
286 static uint64_t sGeneration;
287};
288
289/**
290 * A class that implements nsIWeakReference
291 */
292class nsNodeWeakReference final : public nsIWeakReference {
293 public:
294 explicit nsNodeWeakReference(nsINode* aNode);
295
296 // nsISupports
297 NS_DECL_ISUPPORTSpublic: virtual nsresult QueryInterface(const nsIID& aIID
, void** aInstancePtr) override; virtual MozExternalRefCountType
AddRef(void) override; virtual MozExternalRefCountType Release
(void) override; using HasThreadSafeRefCnt = std::false_type;
protected: nsAutoRefCnt mRefCnt; nsAutoOwningThread _mOwningThread
; public:
298
299 // nsIWeakReference
300 NS_DECL_NSIWEAKREFERENCEvirtual nsresult QueryReferentFromScript(const nsIID & uuid
, void * * result) override; virtual size_t SizeOfOnlyThis(mozilla
::MallocSizeOf aMallocSizeOf) override;
301
302 void NoticeNodeDestruction() { mObject = nullptr; }
303
304 private:
305 ~nsNodeWeakReference();
306};
307
308// This should be used for any nsINode sub-class that has fields of its own
309// that it needs to measure; any sub-class that doesn't use it will inherit
310// AddSizeOfExcludingThis from its super-class. AddSizeOfIncludingThis() need
311// not be defined, it is inherited from nsINode.
312#define NS_DECL_ADDSIZEOFEXCLUDINGTHISvirtual void AddSizeOfExcludingThis(nsWindowSizes& aSizes
, size_t* aNodeSize) const override;
\
313 virtual void AddSizeOfExcludingThis(nsWindowSizes& aSizes, \
314 size_t* aNodeSize) const override;
315
316// IID for the nsINode interface
317// Must be kept in sync with xpcom/rust/xpcom/src/interfaces/nonidl.rs
318#define NS_INODE_IID{ 0x70ba4547, 0x7699, 0x44fc, { 0xb3, 0x20, 0x52, 0xdb, 0xe3,
0xd1, 0xf9, 0x0a } }
\
319 { \
320 0x70ba4547, 0x7699, 0x44fc, { \
321 0xb3, 0x20, 0x52, 0xdb, 0xe3, 0xd1, 0xf9, 0x0a \
322 } \
323 }
324
325/**
326 * An internal interface that abstracts some DOMNode-related parts that both
327 * nsIContent and Document share. An instance of this interface has a list
328 * of nsIContent children and provides access to them.
329 */
330class nsINode : public mozilla::dom::EventTarget {
331#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED1
332 void AssertInvariantsOnNodeInfoChange();
333#endif
334 public:
335 using BoxQuadOptions = mozilla::dom::BoxQuadOptions;
336 using ConvertCoordinateOptions = mozilla::dom::ConvertCoordinateOptions;
337 using DocGroup = mozilla::dom::DocGroup;
338 using Document = mozilla::dom::Document;
339 using DOMPoint = mozilla::dom::DOMPoint;
340 using DOMPointInit = mozilla::dom::DOMPointInit;
341 using DOMQuad = mozilla::dom::DOMQuad;
342 using DOMRectReadOnly = mozilla::dom::DOMRectReadOnly;
343 using OwningNodeOrString = mozilla::dom::OwningNodeOrString;
344 using TextOrElementOrDocument = mozilla::dom::TextOrElementOrDocument;
345 using CallerType = mozilla::dom::CallerType;
346 using ErrorResult = mozilla::ErrorResult;
347
348 // XXXbz Maybe we should codegen a class holding these constants and
349 // inherit from it...
350 static const auto ELEMENT_NODE = mozilla::dom::Node_Binding::ELEMENT_NODE;
351 static const auto ATTRIBUTE_NODE = mozilla::dom::Node_Binding::ATTRIBUTE_NODE;
352 static const auto TEXT_NODE = mozilla::dom::Node_Binding::TEXT_NODE;
353 static const auto CDATA_SECTION_NODE =
354 mozilla::dom::Node_Binding::CDATA_SECTION_NODE;
355 static const auto ENTITY_REFERENCE_NODE =
356 mozilla::dom::Node_Binding::ENTITY_REFERENCE_NODE;
357 static const auto ENTITY_NODE = mozilla::dom::Node_Binding::ENTITY_NODE;
358 static const auto PROCESSING_INSTRUCTION_NODE =
359 mozilla::dom::Node_Binding::PROCESSING_INSTRUCTION_NODE;
360 static const auto COMMENT_NODE = mozilla::dom::Node_Binding::COMMENT_NODE;
361 static const auto DOCUMENT_NODE = mozilla::dom::Node_Binding::DOCUMENT_NODE;
362 static const auto DOCUMENT_TYPE_NODE =
363 mozilla::dom::Node_Binding::DOCUMENT_TYPE_NODE;
364 static const auto DOCUMENT_FRAGMENT_NODE =
365 mozilla::dom::Node_Binding::DOCUMENT_FRAGMENT_NODE;
366 static const auto NOTATION_NODE = mozilla::dom::Node_Binding::NOTATION_NODE;
367 static const auto MAX_NODE_TYPE = NOTATION_NODE;
368
369 void* operator new(size_t aSize, nsNodeInfoManager* aManager);
370 void* operator new(size_t aSize) = delete;
371 void operator delete(void* aPtr);
372
373 template <class T>
374 using Sequence = mozilla::dom::Sequence<T>;
375
376 NS_DECLARE_STATIC_IID_ACCESSOR(NS_INODE_IID)template <typename T, typename U> struct COMTypeInfo;
377
378 // The |aNodeSize| outparam on this function is where the actual node size
379 // value is put. It gets added to the appropriate value within |aSizes| by
380 // AddSizeOfNodeTree().
381 //
382 // Among the sub-classes that inherit (directly or indirectly) from nsINode,
383 // measurement of the following members may be added later if DMD finds it is
384 // worthwhile:
385 // - nsGenericHTMLElement: mForm, mFieldSet
386 // - nsGenericHTMLFrameElement: mFrameLoader (bug 672539)
387 // - HTMLBodyElement: mContentStyleRule
388 // - HTMLDataListElement: mOptions
389 // - HTMLFieldSetElement: mElements, mDependentElements, mFirstLegend
390 // - HTMLFormElement: many!
391 // - HTMLFrameSetElement: mRowSpecs, mColSpecs
392 // - HTMLInputElement: mInputData, mFiles, mFileList, mStaticDocfileList
393 // - nsHTMLMapElement: mAreas
394 // - HTMLMediaElement: many!
395 // - nsHTMLOutputElement: mDefaultValue, mTokenList
396 // - nsHTMLRowElement: mCells
397 // - nsHTMLSelectElement: mOptions, mRestoreState
398 // - nsHTMLTableElement: mTBodies, mRows, mTableInheritedAttributes
399 // - nsHTMLTableSectionElement: mRows
400 // - nsHTMLTextAreaElement: mControllers, mState
401 //
402 // The following members don't need to be measured:
403 // - nsIContent: mPrimaryFrame, because it's non-owning and measured elsewhere
404 //
405 virtual void AddSizeOfExcludingThis(nsWindowSizes& aSizes,
406 size_t* aNodeSize) const;
407
408 // SizeOfIncludingThis doesn't need to be overridden by sub-classes because
409 // sub-classes of nsINode are guaranteed to be laid out in memory in such a
410 // way that |this| points to the start of the allocated object, even in
411 // methods of nsINode's sub-classes, so aSizes.mState.mMallocSizeOf(this) is
412 // always safe to call no matter which object it was invoked on.
413 void AddSizeOfIncludingThis(nsWindowSizes& aSizes, size_t* aNodeSize) const;
414
415 friend class nsNodeWeakReference;
416 friend class nsNodeSupportsWeakRefTearoff;
417 friend class AttrArray;
418
419#ifdef MOZILLA_INTERNAL_API1
420 explicit nsINode(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
421#endif
422
423 virtual ~nsINode();
424
425 bool IsContainerNode() const {
426 return IsElement() || IsDocument() || IsDocumentFragment();
427 }
428
429 /**
430 * Returns true if the node is a HTMLTemplate element.
431 */
432 bool IsTemplateElement() const { return IsHTMLElement(nsGkAtoms::_template); }
433
434 bool IsSlotable() const { return IsElement() || IsText(); }
435
436 /**
437 * Returns true if this is a document node.
438 */
439 bool IsDocument() const {
440 // One less pointer-chase than checking NodeType().
441 return !GetParentNode() && IsInUncomposedDoc();
442 }
443
444 /**
445 * Return this node as a document. Asserts IsDocument().
446 *
447 * This is defined inline in Document.h.
448 */
449 inline Document* AsDocument();
450 inline const Document* AsDocument() const;
451
452 /**
453 * Returns true if this is a document fragment node.
454 */
455 bool IsDocumentFragment() const {
456 return NodeType() == DOCUMENT_FRAGMENT_NODE;
457 }
458
459 virtual bool IsHTMLFormControlElement() const { return false; }
460
461 /**
462 * https://dom.spec.whatwg.org/#concept-tree-inclusive-descendant
463 *
464 * @param aNode must not be nullptr.
465 */
466 bool IsInclusiveDescendantOf(const nsINode* aNode) const;
467
468 /**
469 * https://dom.spec.whatwg.org/#concept-shadow-including-inclusive-descendant
470 *
471 * @param aNode must not be nullptr.
472 */
473 bool IsShadowIncludingInclusiveDescendantOf(const nsINode* aNode) const;
474
475 /**
476 * Returns true if the given node is this node or one of its descendants
477 * in the "flat tree."
478 *
479 * @param aNode must not be nullptr.
480 */
481 bool IsInclusiveFlatTreeDescendantOf(const nsINode* aNode) const;
482
483 /**
484 * Return this node as a document fragment. Asserts IsDocumentFragment().
485 *
486 * This is defined inline in DocumentFragment.h.
487 */
488 inline mozilla::dom::DocumentFragment* AsDocumentFragment();
489 inline const mozilla::dom::DocumentFragment* AsDocumentFragment() const;
490
491 JSObject* WrapObject(JSContext*, JS::Handle<JSObject*> aGivenProto) final;
492
493 /**
494 * Hook for constructing JS::ubi::Concrete specializations for memory
495 * reporting. Specializations are defined in NodeUbiReporting.h.
496 */
497 virtual void ConstructUbiNode(void* storage) = 0;
498
499 /**
500 * returns true if we are in priviliged code or
501 * layout.css.getBoxQuads.enabled == true.
502 */
503 static bool HasBoxQuadsSupport(JSContext* aCx, JSObject* /* unused */);
504
505 protected:
506 /**
507 * WrapNode is called from WrapObject to actually wrap this node, WrapObject
508 * does some additional checks and fix-up that's common to all nodes. WrapNode
509 * should just call the DOM binding's Wrap function.
510 *
511 * aGivenProto is the prototype to use (or null if the default one should be
512 * used) and should just be passed directly on to the DOM binding's Wrap
513 * function.
514 */
515 virtual JSObject* WrapNode(JSContext* aCx,
516 JS::Handle<JSObject*> aGivenProto) = 0;
517
518 public:
519 mozilla::dom::ParentObject GetParentObject()
520 const; // Implemented in Document.h
521
522 /**
523 * Returns the first child of a node or the first child of
524 * a template element's content if the provided node is a
525 * template element.
526 */
527 nsIContent* GetFirstChildOfTemplateOrNode();
528
529 /**
530 * Return the scope chain parent for this node, for use in things
531 * like event handler compilation. Returning null means to use the
532 * global object as the scope chain parent.
533 */
534 virtual nsINode* GetScopeChainParent() const;
535
536 MOZ_CAN_RUN_SCRIPT mozilla::dom::Element* GetParentFlexElement();
537
538 /**
539 * Returns the nearest inclusive open popover for a given node, see
540 * https://html.spec.whatwg.org/multipage/popover.html#nearest-inclusive-open-popover
541 */
542 mozilla::dom::Element* GetNearestInclusiveOpenPopover() const;
543
544 /**
545 * https://html.spec.whatwg.org/multipage/popover.html#nearest-inclusive-target-popover-for-invoker
546 */
547 mozilla::dom::Element* GetNearestInclusiveTargetPopoverForInvoker() const;
548
549 nsGenericHTMLElement* GetEffectiveInvokeTargetElement() const;
550
551 /**
552 * https://html.spec.whatwg.org/multipage/popover.html#popover-target-element
553 */
554 nsGenericHTMLElement* GetEffectivePopoverTargetElement() const;
555
556 /**
557 * https://html.spec.whatwg.org/multipage/popover.html#topmost-clicked-popover
558 */
559 mozilla::dom::Element* GetTopmostClickedPopover() const;
560
561 bool IsNode() const final { return true; }
562
563 NS_IMPL_FROMEVENTTARGET_HELPER(nsINode, IsNode())template <typename T> static auto FromEventTarget( T&
aEventTarget) -> decltype(static_cast< nsINode*>(&
aEventTarget)) { return aEventTarget.IsNode() ? static_cast<
nsINode*>(&aEventTarget) : nullptr; } template <typename
T> static nsINode* FromEventTarget( T* aEventTarget) { do
{ static_assert( mozilla::detail::AssertionConditionType<
decltype(aEventTarget)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aEventTarget))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("aEventTarget", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 563); AnnotateMozCrashReason("MOZ_DIAGNOSTIC_ASSERT" "(" "aEventTarget"
")"); do { *((volatile int*)__null) = 563; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); return FromEventTarget
(*aEventTarget); } template <typename T> static nsINode
* FromEventTargetOrNull( T* aEventTarget) { return aEventTarget
? FromEventTarget(*aEventTarget) : nullptr; } template <typename
T> static auto FromEventTarget(const T& aEventTarget)
-> decltype(static_cast<const nsINode*>(&aEventTarget
)) { return aEventTarget.IsNode() ? static_cast<const nsINode
*>(&aEventTarget) : nullptr; } template <typename T
> static const nsINode* FromEventTarget(const T* aEventTarget
) { do { static_assert( mozilla::detail::AssertionConditionType
<decltype(aEventTarget)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(aEventTarget))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("aEventTarget", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 563); AnnotateMozCrashReason("MOZ_DIAGNOSTIC_ASSERT" "(" "aEventTarget"
")"); do { *((volatile int*)__null) = 563; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); return FromEventTarget
(*aEventTarget); } template <typename T> static const nsINode
* FromEventTargetOrNull(const T* aEventTarget) { return aEventTarget
? FromEventTarget(*aEventTarget) : nullptr; } template <typename
T> static nsINode* FromEventTarget(T&& aEventTarget
) { do { static_assert( mozilla::detail::AssertionConditionType
<decltype(!!aEventTarget)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!!aEventTarget))), 0))) { do
{ } while (false); MOZ_ReportAssertionFailure("!!aEventTarget"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 563); AnnotateMozCrashReason("MOZ_DIAGNOSTIC_ASSERT" "(" "!!aEventTarget"
")"); do { *((volatile int*)__null) = 563; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); return aEventTarget
->IsNode() ? static_cast<nsINode*>(static_cast<EventTarget
*>(aEventTarget)) : nullptr; } template <typename T>
static nsINode* FromEventTargetOrNull(T&& aEventTarget
) { return aEventTarget ? FromEventTarget(aEventTarget) : nullptr
; }
564
565 /**
566 * Return whether the node is an Element node. Faster than using `NodeType()`.
567 */
568 bool IsElement() const { return GetBoolFlag(NodeIsElement); }
569
570 virtual bool IsTextControlElement() const { return false; }
571 virtual bool IsGenericHTMLFormControlElementWithState() const {
572 return false;
573 }
574
575 // Returns non-null if this element subclasses `LinkStyle`.
576 virtual const mozilla::dom::LinkStyle* AsLinkStyle() const { return nullptr; }
577 mozilla::dom::LinkStyle* AsLinkStyle() {
578 return const_cast<mozilla::dom::LinkStyle*>(
579 static_cast<const nsINode*>(this)->AsLinkStyle());
580 }
581
582 /**
583 * Return this node as an Element. Should only be used for nodes
584 * for which IsElement() is true. This is defined inline in Element.h.
585 */
586 inline mozilla::dom::Element* AsElement();
587 inline const mozilla::dom::Element* AsElement() const;
588
589 /**
590 * Return whether the node is an nsStyledElement instance or not.
591 */
592 virtual bool IsStyledElement() const { return false; }
593
594 /**
595 * Return this node as nsIContent. Should only be used for nodes for which
596 * IsContent() is true.
597 *
598 * The assertion in nsIContent's constructor makes this safe.
599 */
600 nsIContent* AsContent() {
601 MOZ_ASSERT(IsContent())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsContent())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsContent()))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("IsContent()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 601); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsContent()"
")"); do { *((volatile int*)__null) = 601; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
602 return reinterpret_cast<nsIContent*>(this);
603 }
604 const nsIContent* AsContent() const {
605 MOZ_ASSERT(IsContent())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsContent())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsContent()))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("IsContent()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 605); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsContent()"
")"); do { *((volatile int*)__null) = 605; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
606 return reinterpret_cast<const nsIContent*>(this);
607 }
608
609 /*
610 * Return whether the node is a Text node (which might be an actual
611 * textnode, or might be a CDATA section).
612 */
613 bool IsText() const {
614 uint32_t nodeType = NodeType();
615 return nodeType == TEXT_NODE || nodeType == CDATA_SECTION_NODE;
616 }
617
618 /**
619 * Return this node as Text if it is one, otherwise null. This is defined
620 * inline in Text.h.
621 */
622 inline mozilla::dom::Text* GetAsText();
623 inline const mozilla::dom::Text* GetAsText() const;
624
625 /**
626 * Return this node as Text. Asserts IsText(). This is defined inline in
627 * Text.h.
628 */
629 inline mozilla::dom::Text* AsText();
630 inline const mozilla::dom::Text* AsText() const;
631
632 /**
633 * Return this node if the instance type inherits nsIFormControl, or an
634 * nsIFormControl instance which ia associated with this node. Otherwise,
635 * returns nullptr.
636 */
637 [[nodiscard]] virtual nsIFormControl* GetAsFormControl() { return nullptr; }
638 [[nodiscard]] virtual const nsIFormControl* GetAsFormControl() const {
639 return nullptr;
640 }
641
642 /*
643 * Return whether the node is a ProcessingInstruction node.
644 */
645 bool IsProcessingInstruction() const {
646 return NodeType() == PROCESSING_INSTRUCTION_NODE;
647 }
648
649 /*
650 * Return whether the node is a CharacterData node (text, cdata,
651 * comment, processing instruction)
652 */
653 bool IsCharacterData() const {
654 uint32_t nodeType = NodeType();
655 return nodeType == TEXT_NODE || nodeType == CDATA_SECTION_NODE ||
656 nodeType == PROCESSING_INSTRUCTION_NODE || nodeType == COMMENT_NODE;
657 }
658
659 /**
660 * Return whether the node is a Comment node.
661 */
662 bool IsComment() const { return NodeType() == COMMENT_NODE; }
663
664 /**
665 * Return whether the node is an Attr node.
666 */
667 bool IsAttr() const { return NodeType() == ATTRIBUTE_NODE; }
668
669 /**
670 * Return if this node has any children.
671 */
672 bool HasChildren() const { return !!mFirstChild; }
673
674 /**
675 * Get the number of children
676 * @return the number of children
677 */
678 uint32_t GetChildCount() const { return mChildCount; }
679
680 /**
681 * NOTE: this function is going to be removed soon (hopefully!) Don't use it
682 * in new code.
683 *
684 * Get a child by index
685 * @param aIndex the index of the child to get
686 * @return the child, or null if index out of bounds
687 */
688 nsIContent* GetChildAt_Deprecated(uint32_t aIndex) const;
689
690 /**
691 * Get the index of a child within this content.
692 *
693 * @param aPossibleChild the child to get the index of.
694 * @return the index of the child, or Nothing if not a child. Be aware that
695 * anonymous children (e.g. a <div> child of an <input> element) will
696 * result in Nothing.
697 *
698 * If the return value is Some, then calling GetChildAt_Deprecated() with
699 * that value will return aPossibleChild.
700 */
701 mozilla::Maybe<uint32_t> ComputeIndexOf(const nsINode* aPossibleChild) const;
702
703 /**
704 * Get the index of a child within this content's flat tree children.
705 *
706 * @param aPossibleChild the child to get the index of.
707 * @return the index of the child, or Nothing if not a child. Be aware that
708 * anonymous children (e.g. a <div> child of an <input> element) will
709 * result in Nothing.
710 */
711 mozilla::Maybe<uint32_t> ComputeFlatTreeIndexOf(
712 const nsINode* aPossibleChild) const;
713
714 /**
715 * Get the index of this within parent node (ComputeIndexInParentNode) or
716 * parent content (nsIContent) node (ComputeIndexInParentContent).
717 *
718 * @return the index of this node in the parent, or Nothing there is no
719 * parent (content) node or the parent does not have this node anymore
720 * (e.g., being removed from the parent). Be aware that anonymous
721 * children (e.g. a <div> child of an <input> element) will result in
722 * Nothing.
723 *
724 * If the return value is Some, then calling GetChildAt_Deprecated() with
725 * that value will return this.
726 */
727 mozilla::Maybe<uint32_t> ComputeIndexInParentNode() const;
728 mozilla::Maybe<uint32_t> ComputeIndexInParentContent() const;
729
730 /**
731 * Get the index of a child within this content.
732 *
733 * @param aPossibleChild the child to get the index of.
734 * @return the index of the child, or -1 if not a child. Be aware that
735 * anonymous children (e.g. a <div> child of an <input> element) will
736 * result in -1.
737 *
738 * If the return value is not -1, then calling GetChildAt_Deprecated() with
739 * that value will return aPossibleChild.
740 */
741 int32_t ComputeIndexOf_Deprecated(const nsINode* aPossibleChild) const;
742
743 /**
744 * Returns the "node document" of this node.
745 *
746 * https://dom.spec.whatwg.org/#concept-node-document
747 *
748 * Note that in the case that this node is a document node this method
749 * will return |this|. That is different to the Node.ownerDocument DOM
750 * attribute (implemented by nsINode::GetOwnerDocument) which is specified to
751 * be null in that case:
752 *
753 * https://dom.spec.whatwg.org/#dom-node-ownerdocument
754 *
755 * For all other cases OwnerDoc and GetOwnerDocument behave identically.
756 */
757 Document* OwnerDoc() const MOZ_NONNULL_RETURN__attribute__((returns_nonnull)) {
758 return mNodeInfo->GetDocument();
759 }
760
761 /**
762 * Return the "owner document" of this node as an nsINode*. Implemented
763 * in Document.h.
764 */
765 inline nsINode* OwnerDocAsNode() const MOZ_NONNULL_RETURN__attribute__((returns_nonnull));
766
767 /**
768 * Returns true if the content has an ancestor that is a document.
769 *
770 * @return whether this content is in a document tree
771 */
772 bool IsInUncomposedDoc() const { return GetBoolFlag(IsInDocument); }
773
774 /**
775 * Get the document that this content is currently in, if any. This will be
776 * null if the content has no ancestor that is a document.
777 *
778 * @return the current document
779 */
780
781 Document* GetUncomposedDoc() const {
782 return IsInUncomposedDoc() ? OwnerDoc() : nullptr;
783 }
784
785 /**
786 * Returns true if we're connected, and thus GetComposedDoc() would return a
787 * non-null value.
788 */
789 bool IsInComposedDoc() const { return GetBoolFlag(IsConnected); }
790
791 /**
792 * This method returns the owner document if the node is connected to it
793 * (as defined in the DOM spec), otherwise it returns null.
794 * In other words, returns non-null even in the case the node is in
795 * Shadow DOM, if there is a possibly shadow boundary crossing path from
796 * the node to its owner document.
797 */
798 Document* GetComposedDoc() const {
799 return IsInComposedDoc() ? OwnerDoc() : nullptr;
800 }
801
802 /**
803 * Returns OwnerDoc() if the node is in uncomposed document and ShadowRoot if
804 * the node is in Shadow DOM.
805 */
806 mozilla::dom::DocumentOrShadowRoot* GetContainingDocumentOrShadowRoot() const;
807
808 /**
809 * Returns OwnerDoc() if the node is in uncomposed document and ShadowRoot if
810 * the node is in Shadow DOM and is in composed document.
811 */
812 mozilla::dom::DocumentOrShadowRoot* GetUncomposedDocOrConnectedShadowRoot()
813 const;
814
815 /**
816 * To be called when reference count of the node drops to zero.
817 */
818 void LastRelease();
819
820 /**
821 * The values returned by this function are the ones defined for
822 * Node.nodeType
823 */
824 uint16_t NodeType() const { return mNodeInfo->NodeType(); }
825 const nsString& NodeName() const { return mNodeInfo->NodeName(); }
826 const nsString& LocalName() const { return mNodeInfo->LocalName(); }
827
828 /**
829 * Get the NodeInfo for this element
830 * @return the nodes node info
831 */
832 inline mozilla::dom::NodeInfo* NodeInfo() const { return mNodeInfo; }
833
834 /**
835 * Called when we have been adopted, and the information of the
836 * node has been changed.
837 *
838 * The new document can be reached via OwnerDoc().
839 *
840 * If you override this method,
841 * please call up to the parent NodeInfoChanged.
842 *
843 * If you change this, change also the similar method in Link.
844 */
845 virtual void NodeInfoChanged(Document* aOldDoc) {
846#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED1
847 AssertInvariantsOnNodeInfoChange();
848#endif
849 }
850
851 inline bool IsInNamespace(int32_t aNamespace) const {
852 return mNodeInfo->NamespaceID() == aNamespace;
853 }
854
855 /**
856 * Returns the DocGroup of the "node document" of this node.
857 */
858 DocGroup* GetDocGroup() const;
859
860 /**
861 * Print a debugger friendly descriptor of this element. This will describe
862 * the position of this element in the document.
863 */
864 friend std::ostream& operator<<(std::ostream& aStream, const nsINode& aNode);
865
866 protected:
867 // These 2 methods are useful for the recursive templates IsHTMLElement,
868 // IsSVGElement, etc.
869 inline bool IsNodeInternal() const { return false; }
870
871 template <typename First, typename... Args>
872 inline bool IsNodeInternal(First aFirst, Args... aArgs) const {
873 return mNodeInfo->Equals(aFirst) || IsNodeInternal(aArgs...);
874 }
875
876 public:
877 inline bool IsHTMLElement() const {
878 return IsElement() && IsInNamespace(kNameSpaceID_XHTML3);
879 }
880
881 inline bool IsHTMLElement(const nsAtom* aTag) const {
882 return IsElement() && mNodeInfo->Equals(aTag, kNameSpaceID_XHTML3);
883 }
884
885 template <typename First, typename... Args>
886 inline bool IsAnyOfHTMLElements(First aFirst, Args... aArgs) const {
887 return IsHTMLElement() && IsNodeInternal(aFirst, aArgs...);
888 }
889
890 inline bool IsSVGElement() const {
891 return IsElement() && IsInNamespace(kNameSpaceID_SVG9);
892 }
893
894 inline bool IsSVGElement(const nsAtom* aTag) const {
895 return IsElement() && mNodeInfo->Equals(aTag, kNameSpaceID_SVG9);
896 }
897
898 template <typename First, typename... Args>
899 inline bool IsAnyOfSVGElements(First aFirst, Args... aArgs) const {
900 return IsSVGElement() && IsNodeInternal(aFirst, aArgs...);
901 }
902
903 virtual bool IsSVGAnimationElement() const { return false; }
904 virtual bool IsSVGComponentTransferFunctionElement() const { return false; }
905 virtual bool IsSVGFilterPrimitiveElement() const { return false; }
906 virtual bool IsSVGFilterPrimitiveChildElement() const { return false; }
907 virtual bool IsSVGGeometryElement() const { return false; }
908 virtual bool IsSVGGraphicsElement() const { return false; }
909
910 inline bool IsXULElement() const {
911 return IsElement() && IsInNamespace(kNameSpaceID_XUL8);
912 }
913
914 inline bool IsXULElement(const nsAtom* aTag) const {
915 return IsElement() && mNodeInfo->Equals(aTag, kNameSpaceID_XUL8);
916 }
917
918 template <typename First, typename... Args>
919 inline bool IsAnyOfXULElements(First aFirst, Args... aArgs) const {
920 return IsXULElement() && IsNodeInternal(aFirst, aArgs...);
921 }
922
923 inline bool IsMathMLElement() const {
924 return IsElement() && IsInNamespace(kNameSpaceID_MathML6);
925 }
926
927 inline bool IsMathMLElement(const nsAtom* aTag) const {
928 return IsElement() && mNodeInfo->Equals(aTag, kNameSpaceID_MathML6);
929 }
930
931 template <typename First, typename... Args>
932 inline bool IsAnyOfMathMLElements(First aFirst, Args... aArgs) const {
933 return IsMathMLElement() && IsNodeInternal(aFirst, aArgs...);
934 }
935
936 bool IsShadowRoot() const {
937 const bool isShadowRoot = IsInShadowTree() && !GetParentNode();
938 MOZ_ASSERT_IF(isShadowRoot, IsDocumentFragment())do { if (isShadowRoot) { do { static_assert( mozilla::detail::
AssertionConditionType<decltype(IsDocumentFragment())>::
isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(IsDocumentFragment()))), 0))) { do { } while (false)
; MOZ_ReportAssertionFailure("IsDocumentFragment()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 938); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsDocumentFragment()"
")"); do { *((volatile int*)__null) = 938; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); } } while (
false)
;
939 return isShadowRoot;
940 }
941
942 bool IsHTMLHeadingElement() const {
943 return IsAnyOfHTMLElements(nsGkAtoms::h1, nsGkAtoms::h2, nsGkAtoms::h3,
944 nsGkAtoms::h4, nsGkAtoms::h5, nsGkAtoms::h6);
945 }
946
947 /**
948 * Check whether the conditional processing attributes other than
949 * systemLanguage "return true" if they apply to and are specified
950 * on the given SVG element. Returns true if this element should be
951 * rendered, false if it should not.
952 */
953 virtual bool PassesConditionalProcessingTests() const { return true; }
954
955 /**
956 * Insert a content node before another or at the end.
957 * This method handles calling BindToTree on the child appropriately.
958 *
959 * @param aKid the content to insert
960 * @param aBeforeThis an existing node. Use nullptr if you want to
961 * add aKid at the end.
962 * @param aNotify whether to notify the document (current document for
963 * nsIContent, and |this| for Document) that the insert has occurred
964 * @param aRv The error, if any.
965 * Throw NS_ERROR_DOM_HIERARCHY_REQUEST_ERR if one attempts to have
966 * more than one element node as a child of a document. Doing this
967 * will also assert -- you shouldn't be doing it! Check with
968 * Document::GetRootElement() first if you're not sure. Apart from
969 * this one constraint, this doesn't do any checking on whether aKid is
970 * a valid child of |this|.
971 * Throw NS_ERROR_OUT_OF_MEMORY in some cases (from BindToTree).
972 */
973 virtual void InsertChildBefore(nsIContent* aKid, nsIContent* aBeforeThis,
974 bool aNotify, mozilla::ErrorResult& aRv);
975
976 /**
977 * Append a content node to the end of the child list. This method handles
978 * calling BindToTree on the child appropriately.
979 *
980 * @param aKid the content to append
981 * @param aNotify whether to notify the document (current document for
982 * nsIContent, and |this| for Document) that the append has occurred
983 * @param aRv The error, if any.
984 * Throw NS_ERROR_DOM_HIERARCHY_REQUEST_ERR if one attempts to have
985 * more than one element node as a child of a document. Doing this
986 * will also assert -- you shouldn't be doing it! Check with
987 * Document::GetRootElement() first if you're not sure. Apart from
988 * this one constraint, this doesn't do any checking on whether aKid is
989 * a valid child of |this|.
990 * Throw NS_ERROR_OUT_OF_MEMORY in some cases (from BindToTree).
991 */
992 void AppendChildTo(nsIContent* aKid, bool aNotify,
993 mozilla::ErrorResult& aRv) {
994 InsertChildBefore(aKid, nullptr, aNotify, aRv);
995 }
996
997 /**
998 * Remove a child from this node. This method handles calling UnbindFromTree
999 * on the child appropriately.
1000 *
1001 * @param aKid the content to remove
1002 * @param aNotify whether to notify the document (current document for
1003 * nsIContent, and |this| for Document) that the remove has occurred
1004 */
1005 virtual void RemoveChildNode(nsIContent* aKid, bool aNotify);
1006
1007 /**
1008 * Get a property associated with this node.
1009 *
1010 * @param aPropertyName name of property to get.
1011 * @param aStatus out parameter for storing resulting status.
1012 * Set to NS_PROPTABLE_PROP_NOT_THERE if the property
1013 * is not set.
1014 * @return the property. Null if the property is not set
1015 * (though a null return value does not imply the
1016 * property was not set, i.e. it can be set to null).
1017 */
1018 void* GetProperty(const nsAtom* aPropertyName,
1019 nsresult* aStatus = nullptr) const;
1020
1021 /**
1022 * Set a property to be associated with this node. This will overwrite an
1023 * existing value if one exists. The existing value is destroyed using the
1024 * destructor function given when that value was set.
1025 *
1026 * @param aPropertyName name of property to set.
1027 * @param aValue new value of property.
1028 * @param aDtor destructor function to be used when this property
1029 * is destroyed.
1030 * @param aTransfer if true the property will not be deleted when the
1031 * ownerDocument of the node changes, if false it
1032 * will be deleted.
1033 *
1034 * @return NS_PROPTABLE_PROP_OVERWRITTEN (success value) if the property
1035 * was already set
1036 * @throws NS_ERROR_OUT_OF_MEMORY if that occurs
1037 */
1038 nsresult SetProperty(nsAtom* aPropertyName, void* aValue,
1039 NSPropertyDtorFunc aDtor = nullptr,
1040 bool aTransfer = false);
1041
1042 /**
1043 * A generic destructor for property values allocated with new.
1044 */
1045 template <class T>
1046 static void DeleteProperty(void*, nsAtom*, void* aPropertyValue, void*) {
1047 delete static_cast<T*>(aPropertyValue);
1048 }
1049
1050 /**
1051 * Removes a property associated with this node. The value is destroyed using
1052 * the destruction function given when that value was set.
1053 *
1054 * @param aPropertyName name of property to destroy.
1055 */
1056 void RemoveProperty(const nsAtom* aPropertyName);
1057
1058 /**
1059 * Take a property associated with this node. The value will not be destroyed
1060 * but rather returned. It is the caller's responsibility to destroy the value
1061 * after that point.
1062 *
1063 * @param aPropertyName name of property to unset.
1064 * @param aStatus out parameter for storing resulting status.
1065 * Set to NS_PROPTABLE_PROP_NOT_THERE if the property
1066 * is not set.
1067 * @return the property. Null if the property is not set
1068 * (though a null return value does not imply the
1069 * property was not set, i.e. it can be set to null).
1070 */
1071 void* TakeProperty(const nsAtom* aPropertyName, nsresult* aStatus = nullptr);
1072
1073 bool HasProperties() const { return HasFlag(NODE_HAS_PROPERTIES); }
1074
1075 /**
1076 * Return the principal of this node. This is guaranteed to never be a null
1077 * pointer.
1078 */
1079 nsIPrincipal* NodePrincipal() const {
1080 return mNodeInfo->NodeInfoManager()->DocumentPrincipal();
1081 }
1082
1083 /**
1084 * Return the CSP of this node's document, if any.
1085 */
1086 nsIContentSecurityPolicy* GetCsp() const;
1087
1088 /**
1089 * Get the parent nsIContent for this node.
1090 * @return the parent, or null if no parent or the parent is not an nsIContent
1091 */
1092 nsIContent* GetParent() const {
1093 return MOZ_LIKELY(GetBoolFlag(ParentIsContent))(__builtin_expect(!!(GetBoolFlag(ParentIsContent)), 1)) ? mParent->AsContent()
1094 : nullptr;
1095 }
1096
1097 /**
1098 * Get the parent nsINode for this node. This can be either an nsIContent, a
1099 * Document or an Attr.
1100 * @return the parent node
1101 */
1102 nsINode* GetParentNode() const { return mParent; }
1103
1104 private:
1105 nsIContent* DoGetShadowHost() const;
1106
1107 public:
1108 nsINode* GetParentOrShadowHostNode() const {
1109 if (MOZ_LIKELY(mParent)(__builtin_expect(!!(mParent), 1))) {
1110 return mParent;
1111 }
1112 // We could put this in nsIContentInlines.h or such to avoid this
1113 // reinterpret_cast, but it doesn't seem worth it.
1114 return IsInShadowTree() ? reinterpret_cast<nsINode*>(DoGetShadowHost())
1115 : nullptr;
1116 }
1117
1118 enum FlattenedParentType { eNormal, eForStyle, eForSelection };
1119
1120 /**
1121 * Returns the node that is the parent of this node in the flattened
1122 * tree. This differs from the normal parent if the node is filtered
1123 * into an insertion point, or if the node is a direct child of a
1124 * shadow root.
1125 *
1126 * @return the flattened tree parent
1127 */
1128 inline nsINode* GetFlattenedTreeParentNode() const;
1129
1130 nsINode* GetFlattenedTreeParentNodeNonInline() const;
1131
1132 /**
1133 * Like GetFlattenedTreeParentNode, but returns the document for any native
1134 * anonymous content that was generated for ancestor frames of the document
1135 * element's primary frame, such as scrollbar elements created by the root
1136 * scroll frame.
1137 */
1138 inline nsINode* GetFlattenedTreeParentNodeForStyle() const;
1139
1140 /**
1141 * Similar to GetFlattenedTreeParentNode, it does two things differently
1142 * 1. For contents that are not in the flattened tree, use its
1143 * parent rather than nullptr.
1144 * 2. For contents that are slotted into a UA shadow tree, use its
1145 * parent rather than the slot element.
1146 */
1147 inline nsIContent* GetFlattenedTreeParentNodeForSelection() const;
1148
1149 inline mozilla::dom::Element* GetFlattenedTreeParentElement() const;
1150 inline mozilla::dom::Element* GetFlattenedTreeParentElementForStyle() const;
1151
1152 /**
1153 * Get the parent nsINode for this node if it is an Element.
1154 *
1155 * Defined inline in Element.h
1156 *
1157 * @return the parent node
1158 */
1159 inline mozilla::dom::Element* GetParentElement() const;
1160
1161 /**
1162 * Get the parent Element of this node, traversing over a ShadowRoot
1163 * to its host if necessary.
1164 */
1165 mozilla::dom::Element* GetParentElementCrossingShadowRoot() const;
1166
1167 /**
1168 * Get closest element node for the node. Meaning that if the node is an
1169 * element node, returns itself. Otherwise, returns parent element or null.
1170 */
1171 inline mozilla::dom::Element* GetAsElementOrParentElement() const;
1172
1173 /**
1174 * Get inclusive ancestor element in the flattened tree.
1175 */
1176 inline mozilla::dom::Element* GetInclusiveFlattenedTreeAncestorElement()
1177 const;
1178
1179 /**
1180 * Get the root of the subtree this node belongs to. This never returns
1181 * null. It may return 'this' (e.g. for document nodes, and nodes that
1182 * are the roots of disconnected subtrees).
1183 */
1184 nsINode* SubtreeRoot() const;
1185
1186 /*
1187 * Get context object's shadow-including root if options's composed is true,
1188 * and context object's root otherwise.
1189 */
1190 nsINode* GetRootNode(const mozilla::dom::GetRootNodeOptions& aOptions);
1191
1192 virtual mozilla::EventListenerManager* GetExistingListenerManager()
1193 const override;
1194 virtual mozilla::EventListenerManager* GetOrCreateListenerManager() override;
1195
1196 mozilla::Maybe<mozilla::dom::EventCallbackDebuggerNotificationType>
1197 GetDebuggerNotificationType() const override;
1198
1199 bool ComputeDefaultWantsUntrusted(mozilla::ErrorResult& aRv) final;
1200
1201 virtual bool IsApzAware() const override;
1202
1203 virtual nsPIDOMWindowOuter* GetOwnerGlobalForBindingsInternal() override;
1204 virtual nsIGlobalObject* GetOwnerGlobal() const override;
1205
1206 using mozilla::dom::EventTarget::DispatchEvent;
1207 // TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1415230)
1208 MOZ_CAN_RUN_SCRIPT_BOUNDARY bool DispatchEvent(
1209 mozilla::dom::Event& aEvent, mozilla::dom::CallerType aCallerType,
1210 mozilla::ErrorResult& aRv) override;
1211
1212 MOZ_CAN_RUN_SCRIPT
1213 nsresult PostHandleEvent(mozilla::EventChainPostVisitor& aVisitor) override;
1214
1215 /**
1216 * Adds a mutation observer to be notified when this node, or any of its
1217 * descendants, are modified. The node will hold a weak reference to the
1218 * observer, which means that it is the responsibility of the observer to
1219 * remove itself in case it dies before the node. If an observer is added
1220 * while observers are being notified, it may also be notified. In general,
1221 * adding observers while inside a notification is not a good idea. An
1222 * observer that is already observing the node must not be added without
1223 * being removed first.
1224 *
1225 * For mutation observers that implement nsIAnimationObserver, use
1226 * AddAnimationObserver instead.
1227 */
1228 void AddMutationObserver(nsIMutationObserver* aMutationObserver) {
1229 nsSlots* s = Slots();
1230 if (aMutationObserver) {
1231 NS_ASSERTION(!s->mMutationObservers.contains(aMutationObserver),do { if (!(!s->mMutationObservers.contains(aMutationObserver
))) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Observer already in the list"
, "!s->mMutationObservers.contains(aMutationObserver)", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1232); MOZ_PretendNoReturn(); } } while (0)
1232 "Observer already in the list")do { if (!(!s->mMutationObservers.contains(aMutationObserver
))) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Observer already in the list"
, "!s->mMutationObservers.contains(aMutationObserver)", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1232); MOZ_PretendNoReturn(); } } while (0)
;
1233
1234 s->mMutationObservers.pushBack(aMutationObserver);
1235 }
1236 }
1237
1238 void AddMutationObserver(nsMultiMutationObserver* aMultiMutationObserver);
1239
1240 /**
1241 * Same as above, but only adds the observer if its not observing
1242 * the node already.
1243 *
1244 * For mutation observers that implement nsIAnimationObserver, use
1245 * AddAnimationObserverUnlessExists instead.
1246 */
1247 void AddMutationObserverUnlessExists(nsIMutationObserver* aMutationObserver) {
1248 nsSlots* s = Slots();
1249 if (aMutationObserver &&
1250 !s->mMutationObservers.contains(aMutationObserver)) {
1251 s->mMutationObservers.pushBack(aMutationObserver);
1252 }
1253 }
1254
1255 void AddMutationObserverUnlessExists(
1256 nsMultiMutationObserver* aMultiMutationObserver);
1257 /**
1258 * Same as AddMutationObserver, but for nsIAnimationObservers. This
1259 * additionally records on the document that animation observers have
1260 * been registered, which is used to determine whether notifications
1261 * must be fired when animations are added, removed or changed.
1262 */
1263 void AddAnimationObserver(nsIAnimationObserver* aAnimationObserver);
1264
1265 /**
1266 * Same as above, but only adds the observer if its not observing
1267 * the node already.
1268 */
1269 void AddAnimationObserverUnlessExists(
1270 nsIAnimationObserver* aAnimationObserver);
1271
1272 /**
1273 * Removes a mutation observer.
1274 */
1275 void RemoveMutationObserver(nsIMutationObserver* aMutationObserver) {
1276 nsSlots* s = GetExistingSlots();
1277 if (s) {
1278 s->mMutationObservers.remove(aMutationObserver);
1279 }
1280 }
1281
1282 void RemoveMutationObserver(nsMultiMutationObserver* aMultiMutationObserver);
1283
1284 mozilla::SafeDoublyLinkedList<nsIMutationObserver>* GetMutationObservers();
1285
1286 /**
1287 * Helper methods to access ancestor node(s) of type T.
1288 * The implementations of the methods are in mozilla/dom/AncestorIterator.h.
1289 */
1290 template <typename T>
1291 inline mozilla::dom::AncestorsOfTypeIterator<T> AncestorsOfType() const;
1292
1293 template <typename T>
1294 inline mozilla::dom::InclusiveAncestorsOfTypeIterator<T>
1295 InclusiveAncestorsOfType() const;
1296
1297 template <typename T>
1298 inline mozilla::dom::FlatTreeAncestorsOfTypeIterator<T>
1299 FlatTreeAncestorsOfType() const;
1300
1301 template <typename T>
1302 inline mozilla::dom::InclusiveFlatTreeAncestorsOfTypeIterator<T>
1303 InclusiveFlatTreeAncestorsOfType() const;
1304
1305 template <typename T>
1306 T* FirstAncestorOfType() const;
1307
1308 private:
1309 /**
1310 * Walks aNode, its attributes and, if aDeep is true, its descendant nodes.
1311 * If aClone is true the nodes will be cloned. If aNewNodeInfoManager is
1312 * not null, it is used to create new nodeinfos for the nodes. Also reparents
1313 * the XPConnect wrappers for the nodes into aReparentScope if non-null.
1314 *
1315 * @param aNode Node to adopt/clone.
1316 * @param aClone If true the node will be cloned and the cloned node will
1317 * be returned.
1318 * @param aDeep If true the function will be called recursively on
1319 * descendants of the node
1320 * @param aNewNodeInfoManager The nodeinfo manager to use to create new
1321 * nodeinfos for aNode and its attributes and
1322 * descendants. May be null if the nodeinfos
1323 * shouldn't be changed.
1324 * @param aReparentScope Scope into which wrappers should be reparented, or
1325 * null if no reparenting should be done.
1326 * @param aParent If aClone is true the cloned node will be appended to
1327 * aParent's children. May be null. If not null then aNode
1328 * must be an nsIContent.
1329 * @param aError The error, if any.
1330 *
1331 * @return If aClone is true then the cloned node will be returned,
1332 * unless an error occurred. In error conditions, null
1333 * will be returned.
1334 */
1335 static already_AddRefed<nsINode> CloneAndAdopt(
1336 nsINode* aNode, bool aClone, bool aDeep,
1337 nsNodeInfoManager* aNewNodeInfoManager,
1338 JS::Handle<JSObject*> aReparentScope, nsINode* aParent,
1339 mozilla::ErrorResult& aError);
1340
1341 public:
1342 /**
1343 * Walks the node, its attributes and descendant nodes. If aNewNodeInfoManager
1344 * is not null, it is used to create new nodeinfos for the nodes. Also
1345 * reparents the XPConnect wrappers for the nodes into aReparentScope if
1346 * non-null.
1347 *
1348 * @param aNewNodeInfoManager The nodeinfo manager to use to create new
1349 * nodeinfos for the node and its attributes and
1350 * descendants. May be null if the nodeinfos
1351 * shouldn't be changed.
1352 * @param aReparentScope New scope for the wrappers, or null if no reparenting
1353 * should be done.
1354 * @param aError The error, if any.
1355 */
1356 void Adopt(nsNodeInfoManager* aNewNodeInfoManager,
1357 JS::Handle<JSObject*> aReparentScope,
1358 mozilla::ErrorResult& aError);
1359
1360 /**
1361 * Clones the node, its attributes and, if aDeep is true, its descendant nodes
1362 * If aNewNodeInfoManager is not null, it is used to create new nodeinfos for
1363 * the clones.
1364 *
1365 * @param aDeep If true the function will be called recursively on
1366 * descendants of the node
1367 * @param aNewNodeInfoManager The nodeinfo manager to use to create new
1368 * nodeinfos for the node and its attributes and
1369 * descendants. May be null if the nodeinfos
1370 * shouldn't be changed.
1371 * @param aError The error, if any.
1372 *
1373 * @return The newly created node. Null in error conditions.
1374 */
1375 already_AddRefed<nsINode> Clone(bool aDeep,
1376 nsNodeInfoManager* aNewNodeInfoManager,
1377 mozilla::ErrorResult& aError);
1378
1379 /**
1380 * Clones this node. This needs to be overriden by all node classes. aNodeInfo
1381 * should be identical to this node's nodeInfo, except for the document which
1382 * may be different. When cloning an element, all attributes of the element
1383 * will be cloned. The children of the node will not be cloned.
1384 *
1385 * @param aNodeInfo the nodeinfo to use for the clone
1386 * @param aResult the clone
1387 */
1388 virtual nsresult Clone(mozilla::dom::NodeInfo*, nsINode** aResult) const = 0;
1389
1390 // A callback that gets called when we are forcefully unbound from a node (due
1391 // to the node going away). You shouldn't take a strong ref to the node from
1392 // the callback.
1393 using UnbindCallback = void (*)(nsISupports*, nsINode*);
1394 // We should keep alive these objects.
1395 struct BoundObject {
1396 nsCOMPtr<nsISupports> mObject;
1397 UnbindCallback mDtor = nullptr;
1398
1399 BoundObject(nsISupports* aObject, UnbindCallback aDtor)
1400 : mObject(aObject), mDtor(aDtor) {}
1401
1402 bool operator==(nsISupports* aOther) const {
1403 return mObject.get() == aOther;
1404 }
1405 };
1406
1407 // This class can be extended by subclasses that wish to store more
1408 // information in the slots.
1409 class nsSlots {
1410 public:
1411 nsSlots();
1412
1413 // If needed we could remove the vtable pointer this dtor causes by
1414 // putting a DestroySlots function on nsINode
1415 virtual ~nsSlots();
1416
1417 virtual void Traverse(nsCycleCollectionTraversalCallback&);
1418 virtual void Unlink(nsINode&);
1419
1420 /**
1421 * A list of mutation observers
1422 */
1423 mozilla::SafeDoublyLinkedList<nsIMutationObserver> mMutationObservers;
1424
1425 /**
1426 * An object implementing NodeList for this content (childNodes)
1427 * @see NodeList
1428 * @see nsGenericHTMLElement::GetChildNodes
1429 */
1430 RefPtr<nsAttrChildContentList> mChildNodes;
1431
1432 /**
1433 * Weak reference to this node. This is cleared by the destructor of
1434 * nsNodeWeakReference.
1435 */
1436 nsNodeWeakReference* MOZ_NON_OWNING_REF mWeakReference;
1437
1438 /** A list of objects that we should keep alive. See Bind/UnbindObject. */
1439 nsTArray<BoundObject> mBoundObjects;
1440
1441 /**
1442 * A set of ranges which are in the selection and which have this node as
1443 * their endpoints' closest common inclusive ancestor
1444 * (https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor). This is
1445 * a UniquePtr instead of just a LinkedList, because that prevents us from
1446 * pushing DOMSlots up to the next allocation bucket size, at the cost of
1447 * some complexity.
1448 */
1449 mozilla::UniquePtr<mozilla::LinkedList<mozilla::dom::AbstractRange>>
1450 mClosestCommonInclusiveAncestorRanges;
1451 };
1452
1453 /**
1454 * Functions for managing flags and slots
1455 */
1456#ifdef DEBUG1
1457 nsSlots* DebugGetSlots() { return Slots(); }
1458#endif
1459
1460 void SetFlags(FlagsType aFlagsToSet) {
1461 NS_ASSERTION(do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
1462 !(aFlagsToSet &do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
1463 (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE |do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
1464 NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME |do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
1465 NODE_HAS_BEEN_IN_UA_WIDGET)) ||do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
1466 IsContent(),do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
1467 "Flag only permitted on nsIContent nodes")do { if (!(!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT
| NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES
| NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Flag only permitted on nsIContent nodes"
, "!(aFlagsToSet & (NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE | NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME | NODE_HAS_BEEN_IN_UA_WIDGET)) || IsContent()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1467); MOZ_PretendNoReturn(); } } while (0)
;
1468 nsWrapperCache::SetFlags(aFlagsToSet);
1469 }
1470
1471 void UnsetFlags(FlagsType aFlagsToUnset) {
1472 NS_ASSERTION(!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET |do { if (!(!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET |
NODE_IS_NATIVE_ANONYMOUS_ROOT)))) { NS_DebugBreak(NS_DEBUG_ASSERTION
, "Trying to unset write-only flags", "!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET | NODE_IS_NATIVE_ANONYMOUS_ROOT))"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1474); MOZ_PretendNoReturn(); } } while (0)
1473 NODE_IS_NATIVE_ANONYMOUS_ROOT)),do { if (!(!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET |
NODE_IS_NATIVE_ANONYMOUS_ROOT)))) { NS_DebugBreak(NS_DEBUG_ASSERTION
, "Trying to unset write-only flags", "!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET | NODE_IS_NATIVE_ANONYMOUS_ROOT))"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1474); MOZ_PretendNoReturn(); } } while (0)
1474 "Trying to unset write-only flags")do { if (!(!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET |
NODE_IS_NATIVE_ANONYMOUS_ROOT)))) { NS_DebugBreak(NS_DEBUG_ASSERTION
, "Trying to unset write-only flags", "!(aFlagsToUnset & (NODE_HAS_BEEN_IN_UA_WIDGET | NODE_IS_NATIVE_ANONYMOUS_ROOT))"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1474); MOZ_PretendNoReturn(); } } while (0)
;
1475 nsWrapperCache::UnsetFlags(aFlagsToUnset);
1476 }
1477
1478 void SetEditableFlag(bool aEditable) {
1479 if (aEditable) {
1480 SetFlags(NODE_IS_EDITABLE);
1481 } else {
1482 UnsetFlags(NODE_IS_EDITABLE);
1483 }
1484 }
1485
1486 inline bool IsEditable() const;
1487
1488 /**
1489 * Check if this node is an editing host. For avoiding confusion, this always
1490 * returns false if the node is in the design mode document.
1491 */
1492 inline bool IsEditingHost() const;
1493
1494 /**
1495 * Check if this node is in design mode or not. When this returns true and:
1496 * - if this is a Document node, it's the design mode root.
1497 * - if this is a content node, it's connected, it's not in a shadow tree
1498 * (except shadow tree for UI widget and native anonymous subtree) and its
1499 * uncomposed document is in design mode.
1500 * Note that returning true does NOT mean the node or its children is
1501 * editable. E.g., when this node is in a shadow tree of a UA widget and its
1502 * host is in design mode.
1503 */
1504 inline bool IsInDesignMode() const;
1505
1506 /**
1507 * Returns true if |this| or any of its ancestors is native anonymous.
1508 */
1509 bool IsInNativeAnonymousSubtree() const {
1510 return HasFlag(NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE);
1511 }
1512
1513 /**
1514 * If |this| or any ancestor is native anonymous, return the root of the
1515 * native anonymous subtree. Note that in case of nested native anonymous
1516 * content, this returns the innermost root, not the outermost.
1517 */
1518 nsIContent* GetClosestNativeAnonymousSubtreeRoot() const {
1519 if (!IsInNativeAnonymousSubtree()) {
1520 MOZ_ASSERT(!HasBeenInUAWidget(), "UA widget implies anonymous")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!HasBeenInUAWidget())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!HasBeenInUAWidget()))), 0))
) { do { } while (false); MOZ_ReportAssertionFailure("!HasBeenInUAWidget()"
" (" "UA widget implies anonymous" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1520); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!HasBeenInUAWidget()"
") (" "UA widget implies anonymous" ")"); do { *((volatile int
*)__null) = 1520; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
1521 return nullptr;
1522 }
1523 MOZ_ASSERT(IsContent(), "How did non-content end up in NAC?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsContent())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsContent()))), 0))) { do { }
while (false); MOZ_ReportAssertionFailure("IsContent()" " ("
"How did non-content end up in NAC?" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1523); AnnotateMozCrashReason("MOZ_ASSERT" "(" "IsContent()"
") (" "How did non-content end up in NAC?" ")"); do { *((volatile
int*)__null) = 1523; __attribute__((nomerge)) ::abort(); } while
(false); } } while (false)
;
1524 if (HasBeenInUAWidget()) {
1525 // reinterpret_cast because in this header we don't know ShadowRoot is an
1526 // nsIContent. ShadowRoot constructor asserts this is correct.
1527 return reinterpret_cast<nsIContent*>(GetContainingShadow());
1528 }
1529 for (const nsINode* node = this; node; node = node->GetParentNode()) {
1530 if (node->IsRootOfNativeAnonymousSubtree()) {
1531 return const_cast<nsINode*>(node)->AsContent();
1532 }
1533 }
1534 // FIXME(emilio): This should not happen, usually, but editor removes nodes
1535 // in native anonymous subtrees, and we don't clean nodes from the current
1536 // event content stack from ContentRemoved, so it can actually happen, see
1537 // bug 1510208.
1538 NS_WARNING("GetClosestNativeAnonymousSubtreeRoot on disconnected NAC!")NS_DebugBreak(NS_DEBUG_WARNING, "GetClosestNativeAnonymousSubtreeRoot on disconnected NAC!"
, nullptr, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1538)
;
1539 return nullptr;
1540 }
1541
1542 /**
1543 * If |this| or any ancestor is native anonymous, return the parent of the
1544 * native anonymous subtree. Note that in case of nested native anonymous
1545 * content, this returns the parent or host of the innermost root, not the
1546 * outermost.
1547 */
1548 nsIContent* GetClosestNativeAnonymousSubtreeRootParentOrHost() const {
1549 // We could put this in nsIContentInlines.h or such to avoid this
1550 // reinterpret_cast, but it doesn't seem worth it.
1551 const auto* root = reinterpret_cast<const nsINode*>(
1552 GetClosestNativeAnonymousSubtreeRoot());
1553 if (!root) {
1554 return nullptr;
1555 }
1556 if (nsIContent* parent = root->GetParent()) {
1557 return parent;
1558 }
1559 if (MOZ_UNLIKELY(root->IsInShadowTree())(__builtin_expect(!!(root->IsInShadowTree()), 0))) {
1560 return root->DoGetShadowHost();
1561 }
1562 return nullptr;
1563 }
1564
1565 /**
1566 * Gets the root of the node tree for this content if it is in a shadow tree.
1567 */
1568 mozilla::dom::ShadowRoot* GetContainingShadow() const;
1569 /**
1570 * Gets the shadow host if this content is in a shadow tree. That is, the host
1571 * of |GetContainingShadow|, if its not null.
1572 *
1573 * @return The shadow host, if this is in shadow tree, or null.
1574 */
1575 mozilla::dom::Element* GetContainingShadowHost() const;
1576
1577 bool IsInSVGUseShadowTree() const {
1578 return !!GetContainingSVGUseShadowHost();
1579 }
1580
1581 mozilla::dom::SVGUseElement* GetContainingSVGUseShadowHost() const {
1582 if (!IsInShadowTree()) {
1583 return nullptr;
1584 }
1585 return DoGetContainingSVGUseShadowHost();
1586 }
1587
1588 // Whether this node has ever been part of a UA widget shadow tree.
1589 bool HasBeenInUAWidget() const { return HasFlag(NODE_HAS_BEEN_IN_UA_WIDGET); }
1590
1591 // True for native anonymous content and for content in UA widgets.
1592 // Only nsIContent can fulfill this condition.
1593 bool ChromeOnlyAccess() const { return IsInNativeAnonymousSubtree(); }
1594
1595 const nsIContent* GetChromeOnlyAccessSubtreeRootParent() const {
1596 return GetClosestNativeAnonymousSubtreeRootParentOrHost();
1597 }
1598
1599 bool IsInShadowTree() const { return HasFlag(NODE_IS_IN_SHADOW_TREE); }
1600
1601 /**
1602 * Get whether this node is C++-generated anonymous content
1603 * @see nsIAnonymousContentCreator
1604 * @return whether this content is anonymous
1605 */
1606 bool IsRootOfNativeAnonymousSubtree() const {
1607 NS_ASSERTION(do { if (!(!HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Some flags seem to be missing!"
, "!HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1609); MOZ_PretendNoReturn(); } } while (0)
1608 !HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree(),do { if (!(!HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Some flags seem to be missing!"
, "!HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1609); MOZ_PretendNoReturn(); } } while (0)
1609 "Some flags seem to be missing!")do { if (!(!HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree
())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Some flags seem to be missing!"
, "!HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT) || IsInNativeAnonymousSubtree()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1609); MOZ_PretendNoReturn(); } } while (0)
;
1610 return HasFlag(NODE_IS_NATIVE_ANONYMOUS_ROOT);
1611 }
1612
1613 // Whether this node is the root of a ChromeOnlyAccess DOM subtree.
1614 bool IsRootOfChromeAccessOnlySubtree() const {
1615 return IsRootOfNativeAnonymousSubtree();
1616 }
1617
1618 /** Whether this is the container of a ::before pseudo-element. */
1619 bool IsGeneratedContentContainerForBefore() const {
1620 return IsRootOfNativeAnonymousSubtree() &&
1621 mNodeInfo->NameAtom() == nsGkAtoms::mozgeneratedcontentbefore;
1622 }
1623
1624 /** Whether this is the container of an ::after pseudo-element. */
1625 bool IsGeneratedContentContainerForAfter() const {
1626 return IsRootOfNativeAnonymousSubtree() &&
1627 mNodeInfo->NameAtom() == nsGkAtoms::mozgeneratedcontentafter;
1628 }
1629
1630 /** Whether this is the container of a ::marker pseudo-element. */
1631 bool IsGeneratedContentContainerForMarker() const {
1632 return IsRootOfNativeAnonymousSubtree() &&
1633 mNodeInfo->NameAtom() == nsGkAtoms::mozgeneratedcontentmarker;
1634 }
1635
1636 /**
1637 * Returns true if |this| node is the closest common inclusive ancestor
1638 * (https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor) of the
1639 * start/end nodes of a Range in a Selection or a descendant of such a common
1640 * ancestor. This node is definitely not selected when |false| is returned,
1641 * but it may or may not be selected when |true| is returned.
1642 */
1643 bool IsMaybeSelected() const {
1644 return IsDescendantOfClosestCommonInclusiveAncestorForRangeInSelection() ||
1645 IsClosestCommonInclusiveAncestorForRangeInSelection();
1646 }
1647
1648 /**
1649 * Return true if any part of (this, aStartOffset) .. (this, aEndOffset)
1650 * overlaps any nsRange in
1651 * GetClosestCommonInclusiveAncestorForRangeInSelection ranges (i.e.
1652 * where this is a descendant of a range's common inclusive ancestor node).
1653 * If a nsRange starts in (this, aEndOffset) or if it ends in
1654 * (this, aStartOffset) then it is non-overlapping and the result is false
1655 * for that nsRange. Collapsed ranges always counts as non-overlapping.
1656 *
1657 * @param aStartOffset has to be less or equal to aEndOffset.
1658 * @param aCache A cache which contains all fully selected nodes for each
1659 * selection. If present, this provides a fast path to check if
1660 * a node is fully selected.
1661 */
1662 bool IsSelected(uint32_t aStartOffset, uint32_t aEndOffset,
1663 mozilla::dom::SelectionNodeCache* aCache = nullptr) const;
1664
1665 /**
1666 * Get the root element of the text editor associated with this node or the
1667 * root element of the text editor of the ancestor 'TextControlElement' if
1668 * this is in its native anonymous subtree. I.e., this returns anonymous
1669 * `<div>` element of a `TextEditor`. Note that this can be used only for
1670 * getting root content of `<input>` or `<textarea>`. I.e., this method
1671 * doesn't support HTML editors. Note that this may create a `TextEditor`
1672 * instance, and it means that the `TextEditor` may modify its native
1673 * anonymous subtree and may run selection listeners.
1674 */
1675 MOZ_CAN_RUN_SCRIPT mozilla::dom::Element* GetAnonymousRootElementOfTextEditor(
1676 mozilla::TextEditor** aTextEditor = nullptr);
1677
1678 /**
1679 * Get the nearest selection root, ie. the node that will be selected if the
1680 * user does "Select All" while the focus is in this node. Note that if this
1681 * node is not in an editor, the result comes from the nsFrameSelection that
1682 * is related to aPresShell, so the result might not be the ancestor of this
1683 * node. Be aware that if this node and the computed selection limiter are
1684 * not in same subtree, this returns the root content of the closeset subtree.
1685 */
1686 MOZ_CAN_RUN_SCRIPT nsIContent* GetSelectionRootContent(
1687 mozilla::PresShell* aPresShell, bool aAllowCrossShadowBoundary = false);
1688
1689 bool HasScheduledSelectionChangeEvent() {
1690 return HasFlag(NODE_HAS_SCHEDULED_SELECTION_CHANGE_EVENT);
1691 }
1692
1693 void SetHasScheduledSelectionChangeEvent() {
1694 SetFlags(NODE_HAS_SCHEDULED_SELECTION_CHANGE_EVENT);
1695 }
1696
1697 void ClearHasScheduledSelectionChangeEvent() {
1698 UnsetFlags(NODE_HAS_SCHEDULED_SELECTION_CHANGE_EVENT);
1699 }
1700
1701 nsINodeList* ChildNodes();
1702
1703 nsIContent* GetFirstChild() const { return mFirstChild; }
1704
1705 nsIContent* GetLastChild() const;
1706
1707 /**
1708 * Implementation is in Document.h, because it needs to cast from
1709 * Document* to nsINode*.
1710 */
1711 Document* GetOwnerDocument() const;
1712
1713 // TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1415230)
1714 MOZ_CAN_RUN_SCRIPT_BOUNDARY void Normalize();
1715
1716 /**
1717 * Get the base URI for any relative URIs within this piece of
1718 * content. Generally, this is the document's base URI, but certain
1719 * content carries a local base for backward compatibility.
1720 *
1721 * @return the base URI. May return null.
1722 */
1723 virtual nsIURI* GetBaseURI(bool aTryUseXHRDocBaseURI = false) const = 0;
1724 nsIURI* GetBaseURIObject() const;
1725
1726 /**
1727 * Return true if the node may be apz aware. There are two cases. One is that
1728 * the node is apz aware (such as HTMLInputElement with number type). The
1729 * other is that the node has apz aware listeners. This is a non-virtual
1730 * function which calls IsNodeApzAwareInternal only when the MayBeApzAware is
1731 * set. We check the details in IsNodeApzAwareInternal which may be overriden
1732 * by child classes
1733 */
1734 bool IsNodeApzAware() const {
1735 return NodeMayBeApzAware() ? IsNodeApzAwareInternal() : false;
1736 }
1737
1738 /**
1739 * Override this function and set the flag MayBeApzAware in case the node has
1740 * to let APZC be aware of it. It's used when the node may handle the apz
1741 * aware events and may do preventDefault to stop APZC to do default actions.
1742 *
1743 * For example, instead of scrolling page by APZ, we handle mouse wheel event
1744 * in HTMLInputElement with number type as increasing / decreasing its value.
1745 */
1746 virtual bool IsNodeApzAwareInternal() const;
1747
1748 void GetTextContent(nsAString& aTextContent, mozilla::OOMReporter& aError) {
1749 GetTextContentInternal(aTextContent, aError);
1750 }
1751 void SetTextContent(const nsAString& aTextContent,
1752 nsIPrincipal* aSubjectPrincipal,
1753 mozilla::ErrorResult& aError) {
1754 SetTextContentInternal(aTextContent, aSubjectPrincipal, aError);
1755 }
1756 void SetTextContent(const nsAString& aTextContent,
1757 mozilla::ErrorResult& aError) {
1758 SetTextContentInternal(aTextContent, nullptr, aError);
1759 }
1760
1761 mozilla::dom::Element* QuerySelector(const nsACString& aSelector,
1762 mozilla::ErrorResult& aResult);
1763 already_AddRefed<nsINodeList> QuerySelectorAll(const nsACString& aSelector,
1764 mozilla::ErrorResult& aResult);
1765
1766 protected:
1767 // Document and ShadowRoot override this with its own (faster) version.
1768 // This should really only be called for elements and document fragments.
1769 mozilla::dom::Element* GetElementById(const nsAString& aId);
1770
1771 void AppendChildToChildList(nsIContent* aKid);
1772 void InsertChildToChildList(nsIContent* aKid, nsIContent* aNextSibling);
1773 void DisconnectChild(nsIContent* aKid);
1774
1775 public:
1776 void LookupPrefix(const nsAString& aNamespace, nsAString& aResult);
1777 bool IsDefaultNamespace(const nsAString& aNamespaceURI) {
1778 nsAutoString defaultNamespace;
1779 LookupNamespaceURI(u""_ns, defaultNamespace);
1780 return aNamespaceURI.Equals(defaultNamespace);
1781 }
1782 void LookupNamespaceURI(const nsAString& aNamespacePrefix,
1783 nsAString& aNamespaceURI);
1784
1785 nsIContent* GetNextSibling() const { return mNextSibling; }
1786 nsIContent* GetPreviousSibling() const;
1787
1788 /**
1789 * Return true if the node is being removed from the parent, it means that
1790 * the node still knows the container which it's disconnected from, but the
1791 * node has already been removed from the child node chain of the container.
1792 * I.e., Return true between a call of DisconnectChild of the parent and
1793 * a call of UnbindFromTree of the node.
1794 */
1795 bool IsBeingRemoved() const {
1796 return mParent && !mNextSibling && !mPreviousOrLastSibling;
1797 }
1798
1799 /**
1800 * Get the next node in the pre-order tree traversal of the DOM. If
1801 * aRoot is non-null, then it must be an ancestor of |this|
1802 * (possibly equal to |this|) and only nodes that are descendants of
1803 * aRoot, not including aRoot itself, will be returned. Returns
1804 * null if there are no more nodes to traverse.
1805 */
1806 nsIContent* GetNextNode(const nsINode* aRoot = nullptr) const {
1807 return GetNextNodeImpl(aRoot, false);
1808 }
1809
1810 /**
1811 * Get the next node in the pre-order tree traversal of the DOM but ignoring
1812 * the children of this node. If aRoot is non-null, then it must be an
1813 * ancestor of |this| (possibly equal to |this|) and only nodes that are
1814 * descendants of aRoot, not including aRoot itself, will be returned.
1815 * Returns null if there are no more nodes to traverse.
1816 */
1817 nsIContent* GetNextNonChildNode(const nsINode* aRoot = nullptr) const {
1818 return GetNextNodeImpl(aRoot, true);
1819 }
1820
1821 /**
1822 * Returns true if 'this' is either document or element or
1823 * document fragment and aOther is a descendant in the same
1824 * anonymous tree.
1825 */
1826 bool Contains(const nsINode* aOther) const;
1827
1828 bool UnoptimizableCCNode() const;
1829
1830 /**
1831 * Fire a DOMNodeRemoved mutation event for all children of this node
1832 * TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1415230)
1833 */
1834 MOZ_CAN_RUN_SCRIPT_BOUNDARY void FireNodeRemovedForChildren();
1835
1836 void QueueDevtoolsAnonymousEvent(bool aIsRemove);
1837
1838 private:
1839 mozilla::dom::SVGUseElement* DoGetContainingSVGUseShadowHost() const;
1840
1841 nsIContent* GetNextNodeImpl(const nsINode* aRoot,
1842 const bool aSkipChildren) const {
1843#ifdef DEBUG1
1844 if (aRoot) {
1845 // TODO: perhaps nsINode::IsInclusiveDescendantOf could be used instead.
1846 const nsINode* cur = this;
1847 for (; cur; cur = cur->GetParentNode())
1848 if (cur == aRoot) break;
1849 NS_ASSERTION(cur, "aRoot not an ancestor of |this|?")do { if (!(cur)) { NS_DebugBreak(NS_DEBUG_ASSERTION, "aRoot not an ancestor of |this|?"
, "cur", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1849); MOZ_PretendNoReturn(); } } while (0)
;
1850 }
1851#endif
1852 if (!aSkipChildren) {
1853 nsIContent* kid = GetFirstChild();
1854 if (kid) {
1855 return kid;
1856 }
1857 }
1858 if (this == aRoot) {
1859 return nullptr;
1860 }
1861 const nsINode* cur = this;
1862 while (1) {
1863 nsIContent* next = cur->GetNextSibling();
1864 if (next) {
1865 return next;
1866 }
1867 nsINode* parent = cur->GetParentNode();
1868 if (parent == aRoot) {
1869 return nullptr;
1870 }
1871 cur = parent;
1872 }
1873 MOZ_ASSERT_UNREACHABLE("How did we get here?")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(false)>::isValid, "invalid assertion condition");
if ((__builtin_expect(!!(!(!!(false))), 0))) { do { } while (
false); MOZ_ReportAssertionFailure("false" " (" "MOZ_ASSERT_UNREACHABLE: "
"How did we get here?" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1873); AnnotateMozCrashReason("MOZ_ASSERT" "(" "false" ") ("
"MOZ_ASSERT_UNREACHABLE: " "How did we get here?" ")"); do {
*((volatile int*)__null) = 1873; __attribute__((nomerge)) ::
abort(); } while (false); } } while (false)
;
1874 }
1875
1876 public:
1877 /**
1878 * Get the previous nsIContent in the pre-order tree traversal of the DOM. If
1879 * aRoot is non-null, then it must be an ancestor of |this|
1880 * (possibly equal to |this|) and only nsIContents that are descendants of
1881 * aRoot, including aRoot itself, will be returned. Returns
1882 * null if there are no more nsIContents to traverse.
1883 */
1884 nsIContent* GetPrevNode(const nsINode* aRoot = nullptr) const {
1885#ifdef DEBUG1
1886 if (aRoot) {
1887 // TODO: perhaps nsINode::IsInclusiveDescendantOf could be used instead.
1888 const nsINode* cur = this;
1889 for (; cur; cur = cur->GetParentNode())
1890 if (cur == aRoot) break;
1891 NS_ASSERTION(cur, "aRoot not an ancestor of |this|?")do { if (!(cur)) { NS_DebugBreak(NS_DEBUG_ASSERTION, "aRoot not an ancestor of |this|?"
, "cur", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 1891); MOZ_PretendNoReturn(); } } while (0)
;
1892 }
1893#endif
1894
1895 if (this == aRoot) {
1896 return nullptr;
1897 }
1898 nsIContent* cur = this->GetParent();
1899 nsIContent* iter = this->GetPreviousSibling();
1900 while (iter) {
1901 cur = iter;
1902 iter = reinterpret_cast<nsINode*>(iter)->GetLastChild();
1903 }
1904 return cur;
1905 }
1906
1907 /**
1908 * Boolean flags
1909 */
1910 private:
1911 enum BooleanFlag {
1912 // Set if we're being used from -moz-element or observed via a mask,
1913 // clipPath, filter or use element.
1914 NodeHasDirectRenderingObservers,
1915 // Set if our parent chain (including this node itself) terminates
1916 // in a document
1917 IsInDocument,
1918 // Set if we're part of the composed doc.
1919 // https://dom.spec.whatwg.org/#connected
1920 IsConnected,
1921 // Set if mParent is an nsIContent
1922 ParentIsContent,
1923 // Set if this node is an Element
1924 NodeIsElement,
1925 // Set if the element has a non-empty id attribute. This can in rare
1926 // cases lie for nsXMLElement, such as when the node has been moved between
1927 // documents with different id mappings.
1928 ElementHasID,
1929 // Set if the element might have a class.
1930 ElementMayHaveClass,
1931 // Set if the element might have inline style.
1932 ElementMayHaveStyle,
1933 // Set if the element has a name attribute set.
1934 ElementHasName,
1935 // Set if the element has a part attribute set.
1936 ElementHasPart,
1937 // Set if the element might have a contenteditable attribute set.
1938 ElementMayHaveContentEditableAttr,
1939 // Set if the node is the closest common inclusive ancestor of the start/end
1940 // nodes of a Range that is in a Selection.
1941 NodeIsClosestCommonInclusiveAncestorForRangeInSelection,
1942 // Set if the node is a descendant of a node with the above bit set.
1943 NodeIsDescendantOfClosestCommonInclusiveAncestorForRangeInSelection,
1944 // Set if CanSkipInCC check has been done for this subtree root.
1945 NodeIsCCMarkedRoot,
1946 // Maybe set if this node is in black subtree.
1947 NodeIsCCBlackTree,
1948 // Maybe set if the node is a root of a subtree
1949 // which needs to be kept in the purple buffer.
1950 NodeIsPurpleRoot,
1951 // Set if the element has some style states locked
1952 ElementHasLockedStyleStates,
1953 // Set if element has pointer locked
1954 ElementHasPointerLock,
1955 // Set if the node may have DOMMutationObserver attached to it.
1956 NodeMayHaveDOMMutationObserver,
1957 // Set if node is Content
1958 NodeIsContent,
1959 // Set if the node has animations or transitions
1960 ElementHasAnimations,
1961 // Set if node has a dir attribute with a valid value (ltr, rtl, or auto).
1962 // Note that we cannot compute this from the dir attribute event state
1963 // flags, because we can't use those to distinguish
1964 // <bdi dir="some-invalid-value"> and <bdi dir="auto">.
1965 NodeHasValidDirAttribute,
1966 // Set if a node in the node's parent chain has dir=auto and nothing
1967 // inbetween nor the node itself establishes its own direction.
1968 NodeAncestorHasDirAuto,
1969 // Set if the node or an ancestor is assigned to a dir=auto slot and
1970 // nothing between nor the node itself establishes its own direction.
1971 // Except for when the node assigned to the dir=auto slot establishes
1972 // its own direction, then the flag is still set.
1973 NodeAffectsDirAutoSlot,
1974 // Set if the node is handling a click.
1975 NodeHandlingClick,
1976 // Set if the element has a parser insertion mode other than "in body",
1977 // per the HTML5 "Parse state" section.
1978 ElementHasWeirdParserInsertionMode,
1979 // Parser sets this flag if it has notified about the node.
1980 ParserHasNotified,
1981 // Sets if the node is apz aware or we have apz aware listeners.
1982 MayBeApzAware,
1983 // Set if the element might have any kind of anonymous content children,
1984 // which would not be found through the element's children list.
1985 ElementMayHaveAnonymousChildren,
1986 // Set if element has CustomElementData.
1987 ElementHasCustomElementData,
1988 // Set if the element was created from prototype cache and
1989 // its l10n attributes haven't been changed.
1990 ElementCreatedFromPrototypeAndHasUnmodifiedL10n,
1991 // Guard value
1992 BooleanFlagCount
1993 };
1994
1995 void SetBoolFlag(BooleanFlag name, bool value) {
1996 static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags),
1997 "Too many boolean flags");
1998 mBoolFlags = (mBoolFlags & ~(1 << name)) | (value << name);
1999 }
2000
2001 void SetBoolFlag(BooleanFlag name) {
2002 static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags),
2003 "Too many boolean flags");
2004 mBoolFlags |= (1 << name);
2005 }
2006
2007 void ClearBoolFlag(BooleanFlag name) {
2008 static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags),
2009 "Too many boolean flags");
2010 mBoolFlags &= ~(1 << name);
2011 }
2012
2013 bool GetBoolFlag(BooleanFlag name) const {
2014 static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags),
2015 "Too many boolean flags");
2016 return mBoolFlags & (1 << name);
2017 }
2018
2019 public:
2020 bool HasDirectRenderingObservers() const {
2021 return GetBoolFlag(NodeHasDirectRenderingObservers);
2022 }
2023 void SetHasDirectRenderingObservers(bool aValue) {
2024 SetBoolFlag(NodeHasDirectRenderingObservers, aValue);
2025 }
2026 bool IsContent() const { return GetBoolFlag(NodeIsContent); }
2027 bool HasID() const { return GetBoolFlag(ElementHasID); }
2028 bool MayHaveClass() const { return GetBoolFlag(ElementMayHaveClass); }
2029 void SetMayHaveClass() { SetBoolFlag(ElementMayHaveClass); }
2030 bool MayHaveStyle() const { return GetBoolFlag(ElementMayHaveStyle); }
2031 bool HasName() const { return GetBoolFlag(ElementHasName); }
2032 bool HasPartAttribute() const { return GetBoolFlag(ElementHasPart); }
2033 bool MayHaveContentEditableAttr() const {
2034 return GetBoolFlag(ElementMayHaveContentEditableAttr);
2035 }
2036 /**
2037 * https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
2038 */
2039 bool IsClosestCommonInclusiveAncestorForRangeInSelection() const {
2040 return GetBoolFlag(NodeIsClosestCommonInclusiveAncestorForRangeInSelection);
2041 }
2042 /**
2043 * https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
2044 */
2045 void SetClosestCommonInclusiveAncestorForRangeInSelection() {
2046 SetBoolFlag(NodeIsClosestCommonInclusiveAncestorForRangeInSelection);
2047 }
2048 /**
2049 * https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
2050 */
2051 void ClearClosestCommonInclusiveAncestorForRangeInSelection() {
2052 ClearBoolFlag(NodeIsClosestCommonInclusiveAncestorForRangeInSelection);
2053 }
2054 /**
2055 * https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
2056 */
2057 bool IsDescendantOfClosestCommonInclusiveAncestorForRangeInSelection() const {
2058 return GetBoolFlag(
2059 NodeIsDescendantOfClosestCommonInclusiveAncestorForRangeInSelection);
2060 }
2061 /**
2062 * https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
2063 */
2064 void SetDescendantOfClosestCommonInclusiveAncestorForRangeInSelection() {
2065 SetBoolFlag(
2066 NodeIsDescendantOfClosestCommonInclusiveAncestorForRangeInSelection);
2067 }
2068 /**
2069 * https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
2070 */
2071 void ClearDescendantOfClosestCommonInclusiveAncestorForRangeInSelection() {
2072 ClearBoolFlag(
2073 NodeIsDescendantOfClosestCommonInclusiveAncestorForRangeInSelection);
2074 }
2075
2076 void SetCCMarkedRoot(bool aValue) { SetBoolFlag(NodeIsCCMarkedRoot, aValue); }
2077 bool CCMarkedRoot() const { return GetBoolFlag(NodeIsCCMarkedRoot); }
2078 void SetInCCBlackTree(bool aValue) { SetBoolFlag(NodeIsCCBlackTree, aValue); }
2079 bool InCCBlackTree() const { return GetBoolFlag(NodeIsCCBlackTree); }
2080 void SetIsPurpleRoot(bool aValue) { SetBoolFlag(NodeIsPurpleRoot, aValue); }
2081 bool IsPurpleRoot() const { return GetBoolFlag(NodeIsPurpleRoot); }
2082 bool MayHaveDOMMutationObserver() {
2083 return GetBoolFlag(NodeMayHaveDOMMutationObserver);
2084 }
2085 void SetMayHaveDOMMutationObserver() {
2086 SetBoolFlag(NodeMayHaveDOMMutationObserver, true);
2087 }
2088 bool HasListenerManager() { return HasFlag(NODE_HAS_LISTENERMANAGER); }
2089 bool HasPointerLock() const { return GetBoolFlag(ElementHasPointerLock); }
2090 void SetPointerLock() { SetBoolFlag(ElementHasPointerLock); }
2091 void ClearPointerLock() { ClearBoolFlag(ElementHasPointerLock); }
2092 bool MayHaveAnimations() const { return GetBoolFlag(ElementHasAnimations); }
2093 void SetMayHaveAnimations() { SetBoolFlag(ElementHasAnimations); }
2094 void ClearMayHaveAnimations() { ClearBoolFlag(ElementHasAnimations); }
2095 void SetHasValidDir() { SetBoolFlag(NodeHasValidDirAttribute); }
2096 void ClearHasValidDir() { ClearBoolFlag(NodeHasValidDirAttribute); }
2097 bool HasValidDir() const { return GetBoolFlag(NodeHasValidDirAttribute); }
2098 void SetAncestorHasDirAuto() { SetBoolFlag(NodeAncestorHasDirAuto); }
2099 void ClearAncestorHasDirAuto() { ClearBoolFlag(NodeAncestorHasDirAuto); }
2100 bool AncestorHasDirAuto() const {
2101 return GetBoolFlag(NodeAncestorHasDirAuto);
2102 }
2103 void SetAffectsDirAutoSlot() { SetBoolFlag(NodeAffectsDirAutoSlot); }
2104 void ClearAffectsDirAutoSlot() { ClearBoolFlag(NodeAffectsDirAutoSlot); }
2105
2106 // Set if the node or an ancestor is assigned to a dir=auto slot.
2107 bool AffectsDirAutoSlot() const {
2108 return GetBoolFlag(NodeAffectsDirAutoSlot);
2109 }
2110
2111 // Implemented in nsIContentInlines.h.
2112 inline bool NodeOrAncestorHasDirAuto() const;
2113
2114 void SetParserHasNotified() { SetBoolFlag(ParserHasNotified); };
2115 bool HasParserNotified() { return GetBoolFlag(ParserHasNotified); }
2116
2117 void SetMayBeApzAware() { SetBoolFlag(MayBeApzAware); }
2118 bool NodeMayBeApzAware() const { return GetBoolFlag(MayBeApzAware); }
2119
2120 void SetMayHaveAnonymousChildren() {
2121 SetBoolFlag(ElementMayHaveAnonymousChildren);
2122 }
2123 bool MayHaveAnonymousChildren() const {
2124 return GetBoolFlag(ElementMayHaveAnonymousChildren);
2125 }
2126
2127 void SetHasCustomElementData() { SetBoolFlag(ElementHasCustomElementData); }
2128 bool HasCustomElementData() const {
2129 return GetBoolFlag(ElementHasCustomElementData);
2130 }
2131
2132 void SetElementCreatedFromPrototypeAndHasUnmodifiedL10n() {
2133 SetBoolFlag(ElementCreatedFromPrototypeAndHasUnmodifiedL10n);
2134 }
2135 bool HasElementCreatedFromPrototypeAndHasUnmodifiedL10n() {
2136 return GetBoolFlag(ElementCreatedFromPrototypeAndHasUnmodifiedL10n);
2137 }
2138 void ClearElementCreatedFromPrototypeAndHasUnmodifiedL10n() {
2139 ClearBoolFlag(ElementCreatedFromPrototypeAndHasUnmodifiedL10n);
2140 }
2141
2142 mozilla::dom::ShadowRoot* GetShadowRoot() const;
2143
2144 // Return the shadow root of the node if it is a shadow host and
2145 // it meets the requirements for being a shadow host of a selection.
2146 // For example, <details>, <video> and <use> elements are not valid
2147 // shadow host for selection.
2148 mozilla::dom::ShadowRoot* GetShadowRootForSelection() const;
2149
2150 protected:
2151 void SetParentIsContent(bool aValue) { SetBoolFlag(ParentIsContent, aValue); }
2152 void SetIsInDocument() { SetBoolFlag(IsInDocument); }
2153 void ClearInDocument() { ClearBoolFlag(IsInDocument); }
2154 void SetIsConnected(bool aConnected) { SetBoolFlag(IsConnected, aConnected); }
2155 void SetNodeIsContent() { SetBoolFlag(NodeIsContent); }
2156 void SetIsElement() { SetBoolFlag(NodeIsElement); }
2157 void SetHasID() { SetBoolFlag(ElementHasID); }
2158 void ClearHasID() { ClearBoolFlag(ElementHasID); }
2159 void SetMayHaveStyle() { SetBoolFlag(ElementMayHaveStyle); }
2160 void SetHasName() { SetBoolFlag(ElementHasName); }
2161 void ClearHasName() { ClearBoolFlag(ElementHasName); }
2162 void SetHasPartAttribute(bool aPart) { SetBoolFlag(ElementHasPart, aPart); }
2163 void SetMayHaveContentEditableAttr() {
2164 SetBoolFlag(ElementMayHaveContentEditableAttr);
2165 }
2166 void SetHasLockedStyleStates() { SetBoolFlag(ElementHasLockedStyleStates); }
2167 void ClearHasLockedStyleStates() {
2168 ClearBoolFlag(ElementHasLockedStyleStates);
2169 }
2170 bool HasLockedStyleStates() const {
2171 return GetBoolFlag(ElementHasLockedStyleStates);
2172 }
2173 void SetHasWeirdParserInsertionMode() {
2174 SetBoolFlag(ElementHasWeirdParserInsertionMode);
2175 }
2176 bool HasWeirdParserInsertionMode() const {
2177 return GetBoolFlag(ElementHasWeirdParserInsertionMode);
2178 }
2179 bool HandlingClick() const { return GetBoolFlag(NodeHandlingClick); }
2180 void SetHandlingClick() { SetBoolFlag(NodeHandlingClick); }
2181 void ClearHandlingClick() { ClearBoolFlag(NodeHandlingClick); }
2182
2183 void SetSubtreeRootPointer(nsINode* aSubtreeRoot) {
2184 NS_ASSERTION(aSubtreeRoot, "aSubtreeRoot can never be null!")do { if (!(aSubtreeRoot)) { NS_DebugBreak(NS_DEBUG_ASSERTION,
"aSubtreeRoot can never be null!", "aSubtreeRoot", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 2184); MOZ_PretendNoReturn(); } } while (0)
;
2185 NS_ASSERTION(!(IsContent() && IsInUncomposedDoc()) && !IsInShadowTree(),do { if (!(!(IsContent() && IsInUncomposedDoc()) &&
!IsInShadowTree())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Shouldn't be here!"
, "!(IsContent() && IsInUncomposedDoc()) && !IsInShadowTree()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 2186); MOZ_PretendNoReturn(); } } while (0)
2186 "Shouldn't be here!")do { if (!(!(IsContent() && IsInUncomposedDoc()) &&
!IsInShadowTree())) { NS_DebugBreak(NS_DEBUG_ASSERTION, "Shouldn't be here!"
, "!(IsContent() && IsInUncomposedDoc()) && !IsInShadowTree()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 2186); MOZ_PretendNoReturn(); } } while (0)
;
2187 mSubtreeRoot = aSubtreeRoot;
2188 }
2189
2190 void ClearSubtreeRootPointer() { mSubtreeRoot = nullptr; }
2191
2192 public:
2193 // Makes nsINode object keep aObject alive. If a callback is provided, it's
2194 // called before deleting the node.
2195 void BindObject(nsISupports* aObject, UnbindCallback = nullptr);
2196 // After calling UnbindObject nsINode, object doesn't keep aObject alive
2197 // anymore.
2198 void UnbindObject(nsISupports* aObject);
2199
2200 void GenerateXPath(nsAString& aResult);
2201
2202 already_AddRefed<mozilla::dom::AccessibleNode> GetAccessibleNode();
2203
2204 /**
2205 * Returns the length of this node, as specified at
2206 * <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-node-length>
2207 */
2208 uint32_t Length() const;
2209
2210 void GetNodeName(mozilla::dom::DOMString& aNodeName) {
2211 const nsString& nodeName = NodeName();
2212 aNodeName.SetKnownLiveString(nodeName);
2213 }
2214 [[nodiscard]] nsresult GetBaseURI(nsAString& aBaseURI) const;
2215 // Return the base URI for the document.
2216 // The returned value may differ if the document is loaded via XHR, and
2217 // when accessed from chrome privileged script and
2218 // from content privileged script for compatibility.
2219 void GetBaseURIFromJS(nsAString& aBaseURI, CallerType aCallerType,
2220 ErrorResult& aRv) const;
2221 bool HasChildNodes() const { return HasChildren(); }
2222
2223 // See nsContentUtils::PositionIsBefore for aThisIndex and aOtherIndex usage.
2224 uint16_t CompareDocumentPosition(
2225 nsINode& aOther, mozilla::Maybe<uint32_t>* aThisIndex = nullptr,
2226 mozilla::Maybe<uint32_t>* aOtherIndex = nullptr) const;
2227 void GetNodeValue(nsAString& aNodeValue) { GetNodeValueInternal(aNodeValue); }
2228 void SetNodeValue(const nsAString& aNodeValue, mozilla::ErrorResult& aError) {
2229 SetNodeValueInternal(aNodeValue, aError);
2230 }
2231 virtual void GetNodeValueInternal(nsAString& aNodeValue);
2232 virtual void SetNodeValueInternal(const nsAString& aNodeValue,
2233 mozilla::ErrorResult& aError) {
2234 // The DOM spec says that when nodeValue is defined to be null "setting it
2235 // has no effect", so we don't throw an exception.
2236 }
2237 void EnsurePreInsertionValidity(nsINode& aNewChild, nsINode* aRefChild,
2238 mozilla::ErrorResult& aError);
2239 nsINode* InsertBefore(nsINode& aNode, nsINode* aChild,
2240 mozilla::ErrorResult& aError) {
2241 return ReplaceOrInsertBefore(false, &aNode, aChild, aError);
2242 }
2243
2244 /**
2245 * See <https://dom.spec.whatwg.org/#dom-node-appendchild>.
2246 */
2247 nsINode* AppendChild(nsINode& aNode, mozilla::ErrorResult& aError) {
2248 return InsertBefore(aNode, nullptr, aError);
2249 }
2250
2251 nsINode* ReplaceChild(nsINode& aNode, nsINode& aChild,
2252 mozilla::ErrorResult& aError) {
2253 return ReplaceOrInsertBefore(true, &aNode, &aChild, aError);
2254 }
2255 // TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1415230)
2256 MOZ_CAN_RUN_SCRIPT_BOUNDARY nsINode* RemoveChild(
2257 nsINode& aChild, mozilla::ErrorResult& aError);
2258 already_AddRefed<nsINode> CloneNode(bool aDeep, mozilla::ErrorResult& aError);
2259 bool IsSameNode(nsINode* aNode);
2260 bool IsEqualNode(nsINode* aNode);
2261 void GetNamespaceURI(nsAString& aNamespaceURI) const {
2262 mNodeInfo->GetNamespaceURI(aNamespaceURI);
2263 }
2264#ifdef MOZILLA_INTERNAL_API1
2265 void GetPrefix(nsAString& aPrefix) { mNodeInfo->GetPrefix(aPrefix); }
2266#endif
2267 void GetLocalName(mozilla::dom::DOMString& aLocalName) const {
2268 const nsString& localName = LocalName();
2269 aLocalName.SetKnownLiveString(localName);
2270 }
2271
2272 nsDOMAttributeMap* GetAttributes();
2273
2274 // Helper method to remove this node from its parent. This is not exposed
2275 // through WebIDL.
2276 // Only call this if the node has a parent node.
2277 nsresult RemoveFromParent() {
2278 nsINode* parent = GetParentNode();
2279 mozilla::ErrorResult rv;
2280 parent->RemoveChild(*this, rv);
2281 return rv.StealNSResult();
2282 }
2283
2284 // ChildNode methods
2285 inline mozilla::dom::Element* GetPreviousElementSibling() const;
2286 inline mozilla::dom::Element* GetNextElementSibling() const;
2287
2288 MOZ_CAN_RUN_SCRIPT void Before(const Sequence<OwningNodeOrString>& aNodes,
2289 ErrorResult& aRv);
2290 MOZ_CAN_RUN_SCRIPT void After(const Sequence<OwningNodeOrString>& aNodes,
2291 ErrorResult& aRv);
2292 MOZ_CAN_RUN_SCRIPT void ReplaceWith(
2293 const Sequence<OwningNodeOrString>& aNodes, ErrorResult& aRv);
2294 /**
2295 * Remove this node from its parent, if any.
2296 */
2297 void Remove();
2298
2299 // ParentNode methods
2300 mozilla::dom::Element* GetFirstElementChild() const;
2301 mozilla::dom::Element* GetLastElementChild() const;
2302
2303 already_AddRefed<nsIHTMLCollection> GetElementsByAttribute(
2304 const nsAString& aAttribute, const nsAString& aValue);
2305 already_AddRefed<nsIHTMLCollection> GetElementsByAttributeNS(
2306 const nsAString& aNamespaceURI, const nsAString& aAttribute,
2307 const nsAString& aValue, ErrorResult& aRv);
2308
2309 MOZ_CAN_RUN_SCRIPT void Prepend(const Sequence<OwningNodeOrString>& aNodes,
2310 ErrorResult& aRv);
2311 MOZ_CAN_RUN_SCRIPT void Append(const Sequence<OwningNodeOrString>& aNodes,
2312 ErrorResult& aRv);
2313 MOZ_CAN_RUN_SCRIPT void ReplaceChildren(
2314 const Sequence<OwningNodeOrString>& aNodes, ErrorResult& aRv);
2315 MOZ_CAN_RUN_SCRIPT void ReplaceChildren(nsINode* aNode, ErrorResult& aRv);
2316
2317 void GetBoxQuads(const BoxQuadOptions& aOptions,
2318 nsTArray<RefPtr<DOMQuad>>& aResult, CallerType aCallerType,
2319 ErrorResult& aRv);
2320
2321 void GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions,
2322 nsTArray<RefPtr<DOMQuad>>& aResult,
2323 ErrorResult& aRv);
2324
2325 already_AddRefed<DOMQuad> ConvertQuadFromNode(
2326 DOMQuad& aQuad, const TextOrElementOrDocument& aFrom,
2327 const ConvertCoordinateOptions& aOptions, CallerType aCallerType,
2328 ErrorResult& aRv);
2329 already_AddRefed<DOMQuad> ConvertRectFromNode(
2330 DOMRectReadOnly& aRect, const TextOrElementOrDocument& aFrom,
2331 const ConvertCoordinateOptions& aOptions, CallerType aCallerType,
2332 ErrorResult& aRv);
2333 already_AddRefed<DOMPoint> ConvertPointFromNode(
2334 const DOMPointInit& aPoint, const TextOrElementOrDocument& aFrom,
2335 const ConvertCoordinateOptions& aOptions, CallerType aCallerType,
2336 ErrorResult& aRv);
2337
2338 /**
2339 * See nsSlots::mClosestCommonInclusiveAncestorRanges.
2340 */
2341 const mozilla::LinkedList<mozilla::dom::AbstractRange>*
2342 GetExistingClosestCommonInclusiveAncestorRanges() const {
2343 if (!HasSlots()) {
2344 return nullptr;
2345 }
2346 return GetExistingSlots()->mClosestCommonInclusiveAncestorRanges.get();
2347 }
2348
2349 /**
2350 * See nsSlots::mClosestCommonInclusiveAncestorRanges.
2351 */
2352 mozilla::LinkedList<mozilla::dom::AbstractRange>*
2353 GetExistingClosestCommonInclusiveAncestorRanges() {
2354 if (!HasSlots()) {
2355 return nullptr;
2356 }
2357 return GetExistingSlots()->mClosestCommonInclusiveAncestorRanges.get();
2358 }
2359
2360 /**
2361 * See nsSlots::mClosestCommonInclusiveAncestorRanges.
2362 */
2363 mozilla::UniquePtr<mozilla::LinkedList<mozilla::dom::AbstractRange>>&
2364 GetClosestCommonInclusiveAncestorRangesPtr() {
2365 return Slots()->mClosestCommonInclusiveAncestorRanges;
2366 }
2367
2368 nsIWeakReference* GetExistingWeakReference() {
2369 return HasSlots() ? GetExistingSlots()->mWeakReference : nullptr;
2370 }
2371
2372 protected:
2373 // Override this function to create a custom slots class.
2374 // Must not return null.
2375 virtual nsINode::nsSlots* CreateSlots();
2376
2377 bool HasSlots() const { return mSlots != nullptr; }
2378
2379 nsSlots* GetExistingSlots() const { return mSlots; }
2380
2381 nsSlots* Slots() {
2382 if (!HasSlots()) {
2383 mSlots = CreateSlots();
2384 MOZ_ASSERT(mSlots)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mSlots)>::isValid, "invalid assertion condition")
; if ((__builtin_expect(!!(!(!!(mSlots))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("mSlots", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 2384); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mSlots" ")"
); do { *((volatile int*)__null) = 2384; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
2385 }
2386 return GetExistingSlots();
2387 }
2388
2389 /**
2390 * Invalidate cached child array inside mChildNodes
2391 * of type nsParentNodeChildContentList.
2392 */
2393 void InvalidateChildNodes();
2394
2395 virtual void GetTextContentInternal(nsAString& aTextContent,
2396 mozilla::OOMReporter& aError);
2397 virtual void SetTextContentInternal(const nsAString& aTextContent,
2398 nsIPrincipal* aSubjectPrincipal,
2399 mozilla::ErrorResult& aError) {}
2400
2401 void EnsurePreInsertionValidity1(mozilla::ErrorResult& aError);
2402 void EnsurePreInsertionValidity2(bool aReplace, nsINode& aNewChild,
2403 nsINode* aRefChild,
2404 mozilla::ErrorResult& aError);
2405 // TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1415230)
2406 MOZ_CAN_RUN_SCRIPT_BOUNDARY nsINode* ReplaceOrInsertBefore(
2407 bool aReplace, nsINode* aNewChild, nsINode* aRefChild,
2408 mozilla::ErrorResult& aError);
2409
2410 /**
2411 * Returns the Element that should be used for resolving namespaces
2412 * on this node (ie the ownerElement for attributes, the documentElement for
2413 * documents, the node itself for elements and for other nodes the parentNode
2414 * if it is an element).
2415 */
2416 virtual mozilla::dom::Element* GetNameSpaceElement() = 0;
2417
2418 /**
2419 * Parse the given selector string into a servo SelectorList.
2420 *
2421 * Never returns null if aRv is not failing.
2422 *
2423 * Note that the selector list returned here is owned by the owner doc's
2424 * selector cache.
2425 */
2426 const mozilla::StyleSelectorList* ParseSelectorList(
2427 const nsACString& aSelectorString, mozilla::ErrorResult&);
2428
2429 public:
2430 /* Event stuff that documents and elements share.
2431
2432 Note that we include DOCUMENT_ONLY_EVENT events here so that we
2433 can forward all the document stuff to this implementation.
2434 */
2435#define EVENT(name_, id_, type_, struct_) \
2436 mozilla::dom::EventHandlerNonNull* GetOn##name_() { \
2437 return GetEventHandler(nsGkAtoms::on##name_); \
2438 } \
2439 void SetOn##name_(mozilla::dom::EventHandlerNonNull* handler) { \
2440 SetEventHandler(nsGkAtoms::on##name_, handler); \
2441 }
2442#define TOUCH_EVENT EVENT
2443#define DOCUMENT_ONLY_EVENT EVENT
2444#include "mozilla/EventNameList.h"
2445#undef DOCUMENT_ONLY_EVENT
2446#undef TOUCH_EVENT
2447#undef EVENT
2448
2449 NodeSelectorFlags GetSelectorFlags() const {
2450 return static_cast<NodeSelectorFlags>(mSelectorFlags.Get());
2451 }
2452
2453 protected:
2454 static bool Traverse(nsINode* tmp, nsCycleCollectionTraversalCallback& cb);
2455 static void Unlink(nsINode* tmp);
2456
2457 RefPtr<mozilla::dom::NodeInfo> mNodeInfo;
2458
2459 // mParent is an owning ref most of the time, except for the case of document
2460 // nodes, so it cannot be represented by nsCOMPtr, so mark is as
2461 // MOZ_OWNING_REF.
2462 nsINode* MOZ_OWNING_REF mParent;
2463
2464 private:
2465#ifndef BOOL_FLAGS_ON_WRAPPER_CACHE
2466 // Boolean flags.
2467 uint32_t mBoolFlags;
2468#endif
2469
2470 mozilla::RustCell<uint32_t> mSelectorFlags{0};
2471
2472 uint32_t mChildCount;
2473
2474 protected:
2475 // mNextSibling and mFirstChild are strong references while
2476 // mPreviousOrLastSibling is a weak ref. |mFirstChild->mPreviousOrLastSibling|
2477 // points to the last child node.
2478 nsCOMPtr<nsIContent> mFirstChild;
2479 nsCOMPtr<nsIContent> mNextSibling;
2480 nsIContent* MOZ_NON_OWNING_REF mPreviousOrLastSibling;
2481
2482 union {
2483 // Pointer to our primary frame. Might be null.
2484 nsIFrame* mPrimaryFrame;
2485
2486 // Pointer to the root of our subtree. Might be null.
2487 // This reference is non-owning and safe, since it either points to the
2488 // object itself, or is reset by ClearSubtreeRootPointer.
2489 nsINode* MOZ_NON_OWNING_REF mSubtreeRoot;
2490 };
2491
2492 // Storage for more members that are usually not needed; allocated lazily.
2493 nsSlots* mSlots;
2494};
2495
2496NON_VIRTUAL_ADDREF_RELEASE(nsINode)
2497
2498inline nsINode* mozilla::dom::EventTarget::GetAsNode() {
2499 return IsNode() ? AsNode() : nullptr;
2500}
2501
2502inline const nsINode* mozilla::dom::EventTarget::GetAsNode() const {
2503 return const_cast<mozilla::dom::EventTarget*>(this)->GetAsNode();
2504}
2505
2506inline nsINode* mozilla::dom::EventTarget::AsNode() {
2507 MOZ_DIAGNOSTIC_ASSERT(IsNode())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsNode())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsNode()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("IsNode()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 2507); AnnotateMozCrashReason("MOZ_DIAGNOSTIC_ASSERT" "(" "IsNode()"
")"); do { *((volatile int*)__null) = 2507; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
2508 return static_cast<nsINode*>(this);
2509}
2510
2511inline const nsINode* mozilla::dom::EventTarget::AsNode() const {
2512 MOZ_DIAGNOSTIC_ASSERT(IsNode())do { static_assert( mozilla::detail::AssertionConditionType<
decltype(IsNode())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(IsNode()))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("IsNode()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/nsINode.h"
, 2512); AnnotateMozCrashReason("MOZ_DIAGNOSTIC_ASSERT" "(" "IsNode()"
")"); do { *((volatile int*)__null) = 2512; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
2513 return static_cast<const nsINode*>(this);
2514}
2515
2516// Useful inline function for getting a node given an nsIContent and a Document.
2517// Returns the first argument cast to nsINode if it is non-null, otherwise
2518// returns the second (which may be null). We use type variables instead of
2519// nsIContent* and Document* because the actual types must be
2520// known for the cast to work.
2521template <class C, class D>
2522inline nsINode* NODE_FROM(C& aContent, D& aDocument) {
2523 if (aContent) return static_cast<nsINode*>(aContent);
2524 return static_cast<nsINode*>(aDocument);
2525}
2526
2527NS_DEFINE_STATIC_IID_ACCESSOR(nsINode, NS_INODE_IID)template <typename T> struct nsINode::COMTypeInfo<nsINode
, T> { static const nsIID kIID __attribute__((visibility("hidden"
))); }; template <typename T> const nsIID nsINode::COMTypeInfo
<nsINode, T>::kIID __attribute__((visibility("hidden"))
) = { 0x70ba4547, 0x7699, 0x44fc, { 0xb3, 0x20, 0x52, 0xdb, 0xe3
, 0xd1, 0xf9, 0x0a } };
2528
2529inline nsISupports* ToSupports(nsINode* aPointer) { return aPointer; }
2530
2531// Some checks are faster to do on nsIContent or Element than on
2532// nsINode, so spit out FromNode versions taking those types too.
2533#define NS_IMPL_FROMNODE_GENERIC(_class, _check, _const)template <typename T> static auto FromNode( _const T&
aNode) -> decltype(static_cast<_const _class*>(&
aNode)) { return aNode._check ? static_cast<_const _class*
>(&aNode) : nullptr; } template <typename T> static
_const _class* FromNode(_const T* aNode) { return FromNode(*
aNode); } template <typename T> static _const _class* FromNodeOrNull
(_const T* aNode) { return aNode ? FromNode(*aNode) : nullptr
; } template <typename T> static auto FromEventTarget(_const
T& aEventTarget) -> decltype(static_cast<_const _class
*>(&aEventTarget)) { return aEventTarget.IsNode() &&
aEventTarget.AsNode()->_check ? static_cast<_const _class
*>(&aEventTarget) : nullptr; } template <typename T
> static _const _class* FromEventTarget(_const T* aEventTarget
) { return FromEventTarget(*aEventTarget); } template <typename
T> static _const _class* FromEventTargetOrNull(_const T* aEventTarget
) { return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr
; }
\
2534 template <typename T> \
2535 static auto FromNode( \
2536 _const T& aNode) -> decltype(static_cast<_const _class*>(&aNode)) { \
2537 return aNode._check ? static_cast<_const _class*>(&aNode) : nullptr; \
2538 } \
2539 template <typename T> \
2540 static _const _class* FromNode(_const T* aNode) { \
2541 return FromNode(*aNode); \
2542 } \
2543 template <typename T> \
2544 static _const _class* FromNodeOrNull(_const T* aNode) { \
2545 return aNode ? FromNode(*aNode) : nullptr; \
2546 } \
2547 template <typename T> \
2548 static auto FromEventTarget(_const T& aEventTarget) \
2549 -> decltype(static_cast<_const _class*>(&aEventTarget)) { \
2550 return aEventTarget.IsNode() && aEventTarget.AsNode()->_check \
2551 ? static_cast<_const _class*>(&aEventTarget) \
2552 : nullptr; \
2553 } \
2554 template <typename T> \
2555 static _const _class* FromEventTarget(_const T* aEventTarget) { \
2556 return FromEventTarget(*aEventTarget); \
2557 } \
2558 template <typename T> \
2559 static _const _class* FromEventTargetOrNull(_const T* aEventTarget) { \
2560 return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr; \
2561 }
2562
2563#define NS_IMPL_FROMNODE_HELPER(_class, _check)template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode._check ? static_cast< _class*>(&aNode) : nullptr
; } template <typename T> static _class* FromNode( T* aNode
) { return FromNode(*aNode); } template <typename T> static
_class* FromNodeOrNull( T* aNode) { return aNode ? FromNode(
*aNode) : nullptr; } template <typename T> static auto FromEventTarget
( T& aEventTarget) -> decltype(static_cast< _class*
>(&aEventTarget)) { return aEventTarget.IsNode() &&
aEventTarget.AsNode()->_check ? static_cast< _class*>
(&aEventTarget) : nullptr; } template <typename T> static
_class* FromEventTarget( T* aEventTarget) { return FromEventTarget
(*aEventTarget); } template <typename T> static _class*
FromEventTargetOrNull( T* aEventTarget) { return aEventTarget
? FromEventTarget(*aEventTarget) : nullptr; } template <typename
T> static auto FromNode( const T& aNode) -> decltype
(static_cast<const _class*>(&aNode)) { return aNode
._check ? static_cast<const _class*>(&aNode) : nullptr
; } template <typename T> static const _class* FromNode
(const T* aNode) { return FromNode(*aNode); } template <typename
T> static const _class* FromNodeOrNull(const T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget(const T& aEventTarget) ->
decltype(static_cast<const _class*>(&aEventTarget)
) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->_check ? static_cast<const _class*>(&aEventTarget
) : nullptr; } template <typename T> static const _class
* FromEventTarget(const T* aEventTarget) { return FromEventTarget
(*aEventTarget); } template <typename T> static const _class
* FromEventTargetOrNull(const T* aEventTarget) { return aEventTarget
? FromEventTarget(*aEventTarget) : nullptr; } template <typename
T> static _class* FromNode(T&& aNode) { return aNode
->_check ? static_cast<_class*>(static_cast<nsINode
*>(aNode)) : nullptr; } template <typename T> static
_class* FromNodeOrNull(T&& aNode) { return aNode ? FromNode
(aNode) : nullptr; } template <typename T> static _class
* FromEventTarget(T&& aEventTarget) { return aEventTarget
->IsNode() && aEventTarget->AsNode()->_check
? static_cast<_class*>(static_cast<EventTarget*>
(aEventTarget)) : nullptr; } template <typename T> static
_class* FromEventTargetOrNull(T&& aEventTarget) { return
aEventTarget ? FromEventTarget(aEventTarget) : nullptr; }
\
2564 NS_IMPL_FROMNODE_GENERIC(_class, _check, )template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode._check ? static_cast< _class*>(&aNode) : nullptr
; } template <typename T> static _class* FromNode( T* aNode
) { return FromNode(*aNode); } template <typename T> static
_class* FromNodeOrNull( T* aNode) { return aNode ? FromNode(
*aNode) : nullptr; } template <typename T> static auto FromEventTarget
( T& aEventTarget) -> decltype(static_cast< _class*
>(&aEventTarget)) { return aEventTarget.IsNode() &&
aEventTarget.AsNode()->_check ? static_cast< _class*>
(&aEventTarget) : nullptr; } template <typename T> static
_class* FromEventTarget( T* aEventTarget) { return FromEventTarget
(*aEventTarget); } template <typename T> static _class*
FromEventTargetOrNull( T* aEventTarget) { return aEventTarget
? FromEventTarget(*aEventTarget) : nullptr; }
\
2565 NS_IMPL_FROMNODE_GENERIC(_class, _check, const)template <typename T> static auto FromNode( const T&
aNode) -> decltype(static_cast<const _class*>(&
aNode)) { return aNode._check ? static_cast<const _class*>
(&aNode) : nullptr; } template <typename T> static const
_class* FromNode(const T* aNode) { return FromNode(*aNode); }
template <typename T> static const _class* FromNodeOrNull
(const T* aNode) { return aNode ? FromNode(*aNode) : nullptr;
} template <typename T> static auto FromEventTarget(const
T& aEventTarget) -> decltype(static_cast<const _class
*>(&aEventTarget)) { return aEventTarget.IsNode() &&
aEventTarget.AsNode()->_check ? static_cast<const _class
*>(&aEventTarget) : nullptr; } template <typename T
> static const _class* FromEventTarget(const T* aEventTarget
) { return FromEventTarget(*aEventTarget); } template <typename
T> static const _class* FromEventTargetOrNull(const T* aEventTarget
) { return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr
; }
\
2566 \
2567 template <typename T> \
2568 static _class* FromNode(T&& aNode) { \
2569 /* We need the double-cast in case aNode is a smartptr. Those */ \
2570 /* can cast to superclasses of the type they're templated on, */ \
2571 /* but not directly to subclasses. */ \
2572 return aNode->_check ? static_cast<_class*>(static_cast<nsINode*>(aNode)) \
2573 : nullptr; \
2574 } \
2575 template <typename T> \
2576 static _class* FromNodeOrNull(T&& aNode) { \
2577 return aNode ? FromNode(aNode) : nullptr; \
2578 } \
2579 template <typename T> \
2580 static _class* FromEventTarget(T&& aEventTarget) { \
2581 /* We need the double-cast in case aEventTarget is a smartptr. Those */ \
2582 /* can cast to superclasses of the type they're templated on, */ \
2583 /* but not directly to subclasses. */ \
2584 return aEventTarget->IsNode() && aEventTarget->AsNode()->_check \
2585 ? static_cast<_class*>(static_cast<EventTarget*>(aEventTarget)) \
2586 : nullptr; \
2587 } \
2588 template <typename T> \
2589 static _class* FromEventTargetOrNull(T&& aEventTarget) { \
2590 return aEventTarget ? FromEventTarget(aEventTarget) : nullptr; \
2591 }
2592
2593#define NS_IMPL_FROMNODE(_class, _nsid)template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode.IsInNamespace(_nsid) ? static_cast< _class*>(&
aNode) : nullptr; } template <typename T> static _class
* FromNode( T* aNode) { return FromNode(*aNode); } template <
typename T> static _class* FromNodeOrNull( T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget( T& aEventTarget) -> decltype
(static_cast< _class*>(&aEventTarget)) { return aEventTarget
.IsNode() && aEventTarget.AsNode()->IsInNamespace(
_nsid) ? static_cast< _class*>(&aEventTarget) : nullptr
; } template <typename T> static _class* FromEventTarget
( T* aEventTarget) { return FromEventTarget(*aEventTarget); }
template <typename T> static _class* FromEventTargetOrNull
( T* aEventTarget) { return aEventTarget ? FromEventTarget(*aEventTarget
) : nullptr; } template <typename T> static auto FromNode
( const T& aNode) -> decltype(static_cast<const _class
*>(&aNode)) { return aNode.IsInNamespace(_nsid) ? static_cast
<const _class*>(&aNode) : nullptr; } template <typename
T> static const _class* FromNode(const T* aNode) { return
FromNode(*aNode); } template <typename T> static const
_class* FromNodeOrNull(const T* aNode) { return aNode ? FromNode
(*aNode) : nullptr; } template <typename T> static auto
FromEventTarget(const T& aEventTarget) -> decltype(static_cast
<const _class*>(&aEventTarget)) { return aEventTarget
.IsNode() && aEventTarget.AsNode()->IsInNamespace(
_nsid) ? static_cast<const _class*>(&aEventTarget) :
nullptr; } template <typename T> static const _class* FromEventTarget
(const T* aEventTarget) { return FromEventTarget(*aEventTarget
); } template <typename T> static const _class* FromEventTargetOrNull
(const T* aEventTarget) { return aEventTarget ? FromEventTarget
(*aEventTarget) : nullptr; } template <typename T> static
_class* FromNode(T&& aNode) { return aNode->IsInNamespace
(_nsid) ? static_cast<_class*>(static_cast<nsINode*>
(aNode)) : nullptr; } template <typename T> static _class
* FromNodeOrNull(T&& aNode) { return aNode ? FromNode
(aNode) : nullptr; } template <typename T> static _class
* FromEventTarget(T&& aEventTarget) { return aEventTarget
->IsNode() && aEventTarget->AsNode()->IsInNamespace
(_nsid) ? static_cast<_class*>(static_cast<EventTarget
*>(aEventTarget)) : nullptr; } template <typename T>
static _class* FromEventTargetOrNull(T&& aEventTarget
) { return aEventTarget ? FromEventTarget(aEventTarget) : nullptr
; }
\
2594 NS_IMPL_FROMNODE_HELPER(_class, IsInNamespace(_nsid))template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode.IsInNamespace(_nsid) ? static_cast< _class*>(&
aNode) : nullptr; } template <typename T> static _class
* FromNode( T* aNode) { return FromNode(*aNode); } template <
typename T> static _class* FromNodeOrNull( T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget( T& aEventTarget) -> decltype
(static_cast< _class*>(&aEventTarget)) { return aEventTarget
.IsNode() && aEventTarget.AsNode()->IsInNamespace(
_nsid) ? static_cast< _class*>(&aEventTarget) : nullptr
; } template <typename T> static _class* FromEventTarget
( T* aEventTarget) { return FromEventTarget(*aEventTarget); }
template <typename T> static _class* FromEventTargetOrNull
( T* aEventTarget) { return aEventTarget ? FromEventTarget(*aEventTarget
) : nullptr; } template <typename T> static auto FromNode
( const T& aNode) -> decltype(static_cast<const _class
*>(&aNode)) { return aNode.IsInNamespace(_nsid) ? static_cast
<const _class*>(&aNode) : nullptr; } template <typename
T> static const _class* FromNode(const T* aNode) { return
FromNode(*aNode); } template <typename T> static const
_class* FromNodeOrNull(const T* aNode) { return aNode ? FromNode
(*aNode) : nullptr; } template <typename T> static auto
FromEventTarget(const T& aEventTarget) -> decltype(static_cast
<const _class*>(&aEventTarget)) { return aEventTarget
.IsNode() && aEventTarget.AsNode()->IsInNamespace(
_nsid) ? static_cast<const _class*>(&aEventTarget) :
nullptr; } template <typename T> static const _class* FromEventTarget
(const T* aEventTarget) { return FromEventTarget(*aEventTarget
); } template <typename T> static const _class* FromEventTargetOrNull
(const T* aEventTarget) { return aEventTarget ? FromEventTarget
(*aEventTarget) : nullptr; } template <typename T> static
_class* FromNode(T&& aNode) { return aNode->IsInNamespace
(_nsid) ? static_cast<_class*>(static_cast<nsINode*>
(aNode)) : nullptr; } template <typename T> static _class
* FromNodeOrNull(T&& aNode) { return aNode ? FromNode
(aNode) : nullptr; } template <typename T> static _class
* FromEventTarget(T&& aEventTarget) { return aEventTarget
->IsNode() && aEventTarget->AsNode()->IsInNamespace
(_nsid) ? static_cast<_class*>(static_cast<EventTarget
*>(aEventTarget)) : nullptr; } template <typename T>
static _class* FromEventTargetOrNull(T&& aEventTarget
) { return aEventTarget ? FromEventTarget(aEventTarget) : nullptr
; }
2595
2596#define NS_IMPL_FROMNODE_WITH_TAG(_class, _nsid, _tag)template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode.NodeInfo()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast
< _class*>(&aNode) : nullptr; } template <typename
T> static _class* FromNode( T* aNode) { return FromNode(*
aNode); } template <typename T> static _class* FromNodeOrNull
( T* aNode) { return aNode ? FromNode(*aNode) : nullptr; } template
<typename T> static auto FromEventTarget( T& aEventTarget
) -> decltype(static_cast< _class*>(&aEventTarget
)) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast
< _class*>(&aEventTarget) : nullptr; } template <
typename T> static _class* FromEventTarget( T* aEventTarget
) { return FromEventTarget(*aEventTarget); } template <typename
T> static _class* FromEventTargetOrNull( T* aEventTarget)
{ return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr
; } template <typename T> static auto FromNode( const T
& aNode) -> decltype(static_cast<const _class*>(
&aNode)) { return aNode.NodeInfo()->Equals(nsGkAtoms::
_tag, _nsid) ? static_cast<const _class*>(&aNode) :
nullptr; } template <typename T> static const _class* FromNode
(const T* aNode) { return FromNode(*aNode); } template <typename
T> static const _class* FromNodeOrNull(const T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget(const T& aEventTarget) ->
decltype(static_cast<const _class*>(&aEventTarget)
) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast
<const _class*>(&aEventTarget) : nullptr; } template
<typename T> static const _class* FromEventTarget(const
T* aEventTarget) { return FromEventTarget(*aEventTarget); } template
<typename T> static const _class* FromEventTargetOrNull
(const T* aEventTarget) { return aEventTarget ? FromEventTarget
(*aEventTarget) : nullptr; } template <typename T> static
_class* FromNode(T&& aNode) { return aNode->NodeInfo
()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast<_class
*>(static_cast<nsINode*>(aNode)) : nullptr; } template
<typename T> static _class* FromNodeOrNull(T&&
aNode) { return aNode ? FromNode(aNode) : nullptr; } template
<typename T> static _class* FromEventTarget(T&&
aEventTarget) { return aEventTarget->IsNode() && aEventTarget
->AsNode()->NodeInfo()->Equals(nsGkAtoms::_tag, _nsid
) ? static_cast<_class*>(static_cast<EventTarget*>
(aEventTarget)) : nullptr; } template <typename T> static
_class* FromEventTargetOrNull(T&& aEventTarget) { return
aEventTarget ? FromEventTarget(aEventTarget) : nullptr; }
\
2597 NS_IMPL_FROMNODE_HELPER(_class, NodeInfo()->Equals(nsGkAtoms::_tag, _nsid))template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode.NodeInfo()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast
< _class*>(&aNode) : nullptr; } template <typename
T> static _class* FromNode( T* aNode) { return FromNode(*
aNode); } template <typename T> static _class* FromNodeOrNull
( T* aNode) { return aNode ? FromNode(*aNode) : nullptr; } template
<typename T> static auto FromEventTarget( T& aEventTarget
) -> decltype(static_cast< _class*>(&aEventTarget
)) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast
< _class*>(&aEventTarget) : nullptr; } template <
typename T> static _class* FromEventTarget( T* aEventTarget
) { return FromEventTarget(*aEventTarget); } template <typename
T> static _class* FromEventTargetOrNull( T* aEventTarget)
{ return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr
; } template <typename T> static auto FromNode( const T
& aNode) -> decltype(static_cast<const _class*>(
&aNode)) { return aNode.NodeInfo()->Equals(nsGkAtoms::
_tag, _nsid) ? static_cast<const _class*>(&aNode) :
nullptr; } template <typename T> static const _class* FromNode
(const T* aNode) { return FromNode(*aNode); } template <typename
T> static const _class* FromNodeOrNull(const T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget(const T& aEventTarget) ->
decltype(static_cast<const _class*>(&aEventTarget)
) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast
<const _class*>(&aEventTarget) : nullptr; } template
<typename T> static const _class* FromEventTarget(const
T* aEventTarget) { return FromEventTarget(*aEventTarget); } template
<typename T> static const _class* FromEventTargetOrNull
(const T* aEventTarget) { return aEventTarget ? FromEventTarget
(*aEventTarget) : nullptr; } template <typename T> static
_class* FromNode(T&& aNode) { return aNode->NodeInfo
()->Equals(nsGkAtoms::_tag, _nsid) ? static_cast<_class
*>(static_cast<nsINode*>(aNode)) : nullptr; } template
<typename T> static _class* FromNodeOrNull(T&&
aNode) { return aNode ? FromNode(aNode) : nullptr; } template
<typename T> static _class* FromEventTarget(T&&
aEventTarget) { return aEventTarget->IsNode() && aEventTarget
->AsNode()->NodeInfo()->Equals(nsGkAtoms::_tag, _nsid
) ? static_cast<_class*>(static_cast<EventTarget*>
(aEventTarget)) : nullptr; } template <typename T> static
_class* FromEventTargetOrNull(T&& aEventTarget) { return
aEventTarget ? FromEventTarget(aEventTarget) : nullptr; }
2598
2599#define NS_IMPL_FROMNODE_HTML_WITH_TAG(_class, _tag)template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode.NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
< _class*>(&aNode) : nullptr; } template <typename
T> static _class* FromNode( T* aNode) { return FromNode(*
aNode); } template <typename T> static _class* FromNodeOrNull
( T* aNode) { return aNode ? FromNode(*aNode) : nullptr; } template
<typename T> static auto FromEventTarget( T& aEventTarget
) -> decltype(static_cast< _class*>(&aEventTarget
)) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
< _class*>(&aEventTarget) : nullptr; } template <
typename T> static _class* FromEventTarget( T* aEventTarget
) { return FromEventTarget(*aEventTarget); } template <typename
T> static _class* FromEventTargetOrNull( T* aEventTarget)
{ return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr
; } template <typename T> static auto FromNode( const T
& aNode) -> decltype(static_cast<const _class*>(
&aNode)) { return aNode.NodeInfo()->Equals(nsGkAtoms::
_tag, 3) ? static_cast<const _class*>(&aNode) : nullptr
; } template <typename T> static const _class* FromNode
(const T* aNode) { return FromNode(*aNode); } template <typename
T> static const _class* FromNodeOrNull(const T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget(const T& aEventTarget) ->
decltype(static_cast<const _class*>(&aEventTarget)
) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
<const _class*>(&aEventTarget) : nullptr; } template
<typename T> static const _class* FromEventTarget(const
T* aEventTarget) { return FromEventTarget(*aEventTarget); } template
<typename T> static const _class* FromEventTargetOrNull
(const T* aEventTarget) { return aEventTarget ? FromEventTarget
(*aEventTarget) : nullptr; } template <typename T> static
_class* FromNode(T&& aNode) { return aNode->NodeInfo
()->Equals(nsGkAtoms::_tag, 3) ? static_cast<_class*>
(static_cast<nsINode*>(aNode)) : nullptr; } template <
typename T> static _class* FromNodeOrNull(T&& aNode
) { return aNode ? FromNode(aNode) : nullptr; } template <
typename T> static _class* FromEventTarget(T&& aEventTarget
) { return aEventTarget->IsNode() && aEventTarget->
AsNode()->NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
<_class*>(static_cast<EventTarget*>(aEventTarget)
) : nullptr; } template <typename T> static _class* FromEventTargetOrNull
(T&& aEventTarget) { return aEventTarget ? FromEventTarget
(aEventTarget) : nullptr; }
\
2600 NS_IMPL_FROMNODE_WITH_TAG(_class, kNameSpaceID_XHTML, _tag)template <typename T> static auto FromNode( T& aNode
) -> decltype(static_cast< _class*>(&aNode)) { return
aNode.NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
< _class*>(&aNode) : nullptr; } template <typename
T> static _class* FromNode( T* aNode) { return FromNode(*
aNode); } template <typename T> static _class* FromNodeOrNull
( T* aNode) { return aNode ? FromNode(*aNode) : nullptr; } template
<typename T> static auto FromEventTarget( T& aEventTarget
) -> decltype(static_cast< _class*>(&aEventTarget
)) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
< _class*>(&aEventTarget) : nullptr; } template <
typename T> static _class* FromEventTarget( T* aEventTarget
) { return FromEventTarget(*aEventTarget); } template <typename
T> static _class* FromEventTargetOrNull( T* aEventTarget)
{ return aEventTarget ? FromEventTarget(*aEventTarget) : nullptr
; } template <typename T> static auto FromNode( const T
& aNode) -> decltype(static_cast<const _class*>(
&aNode)) { return aNode.NodeInfo()->Equals(nsGkAtoms::
_tag, 3) ? static_cast<const _class*>(&aNode) : nullptr
; } template <typename T> static const _class* FromNode
(const T* aNode) { return FromNode(*aNode); } template <typename
T> static const _class* FromNodeOrNull(const T* aNode) { return
aNode ? FromNode(*aNode) : nullptr; } template <typename T
> static auto FromEventTarget(const T& aEventTarget) ->
decltype(static_cast<const _class*>(&aEventTarget)
) { return aEventTarget.IsNode() && aEventTarget.AsNode
()->NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
<const _class*>(&aEventTarget) : nullptr; } template
<typename T> static const _class* FromEventTarget(const
T* aEventTarget) { return FromEventTarget(*aEventTarget); } template
<typename T> static const _class* FromEventTargetOrNull
(const T* aEventTarget) { return aEventTarget ? FromEventTarget
(*aEventTarget) : nullptr; } template <typename T> static
_class* FromNode(T&& aNode) { return aNode->NodeInfo
()->Equals(nsGkAtoms::_tag, 3) ? static_cast<_class*>
(static_cast<nsINode*>(aNode)) : nullptr; } template <
typename T> static _class* FromNodeOrNull(T&& aNode
) { return aNode ? FromNode(aNode) : nullptr; } template <
typename T> static _class* FromEventTarget(T&& aEventTarget
) { return aEventTarget->IsNode() && aEventTarget->
AsNode()->NodeInfo()->Equals(nsGkAtoms::_tag, 3) ? static_cast
<_class*>(static_cast<EventTarget*>(aEventTarget)
) : nullptr; } template <typename T> static _class* FromEventTargetOrNull
(T&& aEventTarget) { return aEventTarget ? FromEventTarget
(aEventTarget) : nullptr; }
2601
2602#endif /* nsINode_h___ */

/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h

1/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3/* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7#ifndef mozilla_dom_CustomElementRegistry_h
8#define mozilla_dom_CustomElementRegistry_h
9
10#include "js/GCHashTable.h"
11#include "js/TypeDecls.h"
12#include "mozilla/Attributes.h"
13#include "mozilla/CycleCollectedJSContext.h" // for MicroTaskRunnable
14#include "mozilla/dom/BindingDeclarations.h"
15#include "mozilla/dom/CustomElementRegistryBinding.h"
16#include "mozilla/dom/Document.h"
17#include "mozilla/dom/Element.h"
18#include "mozilla/dom/ElementInternals.h"
19#include "mozilla/dom/ElementInternalsBinding.h"
20#include "mozilla/dom/HTMLFormElement.h"
21#include "mozilla/RefPtr.h"
22#include "nsCycleCollectionParticipant.h"
23#include "nsWrapperCache.h"
24#include "nsTHashSet.h"
25#include "nsAtomHashKeys.h"
26
27namespace mozilla {
28class ErrorResult;
29
30namespace dom {
31
32struct CustomElementData;
33struct ElementDefinitionOptions;
34class CallbackFunction;
35class CustomElementCallback;
36class CustomElementReaction;
37class DocGroup;
38class Promise;
39
40enum class ElementCallbackType {
41 eConnected,
42 eDisconnected,
43 eAdopted,
44 eAttributeChanged,
45 eFormAssociated,
46 eFormReset,
47 eFormDisabled,
48 eFormStateRestore,
49 eGetCustomInterface
50};
51
52struct LifecycleCallbackArgs {
53 // Used by the attribute changed callback.
54 RefPtr<nsAtom> mName;
55 nsString mOldValue;
56 nsString mNewValue;
57 nsString mNamespaceURI;
58
59 // Used by the adopted callback.
60 RefPtr<Document> mOldDocument;
61 RefPtr<Document> mNewDocument;
62
63 // Used by the form associated callback.
64 RefPtr<HTMLFormElement> mForm;
65
66 // Used by the form disabled callback.
67 bool mDisabled;
68
69 // Used by the form state restore callback.
70 Nullable<OwningFileOrUSVStringOrFormData> mState;
71 RestoreReason mReason;
72
73 size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const;
74};
75
76// Each custom element has an associated callback queue and an element is
77// being created flag.
78struct CustomElementData {
79 // https://dom.spec.whatwg.org/#concept-element-custom-element-state
80 // CustomElementData is only created on the element which is a custom element
81 // or an upgrade candidate, so the state of an element without
82 // CustomElementData is "uncustomized".
83 enum class State { eUndefined, eFailed, eCustom, ePrecustomized };
84
85 explicit CustomElementData(nsAtom* aType);
86 CustomElementData(nsAtom* aType, State aState);
87 ~CustomElementData() = default;
88
89 // Custom element state as described in the custom element spec.
90 State mState;
91 // custom element reaction queue as described in the custom element spec.
92 // There is 1 reaction in reaction queue, when 1) it becomes disconnected,
93 // 2) it’s adopted into a new document, 3) its attributes are changed,
94 // appended, removed, or replaced.
95 // There are 3 reactions in reaction queue when doing upgrade operation,
96 // e.g., create an element, insert a node.
97 AutoTArray<UniquePtr<CustomElementReaction>, 3> mReactionQueue;
98
99 void SetCustomElementDefinition(CustomElementDefinition* aDefinition);
100 CustomElementDefinition* GetCustomElementDefinition() const;
101 nsAtom* GetCustomElementType() const { return mType; }
102 void AttachedInternals();
103 bool HasAttachedInternals() const { return mIsAttachedInternals; }
104
105 bool IsFormAssociated() const;
106
107 void Traverse(nsCycleCollectionTraversalCallback& aCb) const;
108 void Unlink();
109 size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
110
111 nsAtom* GetIs(const Element* aElement) const {
112 // If mType isn't the same as name atom, this is a customized built-in
113 // element, which has 'is' value set.
114 return aElement->NodeInfo()->NameAtom() == mType ? nullptr : mType.get();
115 }
116
117 ElementInternals* GetElementInternals() const { return mElementInternals; }
118
119 ElementInternals* GetOrCreateElementInternals(HTMLElement* aTarget) {
120 if (!mElementInternals) {
121 mElementInternals = MakeAndAddRef<ElementInternals>(aTarget);
122 }
123 return mElementInternals;
124 }
125
126 private:
127 // Custom element type, for <button is="x-button"> or <x-button>
128 // this would be x-button.
129 RefPtr<nsAtom> mType;
130 RefPtr<CustomElementDefinition> mCustomElementDefinition;
131 RefPtr<ElementInternals> mElementInternals;
132 bool mIsAttachedInternals = false;
133};
134
135#define ALREADY_CONSTRUCTED_MARKERnullptr nullptr
136
137// The required information for a custom element as defined in:
138// https://html.spec.whatwg.org/multipage/scripting.html#custom-element-definition
139struct CustomElementDefinition {
140 NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(CustomElementDefinition)void DeleteCycleCollectable(void) { delete this; } class cycleCollection
: public nsCycleCollectionParticipant { public: constexpr explicit
cycleCollection(Flags aFlags = 0) : nsCycleCollectionParticipant
(aFlags) {} private: public: virtual void Root(void* p) override
{ static_cast<CustomElementDefinition*>(p)->AddRef(
); } virtual void Unlink(void* n) override; virtual void Unroot
(void* p) override { static_cast<CustomElementDefinition*>
(p)->Release(); } virtual nsresult TraverseNative(void* n,
nsCycleCollectionTraversalCallback& cb) override; virtual
const char* ClassName() override { return "CustomElementDefinition"
; }; virtual void DeleteCycleCollectable(void* n) override { DowncastCCParticipant
<CustomElementDefinition>(n)->DeleteCycleCollectable
(); } static CustomElementDefinition* Downcast(void* s) { return
DowncastCCParticipant<CustomElementDefinition>(s); } static
void* Upcast(CustomElementDefinition* p) { return static_cast
<void*>(p); } static constexpr nsCycleCollectionParticipant
* GetParticipant() { return &CustomElementDefinition::_cycleCollectorGlobal
; } }; static cycleCollection _cycleCollectorGlobal;
141 NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(CustomElementDefinition)public: MozExternalRefCountType AddRef(void) { static_assert(
!std::is_destructible_v<CustomElementDefinition>, "Reference-counted class "
"CustomElementDefinition" " should not have a public destructor. "
"Make this class's destructor non-public"); do { static_assert
( mozilla::detail::AssertionConditionType<decltype(int32_t
(mRefCnt) >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(int32_t(mRefCnt) >= 0))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("int32_t(mRefCnt) >= 0"
" (" "illegal refcnt" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 141); AnnotateMozCrashReason("MOZ_ASSERT" "(" "int32_t(mRefCnt) >= 0"
") (" "illegal refcnt" ")"); do { *((volatile int*)__null) =
141; __attribute__((nomerge)) ::abort(); } while (false); } }
while (false); _mOwningThread.AssertOwnership("CustomElementDefinition"
" not thread-safe"); nsrefcnt count = mRefCnt.incr(static_cast
<void*>(this), CustomElementDefinition::cycleCollection
::GetParticipant()); NS_LogAddRef((this), (count), ("CustomElementDefinition"
), (uint32_t)(sizeof(*this))); return count;} MozExternalRefCountType
Release(void) { do { static_assert( mozilla::detail::AssertionConditionType
<decltype(int32_t(mRefCnt) > 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(int32_t(mRefCnt) > 0))), 0
))) { do { } while (false); MOZ_ReportAssertionFailure("int32_t(mRefCnt) > 0"
" (" "dup release" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 141); AnnotateMozCrashReason("MOZ_ASSERT" "(" "int32_t(mRefCnt) > 0"
") (" "dup release" ")"); do { *((volatile int*)__null) = 141
; __attribute__((nomerge)) ::abort(); } while (false); } } while
(false); _mOwningThread.AssertOwnership("CustomElementDefinition"
" not thread-safe"); nsrefcnt count = mRefCnt.decr(static_cast
<void*>(this), CustomElementDefinition::cycleCollection
::GetParticipant()); NS_LogRelease((this), (count), ("CustomElementDefinition"
)); return count; } using HasThreadSafeRefCnt = std::false_type
; protected: nsCycleCollectingAutoRefCnt mRefCnt; nsAutoOwningThread
_mOwningThread; public:
142
143 CustomElementDefinition(
144 nsAtom* aType, nsAtom* aLocalName, int32_t aNamespaceID,
145 CustomElementConstructor* aConstructor,
146 nsTArray<RefPtr<nsAtom>>&& aObservedAttributes,
147 UniquePtr<LifecycleCallbacks>&& aCallbacks,
148 UniquePtr<FormAssociatedLifecycleCallbacks>&& aFormAssociatedCallbacks,
149 bool aFormAssociated, bool aDisableInternals, bool aDisableShadow);
150
151 // The type (name) for this custom element, for <button is="x-foo"> or <x-foo>
152 // this would be x-foo.
153 RefPtr<nsAtom> mType;
154
155 // The localname to (e.g. <button is=type> -- this would be button).
156 RefPtr<nsAtom> mLocalName;
157
158 // The namespace for this custom element
159 int32_t mNamespaceID;
160
161 // The custom element constructor.
162 RefPtr<CustomElementConstructor> mConstructor;
163
164 // The list of attributes that this custom element observes.
165 nsTArray<RefPtr<nsAtom>> mObservedAttributes;
166
167 // The lifecycle callbacks to call for this custom element.
168 UniquePtr<LifecycleCallbacks> mCallbacks;
169 UniquePtr<FormAssociatedLifecycleCallbacks> mFormAssociatedCallbacks;
170
171 // If this is true, user agent treats elements associated to this custom
172 // element definition as form-associated custom elements.
173 bool mFormAssociated = false;
174
175 // Determine whether to allow to attachInternals() for this custom element.
176 bool mDisableInternals = false;
177
178 // Determine whether to allow to attachShadow() for this custom element.
179 bool mDisableShadow = false;
180
181 // A construction stack. Use nullptr to represent an "already constructed
182 // marker".
183 nsTArray<RefPtr<Element>> mConstructionStack;
184
185 // See step 6.1.10 of https://dom.spec.whatwg.org/#concept-create-element
186 // which set up the prefix after a custom element is created. However, In
187 // Gecko, the prefix isn't allowed to be changed in NodeInfo, so we store the
188 // prefix information here and propagate to where NodeInfo is assigned to a
189 // custom element instead.
190 nsTArray<RefPtr<nsAtom>> mPrefixStack;
191
192 // This basically is used for distinguishing the custom element constructor
193 // is invoked from document.createElement or directly from JS, i.e.
194 // `new CustomElementConstructor()`.
195 uint32_t mConstructionDepth = 0;
196
197 bool IsCustomBuiltIn() { return mType != mLocalName; }
198
199 bool IsInObservedAttributeList(nsAtom* aName) {
200 if (mObservedAttributes.IsEmpty()) {
201 return false;
202 }
203
204 return mObservedAttributes.Contains(aName);
205 }
206
207 private:
208 ~CustomElementDefinition() = default;
209};
210
211class CustomElementReaction {
212 public:
213 virtual ~CustomElementReaction() = default;
214 MOZ_CAN_RUN_SCRIPT
215 virtual void Invoke(Element* aElement, ErrorResult& aRv) = 0;
216 virtual void Traverse(nsCycleCollectionTraversalCallback& aCb) const = 0;
217 virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const = 0;
218
219 bool IsUpgradeReaction() { return mIsUpgradeReaction; }
220
221 protected:
222 bool mIsUpgradeReaction = false;
223};
224
225// https://html.spec.whatwg.org/multipage/scripting.html#custom-element-reactions-stack
226class CustomElementReactionsStack {
227 public:
228 NS_INLINE_DECL_REFCOUNTING(CustomElementReactionsStack)public: MozExternalRefCountType AddRef(void) { static_assert(
!std::is_destructible_v<CustomElementReactionsStack>, "Reference-counted class "
"CustomElementReactionsStack" " should not have a public destructor. "
"Make this class's destructor non-public"); do { static_assert
( mozilla::detail::AssertionConditionType<decltype(int32_t
(mRefCnt) >= 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(int32_t(mRefCnt) >= 0))),
0))) { do { } while (false); MOZ_ReportAssertionFailure("int32_t(mRefCnt) >= 0"
" (" "illegal refcnt" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 228); AnnotateMozCrashReason("MOZ_ASSERT" "(" "int32_t(mRefCnt) >= 0"
") (" "illegal refcnt" ")"); do { *((volatile int*)__null) =
228; __attribute__((nomerge)) ::abort(); } while (false); } }
while (false); _mOwningThread.AssertOwnership("CustomElementReactionsStack"
" not thread-safe"); ++mRefCnt; NS_LogAddRef((this), (mRefCnt
), ("CustomElementReactionsStack"), (uint32_t)(sizeof(*this))
); return mRefCnt; } MozExternalRefCountType Release(void) { do
{ static_assert( mozilla::detail::AssertionConditionType<
decltype(int32_t(mRefCnt) > 0)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(int32_t(mRefCnt) > 0))), 0
))) { do { } while (false); MOZ_ReportAssertionFailure("int32_t(mRefCnt) > 0"
" (" "dup release" ")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 228); AnnotateMozCrashReason("MOZ_ASSERT" "(" "int32_t(mRefCnt) > 0"
") (" "dup release" ")"); do { *((volatile int*)__null) = 228
; __attribute__((nomerge)) ::abort(); } while (false); } } while
(false); _mOwningThread.AssertOwnership("CustomElementReactionsStack"
" not thread-safe"); --mRefCnt; NS_LogRelease((this), (mRefCnt
), ("CustomElementReactionsStack")); if (mRefCnt == 0) { mRefCnt
= 1; delete (this); return 0; } return mRefCnt; } using HasThreadSafeRefCnt
= std::false_type; protected: nsAutoRefCnt mRefCnt; nsAutoOwningThread
_mOwningThread; public:
229
230 CustomElementReactionsStack()
231 : mIsBackupQueueProcessing(false),
232 mRecursionDepth(0),
233 mIsElementQueuePushedForCurrentRecursionDepth(false) {}
234
235 // Hold a strong reference of Element so that it does not get cycle collected
236 // before the reactions in its reaction queue are invoked.
237 // The element reaction queues are stored in CustomElementData.
238 // We need to lookup ElementReactionQueueMap again to get relevant reaction
239 // queue. The choice of 3 for the auto size here is based on running Custom
240 // Elements wpt tests.
241 typedef AutoTArray<RefPtr<Element>, 3> ElementQueue;
242
243 /**
244 * Enqueue a custom element upgrade reaction
245 * https://html.spec.whatwg.org/multipage/scripting.html#enqueue-a-custom-element-upgrade-reaction
246 */
247 void EnqueueUpgradeReaction(Element* aElement,
248 CustomElementDefinition* aDefinition);
249
250 /**
251 * Enqueue a custom element callback reaction
252 * https://html.spec.whatwg.org/multipage/scripting.html#enqueue-a-custom-element-callback-reaction
253 */
254 void EnqueueCallbackReaction(
255 Element* aElement,
256 UniquePtr<CustomElementCallback> aCustomElementCallback);
257
258 /**
259 * [CEReactions] Before executing the algorithm's steps.
260 * Increase the current recursion depth, and the element queue is pushed
261 * lazily when we really enqueue reactions.
262 *
263 * @return true if the element queue is pushed for "previous" recursion depth.
264 */
265 bool EnterCEReactions() {
266 bool temp = mIsElementQueuePushedForCurrentRecursionDepth;
267 mRecursionDepth++;
268 // The is-element-queue-pushed flag is initially false when entering a new
269 // recursion level. The original value will be cached in AutoCEReaction
270 // and restored after leaving this recursion level.
271 mIsElementQueuePushedForCurrentRecursionDepth = false;
272 return temp;
273 }
274
275 /**
276 * [CEReactions] After executing the algorithm's steps.
277 * Pop and invoke the element queue if it is created and pushed for current
278 * recursion depth, then decrease the current recursion depth.
279 *
280 * @param aCx JSContext used for handling exception thrown by algorithm's
281 * steps, this could be a nullptr.
282 * aWasElementQueuePushed used for restoring status after leaving
283 * current recursion.
284 */
285 MOZ_CAN_RUN_SCRIPT
286 void LeaveCEReactions(JSContext* aCx, bool aWasElementQueuePushed) {
287 MOZ_ASSERT(mRecursionDepth)do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRecursionDepth)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRecursionDepth))), 0))) { do
{ } while (false); MOZ_ReportAssertionFailure("mRecursionDepth"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 287); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRecursionDepth"
")"); do { *((volatile int*)__null) = 287; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
288
289 if (mIsElementQueuePushedForCurrentRecursionDepth) {
290 Maybe<JS::AutoSaveExceptionState> ases;
291 if (aCx) {
292 ases.emplace(aCx);
293 }
294 PopAndInvokeElementQueue();
295 }
296 mRecursionDepth--;
297 // Restore the is-element-queue-pushed flag cached in AutoCEReaction when
298 // leaving the recursion level.
299 mIsElementQueuePushedForCurrentRecursionDepth = aWasElementQueuePushed;
300
301 MOZ_ASSERT_IF(!mRecursionDepth, mReactionsStack.IsEmpty())do { if (!mRecursionDepth) { do { static_assert( mozilla::detail
::AssertionConditionType<decltype(mReactionsStack.IsEmpty(
))>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(mReactionsStack.IsEmpty()))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("mReactionsStack.IsEmpty()", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 301); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mReactionsStack.IsEmpty()"
")"); do { *((volatile int*)__null) = 301; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); } } while (
false)
;
302 }
303
304 bool IsElementQueuePushedForCurrentRecursionDepth() {
305 MOZ_ASSERT_IF(mIsElementQueuePushedForCurrentRecursionDepth,do { if (mIsElementQueuePushedForCurrentRecursionDepth) { do {
static_assert( mozilla::detail::AssertionConditionType<decltype
(!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement
()->IsEmpty())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!mReactionsStack.IsEmpty() &&
!mReactionsStack.LastElement()->IsEmpty()))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement()->IsEmpty()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 307); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement()->IsEmpty()"
")"); do { *((volatile int*)__null) = 307; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); } } while (
false)
306 !mReactionsStack.IsEmpty() &&do { if (mIsElementQueuePushedForCurrentRecursionDepth) { do {
static_assert( mozilla::detail::AssertionConditionType<decltype
(!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement
()->IsEmpty())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!mReactionsStack.IsEmpty() &&
!mReactionsStack.LastElement()->IsEmpty()))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement()->IsEmpty()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 307); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement()->IsEmpty()"
")"); do { *((volatile int*)__null) = 307; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); } } while (
false)
307 !mReactionsStack.LastElement()->IsEmpty())do { if (mIsElementQueuePushedForCurrentRecursionDepth) { do {
static_assert( mozilla::detail::AssertionConditionType<decltype
(!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement
()->IsEmpty())>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(!mReactionsStack.IsEmpty() &&
!mReactionsStack.LastElement()->IsEmpty()))), 0))) { do {
} while (false); MOZ_ReportAssertionFailure("!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement()->IsEmpty()"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 307); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!mReactionsStack.IsEmpty() && !mReactionsStack.LastElement()->IsEmpty()"
")"); do { *((volatile int*)__null) = 307; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); } } while (
false)
;
308 return mIsElementQueuePushedForCurrentRecursionDepth;
309 }
310
311 private:
312 ~CustomElementReactionsStack() = default;
313 ;
314
315 /**
316 * Push a new element queue onto the custom element reactions stack.
317 */
318 void CreateAndPushElementQueue();
319
320 /**
321 * Pop the element queue from the custom element reactions stack, and invoke
322 * custom element reactions in that queue.
323 */
324 MOZ_CAN_RUN_SCRIPT void PopAndInvokeElementQueue();
325
326 // The choice of 8 for the auto size here is based on gut feeling.
327 AutoTArray<UniquePtr<ElementQueue>, 8> mReactionsStack;
328 ElementQueue mBackupQueue;
329 // https://html.spec.whatwg.org/#enqueue-an-element-on-the-appropriate-element-queue
330 bool mIsBackupQueueProcessing;
331
332 MOZ_CAN_RUN_SCRIPT void InvokeBackupQueue();
333
334 /**
335 * Invoke custom element reactions
336 * https://html.spec.whatwg.org/multipage/scripting.html#invoke-custom-element-reactions
337 */
338 MOZ_CAN_RUN_SCRIPT
339 void InvokeReactions(ElementQueue* aElementQueue, nsIGlobalObject* aGlobal);
340
341 void Enqueue(Element* aElement, CustomElementReaction* aReaction);
342
343 // Current [CEReactions] recursion depth.
344 uint32_t mRecursionDepth;
345 // True if the element queue is pushed into reaction stack for current
346 // recursion depth. This will be cached in AutoCEReaction when entering a new
347 // CEReaction recursion and restored after leaving the recursion.
348 bool mIsElementQueuePushedForCurrentRecursionDepth;
349
350 private:
351 class BackupQueueMicroTask final : public mozilla::MicroTaskRunnable {
352 public:
353 explicit BackupQueueMicroTask(CustomElementReactionsStack* aReactionStack)
354 : MicroTaskRunnable(), mReactionStack(aReactionStack) {
355 MOZ_ASSERT(!mReactionStack->mIsBackupQueueProcessing,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!mReactionStack->mIsBackupQueueProcessing)>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!mReactionStack->mIsBackupQueueProcessing))), 0))) { do
{ } while (false); MOZ_ReportAssertionFailure("!mReactionStack->mIsBackupQueueProcessing"
" (" "mIsBackupQueueProcessing should be initially false" ")"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 356); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!mReactionStack->mIsBackupQueueProcessing"
") (" "mIsBackupQueueProcessing should be initially false" ")"
); do { *((volatile int*)__null) = 356; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
356 "mIsBackupQueueProcessing should be initially false")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(!mReactionStack->mIsBackupQueueProcessing)>::isValid
, "invalid assertion condition"); if ((__builtin_expect(!!(!(
!!(!mReactionStack->mIsBackupQueueProcessing))), 0))) { do
{ } while (false); MOZ_ReportAssertionFailure("!mReactionStack->mIsBackupQueueProcessing"
" (" "mIsBackupQueueProcessing should be initially false" ")"
, "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 356); AnnotateMozCrashReason("MOZ_ASSERT" "(" "!mReactionStack->mIsBackupQueueProcessing"
") (" "mIsBackupQueueProcessing should be initially false" ")"
); do { *((volatile int*)__null) = 356; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
357 mReactionStack->mIsBackupQueueProcessing = true;
358 }
359
360 MOZ_CAN_RUN_SCRIPT virtual void Run(AutoSlowOperation& aAso) override {
361 mReactionStack->InvokeBackupQueue();
362 mReactionStack->mIsBackupQueueProcessing = false;
363 }
364
365 private:
366 const RefPtr<CustomElementReactionsStack> mReactionStack;
367 };
368};
369
370class CustomElementRegistry final : public nsISupports, public nsWrapperCache {
371 public:
372 NS_DECL_CYCLE_COLLECTING_ISUPPORTSpublic: virtual nsresult QueryInterface(const nsIID& aIID
, void** aInstancePtr) override; virtual MozExternalRefCountType
AddRef(void) override; virtual MozExternalRefCountType Release
(void) override; using HasThreadSafeRefCnt = std::false_type;
protected: nsCycleCollectingAutoRefCnt mRefCnt; nsAutoOwningThread
_mOwningThread; public: virtual void DeleteCycleCollectable(
void); public:
373 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(CustomElementRegistry)class cycleCollection : public nsXPCOMCycleCollectionParticipant
{ public: constexpr explicit cycleCollection(Flags aFlags = 0
) : nsXPCOMCycleCollectionParticipant(aFlags) {} private: public
: virtual nsresult TraverseNative(void* p, nsCycleCollectionTraversalCallback
& cb) override; virtual const char* ClassName() override {
return "CustomElementRegistry"; }; virtual void DeleteCycleCollectable
(void* p) override { DowncastCCParticipant<CustomElementRegistry
>(p)->DeleteCycleCollectable(); } static CustomElementRegistry
* Downcast(nsISupports* s) { return static_cast<CustomElementRegistry
*>(static_cast<CustomElementRegistry*>(s)); } static
nsISupports* Upcast(CustomElementRegistry* p) { return static_cast
<nsISupports*>(static_cast<CustomElementRegistry*>
(p)); } template <typename T> friend nsISupports* ToSupports
(T* p, cycleCollection* dummy); virtual void Unlink(void* p) override
; virtual void Trace(void* p, const TraceCallbacks& cb, void
* closure) override; static constexpr nsXPCOMCycleCollectionParticipant
* GetParticipant() { return &CustomElementRegistry::_cycleCollectorGlobal
; } }; virtual void CheckForRightParticipant() { nsXPCOMCycleCollectionParticipant
* p; CallQueryInterface(this, &p); do { static_assert( mozilla
::detail::AssertionConditionType<decltype(p == &_cycleCollectorGlobal
)>::isValid, "invalid assertion condition"); if ((__builtin_expect
(!!(!(!!(p == &_cycleCollectorGlobal))), 0))) { do { } while
(false); MOZ_ReportAssertionFailure("p == &_cycleCollectorGlobal"
" (" "CustomElementRegistry" " should QI to its own CC participant"
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/CustomElementRegistry.h"
, 373); AnnotateMozCrashReason("MOZ_ASSERT" "(" "p == &_cycleCollectorGlobal"
") (" "CustomElementRegistry" " should QI to its own CC participant"
")"); do { *((volatile int*)__null) = 373; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false); } static cycleCollection
_cycleCollectorGlobal; virtual void BaseCycleCollectable() final
{}
374
375 public:
376 explicit CustomElementRegistry(nsPIDOMWindowInner* aWindow);
377
378 private:
379 class RunCustomElementCreationCallback : public mozilla::Runnable {
380 public:
381 // MOZ_CAN_RUN_SCRIPT_BOUNDARY until Runnable::Run is MOZ_CAN_RUN_SCRIPT.
382 // See bug 1535398.
383 MOZ_CAN_RUN_SCRIPT_BOUNDARY
384 NS_DECL_NSIRUNNABLEvirtual nsresult Run(void) override;
385
386 explicit RunCustomElementCreationCallback(
387 CustomElementRegistry* aRegistry, nsAtom* aAtom,
388 CustomElementCreationCallback* aCallback)
389 : mozilla::Runnable(
390 "CustomElementRegistry::RunCustomElementCreationCallback"),
391 mRegistry(aRegistry),
392 mAtom(aAtom),
393 mCallback(aCallback) {}
394
395 private:
396 RefPtr<CustomElementRegistry> mRegistry;
397 RefPtr<nsAtom> mAtom;
398 RefPtr<CustomElementCreationCallback> mCallback;
399 };
400
401 public:
402 /**
403 * Looking up a custom element definition.
404 * https://html.spec.whatwg.org/#look-up-a-custom-element-definition
405 */
406 CustomElementDefinition* LookupCustomElementDefinition(nsAtom* aNameAtom,
407 int32_t aNameSpaceID,
408 nsAtom* aTypeAtom);
409
410 CustomElementDefinition* LookupCustomElementDefinition(
411 JSContext* aCx, JSObject* aConstructor) const;
412
413 static void EnqueueLifecycleCallback(ElementCallbackType aType,
414 Element* aCustomElement,
415 const LifecycleCallbackArgs& aArgs,
416 CustomElementDefinition* aDefinition);
417
418 /**
419 * Upgrade an element.
420 * https://html.spec.whatwg.org/multipage/scripting.html#upgrades
421 */
422 MOZ_CAN_RUN_SCRIPT
423 static void Upgrade(Element* aElement, CustomElementDefinition* aDefinition,
424 ErrorResult& aRv);
425
426 /**
427 * To allow native code to call methods of chrome-implemented custom elements,
428 * a helper method may be defined in the custom element called
429 * 'getCustomInterfaceCallback'. This method takes an IID and returns an
430 * object which implements an XPCOM interface.
431 *
432 * This returns null if aElement is not from a chrome document.
433 */
434 static already_AddRefed<nsISupports> CallGetCustomInterface(
435 Element* aElement, const nsIID& aIID);
436
437 /**
438 * Registers an unresolved custom element that is a candidate for
439 * upgrade. |aTypeName| is the name of the custom element type, if it is not
440 * provided, then element name is used. |aTypeName| should be provided
441 * when registering a custom element that extends an existing
442 * element. e.g. <button is="x-button">.
443 */
444 void RegisterUnresolvedElement(Element* aElement,
445 nsAtom* aTypeName = nullptr);
446
447 /**
448 * Unregister an unresolved custom element that is a candidate for
449 * upgrade when a custom element is removed from tree.
450 */
451 void UnregisterUnresolvedElement(Element* aElement,
452 nsAtom* aTypeName = nullptr);
453
454 /**
455 * Register an element to be upgraded when the custom element creation
456 * callback is executed.
457 *
458 * To be used when LookupCustomElementDefinition() didn't return a definition,
459 * but with the callback scheduled to be run.
460 */
461 inline void RegisterCallbackUpgradeElement(Element* aElement,
462 nsAtom* aTypeName = nullptr) {
463 if (mElementCreationCallbacksUpgradeCandidatesMap.IsEmpty()) {
464 return;
465 }
466
467 RefPtr<nsAtom> typeName = aTypeName;
468 if (!typeName) {
469 typeName = aElement->NodeInfo()->NameAtom();
470 }
471
472 nsTHashSet<RefPtr<nsIWeakReference>>* elements =
473 mElementCreationCallbacksUpgradeCandidatesMap.Get(typeName);
474
475 // If there isn't a table, there won't be a definition added by the
476 // callback.
477 if (!elements) {
478 return;
479 }
480
481 nsWeakPtr elem = do_GetWeakReference(aElement);
482 elements->Insert(elem);
483 }
484
485 void TraceDefinitions(JSTracer* aTrc);
486
487 private:
488 ~CustomElementRegistry();
489
490 bool JSObjectToAtomArray(JSContext* aCx, JS::Handle<JSObject*> aConstructor,
491 const nsString& aName,
492 nsTArray<RefPtr<nsAtom>>& aArray, ErrorResult& aRv);
493
494 void UpgradeCandidates(nsAtom* aKey, CustomElementDefinition* aDefinition,
495 ErrorResult& aRv);
496
497 using DefinitionMap =
498 nsRefPtrHashtable<nsAtomHashKey, CustomElementDefinition>;
499 using ElementCreationCallbackMap =
500 nsRefPtrHashtable<nsAtomHashKey, CustomElementCreationCallback>;
501 using CandidateMap =
502 nsClassHashtable<nsAtomHashKey, nsTHashSet<RefPtr<nsIWeakReference>>>;
503 using ConstructorMap =
504 JS::GCHashMap<JS::Heap<JSObject*>, RefPtr<nsAtom>,
505 js::StableCellHasher<JS::Heap<JSObject*>>,
506 js::SystemAllocPolicy>;
507
508 // Hashtable for custom element definitions in web components.
509 // Custom prototypes are stored in the compartment where definition was
510 // defined.
511 DefinitionMap mCustomDefinitions;
512
513 // Hashtable for chrome-only callbacks that is called *before* we return
514 // a CustomElementDefinition, when the typeAtom matches.
515 // The callbacks are registered with the setElementCreationCallback method.
516 ElementCreationCallbackMap mElementCreationCallbacks;
517
518 // Hashtable for looking up definitions by using constructor as key.
519 // Custom elements' name are stored here and we need to lookup
520 // mCustomDefinitions again to get definitions.
521 ConstructorMap mConstructors;
522
523 using WhenDefinedPromiseMap = nsRefPtrHashtable<nsAtomHashKey, Promise>;
524 WhenDefinedPromiseMap mWhenDefinedPromiseMap;
525
526 // The "upgrade candidates map" from the web components spec. Maps from a
527 // namespace id and local name to a list of elements to upgrade if that
528 // element is registered as a custom element.
529 CandidateMap mCandidatesMap;
530
531 // If an element creation callback is found, the nsTHashtable for the
532 // type is created here, and elements will later be upgraded.
533 CandidateMap mElementCreationCallbacksUpgradeCandidatesMap;
534
535 nsCOMPtr<nsPIDOMWindowInner> mWindow;
536
537 // It is used to prevent reentrant invocations of element definition.
538 bool mIsCustomDefinitionRunning;
539
540 private:
541 int32_t InferNamespace(JSContext* aCx, JS::Handle<JSObject*> constructor);
542
543 public:
544 nsISupports* GetParentObject() const;
545
546 DocGroup* GetDocGroup() const;
547
548 virtual JSObject* WrapObject(JSContext* aCx,
549 JS::Handle<JSObject*> aGivenProto) override;
550
551 void Define(JSContext* aCx, const nsAString& aName,
552 CustomElementConstructor& aFunctionConstructor,
553 const ElementDefinitionOptions& aOptions, ErrorResult& aRv);
554
555 void Get(const nsAString& name,
556 OwningCustomElementConstructorOrUndefined& aRetVal);
557
558 void GetName(JSContext* aCx, CustomElementConstructor& aConstructor,
559 nsAString& aResult);
560
561 already_AddRefed<Promise> WhenDefined(const nsAString& aName,
562 ErrorResult& aRv);
563
564 // Chrome-only method that give JS an opportunity to only load the custom
565 // element definition script when needed.
566 void SetElementCreationCallback(const nsAString& aName,
567 CustomElementCreationCallback& aCallback,
568 ErrorResult& aRv);
569
570 void Upgrade(nsINode& aRoot);
571};
572
573class MOZ_RAII AutoCEReaction final {
574 public:
575 // JSContext is allowed to be a nullptr if we are guaranteeing that we're
576 // not doing something that might throw but not finish reporting a JS
577 // exception during the lifetime of the AutoCEReaction.
578 AutoCEReaction(CustomElementReactionsStack* aReactionsStack, JSContext* aCx)
579 : mReactionsStack(aReactionsStack), mCx(aCx) {
580 mIsElementQueuePushedForPreviousRecursionDepth =
581 mReactionsStack->EnterCEReactions();
582 }
583
584 // MOZ_CAN_RUN_SCRIPT_BOUNDARY because this is called from Maybe<>.reset().
585 MOZ_CAN_RUN_SCRIPT_BOUNDARY ~AutoCEReaction() {
586 mReactionsStack->LeaveCEReactions(
25
Calling 'RefPtr::operator->'
587 mCx, mIsElementQueuePushedForPreviousRecursionDepth);
588 }
589
590 private:
591 const RefPtr<CustomElementReactionsStack> mReactionsStack;
592 JSContext* mCx;
593 bool mIsElementQueuePushedForPreviousRecursionDepth;
594};
595
596} // namespace dom
597} // namespace mozilla
598
599#endif // mozilla_dom_CustomElementRegistry_h

/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h

1/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3/* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7#ifndef mozilla_RefPtr_h
8#define mozilla_RefPtr_h
9
10#include "mozilla/AlreadyAddRefed.h"
11#include "mozilla/Assertions.h"
12#include "mozilla/Attributes.h"
13#include "mozilla/DbgMacro.h"
14
15#include <type_traits>
16
17/*****************************************************************************/
18
19// template <class T> class RefPtrGetterAddRefs;
20
21class nsQueryReferent;
22class nsCOMPtr_helper;
23class nsISupports;
24
25namespace mozilla {
26template <class T>
27class MovingNotNull;
28template <class T>
29class NotNull;
30template <class T>
31class OwningNonNull;
32template <class T>
33class StaticLocalRefPtr;
34template <class T>
35class StaticRefPtr;
36
37// Traditionally, RefPtr supports automatic refcounting of any pointer type
38// with AddRef() and Release() methods that follow the traditional semantics.
39//
40// This traits class can be specialized to operate on other pointer types. For
41// example, we specialize this trait for opaque FFI types that represent
42// refcounted objects in Rust.
43//
44// Given the use of ConstRemovingRefPtrTraits below, U should not be a const-
45// qualified type.
46template <class U>
47struct RefPtrTraits {
48 static void AddRef(U* aPtr) { aPtr->AddRef(); }
49 static void Release(U* aPtr) { aPtr->Release(); }
50};
51
52} // namespace mozilla
53
54template <class T>
55class MOZ_IS_REFPTR RefPtr {
56 private:
57 void assign_with_AddRef(T* aRawPtr) {
58 if (aRawPtr) {
59 ConstRemovingRefPtrTraits<T>::AddRef(aRawPtr);
60 }
61 assign_assuming_AddRef(aRawPtr);
62 }
63
64 void assign_assuming_AddRef(T* aNewPtr) {
65 T* oldPtr = mRawPtr;
66 mRawPtr = aNewPtr;
67 if (oldPtr) {
68 ConstRemovingRefPtrTraits<T>::Release(oldPtr);
69 }
70 }
71
72 private:
73 T* MOZ_OWNING_REF mRawPtr;
74
75 public:
76 typedef T element_type;
77
78 ~RefPtr() {
79 if (mRawPtr) {
80 ConstRemovingRefPtrTraits<T>::Release(mRawPtr);
81 }
82 }
83
84 // Constructors
85
86 RefPtr()
87 : mRawPtr(nullptr)
88 // default constructor
89 {}
90
91 RefPtr(const RefPtr<T>& aSmartPtr)
92 : mRawPtr(aSmartPtr.mRawPtr)
93 // copy-constructor
94 {
95 if (mRawPtr) {
96 ConstRemovingRefPtrTraits<T>::AddRef(mRawPtr);
97 }
98 }
99
100 RefPtr(RefPtr<T>&& aRefPtr) noexcept : mRawPtr(aRefPtr.mRawPtr) {
101 aRefPtr.mRawPtr = nullptr;
102 }
103
104 // construct from a raw pointer (of the right type)
105
106 MOZ_IMPLICIT RefPtr(T* aRawPtr) : mRawPtr(aRawPtr) {
107 if (mRawPtr) {
108 ConstRemovingRefPtrTraits<T>::AddRef(mRawPtr);
109 }
110 }
111
112 MOZ_IMPLICIT RefPtr(decltype(nullptr)) : mRawPtr(nullptr) {}
113
114 template <typename I,
115 typename = std::enable_if_t<std::is_convertible_v<I*, T*>>>
116 MOZ_IMPLICIT RefPtr(already_AddRefed<I>& aSmartPtr)
117 : mRawPtr(aSmartPtr.take())
118 // construct from |already_AddRefed|
119 {}
120
121 template <typename I,
122 typename = std::enable_if_t<std::is_convertible_v<I*, T*>>>
123 MOZ_IMPLICIT RefPtr(already_AddRefed<I>&& aSmartPtr)
124 : mRawPtr(aSmartPtr.take())
125 // construct from |otherRefPtr.forget()|
126 {}
127
128 template <typename I,
129 typename = std::enable_if_t<std::is_convertible_v<I*, T*>>>
130 MOZ_IMPLICIT RefPtr(const RefPtr<I>& aSmartPtr)
131 : mRawPtr(aSmartPtr.get())
132 // copy-construct from a smart pointer with a related pointer type
133 {
134 if (mRawPtr) {
135 ConstRemovingRefPtrTraits<T>::AddRef(mRawPtr);
136 }
137 }
138
139 template <typename I,
140 typename = std::enable_if_t<std::is_convertible_v<I*, T*>>>
141 MOZ_IMPLICIT RefPtr(RefPtr<I>&& aSmartPtr)
142 : mRawPtr(aSmartPtr.forget().take())
143 // construct from |Move(RefPtr<SomeSubclassOfT>)|.
144 {}
145
146 template <typename I,
147 typename = std::enable_if_t<!std::is_same_v<I, RefPtr<T>> &&
148 std::is_convertible_v<I, RefPtr<T>>>>
149 MOZ_IMPLICIT RefPtr(const mozilla::NotNull<I>& aSmartPtr)
150 : mRawPtr(RefPtr<T>(aSmartPtr.get()).forget().take())
151 // construct from |mozilla::NotNull|.
152 {}
153
154 template <typename I,
155 typename = std::enable_if_t<!std::is_same_v<I, RefPtr<T>> &&
156 std::is_convertible_v<I, RefPtr<T>>>>
157 MOZ_IMPLICIT RefPtr(mozilla::MovingNotNull<I>&& aSmartPtr)
158 : mRawPtr(RefPtr<T>(std::move(aSmartPtr).unwrapBasePtr()).forget().take())
159 // construct from |mozilla::MovingNotNull|.
160 {}
161
162 MOZ_IMPLICIT RefPtr(const nsQueryReferent& aHelper);
163 MOZ_IMPLICIT RefPtr(const nsCOMPtr_helper& aHelper);
164
165 // Defined in OwningNonNull.h
166 template <class U>
167 MOZ_IMPLICIT RefPtr(const mozilla::OwningNonNull<U>& aOther);
168
169 // Defined in StaticLocalPtr.h
170 template <class U>
171 MOZ_IMPLICIT RefPtr(const mozilla::StaticLocalRefPtr<U>& aOther);
172
173 // Defined in StaticPtr.h
174 template <class U>
175 MOZ_IMPLICIT RefPtr(const mozilla::StaticRefPtr<U>& aOther);
176
177 // Assignment operators
178
179 RefPtr<T>& operator=(decltype(nullptr)) {
180 assign_assuming_AddRef(nullptr);
181 return *this;
182 }
183
184 RefPtr<T>& operator=(const RefPtr<T>& aRhs)
185 // copy assignment operator
186 {
187 assign_with_AddRef(aRhs.mRawPtr);
188 return *this;
189 }
190
191 template <typename I>
192 RefPtr<T>& operator=(const RefPtr<I>& aRhs)
193 // assign from an RefPtr of a related pointer type
194 {
195 assign_with_AddRef(aRhs.get());
196 return *this;
197 }
198
199 RefPtr<T>& operator=(T* aRhs)
200 // assign from a raw pointer (of the right type)
201 {
202 assign_with_AddRef(aRhs);
203 return *this;
204 }
205
206 template <typename I>
207 RefPtr<T>& operator=(already_AddRefed<I>& aRhs)
208 // assign from |already_AddRefed|
209 {
210 assign_assuming_AddRef(aRhs.take());
211 return *this;
212 }
213
214 template <typename I>
215 RefPtr<T>& operator=(already_AddRefed<I>&& aRhs)
216 // assign from |otherRefPtr.forget()|
217 {
218 assign_assuming_AddRef(aRhs.take());
219 return *this;
220 }
221
222 RefPtr<T>& operator=(const nsQueryReferent& aQueryReferent);
223 RefPtr<T>& operator=(const nsCOMPtr_helper& aHelper);
224
225 template <typename I,
226 typename = std::enable_if_t<std::is_convertible_v<I*, T*>>>
227 RefPtr<T>& operator=(RefPtr<I>&& aRefPtr) noexcept {
228 assign_assuming_AddRef(aRefPtr.forget().take());
229 return *this;
230 }
231
232 template <typename I,
233 typename = std::enable_if_t<std::is_convertible_v<I, RefPtr<T>>>>
234 RefPtr<T>& operator=(const mozilla::NotNull<I>& aSmartPtr)
235 // assign from |mozilla::NotNull|.
236 {
237 assign_assuming_AddRef(RefPtr<T>(aSmartPtr.get()).forget().take());
238 return *this;
239 }
240
241 template <typename I,
242 typename = std::enable_if_t<std::is_convertible_v<I, RefPtr<T>>>>
243 RefPtr<T>& operator=(mozilla::MovingNotNull<I>&& aSmartPtr)
244 // assign from |mozilla::MovingNotNull|.
245 {
246 assign_assuming_AddRef(
247 RefPtr<T>(std::move(aSmartPtr).unwrapBasePtr()).forget().take());
248 return *this;
249 }
250
251 // Defined in OwningNonNull.h
252 template <class U>
253 RefPtr<T>& operator=(const mozilla::OwningNonNull<U>& aOther);
254
255 // Defined in StaticLocalPtr.h
256 template <class U>
257 RefPtr<T>& operator=(const mozilla::StaticLocalRefPtr<U>& aOther);
258
259 // Defined in StaticPtr.h
260 template <class U>
261 RefPtr<T>& operator=(const mozilla::StaticRefPtr<U>& aOther);
262
263 // Other pointer operators
264
265 void swap(RefPtr<T>& aRhs)
266 // ...exchange ownership with |aRhs|; can save a pair of refcount operations
267 {
268 T* temp = aRhs.mRawPtr;
269 aRhs.mRawPtr = mRawPtr;
270 mRawPtr = temp;
271 }
272
273 void swap(T*& aRhs)
274 // ...exchange ownership with |aRhs|; can save a pair of refcount operations
275 {
276 T* temp = aRhs;
277 aRhs = mRawPtr;
278 mRawPtr = temp;
279 }
280
281 already_AddRefed<T> MOZ_MAY_CALL_AFTER_MUST_RETURN forget()
282 // return the value of mRawPtr and null out mRawPtr. Useful for
283 // already_AddRefed return values.
284 {
285 T* temp = nullptr;
286 swap(temp);
287 return already_AddRefed<T>(temp);
288 }
289
290 template <typename I>
291 void forget(I** aRhs)
292 // Set the target of aRhs to the value of mRawPtr and null out mRawPtr.
293 // Useful to avoid unnecessary AddRef/Release pairs with "out"
294 // parameters where aRhs bay be a T** or an I** where I is a base class
295 // of T.
296 {
297 MOZ_ASSERT(aRhs, "Null pointer passed to forget!")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aRhs)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(aRhs))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("aRhs" " (" "Null pointer passed to forget!"
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 297); AnnotateMozCrashReason("MOZ_ASSERT" "(" "aRhs" ") (" "Null pointer passed to forget!"
")"); do { *((volatile int*)__null) = 297; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
298 *aRhs = mRawPtr;
299 mRawPtr = nullptr;
300 }
301
302 void forget(nsISupports** aRhs) {
303 MOZ_ASSERT(aRhs, "Null pointer passed to forget!")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(aRhs)>::isValid, "invalid assertion condition"); if
((__builtin_expect(!!(!(!!(aRhs))), 0))) { do { } while (false
); MOZ_ReportAssertionFailure("aRhs" " (" "Null pointer passed to forget!"
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 303); AnnotateMozCrashReason("MOZ_ASSERT" "(" "aRhs" ") (" "Null pointer passed to forget!"
")"); do { *((volatile int*)__null) = 303; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
304 *aRhs = ToSupports(mRawPtr);
305 mRawPtr = nullptr;
306 }
307
308 T* get() const
309 /*
310 Prefer the implicit conversion provided automatically by |operator T*()
311 const|. Use |get()| to resolve ambiguity or to get a castable pointer.
312 */
313 {
314 return const_cast<T*>(mRawPtr);
315 }
316
317 operator T*() const&
318 /*
319 ...makes an |RefPtr| act like its underlying raw pointer type whenever it
320 is used in a context where a raw pointer is expected. It is this operator
321 that makes an |RefPtr| substitutable for a raw pointer.
322
323 Prefer the implicit use of this operator to calling |get()|, except where
324 necessary to resolve ambiguity.
325 */
326 {
327 return get();
328 }
329
330 // Don't allow implicit conversion of temporary RefPtr to raw pointer,
331 // because the refcount might be one and the pointer will immediately become
332 // invalid.
333 operator T*() const&& = delete;
334
335 // These are needed to avoid the deleted operator above. XXX Why is operator!
336 // needed separately? Shouldn't the compiler prefer using the non-deleted
337 // operator bool instead of the deleted operator T*?
338 explicit operator bool() const { return !!mRawPtr; }
339 bool operator!() const { return !mRawPtr; }
340
341 T* operator->() const MOZ_NO_ADDREF_RELEASE_ON_RETURN {
342 MOZ_ASSERT(mRawPtr != nullptr,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRawPtr != nullptr)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRawPtr != nullptr))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("mRawPtr != nullptr"
" (" "You can't dereference a NULL RefPtr with operator->()."
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 343); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRawPtr != nullptr"
") (" "You can't dereference a NULL RefPtr with operator->()."
")"); do { *((volatile int*)__null) = 343; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
26
The left operand of '!=' is a garbage value
343 "You can't dereference a NULL RefPtr with operator->().")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRawPtr != nullptr)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRawPtr != nullptr))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("mRawPtr != nullptr"
" (" "You can't dereference a NULL RefPtr with operator->()."
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 343); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRawPtr != nullptr"
") (" "You can't dereference a NULL RefPtr with operator->()."
")"); do { *((volatile int*)__null) = 343; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
344 return get();
345 }
346
347 template <typename R, typename... Args>
348 class Proxy {
349 typedef R (T::*member_function)(Args...);
350 T* mRawPtr;
351 member_function mFunction;
352
353 public:
354 Proxy(T* aRawPtr, member_function aFunction)
355 : mRawPtr(aRawPtr), mFunction(aFunction) {}
356 template <typename... ActualArgs>
357 R operator()(ActualArgs&&... aArgs) {
358 return ((*mRawPtr).*mFunction)(std::forward<ActualArgs>(aArgs)...);
359 }
360 };
361
362 template <typename R, typename... Args>
363 Proxy<R, Args...> operator->*(R (T::*aFptr)(Args...)) const {
364 MOZ_ASSERT(mRawPtr != nullptr,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRawPtr != nullptr)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRawPtr != nullptr))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("mRawPtr != nullptr"
" (" "You can't dereference a NULL RefPtr with operator->*()."
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 365); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRawPtr != nullptr"
") (" "You can't dereference a NULL RefPtr with operator->*()."
")"); do { *((volatile int*)__null) = 365; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
365 "You can't dereference a NULL RefPtr with operator->*().")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRawPtr != nullptr)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRawPtr != nullptr))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("mRawPtr != nullptr"
" (" "You can't dereference a NULL RefPtr with operator->*()."
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 365); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRawPtr != nullptr"
") (" "You can't dereference a NULL RefPtr with operator->*()."
")"); do { *((volatile int*)__null) = 365; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
366 return Proxy<R, Args...>(get(), aFptr);
367 }
368
369 RefPtr<T>* get_address()
370 // This is not intended to be used by clients. See |address_of|
371 // below.
372 {
373 return this;
374 }
375
376 const RefPtr<T>* get_address() const
377 // This is not intended to be used by clients. See |address_of|
378 // below.
379 {
380 return this;
381 }
382
383 public:
384 T& operator*() const {
385 MOZ_ASSERT(mRawPtr != nullptr,do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRawPtr != nullptr)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRawPtr != nullptr))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("mRawPtr != nullptr"
" (" "You can't dereference a NULL RefPtr with operator*()."
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 386); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRawPtr != nullptr"
") (" "You can't dereference a NULL RefPtr with operator*()."
")"); do { *((volatile int*)__null) = 386; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
386 "You can't dereference a NULL RefPtr with operator*().")do { static_assert( mozilla::detail::AssertionConditionType<
decltype(mRawPtr != nullptr)>::isValid, "invalid assertion condition"
); if ((__builtin_expect(!!(!(!!(mRawPtr != nullptr))), 0))) {
do { } while (false); MOZ_ReportAssertionFailure("mRawPtr != nullptr"
" (" "You can't dereference a NULL RefPtr with operator*()."
")", "/var/lib/jenkins/workspace/firefox-scan-build/obj-x86_64-pc-linux-gnu/dist/include/mozilla/RefPtr.h"
, 386); AnnotateMozCrashReason("MOZ_ASSERT" "(" "mRawPtr != nullptr"
") (" "You can't dereference a NULL RefPtr with operator*()."
")"); do { *((volatile int*)__null) = 386; __attribute__((nomerge
)) ::abort(); } while (false); } } while (false)
;
387 return *get();
388 }
389
390 T** StartAssignment() {
391 assign_assuming_AddRef(nullptr);
392 return reinterpret_cast<T**>(&mRawPtr);
393 }
394
395 private:
396 // This helper class makes |RefPtr<const T>| possible by casting away
397 // the constness from the pointer when calling AddRef() and Release().
398 //
399 // This is necessary because AddRef() and Release() implementations can't
400 // generally expected to be const themselves (without heavy use of |mutable|
401 // and |const_cast| in their own implementations).
402 //
403 // This should be sound because while |RefPtr<const T>| provides a
404 // const view of an object, the object itself should not be const (it
405 // would have to be allocated as |new const T| or similar to be const).
406 template <class U>
407 struct ConstRemovingRefPtrTraits {
408 static void AddRef(U* aPtr) { mozilla::RefPtrTraits<U>::AddRef(aPtr); }
409 static void Release(U* aPtr) { mozilla::RefPtrTraits<U>::Release(aPtr); }
410 };
411 template <class U>
412 struct ConstRemovingRefPtrTraits<const U> {
413 static void AddRef(const U* aPtr) {
414 mozilla::RefPtrTraits<U>::AddRef(const_cast<U*>(aPtr));
415 }
416 static void Release(const U* aPtr) {
417 mozilla::RefPtrTraits<U>::Release(const_cast<U*>(aPtr));
418 }
419 };
420};
421
422class nsCycleCollectionTraversalCallback;
423template <typename T>
424void CycleCollectionNoteChild(nsCycleCollectionTraversalCallback& aCallback,
425 T* aChild, const char* aName, uint32_t aFlags);
426
427template <typename T>
428inline void ImplCycleCollectionUnlink(RefPtr<T>& aField) {
429 aField = nullptr;
430}
431
432template <typename T>
433inline void ImplCycleCollectionTraverse(
434 nsCycleCollectionTraversalCallback& aCallback, RefPtr<T>& aField,
435 const char* aName, uint32_t aFlags = 0) {
436 CycleCollectionNoteChild(aCallback, aField.get(), aName, aFlags);
437}
438
439template <class T>
440inline RefPtr<T>* address_of(RefPtr<T>& aPtr) {
441 return aPtr.get_address();
442}
443
444template <class T>
445inline const RefPtr<T>* address_of(const RefPtr<T>& aPtr) {
446 return aPtr.get_address();
447}
448
449template <class T>
450class RefPtrGetterAddRefs
451/*
452 ...
453
454 This class is designed to be used for anonymous temporary objects in the
455 argument list of calls that return COM interface pointers, e.g.,
456
457 RefPtr<IFoo> fooP;
458 ...->GetAddRefedPointer(getter_AddRefs(fooP))
459
460 DO NOT USE THIS TYPE DIRECTLY IN YOUR CODE. Use |getter_AddRefs()| instead.
461
462 When initialized with a |RefPtr|, as in the example above, it returns
463 a |void**|, a |T**|, or an |nsISupports**| as needed, that the
464 outer call (|GetAddRefedPointer| in this case) can fill in.
465
466 This type should be a nested class inside |RefPtr<T>|.
467*/
468{
469 public:
470 explicit RefPtrGetterAddRefs(RefPtr<T>& aSmartPtr)
471 : mTargetSmartPtr(aSmartPtr) {
472 // nothing else to do
473 }
474
475 operator void**() {
476 return reinterpret_cast<void**>(mTargetSmartPtr.StartAssignment());
477 }
478
479 operator T**() { return mTargetSmartPtr.StartAssignment(); }
480
481 T*& operator*() { return *(mTargetSmartPtr.StartAssignment()); }
482
483 private:
484 RefPtr<T>& mTargetSmartPtr;
485};
486
487template <class T>
488inline RefPtrGetterAddRefs<T> getter_AddRefs(RefPtr<T>& aSmartPtr)
489/*
490 Used around a |RefPtr| when
491 ...makes the class |RefPtrGetterAddRefs<T>| invisible.
492*/
493{
494 return RefPtrGetterAddRefs<T>(aSmartPtr);
495}
496
497// Comparing two |RefPtr|s
498
499template <class T, class U>
500inline bool operator==(const RefPtr<T>& aLhs, const RefPtr<U>& aRhs) {
501 return static_cast<const T*>(aLhs.get()) == static_cast<const U*>(aRhs.get());
502}
503
504template <class T, class U>
505inline bool operator!=(const RefPtr<T>& aLhs, const RefPtr<U>& aRhs) {
506 return static_cast<const T*>(aLhs.get()) != static_cast<const U*>(aRhs.get());
507}
508
509// Comparing an |RefPtr| to a raw pointer
510
511template <class T, class U>
512inline bool operator==(const RefPtr<T>& aLhs, const U* aRhs) {
513 return static_cast<const T*>(aLhs.get()) == static_cast<const U*>(aRhs);
514}
515
516template <class T, class U>
517inline bool operator==(const U* aLhs, const RefPtr<T>& aRhs) {
518 return static_cast<const U*>(aLhs) == static_cast<const T*>(aRhs.get());
519}
520
521template <class T, class U>
522inline bool operator!=(const RefPtr<T>& aLhs, const U* aRhs) {
523 return static_cast<const T*>(aLhs.get()) != static_cast<const U*>(aRhs);
524}
525
526template <class T, class U>
527inline bool operator!=(const U* aLhs, const RefPtr<T>& aRhs) {
528 return static_cast<const U*>(aLhs) != static_cast<const T*>(aRhs.get());
529}
530
531template <class T, class U>
532inline bool operator==(const RefPtr<T>& aLhs, U* aRhs) {
533 return static_cast<const T*>(aLhs.get()) == const_cast<const U*>(aRhs);
534}
535
536template <class T, class U>
537inline bool operator==(U* aLhs, const RefPtr<T>& aRhs) {
538 return const_cast<const U*>(aLhs) == static_cast<const T*>(aRhs.get());
539}
540
541template <class T, class U>
542inline bool operator!=(const RefPtr<T>& aLhs, U* aRhs) {
543 return static_cast<const T*>(aLhs.get()) != const_cast<const U*>(aRhs);
544}
545
546template <class T, class U>
547inline bool operator!=(U* aLhs, const RefPtr<T>& aRhs) {
548 return const_cast<const U*>(aLhs) != static_cast<const T*>(aRhs.get());
549}
550
551// Comparing an |RefPtr| to |nullptr|
552
553template <class T>
554inline bool operator==(const RefPtr<T>& aLhs, decltype(nullptr)) {
555 return aLhs.get() == nullptr;
556}
557
558template <class T>
559inline bool operator==(decltype(nullptr), const RefPtr<T>& aRhs) {
560 return nullptr == aRhs.get();
561}
562
563template <class T>
564inline bool operator!=(const RefPtr<T>& aLhs, decltype(nullptr)) {
565 return aLhs.get() != nullptr;
566}
567
568template <class T>
569inline bool operator!=(decltype(nullptr), const RefPtr<T>& aRhs) {
570 return nullptr != aRhs.get();
571}
572
573// MOZ_DBG support
574
575template <class T>
576std::ostream& operator<<(std::ostream& aOut, const RefPtr<T>& aObj) {
577 return mozilla::DebugValue(aOut, aObj.get());
578}
579
580/*****************************************************************************/
581
582template <class T>
583inline already_AddRefed<T> do_AddRef(T* aObj) {
584 RefPtr<T> ref(aObj);
585 return ref.forget();
586}
587
588template <class T>
589inline already_AddRefed<T> do_AddRef(const RefPtr<T>& aObj) {
590 RefPtr<T> ref(aObj);
591 return ref.forget();
592}
593
594namespace mozilla {
595
596template <typename T>
597class AlignmentFinder;
598
599// Provide a specialization of AlignmentFinder to allow MOZ_ALIGNOF(RefPtr<T>)
600// with an incomplete T.
601template <typename T>
602class AlignmentFinder<RefPtr<T>> {
603 public:
604 static const size_t alignment = alignof(T*);
605};
606
607/**
608 * Helper function to be able to conveniently write things like:
609 *
610 * already_AddRefed<T>
611 * f(...)
612 * {
613 * return MakeAndAddRef<T>(...);
614 * }
615 */
616template <typename T, typename... Args>
617already_AddRefed<T> MakeAndAddRef(Args&&... aArgs) {
618 RefPtr<T> p(new T(std::forward<Args>(aArgs)...));
619 return p.forget();
620}
621
622/**
623 * Helper function to be able to conveniently write things like:
624 *
625 * auto runnable =
626 * MakeRefPtr<ErrorCallbackRunnable<nsIDOMGetUserMediaSuccessCallback>>(
627 * mOnSuccess, mOnFailure, *error, mWindowID);
628 */
629template <typename T, typename... Args>
630RefPtr<T> MakeRefPtr(Args&&... aArgs) {
631 RefPtr<T> p(new T(std::forward<Args>(aArgs)...));
632 return p;
633}
634
635} // namespace mozilla
636
637/**
638 * Deduction guide to allow simple `RefPtr` definitions from an
639 * already_AddRefed<T> without repeating the type, e.g.:
640 *
641 * RefPtr ptr = MakeAndAddRef<SomeType>(...);
642 */
643template <typename T>
644RefPtr(already_AddRefed<T>) -> RefPtr<T>;
645
646#endif /* mozilla_RefPtr_h */