Title: [204770] releases/WebKitGTK/webkit-2.12/Source/WebCore
Revision
204770
Author
[email protected]
Date
2016-08-23 00:09:02 -0700 (Tue, 23 Aug 2016)

Log Message

Merge r202044 - Make RenderBlock::insertInto/RemoveFromTrackedRendererMaps functions static.
https://bugs.webkit.org/show_bug.cgi?id=158722

Reviewed by Simon Fraser.

These functions manipulate static tracker hashmaps. They don't need to be on RenderBlock.
This is also in preparation for decoupling positioned descendant tracking from descendent percentage height handling.
(gPositionedDescendantsMap and gPercentHeightDescendantsMap)

No change in functionality.

* rendering/RenderBlock.cpp:
(WebCore::insertIntoTrackedRendererMaps):
(WebCore::removeFromTrackedRendererMaps):
(WebCore::removeBlockFromDescendantAndContainerMaps):
(WebCore::RenderBlock::insertPositionedObject):
(WebCore::RenderBlock::addPercentHeightDescendant):
(WebCore::RenderBlock::insertIntoTrackedRendererMaps): Deleted.
(WebCore::RenderBlock::removeFromTrackedRendererMaps): Deleted.
* rendering/RenderBlock.h:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog (204769 => 204770)


--- releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog	2016-08-23 07:07:19 UTC (rev 204769)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog	2016-08-23 07:09:02 UTC (rev 204770)
@@ -1,3 +1,26 @@
+2016-06-14  Zalan Bujtas  <[email protected]>
+
+        Make RenderBlock::insertInto/RemoveFromTrackedRendererMaps functions static.
+        https://bugs.webkit.org/show_bug.cgi?id=158722
+
+        Reviewed by Simon Fraser.
+
+        These functions manipulate static tracker hashmaps. They don't need to be on RenderBlock.
+        This is also in preparation for decoupling positioned descendant tracking from descendent percentage height handling.
+        (gPositionedDescendantsMap and gPercentHeightDescendantsMap) 
+
+        No change in functionality.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::insertIntoTrackedRendererMaps):
+        (WebCore::removeFromTrackedRendererMaps):
+        (WebCore::removeBlockFromDescendantAndContainerMaps):
+        (WebCore::RenderBlock::insertPositionedObject):
+        (WebCore::RenderBlock::addPercentHeightDescendant):
+        (WebCore::RenderBlock::insertIntoTrackedRendererMaps): Deleted.
+        (WebCore::RenderBlock::removeFromTrackedRendererMaps): Deleted.
+        * rendering/RenderBlock.h:
+
 2016-06-12  Zalan Bujtas  <[email protected]>
 
         Cleanup RenderBlock::removePositionedObjects

Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlock.cpp (204769 => 204770)


--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlock.cpp	2016-08-23 07:07:19 UTC (rev 204769)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlock.cpp	2016-08-23 07:09:02 UTC (rev 204770)
@@ -92,6 +92,9 @@
 
 COMPILE_ASSERT(sizeof(RenderBlock) == sizeof(SameSizeAsRenderBlock), RenderBlock_should_stay_small);
 
+typedef WTF::HashMap<const RenderBlock*, std::unique_ptr<TrackedRendererListHashSet>> TrackedDescendantsMap;
+typedef WTF::HashMap<const RenderBox*, std::unique_ptr<HashSet<const RenderBlock*>>> TrackedContainerMap;
+
 static TrackedDescendantsMap* gPositionedDescendantsMap;
 static TrackedDescendantsMap* gPercentHeightDescendantsMap;
 
@@ -98,6 +101,66 @@
 static TrackedContainerMap* gPositionedContainerMap;
 static TrackedContainerMap* gPercentHeightContainerMap;
 
