Index: Source/core/dom/Attr.h |
diff --git a/Source/core/dom/Attr.h b/Source/core/dom/Attr.h |
index b6b2b4d362cf339423ffc2e85de3264af8852fae..36b715f60b09a0e055f2868fc3320ff3e9148fea 100644 |
--- a/Source/core/dom/Attr.h |
+++ b/Source/core/dom/Attr.h |
@@ -64,6 +64,7 @@ public: |
const AtomicString& prefix() const { return m_name.prefix(); } |
virtual void trace(Visitor*) OVERRIDE; |
+ void clearWeakMembers(Visitor*); |
private: |
Attr(Element&, const QualifiedName&); |
@@ -89,7 +90,13 @@ private: |
// Attr wraps either an element/name, or a name/value pair (when it's a standalone Node.) |
// Note that m_name is always set, but m_element/m_standaloneValue may be null. |
- RawPtrWillBeMember<Element> m_element; |
+ // |
+ // FIXME: Oilpan: m_element should be a Member. However, because of the |
+ // current semantics of weak maps, we have to make it a WeakMember in order |
+ // to not leak through the attrNodeListMap in Element.cpp. Once the semantics |
+ // of weak maps has changed we should make this a Member and remove the custom |
+ // weak processing. |
+ RawPtrWillBeWeakMember<Element> m_element; |
QualifiedName m_name; |
// Holds the value if it is a standalone Node, or the local name of the |
// attribute it is attached to on an Element. The latter may (letter case) |