• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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