| Index: third_party/WebKit/Source/platform/heap/GarbageCollected.h
|
| diff --git a/third_party/WebKit/Source/platform/heap/GarbageCollected.h b/third_party/WebKit/Source/platform/heap/GarbageCollected.h
|
| index ef635acb7e77f1d3e3d206f6429f134f2880d084..3624eba5d986fcd7c1672999aecee8b39d7a1d35 100644
|
| --- a/third_party/WebKit/Source/platform/heap/GarbageCollected.h
|
| +++ b/third_party/WebKit/Source/platform/heap/GarbageCollected.h
|
| @@ -8,26 +8,13 @@
|
| #include "platform/heap/ThreadState.h"
|
| #include "wtf/Allocator.h"
|
| #include "wtf/Assertions.h"
|
| -#include "wtf/ListHashSet.h"
|
| #include "wtf/TypeTraits.h"
|
|
|
| namespace blink {
|
|
|
| template<typename T> class GarbageCollected;
|
| -template<typename T, typename U, typename V, typename W, typename X> class HeapHashMap;
|
| -template<typename T, typename U, typename V> class HeapHashSet;
|
| -template<typename T, typename U, typename V> class HeapLinkedHashSet;
|
| -template<typename T, size_t inlineCapacity, typename U> class HeapListHashSet;
|
| -template<typename T, size_t inlineCapacity> class HeapVector;
|
| -template<typename T, size_t inlineCapacity> class HeapDeque;
|
| -template<typename T, typename U, typename V> class HeapHashCountedSet;
|
| -template<typename T> class HeapTerminatedArray;
|
| -template<typename T, typename Traits> class HeapVectorBacking;
|
| -template<typename Table> class HeapHashTableBacking;
|
| -template<typename ValueArg, size_t inlineCapacity> class HeapListHashSetAllocator;
|
| class InlinedGlobalMarkingVisitor;
|
| class WrapperVisitor;
|
| -template<typename T> class Persistent;
|
|
|
| // GC_PLUGIN_IGNORE is used to make the plugin ignore a particular class or
|
| // field when checking for proper usage. When using GC_PLUGIN_IGNORE
|
| @@ -57,54 +44,6 @@ public:
|
| static const bool value = sizeof(checkMarker<T>(nullptr)) == sizeof(YesType);
|
| };
|
|
|
| -template <typename T>
|
| -struct IsGarbageCollectedType {
|
| - using TrueType = char;
|
| - struct FalseType {
|
| - char dummy[2];
|
| - };
|
| -
|
| - using NonConstType = typename std::remove_const<T>::type;
|
| - using GarbageCollectedSubclass = WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected>;
|
| - using GarbageCollectedMixinSubclass = IsGarbageCollectedMixin<NonConstType>;
|
| - using HeapHashSetSubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapHashSet>;
|
| - using HeapLinkedHashSetSubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapLinkedHashSet>;
|
| - using HeapListHashSetSubclass = WTF::IsSubclassOfTemplateTypenameSizeTypename<NonConstType, HeapListHashSet>;
|
| - using HeapHashMapSubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapHashMap>;
|
| - using HeapVectorSubclass = WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector>;
|
| - using HeapDequeSubclass = WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapDeque>;
|
| - using HeapHashCountedSetSubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapHashCountedSet>;
|
| - using HeapTerminatedArraySubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray>;
|
| - using HeapVectorBackingSubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapVectorBacking>;
|
| - using HeapHashTableBackingSubclass = WTF::IsSubclassOfTemplate<NonConstType, HeapHashTableBacking>;
|
| -
|
| - template<typename U, size_t inlineCapacity> static TrueType listHashSetNodeIsHeapAllocated(WTF::ListHashSetNode<U, HeapListHashSetAllocator<U, inlineCapacity>>*);
|
| - static FalseType listHashSetNodeIsHeapAllocated(...);
|
| - static const bool isHeapAllocatedListHashSetNode = sizeof(TrueType) == sizeof(listHashSetNodeIsHeapAllocated(reinterpret_cast<NonConstType*>(0)));
|
| -
|
| - static_assert(sizeof(T), "T must be fully defined");
|
| -
|
| - static const bool value =
|
| - GarbageCollectedSubclass::value
|
| - || GarbageCollectedMixinSubclass::value
|
| - || HeapHashSetSubclass::value
|
| - || HeapLinkedHashSetSubclass::value
|
| - || HeapListHashSetSubclass::value
|
| - || HeapHashMapSubclass::value
|
| - || HeapVectorSubclass::value
|
| - || HeapDequeSubclass::value
|
| - || HeapHashCountedSetSubclass::value
|
| - || HeapTerminatedArraySubclass::value
|
| - || HeapVectorBackingSubclass::value
|
| - || HeapHashTableBackingSubclass::value
|
| - || isHeapAllocatedListHashSetNode;
|
| -};
|
| -
|
| -template <>
|
| -struct IsGarbageCollectedType<void> {
|
| - static const bool value = false;
|
| -};
|
| -
|
| // The GarbageCollectedMixin interface and helper macro
|
| // USING_GARBAGE_COLLECTED_MIXIN can be used to automatically define
|
| // TraceTrait/ObjectAliveTrait on non-leftmost deriving classes
|
| @@ -118,15 +57,15 @@ struct IsGarbageCollectedType<void> {
|
| // object header statically. This can be solved by using GarbageCollectedMixin:
|
| // class B : public GarbageCollectedMixin {};
|
| // class A : public GarbageCollected, public B {
|
| -// USING_GARBAGE_COLLECTED_MIXIN(A)
|
| +// USING_GARBAGE_COLLECTED_MIXIN(A);
|
| // };
|
| //
|
| // With the helper, as long as we are using Member<B>, TypeTrait<B> will
|
| // dispatch adjustAndMark dynamically to find collect addr of the object header.
|
| // Note that this is only enabled for Member<B>. For Member<A> which we can
|
| // compute the object header addr statically, this dynamic dispatch is not used.
|
| +//
|
| class PLATFORM_EXPORT GarbageCollectedMixin {
|
| - IS_GARBAGE_COLLECTED_TYPE();
|
| public:
|
| typedef int IsGarbageCollectedMixinMarker;
|
| virtual void adjustAndMark(Visitor*) const = 0;
|
| @@ -328,8 +267,4 @@ public:
|
|
|
| } // namespace blink
|
|
|
| -namespace WTF {
|
| -
|
| -} // namespace WTF
|
| -
|
| #endif
|
|
|