| Index: Source/core/css/invalidation/StyleInvalidator.h
|
| diff --git a/Source/core/css/invalidation/StyleInvalidator.h b/Source/core/css/invalidation/StyleInvalidator.h
|
| index 440002260098e51a0748129c8d82599039d91aeb..23ba0143a3091bd5b494d28a90f44534a4ebcc84 100644
|
| --- a/Source/core/css/invalidation/StyleInvalidator.h
|
| +++ b/Source/core/css/invalidation/StyleInvalidator.h
|
| @@ -29,7 +29,9 @@ public:
|
| DECLARE_TRACE();
|
|
|
| private:
|
| - struct RecursionData {
|
| + class RecursionData {
|
| + STACK_ALLOCATED();
|
| + public:
|
| RecursionData()
|
| : m_invalidateCustomPseudo(false)
|
| , m_wholeSubtreeInvalid(false)
|
| @@ -47,7 +49,7 @@ private:
|
| bool treeBoundaryCrossing() const { return m_treeBoundaryCrossing; }
|
| bool insertionPointCrossing() const { return m_insertionPointCrossing; }
|
|
|
| - using InvalidationSets = Vector<const DescendantInvalidationSet*, 16>;
|
| + using InvalidationSets = WillBeHeapVector<RawPtrWillBeMember<const DescendantInvalidationSet>, 16>;
|
| InvalidationSets m_invalidationSets;
|
| bool m_invalidateCustomPseudo;
|
| bool m_wholeSubtreeInvalid;
|
| @@ -60,6 +62,7 @@ private:
|
| bool checkInvalidationSetsAgainstElement(Element&, RecursionData&);
|
|
|
| class RecursionCheckpoint {
|
| + STACK_ALLOCATED();
|
| public:
|
| RecursionCheckpoint(RecursionData* data)
|
| : m_prevInvalidationSetsSize(data->m_invalidationSets.size())
|
| @@ -84,6 +87,7 @@ private:
|
| bool m_prevWholeSubtreeInvalid;
|
| bool m_treeBoundaryCrossing;
|
| bool m_insertionPointCrossing;
|
| + // This is a stack reference and need not separate tracing.
|
| RecursionData* m_data;
|
| };
|
|
|
|
|