Index: Source/heap/Handle.h |
diff --git a/Source/heap/Handle.h b/Source/heap/Handle.h |
index bf88b831d075768389ea9e9a5cfb8d1ddcaf7908..c1a128658eb93f0c2164a4ce467fa530033bdf6f 100644 |
--- a/Source/heap/Handle.h |
+++ b/Source/heap/Handle.h |
@@ -50,12 +50,14 @@ template<typename T> class HeapTerminatedArray; |
typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> GarbageCollectedSubclass; \ |
typedef WTF::IsSubclass<NonConstType, GarbageCollectedMixin> GarbageCollectedMixinSubclass; \ |
typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSetSubclass; \ |
+ typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapLinkedHashSet> HeapLinkedHashSetSubclass; \ |
typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMapSubclass; \ |
typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector> HeapVectorSubclass; \ |
typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> HeapTerminatedArraySubclass; \ |
COMPILE_ASSERT(GarbageCollectedSubclass::value || \ |
GarbageCollectedMixinSubclass::value || \ |
HeapHashSetSubclass::value || \ |
+ HeapLinkedHashSetSubclass::value || \ |
HeapHashMapSubclass::value || \ |
HeapVectorSubclass::value || \ |
HeapTerminatedArraySubclass::value, \ |
@@ -396,6 +398,12 @@ template< |
typename TraitsArg = HashTraits<ValueArg> > |
class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<ValueArg, HashArg, TraitsArg> > { }; |
+template< |
+ typename ValueArg, |
+ typename HashArg = typename DefaultHash<ValueArg>::Hash, |
+ typename TraitsArg = HashTraits<ValueArg> > |
+class PersistentHeapLinkedHashSet : public PersistentHeapCollectionBase<HeapLinkedHashSet<ValueArg, HashArg, TraitsArg> > { }; |
+ |
template<typename T, size_t inlineCapacity = 0> |
class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> > { |
public: |
@@ -448,6 +456,9 @@ public: |
template<typename U> |
Member(const Member<U>& other) : m_raw(other) { } |
+ template<typename U> |
+ Member(const RawPtr<U>& other) : m_raw(other) { } |
+ |
T* release() |
{ |
T* result = m_raw; |
@@ -604,6 +615,9 @@ public: |
WeakMember(const Member<U>& other) : Member<T>(other) { } |
template<typename U> |
+ WeakMember(const RawPtr<U>& other) : Member<T>(other) { } |
+ |
+ template<typename U> |
WeakMember& operator=(const Persistent<U>& other) |
{ |
this->m_raw = other; |
@@ -693,6 +707,8 @@ template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, |
#define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
#define WillBeHeapHashSet WebCore::HeapHashSet |
#define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet |
+#define WillBeHeapLinkedHashSet WebCore::HeapLinkedHashSet |
+#define WillBePersistentHeapLinkedHashSet WebCore::PersistentHeapLinkedHashSet |
#define WillBeHeapVector WebCore::HeapVector |
#define WillBePersistentHeapVector WebCore::PersistentHeapVector |
#define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin |
@@ -763,6 +779,8 @@ public: |
#define WillBePersistentHeapHashMap WTF::HashMap |
#define WillBeHeapHashSet WTF::HashSet |
#define WillBePersistentHeapHashSet WTF::HashSet |
+#define WillBeHeapLinkedHashSet WTF::LinkedHashSet |
+#define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet |
#define WillBeHeapVector WTF::Vector |
#define WillBePersistentHeapVector WTF::Vector |
#define WillBeGarbageCollectedMixin WebCore::DummyBase<void> |
@@ -944,18 +962,23 @@ struct NeedsTracing<Deque<T, N> > { |
static const bool value = false; |
}; |
-template<typename T> |
-struct NeedsTracing<HashSet<T> > { |
+template<typename T, typename U, typename V> |
+struct NeedsTracing<HashSet<T, U, V> > { |
static const bool value = false; |
}; |
-template<typename T> |
-struct NeedsTracing<ListHashSet<T> > { |
+template<typename T, size_t U, typename V> |
+struct NeedsTracing<ListHashSet<T, U, V> > { |
static const bool value = false; |
}; |
-template<typename T, typename U> |
-struct NeedsTracing<HashMap<T, U> > { |
+template<typename T, typename U, typename V> |
+struct NeedsTracing<LinkedHashSet<T, U, V> > { |
+ static const bool value = false; |
+}; |
+ |
+template<typename T, typename U, typename V, typename W, typename X> |
+struct NeedsTracing<HashMap<T, U, V, W, X> > { |
static const bool value = false; |
}; |