Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8b7bc22a8c879f1a47bd4966fa30b8a4ce3216ed
https://github.com/WebKit/WebKit/commit/8b7bc22a8c879f1a47bd4966fa30b8a4ce3216ed
Author: Antti Koivisto <[email protected]>
Date: 2023-09-03 (Sun, 03 Sep 2023)
Changed paths:
M Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp
M Source/WebCore/rendering/style/StyleCustomPropertyData.cpp
M Source/WebCore/rendering/style/StyleCustomPropertyData.h
M Source/WebCore/style/Styleable.cpp
Log Message:
-----------
Allow using longer ancestor chains in StyleCustomPropertyData
https://bugs.webkit.org/show_bug.cgi?id=261025
rdar://114815380
Reviewed by Cameron McCormack.
Currently only one ancestor is allowed. It is typical to have many properties
defined on :root.
If we have more definitions further down the tree on multiple levels then all
those properties get
copied and we can get large maps duplicated to many elements. This also makes
equality comparisons slow.
* Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp:
(WebCore::ComputedStylePropertyMapReadOnly::entries const):
* Source/WebCore/rendering/style/StyleCustomPropertyData.cpp:
(WebCore::StyleCustomPropertyData::StyleCustomPropertyData):
If the parent has more than 8 own properties link to it instead of copying it
even
if it already has a parent.
Also limit the maximum ancestor list size to 4.
(WebCore::StyleCustomPropertyData::get const):
(WebCore::StyleCustomPropertyData::set):
Add some asserts.
(WebCore::StyleCustomPropertyData::operator== const):
Shortcut the equality comparison in case the parents are the same.
Use forEach for the slow path.
(WebCore::StyleCustomPropertyData::forEachInternal const):
(WebCore::StyleCustomPropertyData::forEach const):
Traverse all ancestors.
Add IterationStatus return value so iteration can be broken early.
Add templated traversal that avoid Function<> for internal use.
(WebCore::StyleCustomPropertyData::findKeyAtIndex const):
(WebCore::StyleCustomPropertyData::size const):
We now always track the full size so no need to traverse ancestors for it.
* Source/WebCore/rendering/style/StyleCustomPropertyData.h:
* Source/WebCore/style/Styleable.cpp:
(WebCore::Styleable::updateCSSTransitions const):
Canonical link: https://commits.webkit.org/267595@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes