Index: Source/core/dom/ElementRareData.cpp |
diff --git a/Source/core/dom/ElementRareData.cpp b/Source/core/dom/ElementRareData.cpp |
index 9bb9cc8afa4229e117ff3fcdbe95f90e10a3bbc2..3fba2afa08c6014abfa503022847d01d02c24cb4 100644 |
--- a/Source/core/dom/ElementRareData.cpp |
+++ b/Source/core/dom/ElementRareData.cpp |
@@ -31,6 +31,8 @@ |
#include "config.h" |
#include "core/dom/ElementRareData.h" |
+#include "core/dom/Attr.h" |
+#include "core/dom/NamedNodeMap.h" |
#include "core/rendering/style/RenderStyle.h" |
namespace WebCore { |
@@ -49,12 +51,19 @@ CSSStyleDeclaration& ElementRareData::ensureInlineCSSStyleDeclaration(Element* o |
return *m_cssomWrapper; |
} |
+AttrData& ElementRareData::ensureAttrData() |
+{ |
+ if (!m_attrData) |
+ m_attrData = AttrData::create(); |
+ return *m_attrData; |
+} |
+ |
void ElementRareData::traceAfterDispatch(Visitor* visitor) |
{ |
visitor->trace(m_dataset); |
visitor->trace(m_classList); |
visitor->trace(m_shadow); |
- visitor->trace(m_attributeMap); |
+ visitor->trace(m_attrData); |
visitor->trace(m_inputMethodContext); |
visitor->trace(m_activeAnimations); |
visitor->trace(m_cssomWrapper); |
@@ -66,4 +75,40 @@ void ElementRareData::traceAfterDispatch(Visitor* visitor) |
COMPILE_ASSERT(sizeof(ElementRareData) == sizeof(SameSizeAsElementRareData), ElementRareDataShouldStaySmall); |
+inline AttrData::AttrData() |
esprehn
2014/06/17 08:27:05
Put it in the header or remove the inline.
|
+{ |
+} |
+ |
+PassOwnPtrWillBeRawPtr<AttrData> AttrData::create() |
+{ |
+ return adoptPtrWillBeNoop(new AttrData); |
+} |
+ |
+DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(AttrData) |
+ |
+void AttrData::trace(Visitor* visitor) |
+{ |
+#if ENABLE(OILPAN) |
+ visitor->trace(m_attrNodeList); |
+#endif |
esprehn
2014/06/17 08:27:05
This code doesn't make sense. We should never call
Mads Ager (chromium)
2014/06/17 08:35:08
They are never called, but they are compiled.
esprehn
2014/06/17 11:06:04
Why won't think compile in non-oilpan mode? It's n
|
+ visitor->trace(m_attributeMap); |
+} |
+ |
+WillBeHeapVector<RefPtrWillBeMember<Attr> >& AttrData::ensureAttrNodeList() |
+{ |
+ if (!m_attrNodeList) |
+ m_attrNodeList = adoptPtrWillBeNoop(new WillBeHeapVector<RefPtrWillBeMember<Attr> >()); |
+ return *m_attrNodeList; |
+} |
+ |
+void AttrData::removeAttrNodeList() |
+{ |
+ m_attrNodeList.clear(); |
+} |
+ |
+void AttrData::setAttributeMap(PassOwnPtrWillBeRawPtr<NamedNodeMap> attributeMap) |
+{ |
+ m_attributeMap = attributeMap; |
+} |
+ |
} // namespace WebCore |