mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1356103 - Part 1: Add WeakPtrTraits to allow SupportsWeakPtr classes to opt in to more permissive thread ownership assertions. r=bholley
MozReview-Commit-ID: 62pJc2N8aIo --HG-- extra : rebase_source : b1fed73b2c03d1cc1261a674a44fe578c2fe7d99
This commit is contained in:
parent
8c7f357d42
commit
a5624c6f9d
@ -112,8 +112,11 @@
|
||||
_empty = !p; \
|
||||
} while (false)
|
||||
#define MOZ_WEAKPTR_ASSERT_THREAD_SAFETY() \
|
||||
MOZ_DIAGNOSTIC_ASSERT(_empty || _owningThread == std::this_thread::get_id(), \
|
||||
"WeakPtr used on multiple threads")
|
||||
do { \
|
||||
if (!(_empty || _owningThread == std::this_thread::get_id())) { \
|
||||
WeakPtrTraits<T>::AssertSafeToAccessFromNonOwningThread(); \
|
||||
} \
|
||||
} while (false)
|
||||
#define MOZ_WEAKPTR_ASSERT_THREAD_SAFETY_DELEGATED(that) \
|
||||
(that)->AssertThreadSafety();
|
||||
|
||||
@ -140,6 +143,15 @@ template <typename T> class SupportsWeakPtr;
|
||||
#define MOZ_DECLARE_WEAKREFERENCE_TYPENAME(T)
|
||||
#endif
|
||||
|
||||
template<class T>
|
||||
struct WeakPtrTraits
|
||||
{
|
||||
static void AssertSafeToAccessFromNonOwningThread()
|
||||
{
|
||||
MOZ_DIAGNOSTIC_ASSERT(false, "WeakPtr accessed from multiple threads");
|
||||
}
|
||||
};
|
||||
|
||||
namespace detail {
|
||||
|
||||
// This can live beyond the lifetime of the class derived from
|
||||
|
Loading…
Reference in New Issue
Block a user