1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// This file is used for debugging assertion support. The Lock class 6// is functionally a wrapper around the LockImpl class, so the only 7// real intelligence in the class is in the debugging logic. 8 9#if !defined(NDEBUG) 10 11#include "base/synchronization/lock.h" 12#include "base/logging.h" 13 14namespace base { 15 16Lock::Lock() : lock_() { 17} 18 19Lock::~Lock() { 20 DCHECK(owning_thread_ref_.is_null()); 21} 22 23void Lock::AssertAcquired() const { 24 DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); 25} 26 27void Lock::CheckHeldAndUnmark() { 28 DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); 29 owning_thread_ref_ = PlatformThreadRef(); 30} 31 32void Lock::CheckUnheldAndMark() { 33 DCHECK(owning_thread_ref_.is_null()); 34 owning_thread_ref_ = PlatformThread::CurrentRef(); 35} 36 37} // namespace base 38 39#endif // NDEBUG 40