Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4705fbbff35e8b996b2b5451f4112f151a2fdd70
      
https://github.com/WebKit/WebKit/commit/4705fbbff35e8b996b2b5451f4112f151a2fdd70
  Author: Brent Fulgham <[email protected]>
  Date:   2026-06-12 (Fri, 12 Jun 2026)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources-output.xcfilelist
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/WebCoreMacros.cmake
    M Source/WebCore/bindings/scripts/CodeGenerator.pm
    M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
    M Source/WebCore/bindings/scripts/IDLAttributes.json
    M Source/WebCore/bindings/scripts/generate-bindings-all.pl
    M Source/WebCore/bindings/scripts/generate-bindings.pl
    M Source/WebCore/bindings/scripts/test/DOMWindow.idl
    M Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.cpp
    A 
Source/WebCore/bindings/scripts/test/JS/JSDOMWindowConstructorAttributes.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
    M Source/WebCore/page/DOMWindow.idl

  Log Message:
  -----------
  Split JSDOMWindow.cpp into smaller bits to improve build parallelism
https://bugs.webkit.org/show_bug.cgi?id=316818
rdar://179292668

Reviewed by Geoffrey Garen.

One a decent M2 Ultra build, JSDOMWindow.cpp is taking roughly 40 seconds to 
compile. This
is happening at the tail end of the WebCore step of the build, and is blocking 
linking and
further build steps from starting. This represents ~17 seconds of wasted time 
since only a
single core is working, and other tasks are blocked.

We can improve matters by splitting this single large compilation unit into 
smaller pieces
that can build in parallel.

This change shortened overall build time be ~75 seconds on a local build since 
more
post-WebCore work was able to start earlier.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/WebCoreMacros.cmake:
* Source/WebCore/bindings/scripts/CodeGenerator.pm:
(new):
(IgnoreStandaloneConstructorAttributes):
* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:
(AddToImplIncludes):
(AddToAuxImplIncludes):
(UseStandaloneConstructorAttributes):
(GenerateRuntimeEnableConditionalString):
(GenerateAttributeGetterAndSetterDeclaration):
(GenerateAttributeGetterDefinition):
(WriteData):
* Source/WebCore/bindings/scripts/IDLAttributes.json:
* Source/WebCore/bindings/scripts/generate-bindings-all.pl:
(spawnGenerateBindingsIfNeeded):
* Source/WebCore/bindings/scripts/generate-bindings.pl:
(generateBindings):
* Source/WebCore/bindings/scripts/test/DOMWindow.idl:
* Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.cpp:
(WebCore::JSDOMWindowDOMConstructor::prototypeForStructure):
(WebCore::jsDOMWindow_DOMWindowConstructorGetter): Deleted.
(WebCore::jsDOMWindow_ExposedStarConstructorGetter): Deleted.
(WebCore::jsDOMWindow_ExposedToWorkerAndWindowConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestConditionalConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestConditionalIncludesConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestConditionallyReadWriteConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestDefaultToJSONConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestDefaultToJSONFilteredByExposedConstructorGetter): 
Deleted.
(WebCore::jsDOMWindow_TestEnabledBySettingConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestEnabledForContextConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestInterfaceConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestNodeConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestObjectConstructorGetter): Deleted.
(WebCore::jsDOMWindow_TestPromiseRejectionEventConstructorGetter): Deleted.
* Source/WebCore/bindings/scripts/test/JS/JSDOMWindowConstructorAttributes.cpp: 
Added.
(WebCore::jsDOMWindow_DOMWindowConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):
(WebCore::jsDOMWindow_ExposedStarConstructorGetter):
(WebCore::jsDOMWindow_ExposedToWorkerAndWindowConstructorGetter):
(WebCore::jsDOMWindow_TestConditionalConstructorGetter):
(WebCore::jsDOMWindow_TestConditionalIncludesConstructorGetter):
(WebCore::jsDOMWindow_TestConditionallyReadWriteConstructorGetter):
(WebCore::jsDOMWindow_TestDefaultToJSONConstructorGetter):
(WebCore::jsDOMWindow_TestDefaultToJSONFilteredByExposedConstructorGetter):
(WebCore::jsDOMWindow_TestEnabledBySettingConstructorGetter):
(WebCore::jsDOMWindow_TestEnabledForContextConstructorGetter):
(WebCore::jsDOMWindow_TestInterfaceConstructorGetter):
(WebCore::jsDOMWindow_TestNodeConstructorGetter):
(WebCore::jsDOMWindow_TestObjectConstructorGetter):
(WebCore::jsDOMWindow_TestPromiseRejectionEventConstructorGetter):
* Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
* Source/WebCore/page/DOMWindow.idl:

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



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

Reply via email to