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