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

Reply via email to