Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f5e0197a95fb6c966535fd1fa9d8db6ffc1964e2
      
https://github.com/WebKit/WebKit/commit/f5e0197a95fb6c966535fd1fa9d8db6ffc1964e2
  Author: Jer Noble <[email protected]>
  Date:   2026-05-06 (Wed, 06 May 2026)

  Changed paths:
    M Source/JavaScriptCore/runtime/BufferMemoryHandle.h
    A Source/WTF/SaferCPPExpectations/ForwardDeclCheckerExpectations
    M Source/WTF/WTF.xcodeproj/project.pbxproj
    M Source/WTF/wtf/AutomaticThread.h
    M Source/WTF/wtf/CMakeLists.txt
    M Source/WTF/wtf/CheckedRef.h
    M Source/WTF/wtf/CrossThreadTaskHandler.cpp
    M Source/WTF/wtf/CrossThreadTaskHandler.h
    A Source/WTF/wtf/CurrentThread.cpp
    A Source/WTF/wtf/CurrentThread.h
    M Source/WTF/wtf/DataLog.cpp
    M Source/WTF/wtf/DataMutex.h
    M Source/WTF/wtf/FileSystem.cpp
    M Source/WTF/wtf/NativePromise.h
    M Source/WTF/wtf/ParallelHelperPool.h
    M Source/WTF/wtf/RecursiveLockAdapter.h
    M Source/WTF/wtf/RunLoop.cpp
    M Source/WTF/wtf/RunLoop.h
    M Source/WTF/wtf/SequesteredAllocator.h
    M Source/WTF/wtf/SequesteredAutomaticThread.h
    M Source/WTF/wtf/SequesteredImmortalHeap.h
    M Source/WTF/wtf/SingleThreadIntegralWrapper.h
    M Source/WTF/wtf/ThreadSpecific.h
    M Source/WTF/wtf/Threading.h
    A Source/WTF/wtf/ThreadingEnums.h
    M Source/WTF/wtf/WeakPtr.h
    M Source/WTF/wtf/WeakPtrImpl.h
    M Source/WTF/wtf/WeakRef.h
    M Source/WTF/wtf/WorkQueue.h
    M Source/WTF/wtf/generic/WorkQueueGeneric.cpp
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUExternalTexture.h
    M Source/WebCore/Modules/mediasession/MediaPositionState.h
    M Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp
    M Source/WebCore/Modules/webaudio/BaseAudioContext.h
    M Source/WebCore/Modules/webaudio/GainNode.h
    M Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h
    M Source/WebCore/Modules/webdatabase/DatabaseContext.h
    M Source/WebCore/Modules/webdatabase/DatabaseDetails.h
    M Source/WebCore/Modules/webdatabase/DatabaseManager.cpp
    M Source/WebCore/PAL/pal/system/mac/SystemSleepListenerMac.h
    M Source/WebCore/SaferCPPExpectations/ForwardDeclCheckerExpectations
    M Source/WebCore/accessibility/AXCrossProcessSearch.cpp
    M Source/WebCore/bindings/js/JSCallbackData.cpp
    M Source/WebCore/bindings/js/JSCallbackData.h
    M Source/WebCore/css/CSSFontFeatureValue.h
    M Source/WebCore/css/CSSRule.h
    M Source/WebCore/dom/ActiveDOMObject.cpp
    M Source/WebCore/dom/ActiveDOMObject.h
    M Source/WebCore/dom/EventListenerMap.h
    M Source/WebCore/dom/NameNodeList.h
    M Source/WebCore/html/Allowlist.h
    M Source/WebCore/html/canvas/CanvasRenderingContext.cpp
    M Source/WebCore/html/canvas/CanvasRenderingContext.h
    M Source/WebCore/loader/ResourceMonitorPersistence.cpp
    M Source/WebCore/page/ElementTargetingTypes.h
    M Source/WebCore/page/Page.h
    M Source/WebCore/page/scrolling/ScrollingCoordinator.h
    M Source/WebCore/page/scrolling/ScrollingTree.h
    M Source/WebCore/page/scrolling/mac/ScrollerMac.h
    M Source/WebCore/platform/OrientationNotifier.h
    M Source/WebCore/platform/ScrollSnapAnimatorState.h
    M Source/WebCore/platform/Supplementable.h
    M Source/WebCore/platform/Timer.cpp
    M Source/WebCore/platform/Timer.h
    M Source/WebCore/platform/audio/HRTFDatabaseLoader.cpp
    M Source/WebCore/platform/audio/HRTFDatabaseLoader.h
    M Source/WebCore/platform/audio/RealtimeAudioThread.cpp
    M Source/WebCore/platform/audio/RealtimeAudioThread.h
    M Source/WebCore/platform/audio/ReverbConvolver.cpp
    M Source/WebCore/platform/audio/ReverbConvolver.h
    M Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.h
    M Source/WebCore/platform/encryptedmedia/CDMProxy.h
    M Source/WebCore/platform/graphics/AudioVideoRenderer.h
    M Source/WebCore/platform/graphics/FontCascadeFonts.cpp
    M Source/WebCore/platform/graphics/FontCascadeFonts.h
    M Source/WebCore/platform/graphics/SourceBufferPrivate.cpp
    M Source/WebCore/platform/graphics/avfoundation/AudioVideoRendererAVFObjC.h
    M 
Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h
    M Source/WebCore/platform/graphics/transforms/TransformOperation.h
    M Source/WebCore/platform/ios/LegacyTileCache.h
    M Source/WebCore/platform/ios/LegacyTileLayerPool.h
    M Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h
    M Source/WebCore/platform/network/curl/CurlContext.h
    M Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp
    M Source/WebCore/platform/network/curl/CurlRequestScheduler.h
    M Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp
    M Source/WebCore/platform/network/curl/CurlStreamScheduler.h
    M Source/WebCore/platform/sql/SQLiteDatabase.cpp
    M Source/WebCore/platform/sql/SQLiteDatabase.h
    M Source/WebCore/platform/video-codecs/cocoa/WebRTCVideoDecoderVTB.mm
    M Source/WebCore/workers/WorkerOrWorkletThread.h
    M Source/WebCore/workers/service/ExtendableEvent.h
    M Source/WebCore/workers/service/ServiceWorkerContainer.cpp
    M Source/WebCore/workers/service/ServiceWorkerContainer.h
    M Source/WebCore/workers/service/ServiceWorkerJob.cpp
    M Source/WebCore/workers/service/ServiceWorkerJob.h
    M Source/WebCore/workers/service/context/ServiceWorkerFetch.h
    M Source/WebCore/workers/service/server/SWServer.h
    M Source/WebGPU/WebGPU/BindGroupLayout.h
    M Source/WebGPU/WebGPU/BindableResource.h
    M Source/WebGPU/WebGPU/CommandBuffer.h
    M Source/WebGPU/WebGPU/Instance.h
    M Source/WebGPU/WebGPU/Queue.h
    M Source/WebGPU/WebGPU/RenderBundle.h
    M Source/WebGPU/WebGPU/RenderBundleEncoder.h
    M Source/WebGPU/WebGPU/XRSubImage.h
    M Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelGLib.cpp
    M Source/WebKit/Platform/IPC/Connection.cpp
    M Source/WebKit/Platform/IPC/Connection.h
    M Source/WebKit/Platform/IPC/StreamClientConnection.h
    M Source/WebKit/Platform/IPC/StreamServerConnection.h
    M Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp
    M 
Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h
    M Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h
    M Source/WebKit/UIProcess/Automation/BidiSessionAgent.h
    M 
Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h
    M Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.h
    M Source/WebKit/UIProcess/glib/DisplayVBlankMonitorThreaded.h
    M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.h
    M 
Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp
    M Source/WebKit/WebProcess/Network/WebSocketChannel.h
    M Source/WebKitLegacy/mac/WebCoreSupport/WebNotificationClient.h
    M Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp
    M Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/CARingBufferTest.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/IntPointTests.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/SerializedScriptValue.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/cocoa/TestGraphicsContextGLCocoa.mm
    M 
Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreDecompressionSessionTests.mm
    M Tools/TestWebKitAPI/Tests/WebCore/cocoa/XMLParsing.mm

  Log Message:
  -----------
  [Build Speed] Reduce the cost of Threading.h
