Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(340)

Unified Diff: Source/core/dom/MutationRecord.cpp

Issue 280123002: Oilpan: move LiveNodeList collections to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Have NodeRareData clear out NodeListsNodeData instead. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/dom/MutationRecord.h ('k') | Source/core/dom/NameNodeList.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/MutationRecord.cpp
diff --git a/Source/core/dom/MutationRecord.cpp b/Source/core/dom/MutationRecord.cpp
index 7cb4a4d9adc7638927845cc9fe7cc9eeaa06556e..59c8a992f071dbfb0a9b955183415f7d0b3e546f 100644
--- a/Source/core/dom/MutationRecord.cpp
+++ b/Source/core/dom/MutationRecord.cpp
@@ -44,7 +44,7 @@ namespace {
class ChildListRecord : public MutationRecord {
public:
- ChildListRecord(PassRefPtr<Node> target, PassRefPtr<NodeList> added, PassRefPtr<NodeList> removed, PassRefPtr<Node> previousSibling, PassRefPtr<Node> nextSibling)
+ ChildListRecord(PassRefPtr<Node> target, PassRefPtrWillBeRawPtr<NodeList> added, PassRefPtrWillBeRawPtr<NodeList> removed, PassRefPtr<Node> previousSibling, PassRefPtr<Node> nextSibling)
: m_target(target)
, m_addedNodes(added)
, m_removedNodes(removed)
@@ -53,6 +53,16 @@ public:
{
}
+ virtual void trace(Visitor* visitor) OVERRIDE
+ {
+ visitor->trace(m_target);
+ visitor->trace(m_addedNodes);
+ visitor->trace(m_removedNodes);
+ visitor->trace(m_previousSibling);
+ visitor->trace(m_nextSibling);
+ MutationRecord::trace(visitor);
+ }
+
private:
virtual const AtomicString& type() OVERRIDE;
virtual Node* target() OVERRIDE { return m_target.get(); }
@@ -61,11 +71,11 @@ private:
virtual Node* previousSibling() OVERRIDE { return m_previousSibling.get(); }
virtual Node* nextSibling() OVERRIDE { return m_nextSibling.get(); }
- RefPtr<Node> m_target;
- RefPtr<NodeList> m_addedNodes;
- RefPtr<NodeList> m_removedNodes;
- RefPtr<Node> m_previousSibling;
- RefPtr<Node> m_nextSibling;
+ RefPtrWillBeMember<Node> m_target;
+ RefPtrWillBeMember<NodeList> m_addedNodes;
+ RefPtrWillBeMember<NodeList> m_removedNodes;
+ RefPtrWillBeMember<Node> m_previousSibling;
+ RefPtrWillBeMember<Node> m_nextSibling;
};
class RecordWithEmptyNodeLists : public MutationRecord {
@@ -76,23 +86,31 @@ public:
{
}
+ virtual void trace(Visitor* visitor) OVERRIDE
+ {
+ visitor->trace(m_target);
+ visitor->trace(m_addedNodes);
+ visitor->trace(m_removedNodes);
+ MutationRecord::trace(visitor);
+ }
+
private:
virtual Node* target() OVERRIDE { return m_target.get(); }
virtual String oldValue() OVERRIDE { return m_oldValue; }
virtual NodeList* addedNodes() OVERRIDE { return lazilyInitializeEmptyNodeList(m_addedNodes); }
virtual NodeList* removedNodes() OVERRIDE { return lazilyInitializeEmptyNodeList(m_removedNodes); }
- static NodeList* lazilyInitializeEmptyNodeList(RefPtr<NodeList>& nodeList)
+ static NodeList* lazilyInitializeEmptyNodeList(RefPtrWillBeMember<NodeList>& nodeList)
{
if (!nodeList)
nodeList = StaticNodeList::createEmpty();
return nodeList.get();
}
- RefPtr<Node> m_target;
+ RefPtrWillBeMember<Node> m_target;
String m_oldValue;
- RefPtr<NodeList> m_addedNodes;
- RefPtr<NodeList> m_removedNodes;
+ RefPtrWillBeMember<NodeList> m_addedNodes;
+ RefPtrWillBeMember<NodeList> m_removedNodes;
};
class AttributesRecord : public RecordWithEmptyNodeLists {
@@ -172,7 +190,7 @@ const AtomicString& CharacterDataRecord::type()
} // namespace
-PassRefPtrWillBeRawPtr<MutationRecord> MutationRecord::createChildList(PassRefPtr<Node> target, PassRefPtr<NodeList> added, PassRefPtr<NodeList> removed, PassRefPtr<Node> previousSibling, PassRefPtr<Node> nextSibling)
+PassRefPtrWillBeRawPtr<MutationRecord> MutationRecord::createChildList(PassRefPtr<Node> target, PassRefPtrWillBeRawPtr<NodeList> added, PassRefPtrWillBeRawPtr<NodeList> removed, PassRefPtr<Node> previousSibling, PassRefPtr<Node> nextSibling)
{
return adoptRefWillBeNoop(new ChildListRecord(target, added, removed, previousSibling, nextSibling));
}
« no previous file with comments | « Source/core/dom/MutationRecord.h ('k') | Source/core/dom/NameNodeList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698