Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0635672c86b4a255ce06cea8223b248703ee6151
      
https://github.com/WebKit/WebKit/commit/0635672c86b4a255ce06cea8223b248703ee6151
  Author: Jer Noble <[email protected]>
  Date:   2025-10-04 (Sat, 04 Oct 2025)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/SaferCPPExpectations/ForwardDeclCheckerExpectations
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/dom/ViewTransition.h
    M Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm
    M Source/WebCore/html/canvas/PlaceholderRenderingContext.cpp
    M Source/WebCore/inspector/InspectorCanvas.cpp
    M Source/WebCore/inspector/InspectorCanvas.h
    M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp
    M Source/WebCore/loader/EmptyClients.h
    M Source/WebCore/page/ChromeClient.h
    M Source/WebCore/page/DebugPageOverlays.cpp
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/PageOverlayController.cpp
    M Source/WebCore/page/PageOverlayController.h
    M Source/WebCore/page/TextIndicator.cpp
    M Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm
    M Source/WebCore/page/mac/ServicesOverlayController.h
    M Source/WebCore/platform/graphics/GraphicsLayer.cpp
    M Source/WebCore/platform/graphics/GraphicsLayer.h
    M Source/WebCore/platform/graphics/GraphicsLayerContentsDisplayDelegate.cpp
    M Source/WebCore/platform/graphics/GraphicsLayerContentsDisplayDelegate.h
    A Source/WebCore/platform/graphics/GraphicsLayerEnums.h
    M Source/WebCore/platform/graphics/GraphicsLayerFactory.h
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
    M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
    M Source/WebCore/platform/graphics/ca/PlatformCALayer.mm
    M Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h
    M Source/WebCore/platform/graphics/ca/TileController.h
    M Source/WebCore/platform/graphics/ca/TileCoverageMap.h
    M Source/WebCore/platform/graphics/ca/TileGrid.cpp
    M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm
    M Source/WebCore/platform/graphics/cg/ImageUtilitiesCG.cpp
    M Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h
    M 
Source/WebCore/platform/graphics/texmap/coordinated/GraphicsLayerAsyncContentsDisplayDelegateCoordinated.h
    M 
Source/WebCore/platform/graphics/texmap/coordinated/GraphicsLayerContentsDisplayDelegateCoordinated.h
    M 
Source/WebCore/platform/graphics/texmap/coordinated/GraphicsLayerCoordinated.cpp
    M 
Source/WebCore/platform/graphics/texmap/coordinated/GraphicsLayerCoordinated.h
    M Source/WebCore/platform/mac/DataDetectorHighlight.h
    M Source/WebCore/rendering/CSSFilterRenderer.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayer.h
    M Source/WebCore/rendering/RenderLayerBacking.cpp
    M Source/WebCore/rendering/RenderLayerBacking.h
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderTreeAsText.cpp
    M Source/WebCore/rendering/RenderView.cpp
    M Source/WebCore/testing/Internals.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
    M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/ModelElementController.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteSnapshotRecorderProxy.h
    M 
Source/WebKit/WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm
    M 
Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDataDetectorOverlayController.h
    M 
Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFPresentationController.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm
    M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemoteProperties.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h
    M Source/WebKit/WebProcess/WebPage/wc/GraphicsLayerWC.cpp
    M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h

  Log Message:
  -----------
  [Build Speed] Make GraphicsLayer.h less expensive
rdar://161829723
https://bugs.webkit.org/show_bug.cgi?id=300033

Reviewed by Ryosuke Niwa.

Prior to this patch, GraphicsLayer.h was the 3rd most expensive header used in
WebCore; it is included 268 times in a WebCore Unified build, and on this
machine, each include of that file took the compiler on avegare 1.3s to parse,
for a total of 5.9m CPU minutes of time spent parsing this header.

The primary cause of GraphicsLayer.h being included in a compliation unit was
that it was included by GraphicsLayerContentsDisplayDelegate.h, which only
needed a forward declaration of an enum defined within the GraphicsLayer class
itself. This enum–along with every other enum defined within GraphicsLayer–was
moved into a new GraphicsLayerEnums.h header, and those enums were pulled back
into GraphicsLayer via a using statement. I then looked at every header which
included GraphicsLayer.h and: converted every use of GraphicsLayer enums to use
the new enums defined in GraphicsLayerEnums.h, added a forward declaration for
GraphicsLayer, and removed the GraphicsLayer.h header where possible.

After this patch, GraphicsLayer.h is now the 67th most expensive header used in
WebCore; it is included 37 times, for a total of 49s CPU seconds of time spent
parsing this header, a reduction of 5.1m.

Canonical link: https://commits.webkit.org/301010@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to