Index: Source/core/rendering/RenderObject.cpp |
diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
index 2772d053cb54e5454e14fc5d323de93a3ff39d7f..8b696c20d161dffec7aa4626ed11f7cfd482f77a 100644 |
--- a/Source/core/rendering/RenderObject.cpp |
+++ b/Source/core/rendering/RenderObject.cpp |
@@ -99,6 +99,20 @@ namespace { |
static bool gModifyRenderTreeStructureAnyState = false; |
+bool firstPaintInvalidationTrackingEnabled() |
+{ |
+ bool isEnabled; |
+ TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), &isEnabled); |
+ return isEnabled; |
+} |
+ |
+typedef WillBeHeapHashSet<RawPtrWillBeWeakMember<const RenderObject> > RenderObjectWeakSet; |
+RenderObjectWeakSet& renderObjectNeverHadPaintInvalidationSet() |
+{ |
+ DEFINE_STATIC_LOCAL(RenderObjectWeakSet, set, ()); |
+ return set; |
+} |
+ |
} // namespace |
using namespace HTMLNames; |
@@ -233,6 +247,9 @@ RenderObject::RenderObject(Node* node) |
#endif |
, m_bitfields(node) |
{ |
+ if (firstPaintInvalidationTrackingEnabled()) |
+ renderObjectNeverHadPaintInvalidationSet().add(this); |
+ |
#ifndef NDEBUG |
renderObjectCounter.increment(); |
#endif |
@@ -241,6 +258,9 @@ RenderObject::RenderObject(Node* node) |
RenderObject::~RenderObject() |
{ |
+ if (firstPaintInvalidationTrackingEnabled()) |
+ renderObjectNeverHadPaintInvalidationSet().remove(this); |
+ |
ASSERT(!m_hasAXObject); |
#if ENABLE(OILPAN) |
ASSERT(m_didCallDestroy); |
@@ -1412,6 +1432,20 @@ void RenderObject::paint(PaintInfo&, const LayoutPoint&) |
{ |
} |
+void RenderObject::setHadPaintInvalidation() |
+{ |
+ if (firstPaintInvalidationTrackingEnabled()) |
+ renderObjectNeverHadPaintInvalidationSet().remove(this); |
+} |
+ |
+bool RenderObject::hadPaintInvalidation() const |
+{ |
+ if (firstPaintInvalidationTrackingEnabled()) |
+ return true; |
+ |
+ return !renderObjectNeverHadPaintInvalidationSet().contains(this); |
+} |
+ |
const RenderLayerModelObject* RenderObject::containerForPaintInvalidation() const |
{ |
if (!isRooted()) |