| Index: third_party/WebKit/Source/wtf/RefCounted.h
|
| diff --git a/third_party/WebKit/Source/wtf/RefCounted.h b/third_party/WebKit/Source/wtf/RefCounted.h
|
| index a2820eaa4d421d41296fb052975af7e46b1fc2b6..18654e4c85fae795ba8bf19175077d0a369748af 100644
|
| --- a/third_party/WebKit/Source/wtf/RefCounted.h
|
| +++ b/third_party/WebKit/Source/wtf/RefCounted.h
|
| @@ -1,171 +1,9 @@
|
| -/*
|
| - * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
|
| - *
|
| - * This library is free software; you can redistribute it and/or
|
| - * modify it under the terms of the GNU Library General Public
|
| - * License as published by the Free Software Foundation; either
|
| - * version 2 of the License, or (at your option) any later version.
|
| - *
|
| - * This library is distributed in the hope that it will be useful,
|
| - * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| - * Library General Public License for more details.
|
| - *
|
| - * You should have received a copy of the GNU Library General Public License
|
| - * along with this library; see the file COPYING.LIB. If not, write to
|
| - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
| - * Boston, MA 02110-1301, USA.
|
| - *
|
| - */
|
| +// Copyright 2017 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.
|
|
|
| -#ifndef RefCounted_h
|
| -#define RefCounted_h
|
| +#include "platform/wtf/RefCounted.h"
|
|
|
| -#include "wtf/Allocator.h"
|
| -#include "wtf/Assertions.h"
|
| -#include "wtf/Noncopyable.h"
|
| -#include "wtf/WTFExport.h"
|
| -
|
| -#if ENABLE(INSTANCE_COUNTER)
|
| -#include "wtf/InstanceCounter.h"
|
| -#endif
|
| -
|
| -#if DCHECK_IS_ON()
|
| -#define CHECK_REF_COUNTED_LIFECYCLE 1
|
| -#include "wtf/ThreadRestrictionVerifier.h"
|
| -#else
|
| -#define CHECK_REF_COUNTED_LIFECYCLE 0
|
| -#endif
|
| -
|
| -namespace WTF {
|
| -
|
| -// This base class holds the non-template methods and attributes.
|
| -// The RefCounted class inherits from it reducing the template bloat
|
| -// generated by the compiler (technique called template hoisting).
|
| -class WTF_EXPORT RefCountedBase {
|
| - public:
|
| - void ref() const {
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - SECURITY_DCHECK(m_verifier.onRef(m_refCount));
|
| - DCHECK(!m_adoptionIsRequired);
|
| -#endif
|
| - SECURITY_DCHECK(!m_deletionHasBegun);
|
| - ++m_refCount;
|
| - }
|
| -
|
| - bool hasOneRef() const {
|
| - SECURITY_DCHECK(!m_deletionHasBegun);
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - SECURITY_DCHECK(m_verifier.isSafeToUse());
|
| -#endif
|
| - return m_refCount == 1;
|
| - }
|
| -
|
| - int refCount() const {
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - SECURITY_DCHECK(m_verifier.isSafeToUse());
|
| -#endif
|
| - return m_refCount;
|
| - }
|
| -
|
| - protected:
|
| - RefCountedBase()
|
| - : m_refCount(1)
|
| -#if ENABLE(SECURITY_ASSERT)
|
| - ,
|
| - m_deletionHasBegun(false)
|
| -#endif
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - ,
|
| - m_adoptionIsRequired(true)
|
| -#endif
|
| - {
|
| - }
|
| -
|
| - ~RefCountedBase() {
|
| - SECURITY_DCHECK(m_deletionHasBegun);
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - DCHECK(!m_adoptionIsRequired);
|
| -#endif
|
| - }
|
| -
|
| - // Returns whether the pointer should be freed or not.
|
| - bool derefBase() const {
|
| - SECURITY_DCHECK(!m_deletionHasBegun);
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - SECURITY_DCHECK(m_verifier.onDeref(m_refCount));
|
| - DCHECK(!m_adoptionIsRequired);
|
| -#endif
|
| -
|
| - DCHECK_GT(m_refCount, 0);
|
| - --m_refCount;
|
| - if (!m_refCount) {
|
| -#if ENABLE(SECURITY_ASSERT)
|
| - m_deletionHasBegun = true;
|
| -#endif
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| - }
|
| -
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - bool deletionHasBegun() const { return m_deletionHasBegun; }
|
| -#endif
|
| -
|
| - private:
|
| -#if CHECK_REF_COUNTED_LIFECYCLE || ENABLE(SECURITY_ASSERT)
|
| - friend void adopted(RefCountedBase*);
|
| -#endif
|
| -
|
| - mutable int m_refCount;
|
| -#if ENABLE(SECURITY_ASSERT)
|
| - mutable bool m_deletionHasBegun;
|
| -#endif
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - mutable bool m_adoptionIsRequired;
|
| - mutable ThreadRestrictionVerifier m_verifier;
|
| -#endif
|
| -};
|
| -
|
| -#if CHECK_REF_COUNTED_LIFECYCLE || ENABLE(SECURITY_ASSERT)
|
| -inline void adopted(RefCountedBase* object) {
|
| - if (!object)
|
| - return;
|
| - SECURITY_DCHECK(!object->m_deletionHasBegun);
|
| -#if CHECK_REF_COUNTED_LIFECYCLE
|
| - object->m_adoptionIsRequired = false;
|
| -#endif
|
| -}
|
| -#endif
|
| -
|
| -template <typename T>
|
| -class RefCounted : public RefCountedBase {
|
| - WTF_MAKE_NONCOPYABLE(RefCounted);
|
| -
|
| - // Put |T| in here instead of |RefCounted| so the heap profiler reports |T|
|
| - // instead of |RefCounted<T>|. This does not affect overloading of operator
|
| - // new.
|
| - USING_FAST_MALLOC(T);
|
| -
|
| - public:
|
| - void deref() const {
|
| - if (derefBase())
|
| - delete static_cast<const T*>(this);
|
| - }
|
| -
|
| - protected:
|
| -#if ENABLE(INSTANCE_COUNTER)
|
| - RefCounted() { incrementInstanceCount<T>(static_cast<T*>(this)); }
|
| -
|
| - ~RefCounted() { decrementInstanceCount<T>(static_cast<T*>(this)); }
|
| -#else
|
| - RefCounted() {}
|
| -#endif
|
| -};
|
| -
|
| -} // namespace WTF
|
| -
|
| -using WTF::RefCounted;
|
| -
|
| -#endif // RefCounted_h
|
| +// The contents of this header was moved to platform/wtf as part of
|
| +// WTF migration project. See the following post for details:
|
| +// https://groups.google.com/a/chromium.org/d/msg/blink-dev/tLdAZCTlcAA/bYXVT8gYCAAJ
|
|
|