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

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

Issue 192473003: Move CSSRuleList to the garbage collected heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix teardown of StyleEngine Created 6 years, 9 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
Index: Source/core/dom/StyleEngine.cpp
diff --git a/Source/core/dom/StyleEngine.cpp b/Source/core/dom/StyleEngine.cpp
index 2de67f7ad04984c5061f54ba1091979247803928..5404ff653d1f098d5ea130e509afcf96c8180237 100644
--- a/Source/core/dom/StyleEngine.cpp
+++ b/Source/core/dom/StyleEngine.cpp
@@ -101,6 +101,10 @@ StyleEngine::StyleEngine(Document& document)
StyleEngine::~StyleEngine()
{
+}
+
+void StyleEngine::detachFromDocument()
+{
for (unsigned i = 0; i < m_injectedAuthorStyleSheets.size(); ++i)
m_injectedAuthorStyleSheets[i]->clearOwnerNode();
for (unsigned i = 0; i < m_authorStyleSheets.size(); ++i)
@@ -111,6 +115,9 @@ StyleEngine::~StyleEngine()
if (m_resolver)
m_fontSelector->unregisterForInvalidationCallbacks(m_resolver.get());
}
+ m_fontSelector.clear();
+ m_resolver.clear();
+ m_styleSheetCollectionMap.clear();
haraken 2014/03/12 11:08:21 Don't you need to clear m_document, m_dirtyTreeSco
Erik Corry 2014/03/12 11:48:57 I'm clearing the RefPtrs and the OwnPtrs so that t
}
inline Document* StyleEngine::master()
@@ -172,7 +179,7 @@ TreeScopeStyleSheetCollection* StyleEngine::styleSheetCollectionFor(TreeScope& t
return it->value.get();
}
-const Vector<RefPtr<StyleSheet> >& StyleEngine::styleSheetsForStyleSheetList(TreeScope& treeScope)
+const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& StyleEngine::styleSheetsForStyleSheetList(TreeScope& treeScope)
{
if (treeScope == m_document)
return m_documentStyleSheetCollection.styleSheetsForStyleSheetList();
@@ -180,7 +187,7 @@ const Vector<RefPtr<StyleSheet> >& StyleEngine::styleSheetsForStyleSheetList(Tre
return ensureStyleSheetCollectionFor(treeScope)->styleSheetsForStyleSheetList();
}
-const Vector<RefPtr<CSSStyleSheet> >& StyleEngine::activeAuthorStyleSheets() const
+const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& StyleEngine::activeAuthorStyleSheets() const
{
return m_documentStyleSheetCollection.activeAuthorStyleSheets();
}
@@ -200,7 +207,7 @@ void StyleEngine::resetCSSFeatureFlags(const RuleFeatureSet& features)
m_maxDirectAdjacentSelectors = features.maxDirectAdjacentSelectors();
}
-const Vector<RefPtr<CSSStyleSheet> >& StyleEngine::injectedAuthorStyleSheets() const
+const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& StyleEngine::injectedAuthorStyleSheets() const
{
updateInjectedStyleSheetCache();
return m_injectedAuthorStyleSheets;
@@ -224,7 +231,7 @@ void StyleEngine::updateInjectedStyleSheetCache() const
continue;
if (!URLPatternMatcher::matchesPatterns(m_document.url(), entry->whitelist()))
continue;
- RefPtr<CSSStyleSheet> groupSheet = CSSStyleSheet::createInline(const_cast<Document*>(&m_document), KURL());
+ RefPtrWillBeRawPtr<CSSStyleSheet> groupSheet = CSSStyleSheet::createInline(const_cast<Document*>(&m_document), KURL());
m_injectedAuthorStyleSheets.append(groupSheet);
groupSheet->contents()->parseString(entry->source());
}
@@ -366,7 +373,7 @@ void StyleEngine::clearMediaQueryRuleSetStyleSheets()
void StyleEngine::updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector)
{
ASSERT(!isMaster());
- Vector<RefPtr<StyleSheet> > sheetsForList;
+ WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > sheetsForList;
ImportedDocumentStyleSheetCollector subcollector(parentCollector, sheetsForList);
m_documentStyleSheetCollection.collectStyleSheets(this, subcollector);
m_documentStyleSheetCollection.swapSheetsForSheetList(sheetsForList);
@@ -411,12 +418,12 @@ bool StyleEngine::updateActiveStyleSheets(StyleResolverUpdateMode updateMode)
return requiresFullStyleRecalc;
}
-const Vector<RefPtr<StyleSheet> > StyleEngine::activeStyleSheetsForInspector() const
+const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > StyleEngine::activeStyleSheetsForInspector() const
{
if (m_activeTreeScopes.isEmpty())
return m_documentStyleSheetCollection.styleSheetsForStyleSheetList();
- Vector<RefPtr<StyleSheet> > activeStyleSheets;
+ WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > activeStyleSheets;
activeStyleSheets.appendVector(m_documentStyleSheetCollection.styleSheetsForStyleSheetList());
@@ -628,4 +635,10 @@ void StyleEngine::removeSheet(StyleSheetContents* contents)
sheetToTextCache().remove(contents);
}
+void StyleEngine::trace(Visitor* visitor)
+{
+ m_injectedAuthorStyleSheets.trace(visitor);
haraken 2014/03/12 11:08:21 visitor->trace(m_injectedAuthorStyleSheets)
Erik Corry 2014/03/12 11:48:57 Done.
+ m_authorStyleSheets.trace(visitor);
haraken 2014/03/12 11:08:21 visitor->trace(m_authorStyleSheets);
Erik Corry 2014/03/12 11:48:57 Done.
+}
+
}

Powered by Google App Engine
This is Rietveld 408576698