Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8bbd9b52f488cd4014956a4256e0500737125e4e
https://github.com/WebKit/WebKit/commit/8bbd9b52f488cd4014956a4256e0500737125e4e
Author: Jer Noble <[email protected]>
Date: 2026-03-09 (Mon, 09 Mar 2026)
Changed paths:
M Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/accessibility/AccessibilityListBoxOption.cpp
M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
M Source/WebCore/accessibility/AccessibilityNodeObject.h
A Source/WebCore/accessibility/AccessibilityNodeObjectInlines.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/css/CSSGradientValue.cpp
M Source/WebCore/css/values/color/CSSColor.cpp
M Source/WebCore/css/values/color/CSSColor.h
A Source/WebCore/css/values/color/CSSColorInlines.h
M Source/WebCore/css/values/images/CSSGradient.cpp
M Source/WebCore/css/values/images/CSSGradient.h
A Source/WebCore/css/values/images/CSSGradientInlines.h
M Source/WebCore/dom/Document.cpp
M Source/WebCore/editing/InsertListCommand.h
M Source/WebCore/editing/ReplaceSelectionCommand.cpp
M Source/WebCore/editing/cocoa/DataDetection.mm
M Source/WebCore/html/HTMLAreaElement.cpp
M Source/WebCore/html/HTMLImageElement.cpp
M Source/WebCore/layout/Verification.cpp
M Source/WebCore/layout/formattingContexts/grid/GridFormattingContext.h
M Source/WebCore/layout/formattingContexts/grid/GridLayoutState.h
M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayBox.h
M
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayBoxInlines.h
M Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp
M Source/WebCore/layout/integration/inline/InlineIteratorInlineBox.cpp
M Source/WebCore/layout/integration/inline/InlineIteratorLineBox.h
M Source/WebCore/layout/integration/inline/InlineIteratorLineBoxInlines.h
M Source/WebCore/layout/integration/inline/InlineIteratorLineBoxLegacyPath.h
A
Source/WebCore/layout/integration/inline/InlineIteratorLineBoxLegacyPathInlines.h
M
Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContentPainter.cpp
M Source/WebCore/loader/EmptyClients.cpp
M Source/WebCore/loader/EmptyClients.h
M Source/WebCore/page/FrameView.h
M Source/WebCore/page/LocalFrameView.cpp
M Source/WebCore/page/LocalFrameView.h
M Source/WebCore/page/LocalFrameViewInlines.h
M Source/WebCore/page/LocalFrameViewLayoutContext.cpp
M Source/WebCore/page/scrolling/ScrollLatchingController.cpp
M Source/WebCore/page/writing-tools/WritingToolsController.mm
M Source/WebCore/rendering/AccessibilityRegionContext.h
M Source/WebCore/rendering/FloatingObjects.cpp
M Source/WebCore/rendering/FloatingObjects.h
M Source/WebCore/rendering/InlineBoxPainter.cpp
M Source/WebCore/rendering/LegacyInlineBox.h
A Source/WebCore/rendering/LegacyInlineBoxInlines.h
M Source/WebCore/rendering/LegacyInlineIterator.h
M Source/WebCore/rendering/LegacyInlineIteratorInlines.h
M Source/WebCore/rendering/PaintInfo.h
A Source/WebCore/rendering/PaintInfoInlines.h
M Source/WebCore/rendering/ReferencedSVGResources.cpp
M Source/WebCore/rendering/RenderBlock.cpp
M Source/WebCore/rendering/RenderBlockFlow.cpp
M Source/WebCore/rendering/RenderBlockFlow.h
M Source/WebCore/rendering/RenderBlockFlowInlines.h
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderButton.cpp
M Source/WebCore/rendering/RenderFileUploadControl.cpp
M Source/WebCore/rendering/RenderHighlight.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
M Source/WebCore/rendering/RenderListMarker.cpp
M Source/WebCore/rendering/RenderMeter.h
M Source/WebCore/rendering/RenderReplaced.cpp
M Source/WebCore/rendering/RenderTable.cpp
M Source/WebCore/rendering/TextBoxPainter.cpp
M Source/WebCore/rendering/line/LineBreaker.h
M Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp
M Source/WebCore/rendering/svg/RenderSVGText.cpp
M Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.h
A Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObjectInlines.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.h
A
Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainerInlines.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.h
A
Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradientInlines.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMaskerInlines.h
M
Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceRadialGradientInlines.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShapeInlines.h
M Source/WebCore/rendering/svg/legacy/SVGResources.cpp
M Source/WebCore/rendering/svg/legacy/SVGResourcesCache.cpp
M Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
M Source/WebCore/style/StyleTreeResolver.cpp
M Source/WebCore/style/StyleTreeResolver.h
A Source/WebCore/style/StyleTreeResolverInlines.h
M Source/WebCore/style/values/color/StyleColor.cpp
M Source/WebCore/svg/SVGGElement.cpp
M Source/WebCore/svg/SVGUseElement.cpp
M Source/WebKit/WebProcess/WebPage/DrawingArea.cpp
M Source/WebKit/WebProcess/WebPage/glib/WebPageGLib.cpp
Log Message:
-----------
[Build Speed] Reduce WebCore header parsing time by decoupling expensive
includes
rdar://172034164
https://bugs.webkit.org/show_bug.cgi?id=309459
Reviewed by Tim Horton.
Break transitive include chains that cause expensive headers to be
parsed by translation units that don't need them. The primary technique
is the Inlines.h pattern: move inline method bodies that require
complete types into separate FooInlines.h headers, so the cost is only
paid by files that actually call those methods.
This reduces WebCore debug build frontend parsing time by 317 seconds
(3.7%), from 8559s to 8242s across 822 translation units.
The most impactful change is reducing inclusions of
RenderStyle+GettersInlines.h from 217 to 194 TUs, dropping its
aggregate cost from 1070s to 712s (33% reduction). Twelve headers
that were previously in the top-20 most expensive fell off entirely,
including LegacyInlineTextBox.h, LocalFrameView.h, PaintInfo.h,
AccessibilityRegionContext.h, and several InlineIterator headers.
Summary of changes:
- RenderBlockFlow.h: Remove includes of LegacyLineLayout.h and
FloatingObjects.h. Move all FloatingObject accessor inline bodies
and LegacyLineLayout-dependent methods to RenderBlockFlowInlines.h.
Move FloatingObject::Type to a namespace-scope enum
FloatingObjectType with an explicit underlying type so it can be
forward-declared. Split lowestFloatLogicalBottom() into two
overloads to avoid a default parameter that required the enum
definition.
- FloatingObjects.h: Remove dead include of LegacyRootInlineBox.h.
Move FloatingObject::Type enum to namespace scope as
FloatingObjectType. Add backward-compatible static constexpr
aliases in FloatingObject.
- LegacyInlineBox.h: Remove include of RenderStyle+GettersInlines.h.
Move verticalAlign() to new LegacyInlineBoxInlines.h.
- PaintInfo.h: Remove include of RenderStyle+GettersInlines.h.
Move accessibilityRegionContext() to new PaintInfoInlines.h.
- AccessibilityRegionContext.h: Remove include of
RenderStyle+GettersInlines.h. Move shouldCollectRegion() to
AccessibilityRegionContextInlines.h (via PaintInfoInlines.h).
- LegacyRenderSVGModelObject.h: Remove include of
RenderStyle+GettersInlines.h. Move adjustedTrueZOrder() to new
LegacyRenderSVGModelObjectInlines.h.
- LegacyRenderSVGResourceContainer.h: Remove include of
RenderStyle+GettersInlines.h. Move inline bodies to new
LegacyRenderSVGResourceContainerInlines.h.
- InlineDisplayBox.h: Move isVisibleIgnoringUsedVisibility() to
InlineDisplayBoxInlines.h.
- AccessibilityNodeObject.h: Move hasCursorPointer() to new
AccessibilityNodeObjectInlines.h.
- StyleTreeResolver.h: Move supportsFirstLineAndLetterPseudoElement()
to new StyleTreeResolverInlines.h.
- LocalFrameView.h: Remove include of Page.h. Forward-declare Page
and move safeToPropagateScrollToParent() to LocalFrameViewInlines.h.
- InlineIteratorLineBox.h: Remove include of
LegacyRootInlineBox.h. Move inline bodies to new
InlineIteratorLineBoxInlines.h.
- InlineIteratorLineBoxLegacyPath.h: Remove include of
LegacyRootInlineBox.h. Move inline bodies to new
InlineIteratorLineBoxLegacyPathInlines.h.
- RenderLayerCompositor.h: Remove include of
RenderStyle+GettersInlines.h. Move viewNeedsToInvertColors() to
RenderLayerCompositor.cpp.
- CSSColor.h / CSSGradient.h: Move inline method bodies that
depend on RenderStyle+GettersInlines.h to new CSSColorInlines.h
and CSSGradientInlines.h respectively.
- Various .cpp files: Add direct includes of the new Inlines.h
headers and any previously-transitive includes that are now needed.
Canonical link: https://commits.webkit.org/308951@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications