|  | // 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. | 
|  |  | 
|  | #include "base/memory/ref_counted.h" | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | namespace subtle { | 
|  |  | 
|  | bool RefCountedThreadSafeBase::HasOneRef() const { | 
|  | return ref_count_.IsOne(); | 
|  | } | 
|  |  | 
|  | #if defined(ARCH_CPU_64_BIT) | 
|  | void RefCountedBase::AddRefImpl() const { | 
|  | // Check if |ref_count_| overflow only on 64 bit archs since the number of | 
|  | // objects may exceed 2^32. | 
|  | // To avoid the binary size bloat, use non-inline function here. | 
|  | CHECK(++ref_count_ > 0); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #if !defined(ARCH_CPU_X86_FAMILY) | 
|  | bool RefCountedThreadSafeBase::Release() const { | 
|  | return ReleaseImpl(); | 
|  | } | 
|  | void RefCountedThreadSafeBase::AddRef() const { | 
|  | AddRefImpl(); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | }  // namespace subtle | 
|  |  | 
|  | }  // namespace base |