rdar://176072258
https://bugs.webkit.org/show_bug.cgi?id=313876

Reviewed by Mike Wyrzykowski.

Threading.h pulls in ~252K lines transitively and was included by 1821
translation units. Many of those includes existed solely for thread
identity assertions — headers storing a Ref member just to
compare against Thread::currentSingleton() in debug builds.

Introduce two lightweight headers to break these dependencies:

- CurrentThread.h (~30 lines): provides currentThreadID() returning a
uint32_t (backed by Thread::uid()), and currentThreadMayBeGCThread().
Headers that only need thread identity checks can include this instead
of Threading.h.
- ThreadingEnums.h: provides GCThreadType, ThreadType, ThreadQOS,
ThreadSchedulingPolicy, and CanBeGCThread enums that were previously
defined inside Threading.h and Thread. Threading.h now includes
ThreadingEnums.h and uses 'using' aliases for backward compatibility.

Convert headers throughout WTF, WebCore, and WebKit from storing
Ref/RefPtr for identity assertions to storing a uint32_t
thread ID initialized via currentThreadID(). This eliminates the
Threading.h dependency from high-traffic headers including:

- SingleThreadIntegralWrapper.h, WeakPtrImpl.h (affects every TU)
- Timer.h, Supplementable.h (affects most WebCore TUs via Document.h)
- RunLoop.h, WorkQueue.h, NativePromise.h, Connection.h (IPC/event loop)
- ActiveDOMObject.h, EventListenerMap.h (DOM infrastructure)
- DataMutex.h, RecursiveLockAdapter.h, AutomaticThread.h (WTF utilities)

Also forward-declare JSC::Debugger in Page.h (was including Debugger.h
which pulled in the full JSC VM.h → Threading.h chain), and forward-
declare WTF::Thread in headers that store RefPtr without
dereferencing it.

ClangBuildAnalyzer results:
- Threading.h: 231s / 1821 includes → 36s / 1123 includes

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to