[webkit-changes] [WebKit/WebKit] 6211ce: Reduce compilation times by forward-declaring DOMP...

Jer Noble noreply at github.com
Wed Jan 25 15:23:55 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6211ce9e4d8de65866fd884f3b021f88b0aa5863
      https://github.com/WebKit/WebKit/commit/6211ce9e4d8de65866fd884f3b021f88b0aa5863
  Author: Jer Noble <jer.noble at apple.com>
  Date:   2023-01-25 (Wed, 25 Jan 2023)

  Changed paths:
    M Source/JavaScriptCore/heap/Strong.h
    M Source/JavaScriptCore/runtime/JSGlobalObject.h
    M Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Modules/WebGPU/GPU.cpp
    M Source/WebCore/Modules/WebGPU/GPU.h
    M Source/WebCore/Modules/WebGPU/GPUAdapter.h
    M Source/WebCore/Modules/WebGPU/GPUBuffer.cpp
    M Source/WebCore/Modules/WebGPU/GPUBuffer.h
    M Source/WebCore/Modules/WebGPU/GPUDevice.cpp
    M Source/WebCore/Modules/WebGPU/GPUDevice.h
    M Source/WebCore/Modules/WebGPU/GPUQueue.cpp
    M Source/WebCore/Modules/WebGPU/GPUQueue.h
    M Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp
    M Source/WebCore/Modules/WebGPU/GPUShaderModule.h
    M Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h
    M Source/WebCore/Modules/cache/DOMCache.cpp
    M Source/WebCore/Modules/cache/DOMCacheStorage.cpp
    M Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp
    M Source/WebCore/Modules/credentialmanagement/BasicCredential.h
    M Source/WebCore/Modules/encryptedmedia/MediaKeySystemRequest.h
    M Source/WebCore/Modules/fetch/FetchBody.cpp
    M Source/WebCore/Modules/fetch/FetchBody.h
    M Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp
    M Source/WebCore/Modules/fetch/FetchBodyConsumer.h
    M Source/WebCore/Modules/indexeddb/IDBFactory.cpp
    M Source/WebCore/Modules/indexeddb/IDBFactory.h
    M Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp
    M Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp
    M Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.h
    M Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp
    M Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.h
    M Source/WebCore/Modules/mediastream/RTCRtpSender.h
    M Source/WebCore/Modules/push-api/PushManager.cpp
    M Source/WebCore/Modules/push-api/PushManager.h
    M Source/WebCore/Modules/push-api/PushSubscription.cpp
    M Source/WebCore/Modules/push-api/PushSubscription.h
    M Source/WebCore/Modules/streams/ReadableStreamSource.cpp
    M Source/WebCore/Modules/streams/ReadableStreamSource.h
    M Source/WebCore/Modules/streams/WritableStreamSink.h
    M Source/WebCore/Modules/webaudio/AudioBuffer.h
    M Source/WebCore/Modules/webaudio/BaseAudioContext.cpp
    M Source/WebCore/Modules/webaudio/BaseAudioContext.h
    M Source/WebCore/Modules/webaudio/ConvolverNode.cpp
    M Source/WebCore/Modules/webaudio/IIRFilterNode.cpp
    M Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
    M Source/WebCore/Modules/webaudio/OfflineAudioContext.h
    M Source/WebCore/Modules/webaudio/PeriodicWave.cpp
    M Source/WebCore/Modules/webaudio/WaveShaperNode.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.h
    M Source/WebCore/Modules/webxr/WebXRFrame.cpp
    M Source/WebCore/Modules/webxr/WebXRSession.cpp
    M Source/WebCore/Modules/webxr/WebXRSession.h
    M Source/WebCore/Modules/webxr/WebXRSystem.cpp
    M Source/WebCore/Modules/webxr/WebXRSystem.h
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/bindings/js/JSDOMPromiseDeferredForward.h
    M Source/WebCore/css/DOMCSSPaintWorklet.cpp
    M Source/WebCore/dom/AbortSignal.h
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.h
    M Source/WebCore/inspector/InspectorFrontendAPIDispatcher.h
    M Source/WebCore/page/WorkerNavigator.h
    M Source/WebCore/testing/ServiceWorkerInternals.cpp
    M Source/WebCore/testing/ServiceWorkerInternals.h
    M Source/WebCore/testing/WebFakeXRDevice.h
    M Source/WebCore/testing/WebXRTest.cpp
    M Source/WebCore/testing/WebXRTest.h
    M Source/WebCore/workers/service/FetchEvent.cpp
    M Source/WebCore/workers/service/FetchEvent.h
    M Source/WebCore/workers/service/ServiceWorkerContainer.h
    M Source/WebCore/workers/service/ServiceWorkerRegistration.h
    M Source/WebCore/worklets/Worklet.cpp
    M Source/WebCore/worklets/Worklet.h
    M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp
    M Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp

  Log Message:
  -----------
  Reduce compilation times by forward-declaring DOMPromiseDeferred
