/work/obj-fuzz/dist/include/mozilla/dom/SpiderMonkeyInterface.h
Line | Count | Source (jump to first uncovered line) |
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 file, |
5 | | * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #ifndef mozilla_dom_SpiderMonkeyInterface_h |
8 | | #define mozilla_dom_SpiderMonkeyInterface_h |
9 | | |
10 | | #include "jsapi.h" |
11 | | #include "jsfriendapi.h" |
12 | | #include "js/TracingAPI.h" |
13 | | |
14 | | namespace mozilla { |
15 | | namespace dom { |
16 | | |
17 | | /* |
18 | | * Class that just handles the JSObject storage and tracing for spidermonkey |
19 | | * interfaces |
20 | | */ |
21 | | struct SpiderMonkeyInterfaceObjectStorage |
22 | | { |
23 | | protected: |
24 | | JSObject* mImplObj; |
25 | | JSObject* mWrappedObj; |
26 | | |
27 | | SpiderMonkeyInterfaceObjectStorage() |
28 | | : mImplObj(nullptr), |
29 | | mWrappedObj(nullptr) |
30 | 0 | { |
31 | 0 | } |
32 | | |
33 | | SpiderMonkeyInterfaceObjectStorage(SpiderMonkeyInterfaceObjectStorage&& aOther) |
34 | | : mImplObj(aOther.mImplObj), |
35 | | mWrappedObj(aOther.mWrappedObj) |
36 | 0 | { |
37 | 0 | aOther.mImplObj = nullptr; |
38 | 0 | aOther.mWrappedObj = nullptr; |
39 | 0 | } |
40 | | |
41 | | public: |
42 | | inline void TraceSelf(JSTracer* trc) |
43 | 0 | { |
44 | 0 | JS::UnsafeTraceRoot(trc, &mImplObj, "SpiderMonkeyInterfaceObjectStorage.mImplObj"); |
45 | 0 | JS::UnsafeTraceRoot(trc, &mWrappedObj, "SpiderMonkeyInterfaceObjectStorage.mWrappedObj"); |
46 | 0 | } |
47 | | |
48 | | inline bool inited() const |
49 | 0 | { |
50 | 0 | return !!mImplObj; |
51 | 0 | } |
52 | | |
53 | | inline bool WrapIntoNewCompartment(JSContext* cx) |
54 | 0 | { |
55 | 0 | return JS_WrapObject(cx, |
56 | 0 | JS::MutableHandle<JSObject*>::fromMarkedLocation(&mWrappedObj)); |
57 | 0 | } |
58 | | |
59 | | inline JSObject *Obj() const |
60 | 0 | { |
61 | 0 | MOZ_ASSERT(inited()); |
62 | 0 | return mWrappedObj; |
63 | 0 | } |
64 | | |
65 | | private: |
66 | | SpiderMonkeyInterfaceObjectStorage(const SpiderMonkeyInterfaceObjectStorage&) = delete; |
67 | | }; |
68 | | |
69 | | // A class for rooting an existing SpiderMonkey Interface struct |
70 | | template<typename InterfaceType> |
71 | | class MOZ_RAII SpiderMonkeyInterfaceRooter : private JS::CustomAutoRooter |
72 | | { |
73 | | public: |
74 | | template <typename CX> |
75 | | SpiderMonkeyInterfaceRooter(const CX& cx, |
76 | | InterfaceType* aInterface MOZ_GUARD_OBJECT_NOTIFIER_PARAM) |
77 | | : JS::CustomAutoRooter(cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT), |
78 | | mInterface(aInterface) |
79 | 0 | { |
80 | 0 | } Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ReadableStream>::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::ReadableStream*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JS::RootingContext*>(JS::RootingContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))>*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<mozilla::AutoSafeJSContext>(mozilla::AutoSafeJSContext const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))>*) |
81 | | |
82 | | virtual void trace(JSTracer* trc) override |
83 | 0 | { |
84 | 0 | mInterface->TraceSelf(trc); |
85 | 0 | } Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ReadableStream>::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))> >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::trace(JSTracer*) |
86 | | |
87 | | private: |
88 | | SpiderMonkeyInterfaceObjectStorage* const mInterface; |
89 | | }; |
90 | | |
91 | | // And a specialization for dealing with nullable SpiderMonkey interfaces |
92 | | template<typename Inner> struct Nullable; |
93 | | template<typename InterfaceType> |
94 | | class MOZ_RAII SpiderMonkeyInterfaceRooter<Nullable<InterfaceType>> : |
95 | | private JS::CustomAutoRooter |
96 | | { |
97 | | public: |
98 | | template <typename CX> |
99 | | SpiderMonkeyInterfaceRooter(const CX& cx, |
100 | | Nullable<InterfaceType>* aInterface MOZ_GUARD_OBJECT_NOTIFIER_PARAM) |
101 | | : JS::CustomAutoRooter(cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT), |
102 | | mInterface(aInterface) |
103 | 0 | { |
104 | 0 | } Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> > >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> > >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> > >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >*) |
105 | | |
106 | | virtual void trace(JSTracer* trc) override |
107 | 0 | { |
108 | 0 | if (!mInterface->IsNull()) { |
109 | 0 | mInterface->Value().TraceSelf(trc); |
110 | 0 | } |
111 | 0 | } Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> > >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> > >::trace(JSTracer*) Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> > >::trace(JSTracer*) |
112 | | |
113 | | private: |
114 | | Nullable<InterfaceType>* const mInterface; |
115 | | }; |
116 | | |
117 | | // Class for easily setting up a rooted SpiderMonkey interface object on the |
118 | | // stack |
119 | | template<typename InterfaceType> |
120 | | class MOZ_RAII RootedSpiderMonkeyInterface final : public InterfaceType, |
121 | | private SpiderMonkeyInterfaceRooter<InterfaceType> |
122 | | { |
123 | | public: |
124 | | template <typename CX> |
125 | | explicit RootedSpiderMonkeyInterface(const CX& cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM) |
126 | | : InterfaceType(), |
127 | | SpiderMonkeyInterfaceRooter<InterfaceType>(cx, this |
128 | | MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT) |
129 | 0 | { |
130 | 0 | } Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::ReadableStream>::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> > >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> > >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> > >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JS::RootingContext*>(JS::RootingContext* const&) Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<mozilla::AutoSafeJSContext>(mozilla::AutoSafeJSContext const&) |
131 | | |
132 | | template <typename CX> |
133 | | RootedSpiderMonkeyInterface(const CX& cx, JSObject* obj MOZ_GUARD_OBJECT_NOTIFIER_PARAM) |
134 | | : InterfaceType(obj), |
135 | | SpiderMonkeyInterfaceRooter<InterfaceType>(cx, this |
136 | | MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT) |
137 | | { |
138 | | } |
139 | | }; |
140 | | |
141 | | } // namespace dom |
142 | | } // namespace mozilla |
143 | | |
144 | | #endif /* mozilla_dom_SpiderMonkeyInterface_h */ |