Index: Source/platform/heap/Handle.h |
diff --git a/Source/platform/heap/Handle.h b/Source/platform/heap/Handle.h |
index d3872b02be0e526a2361b54a410d1922ab06c8d4..a01460dcaafee60258a21d6a4f7c3cf474d82935 100644 |
--- a/Source/platform/heap/Handle.h |
+++ b/Source/platform/heap/Handle.h |
@@ -609,7 +609,7 @@ protected: |
T* m_raw; |
- template<bool x, bool y, ShouldWeakPointersBeMarkedStrongly z, typename U, typename V> friend struct CollectionBackingTraceTrait; |
+ template<bool x, WTF::WeakHandlingFlag y, ShouldWeakPointersBeMarkedStrongly z, typename U, typename V> friend struct CollectionBackingTraceTrait; |
friend class Visitor; |
}; |
@@ -1042,6 +1042,12 @@ template<typename T> struct HashTraits<WebCore::WeakMember<T> > : SimpleClassHas |
static PeekOutType peek(const WebCore::WeakMember<T>& value) { return value; } |
static PassOutType passOut(const WebCore::WeakMember<T>& value) { return value; } |
+ static bool shouldRemoveFromCollection(WebCore::Visitor* visitor, WebCore::WeakMember<T>& value) { return !visitor->isAlive(value); } |
+ static void traceInCollection(WebCore::Visitor* visitor, WebCore::WeakMember<T>& weakMember, WebCore::ShouldWeakPointersBeMarkedStrongly strongify) |
+ { |
+ if (strongify == WebCore::WeakPointersActStrong) |
+ visitor->trace(reinterpret_cast<WebCore::Member<T>&>(weakMember)); // Strongified visit. |
+ } |
}; |
template<typename T> struct PtrHash<WebCore::Member<T> > : PtrHash<T*> { |
@@ -1088,11 +1094,6 @@ struct IsWeak<WebCore::WeakMember<T> > { |
static const bool value = true; |
}; |
-template<typename Table> |
-struct IsWeak<WebCore::HeapHashTableBacking<Table> > { |
- static const bool value = Table::ValueTraits::isWeak; |
-}; |
- |
template<typename T> inline T* getPtr(const WebCore::Member<T>& p) |
{ |
return p.get(); |