diff options
Diffstat (limited to 'base/lock.cc')
-rw-r--r-- | base/lock.cc | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/base/lock.cc b/base/lock.cc index 9ff963b..c73a458 100644 --- a/base/lock.cc +++ b/base/lock.cc @@ -1,7 +1,37 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Lock class. +// This file is used for debugging assertion support. The Lock class +// is functionally a wrapper around the LockImpl class, so the only +// real intelligence in the class is in the debugging logic. -// Depricated file. See lock_impl_*.cc for platform specific versions. +#if !defined(NDEBUG) + +#include "base/lock.h" +#include "base/logging.h" + +Lock::Lock() : lock_() { + owned_by_thread_ = false; + owning_thread_id_ = static_cast<PlatformThreadId>(0); +} + +void Lock::AssertAcquired() const { + DCHECK(owned_by_thread_); + DCHECK_EQ(owning_thread_id_, PlatformThread::CurrentId()); +} + +void Lock::CheckHeldAndUnmark() { + DCHECK(owned_by_thread_); + DCHECK_EQ(owning_thread_id_, PlatformThread::CurrentId()); + owned_by_thread_ = false; + owning_thread_id_ = static_cast<PlatformThreadId>(0); +} + +void Lock::CheckUnheldAndMark() { + DCHECK(!owned_by_thread_); + owned_by_thread_ = true; + owning_thread_id_ = PlatformThread::CurrentId(); +} + +#endif // NDEBUG |