Chromium Code Reviews| 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 |