mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 12:25:53 +00:00
Bug 1188208 - Fix more constructors in js; r=jorendorff
This commit is contained in:
parent
81154a1440
commit
a056599e07
@ -384,8 +384,8 @@ class MOZ_NONHEAP_CLASS Handle : public js::HandleBase<T>
|
||||
public:
|
||||
/* Creates a handle from a handle of a type convertible to T. */
|
||||
template <typename S>
|
||||
Handle(Handle<S> handle,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0)
|
||||
MOZ_IMPLICIT Handle(Handle<S> handle,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0)
|
||||
{
|
||||
static_assert(sizeof(Handle<T>) == sizeof(T*),
|
||||
"Handle must be binary compatible with T*.");
|
||||
@ -428,19 +428,19 @@ class MOZ_NONHEAP_CLASS Handle : public js::HandleBase<T>
|
||||
*/
|
||||
template <typename S>
|
||||
inline
|
||||
Handle(const Rooted<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
MOZ_IMPLICIT Handle(const Rooted<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
|
||||
template <typename S>
|
||||
inline
|
||||
Handle(const PersistentRooted<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
MOZ_IMPLICIT Handle(const PersistentRooted<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
|
||||
/* Construct a read only handle from a mutable handle. */
|
||||
template <typename S>
|
||||
inline
|
||||
Handle(MutableHandle<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
MOZ_IMPLICIT Handle(MutableHandle<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
|
||||
DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
@ -792,16 +792,16 @@ class FakeRooted : public RootedBase<T>
|
||||
{
|
||||
public:
|
||||
template <typename CX>
|
||||
FakeRooted(CX* cx
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
explicit FakeRooted(CX* cx
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: ptr(GCMethods<T>::initial())
|
||||
{
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_INIT;
|
||||
}
|
||||
|
||||
template <typename CX>
|
||||
FakeRooted(CX* cx, T initial
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
explicit FakeRooted(CX* cx, T initial
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: ptr(initial)
|
||||
{
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_INIT;
|
||||
|
@ -306,7 +306,7 @@ class Node {
|
||||
Node() { construct<void>(nullptr); }
|
||||
|
||||
template<typename T>
|
||||
Node(T* ptr) {
|
||||
MOZ_IMPLICIT Node(T* ptr) {
|
||||
construct(ptr);
|
||||
}
|
||||
template<typename T>
|
||||
@ -317,7 +317,7 @@ class Node {
|
||||
|
||||
// We can construct and assign from rooted forms of pointers.
|
||||
template<typename T>
|
||||
Node(const Rooted<T*>& root) {
|
||||
MOZ_IMPLICIT Node(const Rooted<T*>& root) {
|
||||
construct(root.get());
|
||||
}
|
||||
template<typename T>
|
||||
|
@ -525,7 +525,7 @@ class HandleValueArray
|
||||
: length_(values.length()), elements_(values.begin()) {}
|
||||
|
||||
template <size_t N>
|
||||
HandleValueArray(const AutoValueArray<N>& values) : length_(N), elements_(values.begin()) {}
|
||||
MOZ_IMPLICIT HandleValueArray(const AutoValueArray<N>& values) : length_(N), elements_(values.begin()) {}
|
||||
|
||||
/* CallArgs must already be rooted somewhere up the stack. */
|
||||
MOZ_IMPLICIT HandleValueArray(const JS::CallArgs& args) : length_(args.length()), elements_(args.array()) {}
|
||||
|
Loading…
Reference in New Issue
Block a user