| Index: third_party/WebKit/Source/platform/heap/ThreadingTraits.h
|
| diff --git a/third_party/WebKit/Source/platform/heap/ThreadingTraits.h b/third_party/WebKit/Source/platform/heap/ThreadingTraits.h
|
| index fef13ef6931856b060354f4f61ca2515afcb6d23..0831fd74ba4798c0832e80e82f9ab015e33387c1 100644
|
| --- a/third_party/WebKit/Source/platform/heap/ThreadingTraits.h
|
| +++ b/third_party/WebKit/Source/platform/heap/ThreadingTraits.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef ThreadingTraits_h
|
| #define ThreadingTraits_h
|
|
|
| +#include "wtf/Allocator.h"
|
| #include "wtf/Deque.h"
|
| #include "wtf/HashCountedSet.h"
|
| #include "wtf/HashMap.h"
|
| @@ -40,11 +41,13 @@ template<typename T,
|
|
|
| template<typename T>
|
| struct DefaultThreadingTrait<T, false> {
|
| + STATIC_ONLY(DefaultThreadingTrait);
|
| static const ThreadAffinity Affinity = AnyThread;
|
| };
|
|
|
| template<typename T>
|
| struct DefaultThreadingTrait<T, true> {
|
| + STATIC_ONLY(DefaultThreadingTrait);
|
| static const ThreadAffinity Affinity = MainThreadOnly;
|
| };
|
|
|
| @@ -56,6 +59,7 @@ template<typename T> class WeakMember;
|
|
|
| template<typename T>
|
| struct ThreadingTrait {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = DefaultThreadingTrait<T>::Affinity;
|
| };
|
|
|
| @@ -63,16 +67,19 @@ template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> {
|
|
|
| template<typename T>
|
| struct ThreadingTrait<Member<T>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename T>
|
| struct ThreadingTrait<WeakMember<T>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename Key, typename Value, typename T, typename U, typename V>
|
| struct ThreadingTrait<HashMap<Key, Value, T, U, V, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity =
|
| (ThreadingTrait<Key>::Affinity == MainThreadOnly)
|
| && (ThreadingTrait<Value>::Affinity == MainThreadOnly) ? MainThreadOnly : AnyThread;
|
| @@ -80,6 +87,7 @@ struct ThreadingTrait<HashMap<Key, Value, T, U, V, HeapAllocator>> {
|
|
|
| template<typename First, typename Second>
|
| struct ThreadingTrait<WTF::KeyValuePair<First, Second>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity =
|
| (ThreadingTrait<First>::Affinity == MainThreadOnly)
|
| && (ThreadingTrait<Second>::Affinity == MainThreadOnly) ? MainThreadOnly : AnyThread;
|
| @@ -87,31 +95,37 @@ struct ThreadingTrait<WTF::KeyValuePair<First, Second>> {
|
|
|
| template<typename T, typename U, typename V>
|
| struct ThreadingTrait<HashSet<T, U, V, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename T, size_t inlineCapacity>
|
| struct ThreadingTrait<Vector<T, inlineCapacity, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename T, typename Traits>
|
| struct ThreadingTrait<HeapVectorBacking<T, Traits>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename T, size_t inlineCapacity>
|
| struct ThreadingTrait<Deque<T, inlineCapacity, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename T, typename U, typename V>
|
| struct ThreadingTrait<HashCountedSet<T, U, V, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
|
| };
|
|
|
| template<typename Table>
|
| struct ThreadingTrait<HeapHashTableBacking<Table>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| using Key = typename Table::KeyType;
|
| using Value = typename Table::ValueType;
|
| static const ThreadAffinity Affinity =
|
| @@ -126,15 +140,25 @@ template<typename T, size_t inlineCapacity> class HeapDeque;
|
| template<typename T, typename U, typename V> class HeapHashCountedSet;
|
|
|
| template<typename T, typename U, typename V, typename W, typename X>
|
| -struct ThreadingTrait<HeapHashMap<T, U, V, W, X>> : public ThreadingTrait<HashMap<T, U, V, W, X, HeapAllocator>> { };
|
| +struct ThreadingTrait<HeapHashMap<T, U, V, W, X>> : public ThreadingTrait<HashMap<T, U, V, W, X, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| +};
|
| template<typename T, typename U, typename V>
|
| -struct ThreadingTrait<HeapHashSet<T, U, V>> : public ThreadingTrait<HashSet<T, U, V, HeapAllocator>> { };
|
| +struct ThreadingTrait<HeapHashSet<T, U, V>> : public ThreadingTrait<HashSet<T, U, V, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| +};
|
| template<typename T, size_t inlineCapacity>
|
| -struct ThreadingTrait<HeapVector<T, inlineCapacity>> : public ThreadingTrait<Vector<T, inlineCapacity, HeapAllocator>> { };
|
| +struct ThreadingTrait<HeapVector<T, inlineCapacity>> : public ThreadingTrait<Vector<T, inlineCapacity, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| +};
|
| template<typename T, size_t inlineCapacity>
|
| -struct ThreadingTrait<HeapDeque<T, inlineCapacity>> : public ThreadingTrait<Deque<T, inlineCapacity, HeapAllocator>> { };
|
| +struct ThreadingTrait<HeapDeque<T, inlineCapacity>> : public ThreadingTrait<Deque<T, inlineCapacity, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| +};
|
| template<typename T, typename U, typename V>
|
| -struct ThreadingTrait<HeapHashCountedSet<T, U, V>> : public ThreadingTrait<HashCountedSet<T, U, V, HeapAllocator>> { };
|
| +struct ThreadingTrait<HeapHashCountedSet<T, U, V>> : public ThreadingTrait<HashCountedSet<T, U, V, HeapAllocator>> {
|
| + STATIC_ONLY(ThreadingTrait);
|
| +};
|
|
|
| } // namespace blink
|
|
|
|
|