Title: [249045] trunk/Source/WebCore
- Revision
- 249045
- Author
- simon.fra...@apple.com
- Date
- 2019-08-23 08:31:12 -0700 (Fri, 23 Aug 2019)
Log Message
Cache hasCompositedScrollableOverflow as a bit on RenderLayer
https://bugs.webkit.org/show_bug.cgi?id=201065
Reviewed by Zalan Bujtas.
hasCompositedScrollableOverflow() is pretty hot on some compositing-related code paths, and isn't
super cheap, as it checks a Setting and calls into renderer code. Optimize by computing it in
computeScrollDimensions().
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::hasCompositedScrollableOverflow const):
(WebCore::RenderLayer::computeScrollDimensions):
* rendering/RenderLayer.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (249044 => 249045)
--- trunk/Source/WebCore/ChangeLog 2019-08-23 15:14:46 UTC (rev 249044)
+++ trunk/Source/WebCore/ChangeLog 2019-08-23 15:31:12 UTC (rev 249045)
@@ -1,5 +1,22 @@
2019-08-23 Simon Fraser <simon.fra...@apple.com>
+ Cache hasCompositedScrollableOverflow as a bit on RenderLayer
+ https://bugs.webkit.org/show_bug.cgi?id=201065
+
+ Reviewed by Zalan Bujtas.
+
+ hasCompositedScrollableOverflow() is pretty hot on some compositing-related code paths, and isn't
+ super cheap, as it checks a Setting and calls into renderer code. Optimize by computing it in
+ computeScrollDimensions().
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::hasCompositedScrollableOverflow const):
+ (WebCore::RenderLayer::computeScrollDimensions):
+ * rendering/RenderLayer.h:
+
+2019-08-23 Simon Fraser <simon.fra...@apple.com>
+
Don't call clipCrossesPaintingBoundary() when not necessary
https://bugs.webkit.org/show_bug.cgi?id=201064
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (249044 => 249045)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2019-08-23 15:14:46 UTC (rev 249044)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2019-08-23 15:31:12 UTC (rev 249045)
@@ -308,6 +308,7 @@
, m_has3DTransformedDescendant(false)
, m_hasCompositingDescendant(false)
, m_hasCompositedScrollingAncestor(false)
+ , m_hasCompositedScrollableOverflow(false)
, m_hasTransformedAncestor(false)
, m_has3DTransformedAncestor(false)
, m_indirectCompositingReason(static_cast<unsigned>(IndirectCompositingReason::None))
@@ -2288,11 +2289,6 @@
#endif
}
-bool RenderLayer::hasCompositedScrollableOverflow() const
-{
- return canUseCompositedScrolling() && (hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
-}
-
#if ENABLE(IOS_TOUCH_EVENTS)
bool RenderLayer::handleTouchEvent(const PlatformTouchEvent& touchEvent)
{
@@ -3571,6 +3567,8 @@
scrollableLeftOverflow -= verticalScrollbarWidth();
int scrollableTopOverflow = roundToInt(overflowTop() - box->borderTop());
setScrollOrigin(IntPoint(-scrollableLeftOverflow, -scrollableTopOverflow));
+
+ m_hasCompositedScrollableOverflow = canUseCompositedScrolling() && (hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
}
bool RenderLayer::hasScrollableHorizontalOverflow() const
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (249044 => 249045)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2019-08-23 15:14:46 UTC (rev 249044)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2019-08-23 15:31:12 UTC (rev 249045)
@@ -493,7 +493,7 @@
// Returns true when the layer could do touch scrolling, but doesn't look at whether there is actually scrollable overflow.
bool canUseCompositedScrolling() const;
// Returns true when there is actually scrollable overflow (requires layout to be up-to-date).
- bool hasCompositedScrollableOverflow() const;
+ bool hasCompositedScrollableOverflow() const { return m_hasCompositedScrollableOverflow; }
int verticalScrollbarWidth(OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const;
int horizontalScrollbarHeight(OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const;
@@ -1233,6 +1233,7 @@
bool m_hasCompositingDescendant : 1; // In the z-order tree.
bool m_hasCompositedScrollingAncestor : 1; // In the layer-order tree.
+ bool m_hasCompositedScrollableOverflow : 1;
bool m_hasTransformedAncestor : 1;
bool m_has3DTransformedAncestor : 1;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes