Commit bd96d939 authored by mlippautz's avatar mlippautz Committed by Commit bot

[wrapper-tracing] Add NodeList write barriers

BUG=chromium:468240
R=haraken@chromium.org,hlopko@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2435003002
Cr-Commit-Position: refs/heads/master@{#426475}
parent 5686c9eb
......@@ -3999,6 +3999,7 @@ void Document::setCSSTarget(Element* newTarget) {
void Document::registerNodeList(const LiveNodeListBase* list) {
DCHECK(!m_nodeLists[list->invalidationType()].contains(list));
m_nodeLists[list->invalidationType()].add(list);
ScriptWrappableVisitor::writeBarrier(this, list);
if (list->isRootedAtTreeScope())
m_listsInvalidatedAtDocument.add(list);
}
......@@ -4015,6 +4016,7 @@ void Document::unregisterNodeList(const LiveNodeListBase* list) {
void Document::registerNodeListWithIdNameCache(const LiveNodeListBase* list) {
DCHECK(!m_nodeLists[InvalidateOnIdNameAttrChange].contains(list));
m_nodeLists[InvalidateOnIdNameAttrChange].add(list);
ScriptWrappableVisitor::writeBarrier(this, list);
}
void Document::unregisterNodeListWithIdNameCache(const LiveNodeListBase* list) {
......
......@@ -48,6 +48,7 @@ class NodeListsNodeData final : public GarbageCollected<NodeListsNodeData> {
return toChildNodeList(m_childNodeList);
ChildNodeList* list = ChildNodeList::create(node);
m_childNodeList = list;
ScriptWrappableVisitor::writeBarrier(this, list);
return list;
}
......@@ -57,6 +58,7 @@ class NodeListsNodeData final : public GarbageCollected<NodeListsNodeData> {
return toEmptyNodeList(m_childNodeList);
EmptyNodeList* list = EmptyNodeList::create(node);
m_childNodeList = list;
ScriptWrappableVisitor::writeBarrier(this, list);
return list;
}
......
......@@ -76,8 +76,10 @@ class NodeRareData : public GarbageCollectedFinalized<NodeRareData>,
// initialized m_nodeLists is cleared by NodeRareData::traceAfterDispatch().
NodeListsNodeData& ensureNodeLists() {
DCHECK(ThreadState::current()->isGCForbidden());
if (!m_nodeLists)
if (!m_nodeLists) {
m_nodeLists = NodeListsNodeData::create();
ScriptWrappableVisitor::writeBarrier(this, m_nodeLists);
}
return *m_nodeLists;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment