Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3410)

Unified Diff: Source/platform/CrossThreadCopier.h

Issue 267323004: Oilpan: Move ThreadableWebSocketChannelClientWrapper to Oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/platform/CrossThreadCopier.h
diff --git a/Source/platform/CrossThreadCopier.h b/Source/platform/CrossThreadCopier.h
index 7c0e48c4fb73243adf4adda8645dee495d0ac9ab..5860309cfdb16b1359235d82e9ee675ac816cf00 100644
--- a/Source/platform/CrossThreadCopier.h
+++ b/Source/platform/CrossThreadCopier.h
@@ -32,6 +32,7 @@
#define CrossThreadCopier_h
#include "platform/PlatformExport.h"
+#include "platform/heap/Handle.h"
#include "wtf/Assertions.h"
#include "wtf/Forward.h"
#include "wtf/PassOwnPtr.h"
@@ -61,28 +62,28 @@ namespace WebCore {
}
};
- template<bool isConvertibleToInteger, bool isThreadSafeRefCounted, typename T> struct CrossThreadCopierBase;
+ template<bool isConvertibleToInteger, bool isThreadSafeRefCounted, bool isGarbageCollected, typename T> struct CrossThreadCopierBase;
// Integers get passed through without any changes.
- template<typename T> struct CrossThreadCopierBase<true, false, T> : public CrossThreadCopierPassThrough<T> {
+ template<typename T> struct CrossThreadCopierBase<true, false, false, T> : public CrossThreadCopierPassThrough<T> {
};
// To allow a type to be passed across threads using its copy constructor, add a forward declaration of the type and
// a CopyThreadCopierBase<false, false, TypeName> : public CrossThreadCopierPassThrough<TypeName> { }; to this file.
- template<> struct CrossThreadCopierBase<false, false, ThreadableLoaderOptions> : public CrossThreadCopierPassThrough<ThreadableLoaderOptions> {
+ template<> struct CrossThreadCopierBase<false, false, false, ThreadableLoaderOptions> : public CrossThreadCopierPassThrough<ThreadableLoaderOptions> {
};
- template<> struct CrossThreadCopierBase<false, false, ResourceLoaderOptions> : public CrossThreadCopierPassThrough<ResourceLoaderOptions> {
+ template<> struct CrossThreadCopierBase<false, false, false, ResourceLoaderOptions> : public CrossThreadCopierPassThrough<ResourceLoaderOptions> {
};
- template<> struct CrossThreadCopierBase<false, false, IntRect> : public CrossThreadCopierPassThrough<IntRect> {
+ template<> struct CrossThreadCopierBase<false, false, false, IntRect> : public CrossThreadCopierPassThrough<IntRect> {
};
- template<> struct CrossThreadCopierBase<false, false, IntSize> : public CrossThreadCopierPassThrough<IntSize> {
+ template<> struct CrossThreadCopierBase<false, false, false, IntSize> : public CrossThreadCopierPassThrough<IntSize> {
};
// Custom copy methods.
- template<typename T> struct CrossThreadCopierBase<false, true, T> {
+ template<typename T> struct CrossThreadCopierBase<false, true, false, T> {
typedef typename WTF::RemoveTemplate<T, RefPtr>::Type TypeWithoutRefPtr;
typedef typename WTF::RemoveTemplate<TypeWithoutRefPtr, PassRefPtr>::Type TypeWithoutPassRefPtr;
typedef typename WTF::RemovePointer<TypeWithoutPassRefPtr>::Type RefCountedType;
@@ -100,7 +101,7 @@ namespace WebCore {
}
};
- template<typename T> struct CrossThreadCopierBase<false, false, PassOwnPtr<T> > {
+ template<typename T> struct CrossThreadCopierBase<false, false, false, PassOwnPtr<T> > {
typedef PassOwnPtr<T> Type;
static Type copy(Type ownPtr)
{
@@ -108,36 +109,46 @@ namespace WebCore {
}
};
- template<> struct CrossThreadCopierBase<false, false, KURL> {
+ template<> struct CrossThreadCopierBase<false, false, false, KURL> {
typedef KURL Type;
PLATFORM_EXPORT static Type copy(const KURL&);
};
- template<> struct CrossThreadCopierBase<false, false, String> {
+ template<> struct CrossThreadCopierBase<false, false, false, String> {
typedef String Type;
PLATFORM_EXPORT static Type copy(const String&);
};
- template<> struct CrossThreadCopierBase<false, false, ResourceError> {
+ template<> struct CrossThreadCopierBase<false, false, false, ResourceError> {
typedef ResourceError Type;
PLATFORM_EXPORT static Type copy(const ResourceError&);
};
- template<> struct CrossThreadCopierBase<false, false, ResourceRequest> {
+ template<> struct CrossThreadCopierBase<false, false, false, ResourceRequest> {
typedef PassOwnPtr<CrossThreadResourceRequestData> Type;
PLATFORM_EXPORT static Type copy(const ResourceRequest&);
};
- template<> struct CrossThreadCopierBase<false, false, ResourceResponse> {
+ template<> struct CrossThreadCopierBase<false, false, false, ResourceResponse> {
typedef PassOwnPtr<CrossThreadResourceResponseData> Type;
PLATFORM_EXPORT static Type copy(const ResourceResponse&);
};
+ template<typename T> struct CrossThreadCopierBase<false, false, true, T> {
+ typedef typename WTF::RemovePointer<T>::Type TypeWithoutPointer;
+ typedef PassRefPtrWillBeRawPtr<TypeWithoutPointer> Type;
+ static Type copy(const T& ptr)
+ {
+ return ptr;
+ }
+ };
+
template<typename T> struct CrossThreadCopier : public CrossThreadCopierBase<WTF::IsConvertibleToInteger<T>::value,
- WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, RefPtr>::Type, ThreadSafeRefCounted>::value
- || WTF::IsSubclassOfTemplate<typename WTF::RemovePointer<T>::Type, ThreadSafeRefCounted>::value
- || WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, PassRefPtr>::Type, ThreadSafeRefCounted>::value,
- T> {
+ WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, RefPtr>::Type, ThreadSafeRefCounted>::value
+ || WTF::IsSubclassOfTemplate<typename WTF::RemovePointer<T>::Type, ThreadSafeRefCounted>::value
+ || WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, PassRefPtr>::Type, ThreadSafeRefCounted>::value,
+ WTF::IsSubclassOfTemplate<typename WTF::RemovePointer<T>::Type, GarbageCollected>::value,
+ T> {
};
template<typename T> struct AllowCrossThreadAccessWrapper {
@@ -148,7 +159,7 @@ namespace WebCore {
T* m_value;
};
- template<typename T> struct CrossThreadCopierBase<false, false, AllowCrossThreadAccessWrapper<T> > {
+ template<typename T> struct CrossThreadCopierBase<false, false, false, AllowCrossThreadAccessWrapper<T> > {
typedef T* Type;
static Type copy(const AllowCrossThreadAccessWrapper<T>& wrapper) { return wrapper.value(); }
};
@@ -168,7 +179,7 @@ namespace WebCore {
T* m_value;
};
- template<typename T> struct CrossThreadCopierBase<false, false, AllowAccessLaterWrapper<T> > {
+ template<typename T> struct CrossThreadCopierBase<false, false, false, AllowAccessLaterWrapper<T> > {
typedef T* Type;
static Type copy(const AllowAccessLaterWrapper<T>& wrapper) { return wrapper.value(); }
};
« no previous file with comments | « Source/modules/websockets/WorkerThreadableWebSocketChannel.cpp ('k') | Source/platform/CrossThreadCopier.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698