Index: third_party/WebKit/Source/platform/heap/HeapAllocator.h |
diff --git a/third_party/WebKit/Source/platform/heap/HeapAllocator.h b/third_party/WebKit/Source/platform/heap/HeapAllocator.h |
index aaeef621abcbb11ea6d807ee1a2c768a9656302c..c5bf93760a821ef77cf19528bfcdca261c01b98e 100644 |
--- a/third_party/WebKit/Source/platform/heap/HeapAllocator.h |
+++ b/third_party/WebKit/Source/platform/heap/HeapAllocator.h |
@@ -7,6 +7,7 @@ |
#include "platform/heap/Heap.h" |
#include "platform/heap/TraceTraits.h" |
+#include "wtf/Allocator.h" |
#include "wtf/Assertions.h" |
#include "wtf/Atomics.h" |
#include "wtf/Deque.h" |
@@ -24,6 +25,7 @@ namespace blink { |
// This is a static-only class used as a trait on collections to make them heap |
// allocated. However see also HeapListHashSetAllocator. |
class PLATFORM_EXPORT HeapAllocator { |
+ STATIC_ONLY(HeapAllocator); |
public: |
using Visitor = blink::Visitor; |
static const bool isGarbageCollected = true; |
@@ -200,11 +202,13 @@ static void traceListHashSetValue(VisitorDispatcher visitor, Value& value) |
// objects are instantiated. |
template<typename ValueArg, size_t inlineCapacity> |
class HeapListHashSetAllocator : public HeapAllocator { |
+ DISALLOW_NEW(); |
public: |
using TableAllocator = HeapAllocator; |
using Node = WTF::ListHashSetNode<ValueArg, HeapListHashSetAllocator>; |
class AllocatorProvider { |
+ DISALLOW_NEW(); |
public: |
// For the heap allocation we don't need an actual allocator object, so |
// we just return null. |
@@ -240,6 +244,7 @@ public: |
}; |
template<typename T, typename Traits = WTF::VectorTraits<T>> class HeapVectorBacking { |
+ DISALLOW_NEW(); |
public: |
static void finalize(void* pointer); |
void finalizeGarbageCollectedObject() { finalize(this); } |
@@ -277,6 +282,7 @@ void HeapVectorBacking<T, Traits>::finalize(void* pointer) |
} |
template<typename Table> class HeapHashTableBacking { |
+ DISALLOW_NEW(); |
public: |
static void finalize(void* pointer); |
void finalizeGarbageCollectedObject() { finalize(this); } |
@@ -396,6 +402,7 @@ public: |
namespace WTF { |
template <typename T> struct VectorTraits<blink::Member<T>> : VectorTraitsBase<blink::Member<T>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = false; |
static const bool canInitializeWithMemset = true; |
static const bool canClearUnusedSlotsWithMemset = true; |
@@ -403,6 +410,7 @@ template <typename T> struct VectorTraits<blink::Member<T>> : VectorTraitsBase<b |
}; |
template <typename T> struct VectorTraits<blink::WeakMember<T>> : VectorTraitsBase<blink::WeakMember<T>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = false; |
static const bool canInitializeWithMemset = true; |
static const bool canClearUnusedSlotsWithMemset = true; |
@@ -410,6 +418,7 @@ template <typename T> struct VectorTraits<blink::WeakMember<T>> : VectorTraitsBa |
}; |
template <typename T> struct VectorTraits<blink::UntracedMember<T>> : VectorTraitsBase<blink::UntracedMember<T>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = false; |
static const bool canInitializeWithMemset = true; |
static const bool canClearUnusedSlotsWithMemset = true; |
@@ -417,6 +426,7 @@ template <typename T> struct VectorTraits<blink::UntracedMember<T>> : VectorTrai |
}; |
template <typename T> struct VectorTraits<blink::HeapVector<T, 0>> : VectorTraitsBase<blink::HeapVector<T, 0>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = false; |
static const bool canInitializeWithMemset = true; |
static const bool canClearUnusedSlotsWithMemset = true; |
@@ -424,6 +434,7 @@ template <typename T> struct VectorTraits<blink::HeapVector<T, 0>> : VectorTrait |
}; |
template <typename T> struct VectorTraits<blink::HeapDeque<T, 0>> : VectorTraitsBase<blink::HeapDeque<T, 0>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = false; |
static const bool canInitializeWithMemset = true; |
static const bool canClearUnusedSlotsWithMemset = true; |
@@ -431,6 +442,7 @@ template <typename T> struct VectorTraits<blink::HeapDeque<T, 0>> : VectorTraits |
}; |
template <typename T, size_t inlineCapacity> struct VectorTraits<blink::HeapVector<T, inlineCapacity>> : VectorTraitsBase<blink::HeapVector<T, inlineCapacity>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = VectorTraits<T>::needsDestruction; |
static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWithMemset; |
static const bool canClearUnusedSlotsWithMemset = VectorTraits<T>::canClearUnusedSlotsWithMemset; |
@@ -438,6 +450,7 @@ template <typename T, size_t inlineCapacity> struct VectorTraits<blink::HeapVect |
}; |
template <typename T, size_t inlineCapacity> struct VectorTraits<blink::HeapDeque<T, inlineCapacity>> : VectorTraitsBase<blink::HeapDeque<T, inlineCapacity>> { |
+ STATIC_ONLY(VectorTraits); |
static const bool needsDestruction = VectorTraits<T>::needsDestruction; |
static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWithMemset; |
static const bool canClearUnusedSlotsWithMemset = VectorTraits<T>::canClearUnusedSlotsWithMemset; |
@@ -445,6 +458,7 @@ template <typename T, size_t inlineCapacity> struct VectorTraits<blink::HeapDequ |
}; |
template<typename T> struct HashTraits<blink::Member<T>> : SimpleClassHashTraits<blink::Member<T>> { |
+ STATIC_ONLY(HashTraits); |
// FIXME: The distinction between PeekInType and PassInType is there for |
// the sake of the reference counting handles. When they are gone the two |
// types can be merged into PassInType. |
@@ -471,6 +485,7 @@ template<typename T> struct HashTraits<blink::Member<T>> : SimpleClassHashTraits |
}; |
template<typename T> struct HashTraits<blink::WeakMember<T>> : SimpleClassHashTraits<blink::WeakMember<T>> { |
+ STATIC_ONLY(HashTraits); |
static const bool needsDestruction = false; |
// FIXME: The distinction between PeekInType and PassInType is there for |
// the sake of the reference counting handles. When they are gone the two |
@@ -508,6 +523,7 @@ template<typename T> struct HashTraits<blink::WeakMember<T>> : SimpleClassHashTr |
}; |
template<typename T> struct HashTraits<blink::UntracedMember<T>> : SimpleClassHashTraits<blink::UntracedMember<T>> { |
+ STATIC_ONLY(HashTraits); |
static const bool needsDestruction = false; |
// FIXME: The distinction between PeekInType and PassInType is there for |
// the sake of the reference counting handles. When they are gone the two |
@@ -535,6 +551,7 @@ template<typename T> struct HashTraits<blink::UntracedMember<T>> : SimpleClassHa |
template<typename T, size_t inlineCapacity> |
struct NeedsTracing<ListHashSetNode<T, blink::HeapListHashSetAllocator<T, inlineCapacity>> *> { |
+ STATIC_ONLY(NeedsTracing); |
static_assert(sizeof(T), "T must be fully defined"); |
// All heap allocated node pointers need visiting to keep the nodes alive, |
// regardless of whether they contain pointers to other heap allocated |