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