Bug 1188208 - Fix more constructors in js; r=jorendorff

This commit is contained in:
Ehsan Akhgari 2015-07-27 21:15:34 -04:00
parent 81154a1440
commit a056599e07
3 changed files with 15 additions and 15 deletions

View File

@ -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;

View File

@ -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>

View File

@ -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()) {}