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

Unified Diff: Source/core/dom/Document.h

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/ContainerNode.cpp ('k') | Source/core/dom/Document.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/Document.h
diff --git a/Source/core/dom/Document.h b/Source/core/dom/Document.h
index ba3991c01785e3cb0400f646c9eb302f30e6591f..60c5e83ea7da3238fe0b215752c03e61983a78f4 100644
--- a/Source/core/dom/Document.h
+++ b/Source/core/dom/Document.h
@@ -346,7 +346,7 @@ public:
* @param bottomPadding How much to expand the bottom of the rectangle
* @param leftPadding How much to expand the left of the rectangle
*/
- PassRefPtr<NodeList> nodesFromRect(int centerX, int centerY,
+ PassRefPtrWillBeRawPtr<NodeList> nodesFromRect(int centerX, int centerY,
unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding,
HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ConfusingAndOftenMisusedDisallowShadowContent) const;
Element* elementFromPoint(int x, int y) const;
@@ -393,18 +393,18 @@ public:
PassRefPtrWillBeRawPtr<Node> adoptNode(PassRefPtrWillBeRawPtr<Node> source, ExceptionState&);
- PassRefPtr<HTMLCollection> images();
- PassRefPtr<HTMLCollection> embeds();
- PassRefPtr<HTMLCollection> applets();
- PassRefPtr<HTMLCollection> links();
- PassRefPtr<HTMLCollection> forms();
- PassRefPtr<HTMLCollection> anchors();
- PassRefPtr<HTMLCollection> scripts();
- PassRefPtr<HTMLAllCollection> allForBinding();
- PassRefPtr<HTMLAllCollection> all();
+ PassRefPtrWillBeRawPtr<HTMLCollection> images();
+ PassRefPtrWillBeRawPtr<HTMLCollection> embeds();
+ PassRefPtrWillBeRawPtr<HTMLCollection> applets();
+ PassRefPtrWillBeRawPtr<HTMLCollection> links();
+ PassRefPtrWillBeRawPtr<HTMLCollection> forms();
+ PassRefPtrWillBeRawPtr<HTMLCollection> anchors();
+ PassRefPtrWillBeRawPtr<HTMLCollection> scripts();
+ PassRefPtrWillBeRawPtr<HTMLAllCollection> allForBinding();
+ PassRefPtrWillBeRawPtr<HTMLAllCollection> all();
- PassRefPtr<HTMLCollection> windowNamedItems(const AtomicString& name);
- PassRefPtr<HTMLCollection> documentNamedItems(const AtomicString& name);
+ PassRefPtrWillBeRawPtr<HTMLCollection> windowNamedItems(const AtomicString& name);
+ PassRefPtrWillBeRawPtr<HTMLCollection> documentNamedItems(const AtomicString& name);
bool isHTMLDocument() const { return m_documentClasses & HTMLDocumentClass; }
bool isXHTMLDocument() const { return m_documentClasses & XHTMLDocumentClass; }
@@ -661,10 +661,10 @@ public:
void scheduleRenderTreeUpdateIfNeeded();
bool hasPendingForcedStyleRecalc() const;
- void registerNodeList(LiveNodeListBase*);
- void unregisterNodeList(LiveNodeListBase*);
- void incrementNodeListWithIdNameCacheCount();
- void decrementNodeListWithIdNameCacheCount();
+ void registerNodeList(const LiveNodeListBase*);
+ void unregisterNodeList(const LiveNodeListBase*);
+ void registerNodeListWithIdNameCache(const LiveNodeListBase*);
+ void unregisterNodeListWithIdNameCache(const LiveNodeListBase*);
bool shouldInvalidateNodeListCaches(const QualifiedName* attrName = 0) const;
void invalidateNodeListCaches(const QualifiedName* attrName);
@@ -1152,14 +1152,14 @@ private:
void executeScriptsWaitingForResourcesIfNeeded();
- PassRefPtr<NodeList> handleZeroPadding(const HitTestRequest&, HitTestResult&) const;
+ PassRefPtrWillBeRawPtr<NodeList> handleZeroPadding(const HitTestRequest&, HitTestResult&) const;
void loadEventDelayTimerFired(Timer<Document>*);
void pluginLoadingTimerFired(Timer<Document>*);
PageVisibilityState pageVisibilityState() const;
- PassRefPtr<HTMLCollection> ensureCachedCollection(CollectionType);
+ PassRefPtrWillBeRawPtr<HTMLCollection> ensureCachedCollection(CollectionType);
// Note that dispatching a window load event may cause the DOMWindow to be detached from
// the LocalFrame, so callers should take a reference to the DOMWindow (which owns us) to
@@ -1304,8 +1304,16 @@ private:
InheritedBool m_designMode;
- HashSet<LiveNodeListBase*> m_listsInvalidatedAtDocument;
+ WillBeHeapHashSet<RawPtrWillBeWeakMember<const LiveNodeListBase> > m_listsInvalidatedAtDocument;
+#if ENABLE(OILPAN)
+ // Oilpan keeps track of all registered NodeLists.
+ //
+ // FIXME: Oilpan: improve - only need to know if a NodeList
+ // is currently alive or not for the different types.
+ HeapHashSet<WeakMember<const LiveNodeListBase> > m_nodeLists[numNodeListInvalidationTypes];
+#else
unsigned m_nodeListCounts[numNodeListInvalidationTypes];
+#endif
OwnPtrWillBeMember<SVGDocumentExtensions> m_svgExtensions;
@@ -1414,17 +1422,6 @@ inline bool Document::shouldOverrideLegacyDescription(ViewportDescription::Type
return origin >= m_legacyViewportDescription.type;
}
-inline void Document::incrementNodeListWithIdNameCacheCount()
-{
- m_nodeListCounts[InvalidateOnIdNameAttrChange]++;
-}
-
-inline void Document::decrementNodeListWithIdNameCacheCount()
-{
- ASSERT(m_nodeListCounts[InvalidateOnIdNameAttrChange] > 0);
- m_nodeListCounts[InvalidateOnIdNameAttrChange]--;
-}
-
inline void Document::scheduleRenderTreeUpdateIfNeeded()
{
// Inline early out to avoid the function calls below.
« no previous file with comments | « Source/core/dom/ContainerNode.cpp ('k') | Source/core/dom/Document.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698