+static void insertIntoTrackedRendererMaps(const RenderBlock& container, RenderBox& descendant, TrackedDescendantsMap*& descendantsMap, TrackedContainerMap*& containerMap, bool forceNewEntry)
+{
+    if (!descendantsMap) {
+        descendantsMap = new TrackedDescendantsMap;
+        containerMap = new TrackedContainerMap;
+    }
+    
+    auto* descendantSet = descendantsMap->get(&container);
+    if (!descendantSet) {
+        descendantSet = new TrackedRendererListHashSet;
+        descendantsMap->set(&container, std::unique_ptr<TrackedRendererListHashSet>(descendantSet));
+    }
+    
+    if (forceNewEntry) {
+        descendantSet->remove(&descendant);
+        containerMap->remove(&descendant);
+    }
+    
+    bool added = descendantSet->add(&descendant).isNewEntry;
+    if (!added) {
+        ASSERT(containerMap->get(&descendant));
+        ASSERT(containerMap->get(&descendant)->contains(&container));
+        return;
+    }
+    
+    auto* containerSet = containerMap->get(&descendant);
+    if (!containerSet) {
+        containerSet = new HashSet<const RenderBlock*>;
+        containerMap->set(&descendant, std::unique_ptr<HashSet<const RenderBlock*>>(containerSet));
+    }    
+    ASSERT(!containerSet->contains(&container));
+    containerSet->add(&container);
+}
+
+static void removeFromTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*& descendantsMap, TrackedContainerMap*& containerMap)
+{
+    if (!descendantsMap)
+        return;
+    
+    std::unique_ptr<HashSet<const RenderBlock*>> containerSet = containerMap->take(&descendant);
+    if (!containerSet)
+        return;
+    
+    for (auto* container : *containerSet) {
+        // FIXME: Disabling this assert temporarily until we fix the layout
+        // bugs associated with positioned objects not properly cleared from
+        // their ancestor chain before being moved. See webkit bug 93766.
+        // ASSERT(descendant->isDescendantOf(container));
+        auto descendantsMapIterator = descendantsMap->find(container);
+        ASSERT(descendantsMapIterator != descendantsMap->end());
+        if (descendantsMapIterator == descendantsMap->end())
+            continue;
+        auto* descendantSet = descendantsMapIterator->value.get();
+        ASSERT(descendantSet->contains(&descendant));
+        descendantSet->remove(&descendant);
+        if (descendantSet->isEmpty())
+            descendantsMap->remove(descendantsMapIterator);
+    }
+}
+
 typedef HashMap<RenderBlock*, std::unique_ptr<ListHashSet<RenderInline*>>> ContinuationOutlineTableMap;
 
 struct UpdateScrollInfoAfterLayoutTransaction {
@@ -201,7 +264,7 @@
             ASSERT(it != containerMap->end());
             if (it == containerMap->end())
                 continue;
-            HashSet<RenderBlock*>* containerSet = it->value.get();
+            auto* containerSet = it->value.get();
             ASSERT(containerSet->contains(block));
             containerSet->remove(block);
             if (containerSet->isEmpty())
@@ -2113,69 +2176,6 @@
     return beforeBlock;
 }
 
-void RenderBlock::insertIntoTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*& descendantsMap, TrackedContainerMap*& containerMap, bool forceNewEntry)
-{
-    if (!descendantsMap) {
-        descendantsMap = new TrackedDescendantsMap;
-        containerMap = new TrackedContainerMap;
-    }
-    
-    TrackedRendererListHashSet* descendantSet = descendantsMap->get(this);
-    if (!descendantSet) {
-        descendantSet = new TrackedRendererListHashSet;
-        descendantsMap->set(this, std::unique_ptr<TrackedRendererListHashSet>(descendantSet));
-    }
-    
-    if (forceNewEntry) {
-        descendantSet->remove(&descendant);
-        containerMap->remove(&descendant);
-    }
-    
-    bool added = descendantSet->add(&descendant).isNewEntry;
-    if (!added) {
-        ASSERT(containerMap->get(&descendant));
-        ASSERT(containerMap->get(&descendant)->contains(this));
-        return;
-    }
-    
-    HashSet<RenderBlock*>* containerSet = containerMap->get(&descendant);
-    if (!containerSet) {
-        containerSet = new HashSet<RenderBlock*>;
-        containerMap->set(&descendant, std::unique_ptr<HashSet<RenderBlock*>>(containerSet));
-    }    
-    ASSERT(!containerSet->contains(this));
-    containerSet->add(this);
-}
-
-void RenderBlock::removeFromTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*& descendantsMap, TrackedContainerMap*& containerMap)
-{
-    if (!descendantsMap)
-        return;
-    
-    std::unique_ptr<HashSet<RenderBlock*>> containerSet = containerMap->take(&descendant);
-    if (!containerSet)
-        return;
-    
-    for (auto it = containerSet->begin(), end = containerSet->end(); it != end; ++it) {
-        RenderBlock* container = *it;
-
-        // FIXME: Disabling this assert temporarily until we fix the layout
-        // bugs associated with positioned objects not properly cleared from
-        // their ancestor chain before being moved. See webkit bug 93766.
-        // ASSERT(descendant->isDescendantOf(container));
-
-        TrackedDescendantsMap::iterator descendantsMapIterator = descendantsMap->find(container);
-        ASSERT(descendantsMapIterator != descendantsMap->end());
-        if (descendantsMapIterator == descendantsMap->end())
-            continue;
-        TrackedRendererListHashSet* descendantSet = descendantsMapIterator->value.get();
-        ASSERT(descendantSet->contains(&descendant));
-        descendantSet->remove(&descendant);
-        if (descendantSet->isEmpty())
-            descendantsMap->remove(descendantsMapIterator);
-    }
-}
-
 TrackedRendererListHashSet* RenderBlock::positionedObjects() const
 {
     if (gPositionedDescendantsMap)
@@ -2189,8 +2189,8 @@
 
     if (positioned.isRenderFlowThread())
         return;
-    
-    insertIntoTrackedRendererMaps(positioned, gPositionedDescendantsMap, gPositionedContainerMap, isRenderView());
+
+    insertIntoTrackedRendererMaps(*this, positioned, gPositionedDescendantsMap, gPositionedContainerMap, isRenderView());
 }
 
 void RenderBlock::removePositionedObject(RenderBox& rendererToRemove)
@@ -2225,7 +2225,7 @@
 
 void RenderBlock::addPercentHeightDescendant(RenderBox& descendant)
 {
-    insertIntoTrackedRendererMaps(descendant, gPercentHeightDescendantsMap, gPercentHeightContainerMap);
+    insertIntoTrackedRendererMaps(*this, descendant, gPercentHeightDescendantsMap, gPercentHeightContainerMap, false);
 }
 
 void RenderBlock::removePercentHeightDescendant(RenderBox& descendant)

Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlock.h (204769 => 204770)


--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlock.h	2016-08-23 07:07:19 UTC (rev 204769)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlock.h	2016-08-23 07:09:02 UTC (rev 204770)
@@ -42,8 +42,6 @@
 struct PaintInfo;
 
 typedef WTF::ListHashSet<RenderBox*> TrackedRendererListHashSet;
-typedef WTF::HashMap<const RenderBlock*, std::unique_ptr<TrackedRendererListHashSet>> TrackedDescendantsMap;
-typedef WTF::HashMap<const RenderBox*, std::unique_ptr<HashSet<RenderBlock*>>> TrackedContainerMap;
 
 enum CaretType { CursorCaret, DragCaret };
 enum ContainingBlockState { NewContainingBlock, SameContainingBlock };
@@ -420,9 +418,6 @@
     // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to RenderBlockFlow
     virtual bool hasLines() const { return false; }
 
-    void insertIntoTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*&, TrackedContainerMap*&, bool forceNewEntry = false);
-    static void removeFromTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*&, TrackedContainerMap*&);
-
     void createFirstLetterRenderer(RenderElement* firstLetterBlock, RenderText* currentTextChild);
     void updateFirstLetterStyle(RenderElement* firstLetterBlock, RenderObject* firstLetterContainer);
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to