Chromium Code Reviews| Index: Source/platform/heap/Handle.h |
| diff --git a/Source/platform/heap/Handle.h b/Source/platform/heap/Handle.h |
| index 8c7cedd603ea3dcde1be702b72970e729aef0f12..06416e3181efda39fcabc7eef6e08e8ceb0b803a 100644 |
| --- a/Source/platform/heap/Handle.h |
| +++ b/Source/platform/heap/Handle.h |
| @@ -701,6 +701,7 @@ template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, |
| #define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCollected |
| #define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected |
| #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
| +#define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WebCore::ThreadSafeRefCountedGarbageCollected |
| #define RefPtrWillBePersistent WebCore::Persistent |
| #define RefPtrWillBeRawPtr WTF::RawPtr |
| #define RefPtrWillBeMember WebCore::Member |
| @@ -713,6 +714,7 @@ template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, |
| #define PassOwnPtrWillBeRawPtr WTF::RawPtr |
| #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected |
| #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
| +#define NoBaseWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCollected |
| #define WillBeHeapHashMap WebCore::HeapHashMap |
| #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
| #define WillBeHeapHashSet WebCore::HeapHashSet |
| @@ -742,6 +744,13 @@ template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo |
| return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); |
| } |
| +template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCountedGarbageCollected(T* ptr) |
| +{ |
| + static const bool isThreadSafeRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<T, ThreadSafeRefCountedGarbageCollected>::value; |
| + COMPILE_ASSERT(isThreadSafeRefCountedGarbageCollected, useAdoptRefWillBeNoop); |
| + return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); |
| +} |
| + |
| template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) |
| { |
| static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate<T, RefCountedGarbageCollected>::value; |
| @@ -756,6 +765,9 @@ template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) |
| #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
| #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
| +#define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ |
| + static Persistent<type> name = arguments; |
|
haraken
2014/04/08 06:02:08
Can we use DEFINE_STATIC_LOCAL instead of using 's
keishi
2014/04/21 17:10:11
Done.
|
| + |
| #else // !ENABLE(OILPAN) |
| template<typename T> |
| @@ -771,6 +783,7 @@ public: |
| #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted |
| #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted |
| #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCounted |
| +#define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WTF::ThreadSafeRefCounted |
| #define RefPtrWillBePersistent WTF::RefPtr |
| #define RefPtrWillBeRawPtr WTF::RefPtr |
| #define RefPtrWillBeMember WTF::RefPtr |
| @@ -783,6 +796,7 @@ public: |
| #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr |
| #define NoBaseWillBeGarbageCollected WebCore::DummyBase |
| #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase |
| +#define NoBaseWillBeRefCountedGarbageCollected WebCore::DummyBase |
| #define WillBeHeapHashMap WTF::HashMap |
| #define WillBePersistentHeapHashMap WTF::HashMap |
| #define WillBeHeapHashSet WTF::HashSet |
| @@ -798,6 +812,7 @@ public: |
| template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { return adoptRef(ptr); } |
| template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCollected(T* ptr) { return adoptRef(ptr); } |
| +template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCountedGarbageCollected(T* ptr) { return adoptRef(ptr); } |
| template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { return adoptPtr(ptr); } |
| #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED WTF_MAKE_FAST_ALLOCATED |
| @@ -813,6 +828,9 @@ template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu |
| #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
| type::~type() { } |
| +#define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ |
| + static type* name = PassRefPtr<type>(arguments).leakRef(); |
|
haraken
2014/04/08 06:02:08
Ditto.
keishi
2014/04/21 17:10:11
Done.
|
| + |
| #endif // ENABLE(OILPAN) |
| } // namespace WebCore |