// 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"

#include "base/threading/thread_collision_warner.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
