Index: third_party/WebKit/Source/core/css/invalidation/InvalidationSet.cpp |
diff --git a/third_party/WebKit/Source/core/css/invalidation/InvalidationSet.cpp b/third_party/WebKit/Source/core/css/invalidation/InvalidationSet.cpp |
index 180c313bdc5b25b1a1b04d34f84a1a3482ab9d90..1eff1df6ad564b613f39d7b24a666aae306f7c60 100644 |
--- a/third_party/WebKit/Source/core/css/invalidation/InvalidationSet.cpp |
+++ b/third_party/WebKit/Source/core/css/invalidation/InvalidationSet.cpp |
@@ -51,8 +51,9 @@ void InvalidationSet::cacheTracingFlag() |
s_tracingEnabled = TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking")); |
} |
-InvalidationSet::InvalidationSet() |
- : m_allDescendantsMightBeInvalid(false) |
+InvalidationSet::InvalidationSet(InvalidationType type) |
+ : m_type(type) |
+ , m_allDescendantsMightBeInvalid(false) |
, m_invalidatesSelf(false) |
, m_customPseudoInvalid(false) |
, m_treeBoundaryCrossing(false) |
@@ -99,6 +100,8 @@ bool InvalidationSet::invalidatesElement(Element& element) const |
void InvalidationSet::combine(const InvalidationSet& other) |
{ |
+ ASSERT(m_type == other.m_type); |
+ |
// No longer bother combining data structures, since the whole subtree is deemed invalid. |
if (wholeSubtreeInvalid()) |
return; |
@@ -141,6 +144,14 @@ void InvalidationSet::combine(const InvalidationSet& other) |
} |
} |
+void InvalidationSet::destroy() |
+{ |
+ if (isDescendantInvalidationSet()) |
+ delete toDescendantInvalidationSet(this); |
+ else |
+ delete toSiblingInvalidationSet(this); |
+} |
+ |
HashSet<AtomicString>& InvalidationSet::ensureClassSet() |
{ |
if (!m_classes) |
@@ -270,7 +281,8 @@ void InvalidationSet::show() const |
#endif // NDEBUG |
SiblingInvalidationSet::SiblingInvalidationSet() |
- : m_maxDirectAdjacentSelectors(1) |
+ : InvalidationSet(InvalidateSiblings) |
+ , m_maxDirectAdjacentSelectors(1) |
, m_descendantInvalidationSet(DescendantInvalidationSet::create()) |
{ |
} |