Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9f2eb90301dce8215993eec52f4c2a18812253ed
      
https://github.com/WebKit/WebKit/commit/9f2eb90301dce8215993eec52f4c2a18812253ed
  Author: Jer Noble <[email protected]>
  Date:   2026-04-20 (Mon, 20 Apr 2026)

  Changed paths:
    M Source/JavaScriptCore/API/JSLockRef.cpp
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/b3/air/AirEmitShuffle.h
    M Source/JavaScriptCore/bytecode/CallVariantInlines.h
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp
    M Source/JavaScriptCore/bytecode/CodeBlock.h
    M Source/JavaScriptCore/bytecode/FunctionCodeBlock.h
    M Source/JavaScriptCore/bytecode/GetByVariant.h
    M Source/JavaScriptCore/bytecode/InlineCallFrame.h
    M Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h
    M Source/JavaScriptCore/bytecode/ProgramCodeBlock.h
    M Source/JavaScriptCore/bytecode/PutByVariant.h
    M Source/JavaScriptCore/bytecode/SpeculatedType.h
    M Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.h
    M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
    M Source/JavaScriptCore/debugger/Debugger.h
    M Source/JavaScriptCore/dfg/DFGCommon.h
    M Source/JavaScriptCore/dfg/DFGGraph.h
    M Source/JavaScriptCore/dfg/DFGJITCode.h
    M Source/JavaScriptCore/dfg/DFGOpInfo.h
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/ftl/FTLCapabilities.h
    M Source/JavaScriptCore/heap/BlockDirectory.h
    M Source/JavaScriptCore/heap/Heap.cpp
    M Source/JavaScriptCore/heap/StrongInlines.h
    M Source/JavaScriptCore/interpreter/CallFrame.h
    M Source/JavaScriptCore/interpreter/CallFrameInlines.h
    M Source/JavaScriptCore/interpreter/FrameTracers.h
    M Source/JavaScriptCore/interpreter/Interpreter.h
    M Source/JavaScriptCore/interpreter/Register.h
    M Source/JavaScriptCore/interpreter/RegisterInlines.h
    M Source/JavaScriptCore/jit/JIT.cpp
    M Source/JavaScriptCore/jit/JITCode.h
    M Source/JavaScriptCore/jit/JITOpcodes.cpp
    M Source/JavaScriptCore/jit/JITOperations.cpp
    M Source/JavaScriptCore/jit/JITPlan.cpp
    M Source/JavaScriptCore/jit/SnippetParams.h
    M Source/JavaScriptCore/lol/LOLJIT.cpp
    M Source/JavaScriptCore/runtime/ArrayPrototype.cpp
    M Source/JavaScriptCore/runtime/CallData.h
    M Source/JavaScriptCore/runtime/CodeCache.cpp
    M Source/JavaScriptCore/runtime/CompilationResult.h
    M Source/JavaScriptCore/runtime/ConstructData.cpp
    M Source/JavaScriptCore/runtime/ConstructData.h
    M Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp
    A Source/JavaScriptCore/runtime/EncodedValueDescriptor.h
    M Source/JavaScriptCore/runtime/Error.cpp
    M Source/JavaScriptCore/runtime/ExecutableBaseInlines.h
    M Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.h
    M Source/JavaScriptCore/runtime/IndexingType.cpp
    M Source/JavaScriptCore/runtime/IndexingType.h
    A Source/JavaScriptCore/runtime/IndexingTypeInlines.h
    M Source/JavaScriptCore/runtime/JSBoundFunction.cpp
    M Source/JavaScriptCore/runtime/JSCJSValue.h
    M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
    M Source/JavaScriptCore/runtime/JSFunction.h
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
    M Source/JavaScriptCore/runtime/JSGlobalObject.h
    M Source/JavaScriptCore/runtime/JSLexicalEnvironment.h
    M Source/JavaScriptCore/runtime/JSLock.cpp
    M Source/JavaScriptCore/runtime/JSModuleLoader.cpp
    M Source/JavaScriptCore/runtime/JSModuleRecord.cpp
    M Source/JavaScriptCore/runtime/JSNativeStdFunction.h
    M Source/JavaScriptCore/runtime/JSObject.cpp
    M Source/JavaScriptCore/runtime/JSObject.h
    M Source/JavaScriptCore/runtime/JSPromise.h
    M Source/JavaScriptCore/runtime/JSRunLoopTimer.h
    M Source/JavaScriptCore/runtime/JSScope.cpp
    M Source/JavaScriptCore/runtime/JSString.h
    M Source/JavaScriptCore/runtime/MatchResult.cpp
    M Source/JavaScriptCore/runtime/MatchResult.h
    M Source/JavaScriptCore/runtime/MegamorphicCache.cpp
    M Source/JavaScriptCore/runtime/ModuleLoadingContext.cpp
    M Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp
    M Source/JavaScriptCore/runtime/NativeFunction.h
    M Source/JavaScriptCore/runtime/NullSetterFunction.h
    M Source/JavaScriptCore/runtime/NumberPredictionFuzzerAgent.h
    M Source/JavaScriptCore/runtime/ProgramExecutable.cpp
    M Source/JavaScriptCore/runtime/SamplingProfiler.cpp
    M Source/JavaScriptCore/runtime/ScriptExecutable.h
    M Source/JavaScriptCore/runtime/TypeofType.cpp
    M Source/JavaScriptCore/runtime/TypeofType.h
    M Source/JavaScriptCore/runtime/VM.cpp
    M Source/JavaScriptCore/runtime/VM.h
    M Source/JavaScriptCore/runtime/VMInlines.h
    M Source/JavaScriptCore/tools/Integrity.h
    M Source/WTF/wtf/Forward.h
    M Source/WebCore/Modules/indexeddb/IDBCursor.cpp
    M Source/WebCore/Modules/streams/TransformStream.cpp
    M Source/WebCore/bindings/js/InternalReadableStream.cpp
    M Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
    M Source/WebCore/dom/MessageEvent.cpp
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp
    M Tools/TestWebKitAPI/Tests/JavaScriptCore/DisallowVMEntry.cpp

  Log Message:
  -----------
  [Build Speed] Minimize includes in CodeBlock.h, JSCJSValue.h, 