https://bugs.webkit.org/show_bug.cgi?id=251029
rdar://104567742

Reviewed by Brent Fulgham.

Add a new forwarding header, JSDOMPromiseDeferredForward.h, that forward declares DeferredPromise,
DOMPromiseDeferred<>, and all the necssary IDL types which might be used in a header.

Use this new forwarding header everywhere, and move the JSDOMPromiseDeferred.h include into the
implementation files.

Elsewhere, classes declared ivars of these promise classes; those either require the class's constructors and
destructors to be moved to the implementation file, move std::optional -> std::unique_ptr, or for the bare
promise to be wrapped in a UniqueRef.

These changes reduce the overall cost of including JSDOMPromiseDeferred to be reduced by 66%, from 300s of
compile time to 100s on this machine.

* Source/WebCore/Modules/WebGPU/GPU.cpp:
* Source/WebCore/Modules/WebGPU/GPU.h:
(WebCore::GPU::create):
* Source/WebCore/Modules/WebGPU/GPUAdapter.h:
* Source/WebCore/Modules/WebGPU/GPUBuffer.cpp:
* Source/WebCore/Modules/WebGPU/GPUBuffer.h:
* Source/WebCore/Modules/WebGPU/GPUDevice.cpp:
* Source/WebCore/Modules/WebGPU/GPUDevice.h:
* Source/WebCore/Modules/WebGPU/GPUQueue.cpp:
* Source/WebCore/Modules/WebGPU/GPUQueue.h:
* Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp:
* Source/WebCore/Modules/WebGPU/GPUShaderModule.h:
* Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h:
* Source/WebCore/Modules/cache/DOMCacheStorage.cpp:
* Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp:
* Source/WebCore/Modules/credentialmanagement/BasicCredential.h:
* Source/WebCore/Modules/encryptedmedia/MediaKeySystemRequest.h:
* Source/WebCore/Modules/fetch/FetchBody.cpp:
* Source/WebCore/Modules/fetch/FetchBody.h:
* Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::FetchBodyConsumer::FetchBodyConsumer):
* Source/WebCore/Modules/fetch/FetchBodyConsumer.h:
(WebCore::FetchBodyConsumer::FetchBodyConsumer): Deleted.
* Source/WebCore/Modules/indexeddb/IDBFactory.cpp:
* Source/WebCore/Modules/indexeddb/IDBFactory.h:
* Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:
* Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:
* Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.h:
* Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.h:
* Source/WebCore/Modules/mediastream/RTCRtpSender.h:
* Source/WebCore/Modules/push-api/PushManager.cpp:
* Source/WebCore/Modules/push-api/PushManager.h:
* Source/WebCore/Modules/push-api/PushSubscription.h:
* Source/WebCore/Modules/streams/ReadableStreamSource.cpp:
* Source/WebCore/Modules/streams/ReadableStreamSource.h:
* Source/WebCore/Modules/streams/WritableStreamSink.h:
* Source/WebCore/Modules/webaudio/AudioBuffer.h:
* Source/WebCore/Modules/webaudio/BaseAudioContext.cpp:
(WebCore::BaseAudioContext::decodeAudioData):
* Source/WebCore/Modules/webaudio/BaseAudioContext.h:
* Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp:
* Source/WebCore/Modules/webaudio/OfflineAudioContext.h:
* Source/WebCore/Modules/webaudio/PeriodicWave.cpp:
* Source/WebCore/Modules/webaudio/WaveShaperNode.cpp:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.cpp:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.h:
* Source/WebCore/Modules/webxr/WebXRSession.cpp:
(WebCore::WebXRSession::didCompleteShutdown):
(WebCore::WebXRSession::end):
* Source/WebCore/Modules/webxr/WebXRSession.h:
* Source/WebCore/Modules/webxr/WebXRSystem.cpp:
* Source/WebCore/Modules/webxr/WebXRSystem.h:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/css/DOMCSSPaintWorklet.cpp:
* Source/WebCore/dom/AbortSignal.h:
* Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:
* Source/WebCore/html/canvas/WebGLRenderingContextBase.h:
* Source/WebCore/page/WorkerNavigator.h:
* Source/WebCore/testing/ServiceWorkerInternals.cpp:
* Source/WebCore/testing/ServiceWorkerInternals.h:
* Source/WebCore/testing/WebFakeXRDevice.h:
* Source/WebCore/testing/WebXRTest.cpp:
* Source/WebCore/testing/WebXRTest.h:
* Source/WebCore/workers/service/FetchEvent.cpp:
* Source/WebCore/workers/service/FetchEvent.h:
* Source/WebCore/workers/service/ServiceWorkerContainer.h:
* Source/WebCore/workers/service/ServiceWorkerRegistration.h:
* Source/WebCore/worklets/Worklet.cpp:
* Source/WebCore/worklets/Worklet.h:

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




More information about the webkit-changes mailing list