Index: Source/platform/heap/Handle.h |
diff --git a/Source/platform/heap/Handle.h b/Source/platform/heap/Handle.h |
index 2653f6393a88fcc34d435b14b7a442cbe7ea6853..32117cc3ac41cb9c431aad8878b0b478299f5b49 100644 |
--- a/Source/platform/heap/Handle.h |
+++ b/Source/platform/heap/Handle.h |
@@ -783,6 +783,7 @@ template<typename T, typename U> inline bool operator!=(const PassRefPtr<T>& a, |
#define RefCountedWillBeGarbageCollected WebCore::GarbageCollected |
#define RefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
#define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCollected |
+#define RefCountedGarbageCollectedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
#define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected |
#define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
#define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WebCore::ThreadSafeRefCountedGarbageCollected |
@@ -867,6 +868,15 @@ template<typename T> T* adoptPtrWillBeRefCountedGarbageCollected(T* ptr) |
return adoptRefCountedGarbageCollected(ptr); |
} |
+template<typename T> T* adoptRefCountedGarbageCollectedWillBeNoop(T* ptr) |
+{ |
+ static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate<typename WTF::RemoveConst<T>::Type, RefCountedGarbageCollected>::value; |
+ static const bool notRefCounted = !WTF::IsSubclassOfTemplate<typename WTF::RemoveConst<T>::Type, RefCounted>::value; |
+ COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCountedGarbageCollected); |
+ COMPILE_ASSERT(notRefCounted, youMustAdopt); |
+ return ptr; |
+} |
+ |
#define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED // do nothing when oilpan is enabled. |
#define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
#define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
@@ -888,6 +898,7 @@ public: |
#define RefCountedWillBeGarbageCollected WTF::RefCounted |
#define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted |
#define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted |
+#define RefCountedGarbageCollectedWillBeGarbageCollectedFinalized WebCore::RefCountedGarbageCollected |
#define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted |
#define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCounted |
#define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WTF::ThreadSafeRefCounted |
@@ -939,6 +950,14 @@ template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte |
template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { return adoptPtr(ptr); } |
template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeRefCountedGarbageCollected(T* ptr) { return adoptPtr(ptr); } |
+template<typename T> T* adoptRefCountedGarbageCollectedWillBeNoop(T* ptr) |
+{ |
+ static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<typename WTF::RemoveConst<T>::Type, RefCountedGarbageCollected>::value; |
+ COMPILE_ASSERT(isRefCountedGarbageCollected, useAdoptRefWillBeNoop); |
+ return adoptRefCountedGarbageCollected(ptr); |
+} |
+ |
+ |
#define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED WTF_MAKE_FAST_ALLOCATED |
#define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
public: \ |