Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / dom / NodeRareData.cpp
index c29894c..c40e9bb 100644 (file)
 #include "core/dom/NodeRareData.h"
 #include "core/dom/Element.h"
 #include "core/dom/ElementRareData.h"
+#include "core/page/Page.h"
+#include "core/rendering/RenderObject.h"
 #include "platform/heap/Handle.h"
 
-namespace WebCore {
+namespace blink {
 
 struct SameSizeAsNodeRareData {
     void* m_pointer[2];
@@ -44,23 +46,17 @@ struct SameSizeAsNodeRareData {
 
 COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);
 
-void NodeListsNodeData::invalidateCaches(const QualifiedName* attrName)
-{
-    NodeListAtomicNameCacheMap::const_iterator atomicNameCacheEnd = m_atomicNameCaches.end();
-    for (NodeListAtomicNameCacheMap::const_iterator it = m_atomicNameCaches.begin(); it != atomicNameCacheEnd; ++it)
-        it->value->invalidateCacheForAttribute(attrName);
-
-    if (attrName)
-        return;
-
-    TagCollectionCacheNS::iterator tagCacheEnd = m_tagCollectionCacheNS.end();
-    for (TagCollectionCacheNS::iterator it = m_tagCollectionCacheNS.begin(); it != tagCacheEnd; ++it)
-        it->value->invalidateCache();
-}
-
 void NodeRareData::traceAfterDispatch(Visitor* visitor)
 {
+#if ENABLE(OILPAN)
+    visitor->trace(m_renderer);
+#endif
     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)
@@ -83,4 +79,4 @@ void NodeRareData::finalizeGarbageCollectedObject()
 // Ensure the 10 bits reserved for the m_connectedFrameCount cannot overflow
 COMPILE_ASSERT(Page::maxNumberOfFrames < (1 << NodeRareData::ConnectedFrameCountBits), Frame_limit_should_fit_in_rare_data_count);
 
-} // namespace WebCore
+} // namespace blink