| Index: base/lock_impl.h
|
| ===================================================================
|
| --- base/lock_impl.h (revision 11968)
|
| +++ base/lock_impl.h (working copy)
|
| @@ -14,6 +14,7 @@
|
| #endif
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/platform_thread.h"
|
|
|
| // This class implements the underlying platform-specific spin-lock mechanism
|
| // used for the Lock class. Most users should not use LockImpl directly, but
|
| @@ -40,10 +41,23 @@
|
| // a successful call to Try, or a call to Lock.
|
| void Unlock();
|
|
|
| - // Return the native underlying lock.
|
| + // 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() {}
|
| +#else
|
| + void AssertAcquired();
|
| +#endif
|
| +
|
| + // Return the native underlying lock. Not supported for Windows builds.
|
| // TODO(awalker): refactor lock and condition variables so that this is
|
| // unnecessary.
|
| +#if !defined(OS_WIN)
|
| OSLockType* os_lock() { return &os_lock_; }
|
| +#endif
|
|
|
| private:
|
| OSLockType os_lock_;
|
| @@ -51,6 +65,7 @@
|
| #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
|
| @@ -58,21 +73,5 @@
|
| DISALLOW_COPY_AND_ASSIGN(LockImpl);
|
| };
|
|
|
| -class AutoLockImpl {
|
| - public:
|
| - AutoLockImpl(LockImpl* lock_impl)
|
| - : lock_impl_(lock_impl) {
|
| - lock_impl_->Lock();
|
| - }
|
|
|
| - ~AutoLockImpl() {
|
| - lock_impl_->Unlock();
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_EVIL_CONSTRUCTORS(AutoLockImpl);
|
| -
|
| - LockImpl* lock_impl_;
|
| -};
|
| -
|
| #endif // BASE_LOCK_IMPL_H_
|
|
|