Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cd6ef8e35e3f4e9302692cb9850d03f3ffb80097
https://github.com/WebKit/WebKit/commit/cd6ef8e35e3f4e9302692cb9850d03f3ffb80097
Author: Nathan Solomon <[email protected]>
Date: 2026-09-16 (Wed, 16 Sep 2026)
Changed paths:
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderBox.h
Log Message:
-----------
Store RenderBox overriding sizes in a per-box struct instead of in global
weak hash maps
https://bugs.webkit.org/show_bug.cgi?id=324187
rdar://187407218
Reviewed by Alan Baradlay.
Overriding logical sizes for flex and grid items were previously stored in six
global
SingleThreadWeakHashMaps keyed on the RenderBox. Every get/set/clear was a hash
+ weak-ptr
probe, plus occasional removeNullReferences() cleanup and rehashing. This was
an inlined
cost for a few getters/setters/clearers related to logical width and height
during layout.
These were per-box values read via RenderBox identity.
To improve performance, move this per RenderBox-data to a struct that each
RenderBox holds a
handle to directly. get/set/clear operations now become a pointer-null-check +
struct field
access. This makes the map access and maintenance work go away at the tradeoff
of adding 8
bytes to RenderBox.
No new tests since there is no behavior change, just changing implementation
details.
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::ensureOverridingSizes):
(WebCore::RenderBox::setOverridingBorderBoxLogicalHeight):
(WebCore::RenderBox::setOverridingBorderBoxLogicalWidth):
(WebCore::RenderBox::clearOverridingBorderBoxLogicalHeight):
(WebCore::RenderBox::clearOverridingBorderBoxLogicalWidth):
(WebCore::RenderBox::overridingBorderBoxLogicalWidth const):
(WebCore::RenderBox::overridingBorderBoxLogicalHeight const):
(WebCore::RenderBox::gridAreaContentLogicalWidth const):
(WebCore::RenderBox::gridAreaContentLogicalHeight const):
(WebCore::RenderBox::setGridAreaContentLogicalWidth):
(WebCore::RenderBox::setGridAreaContentLogicalHeight):
(WebCore::RenderBox::clearGridAreaContentSize):
(WebCore::RenderBox::clearGridAreaContentLogicalHeight):
(WebCore::RenderBox::overridingLogicalHeightForFlexBasisComputation const):
(WebCore::RenderBox::setOverridingBorderBoxLogicalHeightForFlexBasisComputation):
(WebCore::RenderBox::clearOverridingLogicalHeightForFlexBasisComputation):
(WebCore::RenderBox::overridingLogicalWidthForFlexBasisComputation const):
(WebCore::RenderBox::setOverridingBorderBoxLogicalWidthForFlexBasisComputation):
(WebCore::RenderBox::clearOverridingLogicalWidthForFlexBasisComputation):
* Source/WebCore/rendering/RenderBox.h:
Canonical link: https://commits.webkit.org/321267@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications