Title: [283441] trunk/Source/WebCore
Revision
283441
Author
[email protected]
Date
2021-10-02 06:40:20 -0700 (Sat, 02 Oct 2021)

Log Message

[Performance] Optimize RenderLayer::establishesTopLayer
https://bugs.webkit.org/show_bug.cgi?id=231016

Reviewed by Simon Fraser.

This patch added isInTopLayerOrBackdrop to reduce the times of calling renderer().element() in RenderLayer::establishesTopLayer.
And isInTopLayerOrBackdrop can be shared in Adjuster.

* dom/Element.h:
(WebCore::isInTopLayerOrBackdrop):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::establishesTopLayer const):
* style/StyleAdjuster.cpp:
(WebCore::Style::Adjuster::adjust const):
(WebCore::Style::Adjuster::adjustDisplayContentsStyle const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (283440 => 283441)


--- trunk/Source/WebCore/ChangeLog	2021-10-02 13:34:43 UTC (rev 283440)
+++ trunk/Source/WebCore/ChangeLog	2021-10-02 13:40:20 UTC (rev 283441)
@@ -1,3 +1,21 @@
+2021-10-02  Cathie Chen  <[email protected]>
+
+        [Performance] Optimize RenderLayer::establishesTopLayer
+        https://bugs.webkit.org/show_bug.cgi?id=231016
+
+        Reviewed by Simon Fraser.
+
+        This patch added isInTopLayerOrBackdrop to reduce the times of calling renderer().element() in RenderLayer::establishesTopLayer.
+        And isInTopLayerOrBackdrop can be shared in Adjuster.
+
+        * dom/Element.h:
+        (WebCore::isInTopLayerOrBackdrop):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::establishesTopLayer const):
+        * style/StyleAdjuster.cpp:
+        (WebCore::Style::Adjuster::adjust const):
+        (WebCore::Style::Adjuster::adjustDisplayContentsStyle const):
+
 2021-10-02  Alan Bujtas  <[email protected]>
 
         [LFC][IFC] Do not reuse the overflowing width on the next line when first line style is different

Modified: trunk/Source/WebCore/dom/Element.h (283440 => 283441)


--- trunk/Source/WebCore/dom/Element.h	2021-10-02 13:34:43 UTC (rev 283440)
+++ trunk/Source/WebCore/dom/Element.h	2021-10-02 13:40:20 UTC (rev 283441)
@@ -29,6 +29,7 @@
 #include "ElementData.h"
 #include "FocusOptions.h"
 #include "HTMLNames.h"
+#include "RenderStyle.h"
 #include "ScrollTypes.h"
 #include "ShadowRootInit.h"
 #include "ShadowRootMode.h"
@@ -871,6 +872,11 @@
     return getAttribute(names...);
 }
 
+inline bool isInTopLayerOrBackdrop(const RenderStyle& style, const Element* element)
+{
+    return (element && element->isInTopLayer()) || style.styleType() == PseudoId::Backdrop;
+}
+
 } // namespace WebCore
 
 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::Element)

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (283440 => 283441)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2021-10-02 13:34:43 UTC (rev 283440)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2021-10-02 13:40:20 UTC (rev 283441)
@@ -3981,10 +3981,7 @@
 
 bool RenderLayer::establishesTopLayer() const
 {
-    if (!renderer().element())
-        return renderer().style().styleType() == PseudoId::Backdrop;
-
-    return renderer().element()->isInTopLayer();
+    return isInTopLayerOrBackdrop(renderer().style(), renderer().element());
 }
 
 void RenderLayer::establishesTopLayerWillChange()

Modified: trunk/Source/WebCore/style/StyleAdjuster.cpp (283440 => 283441)


--- trunk/Source/WebCore/style/StyleAdjuster.cpp	2021-10-02 13:34:43 UTC (rev 283440)
+++ trunk/Source/WebCore/style/StyleAdjuster.cpp	2021-10-02 13:40:20 UTC (rev 283441)
@@ -316,7 +316,7 @@
 
         // Top layer elements are always position: absolute; unless the position is set to fixed.
         // https://fullscreen.spec.whatwg.org/#new-stacking-layer
-        bool isInTopLayer = style.styleType() == PseudoId::Backdrop || (m_element && m_element->isInTopLayer());
+        bool isInTopLayer = isInTopLayerOrBackdrop(style, m_element);
         if (style.position() != PositionType::Absolute && style.position() != PositionType::Fixed && isInTopLayer)
             style.setPosition(PositionType::Absolute);
 
@@ -596,7 +596,7 @@
 
 void Adjuster::adjustDisplayContentsStyle(RenderStyle& style) const
 {
-    bool isInTopLayer = style.styleType() == PseudoId::Backdrop || (m_element && m_element->isInTopLayer());
+    bool isInTopLayer = isInTopLayerOrBackdrop(style, m_element);
     if (isInTopLayer || m_document.documentElement() == m_element) {
         style.setEffectiveDisplay(DisplayType::Block);
         return;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to