Commit 9ce2be7a authored by mlippautz's avatar mlippautz Committed by Commit bot

[wrapper-tracing] MutationObserver: Add write barriers

Overview: https://docs.google.com/spreadsheets/d/1RhLiHF9Pnw7Zx8EijuR0LruPkeiVJIXXi0eRkRDFwBc/edit#gid=0&vpid=A3

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

Review-Url: https://codereview.chromium.org/2396693004
Cr-Commit-Position: refs/heads/master@{#423820}
parent 7ae88a32
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "bindings/core/v8/DOMDataStore.h" #include "bindings/core/v8/DOMDataStore.h"
#include "bindings/core/v8/ExceptionState.h" #include "bindings/core/v8/ExceptionState.h"
#include "bindings/core/v8/Microtask.h" #include "bindings/core/v8/Microtask.h"
#include "bindings/core/v8/ScriptWrappableVisitor.h"
#include "bindings/core/v8/V8DOMWrapper.h" #include "bindings/core/v8/V8DOMWrapper.h"
#include "core/HTMLNames.h" #include "core/HTMLNames.h"
#include "core/MathMLNames.h" #include "core/MathMLNames.h"
...@@ -294,8 +295,8 @@ NodeRareData& Node::ensureRareData() { ...@@ -294,8 +295,8 @@ NodeRareData& Node::ensureRareData() {
m_data.m_rareData = NodeRareData::create(m_data.m_layoutObject); m_data.m_rareData = NodeRareData::create(m_data.m_layoutObject);
DCHECK(m_data.m_rareData); DCHECK(m_data.m_rareData);
setFlag(HasRareDataFlag); setFlag(HasRareDataFlag);
ScriptWrappableVisitor::writeBarrier(this, rareData());
return *rareData(); return *rareData();
} }
...@@ -1973,6 +1974,7 @@ void Node::registerMutationObserver( ...@@ -1973,6 +1974,7 @@ void Node::registerMutationObserver(
registry.append(MutationObserverRegistration::create( registry.append(MutationObserverRegistration::create(
observer, this, options, attributeFilter)); observer, this, options, attributeFilter));
registration = registry.last().get(); registration = registry.last().get();
ScriptWrappableVisitor::writeBarrier(this, registration);
} }
document().addMutationObserverTypes(registration->mutationTypes()); document().addMutationObserverTypes(registration->mutationTypes());
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#ifndef NodeRareData_h #ifndef NodeRareData_h
#define NodeRareData_h #define NodeRareData_h
#include "bindings/core/v8/ScriptWrappableVisitor.h"
#include "core/dom/MutationObserverRegistration.h" #include "core/dom/MutationObserverRegistration.h"
#include "core/dom/NodeListsNodeData.h" #include "core/dom/NodeListsNodeData.h"
#include "platform/heap/Handle.h" #include "platform/heap/Handle.h"
...@@ -84,8 +85,10 @@ class NodeRareData : public GarbageCollectedFinalized<NodeRareData>, ...@@ -84,8 +85,10 @@ class NodeRareData : public GarbageCollectedFinalized<NodeRareData>,
return m_mutationObserverData.get(); return m_mutationObserverData.get();
} }
NodeMutationObserverData& ensureMutationObserverData() { NodeMutationObserverData& ensureMutationObserverData() {
if (!m_mutationObserverData) if (!m_mutationObserverData) {
m_mutationObserverData = NodeMutationObserverData::create(); m_mutationObserverData = NodeMutationObserverData::create();
ScriptWrappableVisitor::writeBarrier(this, m_mutationObserverData);
}
return *m_mutationObserverData; return *m_mutationObserverData;
} }
......
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