1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker // This file is used for debugging assertion support. The Lock class 6*6777b538SAndroid Build Coastguard Worker // is functionally a wrapper around the LockImpl class, so the only 7*6777b538SAndroid Build Coastguard Worker // real intelligence in the class is in the debugging logic. 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker #include "base/synchronization/lock.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker #if DCHECK_IS_ON() 12*6777b538SAndroid Build Coastguard Worker #include "base/threading/platform_thread.h" 13*6777b538SAndroid Build Coastguard Worker #endif 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker #if DCHECK_IS_ON() 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker namespace base { 18*6777b538SAndroid Build Coastguard Worker Lock()19*6777b538SAndroid Build Coastguard WorkerLock::Lock() : lock_() { 20*6777b538SAndroid Build Coastguard Worker } 21*6777b538SAndroid Build Coastguard Worker ~Lock()22*6777b538SAndroid Build Coastguard WorkerLock::~Lock() { 23*6777b538SAndroid Build Coastguard Worker DCHECK(owning_thread_ref_.is_null()); 24*6777b538SAndroid Build Coastguard Worker } 25*6777b538SAndroid Build Coastguard Worker AssertAcquired() const26*6777b538SAndroid Build Coastguard Workervoid Lock::AssertAcquired() const { 27*6777b538SAndroid Build Coastguard Worker DCHECK_EQ(owning_thread_ref_, PlatformThread::CurrentRef()); 28*6777b538SAndroid Build Coastguard Worker } 29*6777b538SAndroid Build Coastguard Worker AssertNotHeld() const30*6777b538SAndroid Build Coastguard Workervoid Lock::AssertNotHeld() const { 31*6777b538SAndroid Build Coastguard Worker DCHECK(owning_thread_ref_.is_null()); 32*6777b538SAndroid Build Coastguard Worker } 33*6777b538SAndroid Build Coastguard Worker CheckHeldAndUnmark()34*6777b538SAndroid Build Coastguard Workervoid Lock::CheckHeldAndUnmark() { 35*6777b538SAndroid Build Coastguard Worker DCHECK_EQ(owning_thread_ref_, PlatformThread::CurrentRef()); 36*6777b538SAndroid Build Coastguard Worker owning_thread_ref_ = PlatformThreadRef(); 37*6777b538SAndroid Build Coastguard Worker } 38*6777b538SAndroid Build Coastguard Worker CheckUnheldAndMark()39*6777b538SAndroid Build Coastguard Workervoid Lock::CheckUnheldAndMark() { 40*6777b538SAndroid Build Coastguard Worker DCHECK(owning_thread_ref_.is_null()); 41*6777b538SAndroid Build Coastguard Worker owning_thread_ref_ = PlatformThread::CurrentRef(); 42*6777b538SAndroid Build Coastguard Worker } 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker } // namespace base 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker #endif // DCHECK_IS_ON() 47