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 14 namespace base { 15 Lock()16Lock::Lock() : lock_() { 17 } 18 ~Lock()19Lock::~Lock() { 20 DCHECK(owning_thread_ref_.is_null()); 21 } 22 AssertAcquired() const23void Lock::AssertAcquired() const { 24 DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); 25 } 26 CheckHeldAndUnmark()27void Lock::CheckHeldAndUnmark() { 28 DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); 29 owning_thread_ref_ = PlatformThreadRef(); 30 } 31 CheckUnheldAndMark()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