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 #include "base/synchronization/lock.h" 10 11 #if DCHECK_IS_ON() 12 13 namespace base { 14 Lock()15Lock::Lock() : lock_() { 16 } 17 ~Lock()18Lock::~Lock() { 19 DCHECK(owning_thread_ref_.is_null()); 20 } 21 AssertAcquired() const22void Lock::AssertAcquired() const { 23 DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); 24 } 25 CheckHeldAndUnmark()26void Lock::CheckHeldAndUnmark() { 27 DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); 28 owning_thread_ref_ = PlatformThreadRef(); 29 } 30 CheckUnheldAndMark()31void Lock::CheckUnheldAndMark() { 32 DCHECK(owning_thread_ref_.is_null()); 33 owning_thread_ref_ = PlatformThread::CurrentRef(); 34 } 35 36 } // namespace base 37 38 #endif // DCHECK_IS_ON() 39