// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This file is used for debugging assertion support. The Lock class // is functionally a wrapper around the LockImpl class, so the only // real intelligence in the class is in the debugging logic. #include "base/synchronization/lock.h" #if DCHECK_IS_ON() namespace base { Lock::Lock() : lock_() { } Lock::~Lock() { DCHECK(owning_thread_ref_.is_null()); } void Lock::AssertAcquired() const { DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); } void Lock::CheckHeldAndUnmark() { DCHECK(owning_thread_ref_ == PlatformThread::CurrentRef()); owning_thread_ref_ = PlatformThreadRef(); } void Lock::CheckUnheldAndMark() { DCHECK(owning_thread_ref_.is_null()); owning_thread_ref_ = PlatformThread::CurrentRef(); } } // namespace base #endif // DCHECK_IS_ON()