summaryrefslogtreecommitdiffstats
path: root/base/lock_impl_win.cc
diff options
context:
space:
mode:
authorrdsmith@google.com <rdsmith@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-13 12:26:18 +0000
committerrdsmith@google.com <rdsmith@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-13 12:26:18 +0000
commit1dd0f46d242ac273cd7ff138b9311384c60c1464 (patch)
tree86de4b54982a98e66f318371a8f1050fa60d21c2 /base/lock_impl_win.cc
parenteb9f3008211eb1869c2caba23d21738f2c525a54 (diff)
downloadchromium_src-1dd0f46d242ac273cd7ff138b9311384c60c1464.zip
chromium_src-1dd0f46d242ac273cd7ff138b9311384c60c1464.tar.gz
chromium_src-1dd0f46d242ac273cd7ff138b9311384c60c1464.tar.bz2
Initial implementation of new AssertAcquired() functionality for Posix.
Hoisted the windows LockImpl funcitonality up into Lock and added material to ConditionVariable to adjust those shadow variables when needed. Also got rid of os_lock() primitive in Lock class by piggybacking on friend decl needed for accessing shadow variables. BUG=44091 TEST=Try bot run on Windows, Linux, Mac. Will land during low traffic time and revert on any problems or perf degradation. Review URL: http://codereview.chromium.org/2196001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49648 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/lock_impl_win.cc')
-rw-r--r--base/lock_impl_win.cc41
1 files changed, 0 insertions, 41 deletions
diff --git a/base/lock_impl_win.cc b/base/lock_impl_win.cc
index 0d1ac93..14b76f8 100644
--- a/base/lock_impl_win.cc
+++ b/base/lock_impl_win.cc
@@ -5,16 +5,7 @@
#include "base/lock_impl.h"
#include "base/logging.h"
-// NOTE: Although windows critical sections support recursive locks, we do not
-// allow this, and we will commonly fire a DCHECK() if a thread attempts to
-// acquire the lock a second time (while already holding it).
-
LockImpl::LockImpl() {
-#ifndef NDEBUG
- recursion_count_shadow_ = 0;
- recursion_used_ = false;
- owning_thread_id_ = 0;
-#endif // NDEBUG
// The second parameter is the spin count, for short-held locks it avoid the
// contending thread from going to sleep which helps performance greatly.
::InitializeCriticalSectionAndSpinCount(&os_lock_, 2000);
@@ -26,16 +17,6 @@ LockImpl::~LockImpl() {
bool LockImpl::Try() {
if (::TryEnterCriticalSection(&os_lock_) != FALSE) {
-#ifndef NDEBUG
- // ONLY access data after locking.
- owning_thread_id_ = PlatformThread::CurrentId();
- DCHECK_NE(owning_thread_id_, 0u);
- recursion_count_shadow_++;
- if (2 == recursion_count_shadow_ && !recursion_used_) {
- recursion_used_ = true;
- DCHECK(false); // Catch accidental redundant lock acquisition.
- }
-#endif
return true;
}
return false;
@@ -43,31 +24,9 @@ bool LockImpl::Try() {
void LockImpl::Lock() {
::EnterCriticalSection(&os_lock_);
-#ifndef NDEBUG
- // ONLY access data after locking.
- owning_thread_id_ = PlatformThread::CurrentId();
- DCHECK_NE(owning_thread_id_, 0u);
- recursion_count_shadow_++;
- if (2 == recursion_count_shadow_ && !recursion_used_) {
- recursion_used_ = true;
- DCHECK(false); // Catch accidental redundant lock acquisition.
- }
-#endif // NDEBUG
}
void LockImpl::Unlock() {
-#ifndef NDEBUG
- --recursion_count_shadow_; // ONLY access while lock is still held.
- DCHECK(0 <= recursion_count_shadow_);
- owning_thread_id_ = 0;
-#endif // NDEBUG
::LeaveCriticalSection(&os_lock_);
}
-// In non-debug builds, this method is declared as an empty inline method.
-#ifndef NDEBUG
-void LockImpl::AssertAcquired() const {
- DCHECK(recursion_count_shadow_ > 0);
- DCHECK_EQ(owning_thread_id_, PlatformThread::CurrentId());
-}
-#endif