Index: Source/core/dom/NodeRareData.cpp |
diff --git a/Source/core/dom/NodeRareData.cpp b/Source/core/dom/NodeRareData.cpp |
index c29894c2a00a5f2807675c7d17679ae65a955043..e8ea37076c25375c942b18c4bbddd74e8e6501b0 100644 |
--- a/Source/core/dom/NodeRareData.cpp |
+++ b/Source/core/dom/NodeRareData.cpp |
@@ -58,9 +58,21 @@ void NodeListsNodeData::invalidateCaches(const QualifiedName* attrName) |
it->value->invalidateCache(); |
} |
+void NodeListsNodeData::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_childNodeList); |
+ visitor->trace(m_atomicNameCaches); |
+ visitor->trace(m_tagCollectionCacheNS); |
+} |
+ |
void NodeRareData::traceAfterDispatch(Visitor* visitor) |
{ |
visitor->trace(m_mutationObserverData); |
+ // Do not keep empty NodeListsNodeData objects around. |
+ if (m_nodeLists && m_nodeLists->isEmpty()) |
+ m_nodeLists.clear(); |
+ else |
+ visitor->trace(m_nodeLists); |
} |
void NodeRareData::trace(Visitor* visitor) |