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