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

Reply via email to