diff options
Diffstat (limited to 'base/lock_impl.h')
-rw-r--r-- | base/lock_impl.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/base/lock_impl.h b/base/lock_impl.h index 5e323a6..2d4a921 100644 --- a/base/lock_impl.h +++ b/base/lock_impl.h @@ -41,6 +41,17 @@ class LockImpl { // a successful call to Try, or a call to Lock. void Unlock(); + // Debug-only method that will DCHECK() if the lock is not acquired by the + // current thread. In non-debug builds, no check is performed. + // Because linux and mac condition variables modify the underlyning lock + // through the os_lock() method, runtime assertions can not be done on those + // builds. +#if defined(NDEBUG) || !defined(OS_WIN) + void AssertAcquired() const {} +#else + void AssertAcquired() const; +#endif + // Return the native underlying lock. Not supported for Windows builds. // TODO(awalker): refactor lock and condition variables so that this is // unnecessary. @@ -51,6 +62,14 @@ class LockImpl { private: OSLockType os_lock_; +#if !defined(NDEBUG) && defined(OS_WIN) + // All private data is implicitly protected by lock_. + // Be VERY careful to only access members under that lock. + PlatformThreadId owning_thread_id_; + int32 recursion_count_shadow_; + bool recursion_used_; // Allow debugging to continued after a DCHECK(). +#endif // NDEBUG + DISALLOW_COPY_AND_ASSIGN(LockImpl); }; |