JSCJSValueInlines.h, and VM.h
rdar://175016187
https://bugs.webkit.org/show_bug.cgi?id=312585

Reviewed by Brent Fulgham.

These four headers are among the most expensive in the JSC build. This
patch minimizes their includes by replacing full header includes with
forward declarations where possible, and moving inline function
definitions that require heavy types into separate Inlines headers.

CodeBlock.h is reduced from ~35 includes to ~10 by forward-declaring
classes, structs, and enums used only as pointers or parameters in
declarations. JumpTable.h, the various Executable headers, and many
others are no longer transitively included by every file that uses
CodeBlock.

JSCJSValue.h drops most of its includes, keeping only
EncodedValueDescriptor.h (new), JSExportMacros.h, PureNaN.h, and a few
WTF headers. ECMAMode and Concurrency are forward-declared. MediaTime
and Stopwatch are added to wtf/Forward.h so they can be used without
including their full headers.

JSCJSValueInlines.h removes JSCellInlines.h, JSFunction.h, JSObject.h,
and TopExceptionScope.h from its include list.

VM.h removes ~15 includes including CalleeBits.h, CodeSpecializationKind.h,
DeleteAllCodeEffort.h, Intrinsic.h, JSLock.h, SlotVisitorMacros.h,
SourceTaintedOrigin.h, Strong.h, and several WTF headers. WasmContext.h
and ThunkGenerator.h are guarded behind ENABLE flags. Types like
Stopwatch, SymbolImpl, UniquedStringImpl, JSLock, and Intrinsic are
forward-declared.

Supporting changes:

- EncodedValueDescriptor.h (new): Extracts EncodedJSValue typedef,
  EncodedValueDescriptor union, TagOffset and PayloadOffset macros from
  JSCJSValue.h into a minimal header that Register.h can include without
  pulling in all of JSCJSValue.h.

- RegisterInlines.h: Receives the Register methods that need JSValue
  (constructors, jsValue(), encodedJSValue(), i(), unboxedInt52(),
  withInt()). Register.h retains only methods that work with primitive
  types.

- IndexingTypeInlines.h (new): Receives indexingTypeForValue() which
  needs JSCJSValue.h and Options.h.

- CallFrame.h adds JSCJSValue.h directly since it uses JSValue by value
  in its API. Methods that call Register inline functions requiring
  JSValue (like argumentsSpan()) are moved to CallFrameInlines.h.

- ConstructData.h changes JSValue parameters to const JSValue& so the
  type can remain incomplete in the header.

- JSGlobalObject.h forward-declares QueuedTask and moves
  microtaskQueue() out-of-line to avoid including MicrotaskQueue.h.
  defaultMicrotaskQueue() is similarly moved out-of-line in VM.h.

- Compensating includes added to .cpp files and Inlines headers
  throughout JSC, WebCore, and WebKit where transitive dependencies were
  broken.

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



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

Reply via email to