Index: Source/core/dom/DocumentStyleSheetCollector.h |
diff --git a/Source/core/dom/DocumentStyleSheetCollector.h b/Source/core/dom/DocumentStyleSheetCollector.h |
index fd1ab1bc7382263c317cd1f8e9aecefb456096a2..bc2c6ff8f3018d62e0b4e89b4b199c8998d2f9f2 100644 |
--- a/Source/core/dom/DocumentStyleSheetCollector.h |
+++ b/Source/core/dom/DocumentStyleSheetCollector.h |
@@ -27,6 +27,7 @@ |
#ifndef DocumentStyleSheetCollector_h |
#define DocumentStyleSheetCollector_h |
+#include "heap/Handle.h" |
#include "wtf/HashSet.h" |
#include "wtf/RefPtr.h" |
#include "wtf/Vector.h" |
@@ -39,13 +40,17 @@ class StyleSheet; |
class StyleSheetCollection; |
class DocumentStyleSheetCollector { |
+ // This class contains references to two on-heap collections, therefore |
+ // it's unhealthy to have it anywhere but on the stack, where stack |
+ // scanning wil keep them alive. |
+ STACK_ALLOCATED(); |
public: |
friend class ImportedDocumentStyleSheetCollector; |
- DocumentStyleSheetCollector(Vector<RefPtr<StyleSheet> >& sheetsForList, Vector<RefPtr<CSSStyleSheet> >& activeList, HashSet<Document*>&); |
+ DocumentStyleSheetCollector(WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& sheetsForList, WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& activeList, HashSet<Document*>&); |
~DocumentStyleSheetCollector(); |
- void appendActiveStyleSheets(const Vector<RefPtr<CSSStyleSheet> >&); |
+ void appendActiveStyleSheets(const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >&); |
void appendActiveStyleSheet(CSSStyleSheet*); |
void appendSheetForList(StyleSheet*); |
@@ -53,8 +58,8 @@ public: |
void willVisit(Document* document) { m_visitedDocuments.add(document); } |
private: |
- Vector<RefPtr<StyleSheet> >& m_styleSheetsForStyleSheetList; |
- Vector<RefPtr<CSSStyleSheet> >& m_activeAuthorStyleSheets; |
+ WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& m_styleSheetsForStyleSheetList; |
+ WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& m_activeAuthorStyleSheets; |
HashSet<Document*>& m_visitedDocuments; |
}; |
@@ -67,7 +72,7 @@ private: |
class ImportedDocumentStyleSheetCollector FINAL : public DocumentStyleSheetCollector { |
public: |
- ImportedDocumentStyleSheetCollector(DocumentStyleSheetCollector&, Vector<RefPtr<StyleSheet> >&); |
+ ImportedDocumentStyleSheetCollector(DocumentStyleSheetCollector&, WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >&); |
}; |
} // namespace WebCore |