| Index: Source/platform/heap/Handle.h
|
| diff --git a/Source/platform/heap/Handle.h b/Source/platform/heap/Handle.h
|
| index 8c7cedd603ea3dcde1be702b72970e729aef0f12..b18b236c82970f337ad93eda2367f6ea38fc57ed 100644
|
| --- a/Source/platform/heap/Handle.h
|
| +++ b/Source/platform/heap/Handle.h
|
| @@ -52,12 +52,14 @@ template<typename T> class HeapTerminatedArray;
|
| typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSetSubclass; \
|
| typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMapSubclass; \
|
| typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector> HeapVectorSubclass; \
|
| + typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapDeque> HeapDequeSubclass; \
|
| typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> HeapTerminatedArraySubclass; \
|
| COMPILE_ASSERT(GarbageCollectedSubclass::value || \
|
| GarbageCollectedMixinSubclass::value || \
|
| HeapHashSetSubclass::value || \
|
| HeapHashMapSubclass::value || \
|
| HeapVectorSubclass::value || \
|
| + HeapDequeSubclass::value || \
|
| HeapTerminatedArraySubclass::value, \
|
| ErrorMessage); \
|
| } while (0)
|
| @@ -420,6 +422,18 @@ public:
|
| }
|
| };
|
|
|
| +template<typename T, size_t inlineCapacity = 0>
|
| +class PersistentHeapDeque : public PersistentHeapCollectionBase<HeapDeque<T, inlineCapacity> > {
|
| +public:
|
| + PersistentHeapDeque() { }
|
| +
|
| + template<size_t otherCapacity>
|
| + PersistentHeapDeque(const HeapDeque<T, otherCapacity>& other)
|
| + : PersistentHeapCollectionBase<HeapDeque<T, inlineCapacity> >(other)
|
| + {
|
| + }
|
| +};
|
| +
|
| // Members are used in classes to contain strong pointers to other oilpan heap
|
| // allocated objects.
|
| // All Member fields of a class must be traced in the class' trace method.
|
| @@ -719,6 +733,8 @@ template<typename T, typename U> inline bool operator!=(const Persistent<T>& a,
|
| #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet
|
| #define WillBeHeapVector WebCore::HeapVector
|
| #define WillBePersistentHeapVector WebCore::PersistentHeapVector
|
| +#define WillBeHeapDeque WebCore::HeapDeque
|
| +#define WillBePersistentHeapDeque WebCore::PersistentHeapDeque
|
| #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin
|
| #define WillBeHeapSupplement WebCore::HeapSupplement
|
| #define WillBeHeapSupplementable WebCore::HeapSupplementable
|
| @@ -789,6 +805,8 @@ public:
|
| #define WillBePersistentHeapHashSet WTF::HashSet
|
| #define WillBeHeapVector WTF::Vector
|
| #define WillBePersistentHeapVector WTF::Vector
|
| +#define WillBeHeapDeque WTF::Deque
|
| +#define WillBePersistentHeapDeque WTF::Deque
|
| #define WillBeGarbageCollectedMixin WebCore::DummyBase<void>
|
| #define WillBeHeapSupplement WebCore::Supplement
|
| #define WillBeHeapSupplementable WebCore::Supplementable
|
| @@ -837,12 +855,24 @@ template <typename T> struct VectorTraits<WebCore::HeapVector<T, 0> > : VectorTr
|
| static const bool canMoveWithMemcpy = true;
|
| };
|
|
|
| +template <typename T> struct VectorTraits<WebCore::HeapDeque<T, 0> > : VectorTraitsBase<WebCore::HeapDeque<T, 0> > {
|
| + static const bool needsDestruction = false;
|
| + static const bool canInitializeWithMemset = true;
|
| + static const bool canMoveWithMemcpy = true;
|
| +};
|
| +
|
| template <typename T, size_t inlineCapacity> struct VectorTraits<WebCore::HeapVector<T, inlineCapacity> > : VectorTraitsBase<WebCore::HeapVector<T, inlineCapacity> > {
|
| static const bool needsDestruction = VectorTraits<T>::needsDestruction;
|
| static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWithMemset;
|
| static const bool canMoveWithMemcpy = VectorTraits<T>::canMoveWithMemcpy;
|
| };
|
|
|
| +template <typename T, size_t inlineCapacity> struct VectorTraits<WebCore::HeapDeque<T, inlineCapacity> > : VectorTraitsBase<WebCore::HeapDeque<T, inlineCapacity> > {
|
| + static const bool needsDestruction = VectorTraits<T>::needsDestruction;
|
| + static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWithMemset;
|
| + static const bool canMoveWithMemcpy = VectorTraits<T>::canMoveWithMemcpy;
|
| +};
|
| +
|
| template<typename T> struct HashTraits<WebCore::Member<T> > : SimpleClassHashTraits<WebCore::Member<T> > {
|
| static const bool needsDestruction = false;
|
| // FIXME: The distinction between PeekInType and PassInType is there for
|
|
|