Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9784033bdce3c771fc8e88735612c51c396d423b
https://github.com/WebKit/WebKit/commit/9784033bdce3c771fc8e88735612c51c396d423b
Author: Jer Noble <[email protected]>
Date: 2026-03-14 (Sat, 14 Mar 2026)
Changed paths:
M Source/WebCore/Modules/WebGPU/GPUBuffer.cpp
M Source/WebCore/Modules/WebGPU/GPUBuffer.h
M Source/WebCore/Modules/WebGPU/GPUCommandEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPUDevice.cpp
M Source/WebCore/Modules/WebGPU/GPUQueue.cpp
M Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp
M Source/WebCore/Modules/WebGPU/GPUTexture.cpp
M Source/WebCore/Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.cpp
M Source/WebCore/Modules/applepay/ApplePaySession.cpp
M Source/WebCore/Modules/applepay/ApplePaySetup.cpp
M Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h
M Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp
M Source/WebCore/Modules/async-clipboard/Clipboard.cpp
M Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp
M Source/WebCore/Modules/cache/DOMCache.cpp
M Source/WebCore/Modules/cache/DOMCacheStorage.cpp
M Source/WebCore/Modules/contact-picker/ContactsManager.cpp
M Source/WebCore/Modules/cookie-store/CookieStore.cpp
M Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp
M Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp
M Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp
M Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp
M Source/WebCore/Modules/encryptedmedia/NavigatorEME.cpp
M Source/WebCore/Modules/fetch/FetchBody.cpp
M Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp
M Source/WebCore/Modules/fetch/FetchBodyOwner.cpp
M Source/WebCore/Modules/fetch/FetchBodySource.cpp
M Source/WebCore/Modules/fetch/WindowOrWorkerGlobalScopeFetch.cpp
M Source/WebCore/Modules/filesystem/FileSystemDirectoryHandle.cpp
M Source/WebCore/Modules/filesystem/FileSystemFileHandle.cpp
M Source/WebCore/Modules/filesystem/FileSystemHandle.cpp
M Source/WebCore/Modules/filesystem/FileSystemWritableFileStream.cpp
M Source/WebCore/Modules/filesystem/FileSystemWritableFileStreamSink.cpp
M Source/WebCore/Modules/gamepad/GamepadHapticActuator.cpp
M Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp
M Source/WebCore/Modules/identity/CredentialRequestCoordinator.h
M Source/WebCore/Modules/identity/DigitalCredential.cpp
M Source/WebCore/Modules/identity/DigitalCredential.h
M Source/WebCore/Modules/indexeddb/IDBFactory.cpp
M Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp
M Source/WebCore/Modules/mediastream/ImageCapture.cpp
M Source/WebCore/Modules/mediastream/ImageCapture.h
M Source/WebCore/Modules/mediastream/MediaDevices.cpp
M Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
M Source/WebCore/Modules/mediastream/MediaStreamTrack.h
M Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp
M Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp
M Source/WebCore/Modules/mediastream/RTCEncodedStreamProducer.cpp
M Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp
M Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
M Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp
M Source/WebCore/Modules/model-element/HTMLModelElement.cpp
M Source/WebCore/Modules/notifications/Notification.cpp
M Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp
M Source/WebCore/Modules/permissions/Permissions.cpp
M
Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp
M Source/WebCore/Modules/push-api/PushManager.cpp
M Source/WebCore/Modules/push-api/PushSubscription.cpp
M Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp
M Source/WebCore/Modules/screen-wake-lock/WakeLock.cpp
M Source/WebCore/Modules/storage/StorageManager.cpp
M Source/WebCore/Modules/streams/ReadableByteStreamController.cpp
M Source/WebCore/Modules/streams/ReadableStreamDefaultReader.cpp
M Source/WebCore/Modules/streams/ReadableStreamReadRequest.cpp
M Source/WebCore/Modules/streams/ReadableStreamSource.cpp
M Source/WebCore/Modules/streams/WritableStreamSink.cpp
M Source/WebCore/Modules/streams/WritableStreamSink.h
M Source/WebCore/Modules/web-locks/WebLockManager.cpp
M Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.cpp
M Source/WebCore/Modules/webaudio/BaseAudioContext.cpp
M Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
M Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.cpp
M Source/WebCore/Modules/webtransport/DatagramSink.cpp
M Source/WebCore/Modules/webtransport/WebTransport.cpp
M Source/WebCore/Modules/webtransport/WebTransportDatagramsWritable.cpp
M Source/WebCore/Modules/webtransport/WebTransportReceiveStream.cpp
M Source/WebCore/Modules/webtransport/WebTransportSendGroup.cpp
M Source/WebCore/Modules/webtransport/WebTransportSendStream.cpp
M Source/WebCore/Modules/webtransport/WebTransportSendStreamSink.cpp
M Source/WebCore/Modules/webtransport/WebTransportSendStreamSink.h
M Source/WebCore/Modules/webtransport/WorkerWebTransportSession.cpp
M Source/WebCore/Modules/webxr/WebXRSession.cpp
M Source/WebCore/Modules/webxr/WebXRSystem.cpp
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/animation/KeyframeEffect.cpp
M Source/WebCore/animation/WebAnimation.cpp
M Source/WebCore/bindings/js/DOMPromiseProxy.h
A Source/WebCore/bindings/js/JSDOMConvertBoolean.cpp
M Source/WebCore/bindings/js/JSDOMConvertBoolean.h
M Source/WebCore/bindings/js/JSDOMGuardedObject.cpp
M Source/WebCore/bindings/js/JSDOMGuardedObject.h
M Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp
M Source/WebCore/bindings/js/JSDOMPromiseDeferred.h
M Source/WebCore/bindings/js/JSDocumentCustom.cpp
M Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp
M Source/WebCore/bindings/js/JSImageDataCustom.cpp
M Source/WebCore/bindings/js/JSMessageEventCustom.cpp
M Source/WebCore/bindings/js/JSRTCRtpSFrameTransformCustom.cpp
M Source/WebCore/bindings/js/JSWebAnimationCustom.cpp
A Source/WebCore/bindings/js/ModuleScriptLoader.cpp
M Source/WebCore/bindings/js/ModuleScriptLoader.h
M Source/WebCore/bindings/js/ScriptModuleLoader.h
M Source/WebCore/crypto/SubtleCrypto.cpp
M Source/WebCore/css/CSSStyleSheet.cpp
M Source/WebCore/css/CSSStyleSheetObservableArray.cpp
M Source/WebCore/css/FontFace.cpp
M Source/WebCore/dom/DocumentStorageAccess.cpp
M Source/WebCore/dom/InternalObserverEvery.cpp
M Source/WebCore/dom/InternalObserverFind.cpp
M Source/WebCore/dom/InternalObserverFirst.cpp
M Source/WebCore/dom/InternalObserverLast.cpp
M Source/WebCore/dom/InternalObserverReduce.cpp
M Source/WebCore/dom/InternalObserverSome.cpp
M Source/WebCore/fileapi/Blob.cpp
M Source/WebCore/html/OffscreenCanvas.cpp
M Source/WebCore/inspector/InspectorFrontendHost.cpp
M Source/WebCore/page/LocalDOMWindow.cpp
M Source/WebCore/page/Navigation.cpp
M Source/WebCore/page/Navigation.h
M Source/WebCore/page/NavigationTransition.cpp
M Source/WebCore/page/NavigationTransition.h
M Source/WebCore/page/NavigatorLoginStatus.cpp
M Source/WebCore/page/NavigatorUAData.h
M Source/WebCore/page/UserMessageHandler.cpp
M Source/WebCore/testing/ServiceWorkerInternals.cpp
M Source/WebCore/testing/WebXRTest.cpp
M Source/WebCore/workers/service/ExtendableMessageEvent.cpp
M Source/WebCore/workers/service/ServiceWorkerClients.cpp
M Source/WebCore/workers/service/ServiceWorkerContainer.cpp
M Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp
M Source/WebCore/workers/service/background-fetch/BackgroundFetchManager.cpp
M Source/WebCore/workers/service/background-fetch/BackgroundFetchManager.h
M Source/WebCore/workers/service/background-fetch/BackgroundFetchRecord.cpp
M
Source/WebCore/workers/service/background-fetch/BackgroundFetchRegistration.cpp
M
Source/WebCore/workers/service/background-fetch/BackgroundFetchRegistration.h
M
Source/WebCore/workers/service/background-fetch/BackgroundFetchUpdateUIEvent.h
M Source/WebCore/worklets/PaintWorkletGlobalScope.cpp
M Source/WebCore/worklets/WorkletPendingTasks.cpp
M Source/WebCore/worklets/WorkletPendingTasks.h
Log Message:
-----------
[Build Speed] Reduce includes of JSDOMPromiseDeferred.h and make it cheaper
rdar://164123237
https://bugs.webkit.org/show_bug.cgi?id=302045
Reviewed by Brent Fulgham and BJ Burg.
Reduce the number of times JSDOMPromiseDeferred.h is included during a build,
and for those times
when including that header is unavoidable, reduce the cost of including that
header.
For the first part, remove JSDOMPromiseDeferred.h from (almost all)
non-Inlines.h headers by
converting those headers to use JSDOMPromiseDeferredForward.h. This also
requires any class that
stores a JSDOMPromiseDeferred to use a std::unique_ptr instead of a
std::optional. It also required
some classes to have inline methods move to the implementation file (or have
implementation files
added where none previously existed). These include SimpleWritableStreamSink,
ModuleScriptLoader,
NavigationAPIMethodTracker, NavigationTransition, and WorkletPendingTasks.
For the second part, remove JSDOMConvert.h from JSDOMPromiseDeferred.h.
JSDOMConvert.h pulls in
every different mechanism to convert a c++ object to an IDLType, which is very
expensive. Instead,
the users of JSDOMPromiseDeferred.h should include only the specific
JSDOMConvert*.h header needed
to call resolve() or reject().
Before this change, JSDOMPromiseDeferred.h was the 11th most expensive header
in the WebCore Unified
build. It was included 184 times, at an average cost on this machine of 880ms
of CPU time, for a total
cost of 2.7m of CPU time spent parsing this header.
After this change, JSDOMPromiseDeferred.h is the 67th most expensive header in
the WebCore Unified
build. It is included 120 times, at an average cost on this machine of 430ms of
CPU time, for a total
cost of 53s of CPU time spent parsing this header.
All told, frontend parsing time decreased from 8122s to 7876s, a reduction of
3%.
* Source/WebCore/Modules/WebGPU/GPUBuffer.cpp:
(WebCore::GPUBuffer::mapAsync):
(WebCore::GPUBuffer::internalUnmap):
* Source/WebCore/Modules/WebGPU/GPUBuffer.h:
* Source/WebCore/Modules/WebGPU/GPUQueue.h:
* Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp:
* Source/WebCore/Modules/applepay/ApplePaySession.cpp:
* Source/WebCore/Modules/applepay/ApplePaySetup.cpp:
(WebCore::ApplePaySetup::getSetupFeatures):
(WebCore::ApplePaySetup::begin):
(WebCore::ApplePaySetup::stop):
* Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h:
* Source/WebCore/Modules/cache/DOMCache.cpp:
* Source/WebCore/Modules/cache/DOMCacheStorage.cpp:
* Source/WebCore/Modules/contact-picker/ContactsManager.cpp:
* Source/WebCore/Modules/cookie-consent/NavigatorCookieConsent.cpp:
* Source/WebCore/Modules/cookie-store/CookieStore.cpp:
* Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp:
* Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:
* Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp:
* Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:
* Source/WebCore/Modules/encryptedmedia/NavigatorEME.cpp:
* Source/WebCore/Modules/fetch/FetchBody.cpp:
* Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:
* Source/WebCore/Modules/fetch/WindowOrWorkerGlobalScopeFetch.cpp:
* Source/WebCore/Modules/filesystem/FileSystemDirectoryHandle.cpp:
* Source/WebCore/Modules/filesystem/FileSystemWritableFileStreamSink.cpp:
* Source/WebCore/Modules/gamepad/GamepadHapticActuator.cpp:
* Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp:
(WebCore::CredentialRequestCoordinator::setCurrentPromise):
(WebCore::CredentialRequestCoordinator::currentPromise):
* Source/WebCore/Modules/identity/CredentialRequestCoordinator.h:
* Source/WebCore/Modules/identity/DigitalCredential.cpp:
* Source/WebCore/Modules/identity/DigitalCredential.h:
* Source/WebCore/Modules/indexeddb/IDBFactory.cpp:
* Source/WebCore/Modules/mediastream/ImageCapture.cpp:
* Source/WebCore/Modules/mediastream/ImageCapture.h:
* Source/WebCore/Modules/mediastream/MediaDevices.cpp:
* Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:
* Source/WebCore/Modules/mediastream/MediaStreamTrack.h:
* Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:
* Source/WebCore/Modules/mediastream/RTCEncodedStreamProducer.cpp:
* Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:
* Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp:
* Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:
* Source/WebCore/Modules/mediastream/VideoTrackGenerator.cpp:
* Source/WebCore/Modules/mediastream/VideoTrackGenerator.h:
* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
* Source/WebCore/Modules/notifications/Notification.cpp:
* Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp:
* Source/WebCore/Modules/permissions/Permissions.cpp:
* Source/WebCore/Modules/pictureinpicture/DocumentPictureInPicture.cpp:
* Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
* Source/WebCore/Modules/push-api/PushSubscription.cpp:
* Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp:
* Source/WebCore/Modules/screen-wake-lock/WakeLock.cpp:
* Source/WebCore/Modules/storage/StorageManager.cpp:
* Source/WebCore/Modules/streams/StreamPipeToUtilities.cpp:
* Source/WebCore/Modules/streams/WritableStreamSink.cpp: Copied from
Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp.
(WebCore::SimpleWritableStreamSink::SimpleWritableStreamSink):
(WebCore::SimpleWritableStreamSink::write):
* Source/WebCore/Modules/streams/WritableStreamSink.h:
(WebCore::SimpleWritableStreamSink::SimpleWritableStreamSink): Deleted.
(WebCore::SimpleWritableStreamSink::write): Deleted.
* Source/WebCore/Modules/web-locks/WebLockManager.cpp:
* Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp:
* Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.cpp:
* Source/WebCore/Modules/webtransport/DatagramSink.cpp:
* Source/WebCore/Modules/webtransport/WebTransport.cpp:
* Source/WebCore/Modules/webtransport/WebTransportSendStreamSink.cpp:
* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.cpp:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/WebAnimation.cpp:
* Source/WebCore/bindings/js/DOMPromiseProxy.h:
* Source/WebCore/bindings/js/JSDOMConvertEnumeration.h:
* Source/WebCore/bindings/js/JSDOMGuardedObject.h:
* Source/WebCore/bindings/js/JSDOMPromiseDeferred.h:
* Source/WebCore/bindings/js/ModuleScriptLoader.cpp: Copied from
Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp.
(WebCore::ModuleScriptLoader::ModuleScriptLoader):
* Source/WebCore/bindings/js/ModuleScriptLoader.h:
(WebCore::ModuleScriptLoader::ModuleScriptLoader): Deleted.
* Source/WebCore/crypto/SubtleCrypto.cpp:
* Source/WebCore/css/DOMCSSPaintWorklet.cpp:
(WebCore::PaintWorklet::addModule):
* Source/WebCore/css/DOMCSSPaintWorklet.h:
* Source/WebCore/css/FontFace.cpp:
* Source/WebCore/css/FontFaceSet.cpp:
* Source/WebCore/dom/DocumentStorageAccess.cpp:
* Source/WebCore/dom/InternalObserverEvery.cpp:
* Source/WebCore/dom/InternalObserverFind.cpp:
* Source/WebCore/dom/InternalObserverFirst.cpp:
* Source/WebCore/dom/InternalObserverForEach.cpp:
* Source/WebCore/dom/InternalObserverSome.cpp:
* Source/WebCore/fileapi/Blob.cpp:
* Source/WebCore/html/OffscreenCanvas.cpp:
* Source/WebCore/inspector/InspectorFrontendHost.cpp:
* Source/WebCore/page/Navigation.cpp:
(WebCore::NavigationAPIMethodTracker::NavigationAPIMethodTracker):
* Source/WebCore/page/Navigation.h:
(WebCore::NavigationAPIMethodTracker::NavigationAPIMethodTracker): Deleted.
* Source/WebCore/page/NavigationTransition.cpp:
(WebCore::NavigationTransition::create):
* Source/WebCore/page/NavigationTransition.h:
* Source/WebCore/page/NavigatorLoginStatus.cpp:
* Source/WebCore/page/NavigatorUAData.cpp:
(WebCore::NavigatorUAData::createArbitraryVersion): Deleted.
(WebCore::NavigatorUAData::createArbitraryBrand): Deleted.
* Source/WebCore/page/NavigatorUAData.h:
(): Deleted.
* Source/WebCore/page/Quirks.cpp:
(WebCore::handleVimeoQuirks):
* Source/WebCore/page/UserMessageHandler.cpp:
* Source/WebCore/testing/ServiceWorkerInternals.cpp:
* Source/WebCore/workers/service/ServiceWorkerClients.cpp:
* Source/WebCore/workers/service/ServiceWorkerContainer.cpp:
* Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchManager.cpp:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchManager.h:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchRecord.cpp:
*
Source/WebCore/workers/service/background-fetch/BackgroundFetchRegistration.cpp:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchRegistration.h:
*
Source/WebCore/workers/service/background-fetch/BackgroundFetchUpdateUIEvent.h:
* Source/WebCore/worklets/Worklet.cpp:
(WebCore::Worklet::addModule):
* Source/WebCore/worklets/Worklet.h:
* Source/WebCore/worklets/WorkletPendingTasks.cpp:
(WebCore::WorkletPendingTasks::create):
(WebCore::WorkletPendingTasks::WorkletPendingTasks):
(WebCore::WorkletPendingTasks::abort):
(WebCore::WorkletPendingTasks::decrementCounter):
* Source/WebCore/worklets/WorkletPendingTasks.h:
(WebCore::WorkletPendingTasks::create): Deleted.
Canonical link: https://commits.webkit.org/309275@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications