Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5ff0c08af8bfe29647b8ae2c25532b18bad58268
https://github.com/WebKit/WebKit/commit/5ff0c08af8bfe29647b8ae2c25532b18bad58268
Author: Jer Noble <[email protected]>
Date: 2026-04-17 (Fri, 17 Apr 2026)
Changed paths:
M Source/JavaScriptCore/API/APICallbackFunction.h
M Source/JavaScriptCore/API/APICast.h
M Source/JavaScriptCore/API/APIUtils.h
M Source/JavaScriptCore/API/JSAPIGlobalObject.cpp
M Source/JavaScriptCore/API/JSAPIValueWrapper.cpp
M Source/JavaScriptCore/API/JSContextRef.cpp
M Source/JavaScriptCore/API/tests/VMManagerStopTheWorldTest.cpp
M Source/JavaScriptCore/CMakeLists.txt
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M
Source/JavaScriptCore/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations
M Source/JavaScriptCore/b3/B3AbstractHeapRepository.cpp
M Source/JavaScriptCore/bytecode/ComplexGetStatus.cpp
M Source/JavaScriptCore/bytecode/EvalCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/FunctionCodeBlock.cpp
M Source/JavaScriptCore/bytecode/FunctionCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/InlineCacheHandler.cpp
M Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.cpp
M Source/JavaScriptCore/bytecode/ModuleProgramCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/ProgramCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/UnlinkedEvalCodeBlock.cpp
M Source/JavaScriptCore/bytecode/UnlinkedEvalCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/UnlinkedFunctionCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutableInlines.h
M Source/JavaScriptCore/bytecode/UnlinkedModuleProgramCodeBlockInlines.h
M Source/JavaScriptCore/bytecode/UnlinkedProgramCodeBlockInlines.h
M Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp
M Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp
M Source/JavaScriptCore/heap/CompleteSubspace.cpp
M Source/JavaScriptCore/inspector/ConsoleMessage.cpp
M Source/JavaScriptCore/inspector/InjectedScriptBase.h
M Source/JavaScriptCore/inspector/InjectedScriptHost.cpp
M Source/JavaScriptCore/inspector/InjectedScriptHost.h
M Source/JavaScriptCore/inspector/InjectedScriptModule.cpp
M Source/JavaScriptCore/inspector/InspectorAgentBase.h
M Source/JavaScriptCore/inspector/JavaScriptCallFrame.h
M Source/JavaScriptCore/inspector/PerGlobalObjectWrapperWorld.cpp
M Source/JavaScriptCore/inspector/PerGlobalObjectWrapperWorld.h
M Source/JavaScriptCore/inspector/ScriptFunctionCall.cpp
M Source/JavaScriptCore/inspector/ScriptFunctionCall.h
M Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp
M Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.h
M Source/JavaScriptCore/interpreter/ShadowChicken.h
M Source/JavaScriptCore/jit/JITPlan.cpp
M Source/JavaScriptCore/jsc.cpp
M Source/JavaScriptCore/runtime/ArrayStorageInlines.h
M Source/JavaScriptCore/runtime/ButterflyInlines.h
M Source/JavaScriptCore/runtime/ClonedArguments.cpp
M Source/JavaScriptCore/runtime/ClonedArguments.h
M Source/JavaScriptCore/runtime/CustomGetterSetterInlines.h
M Source/JavaScriptCore/runtime/DOMAttributeGetterSetterInlines.h
M Source/JavaScriptCore/runtime/DirectArguments.cpp
M Source/JavaScriptCore/runtime/DirectArguments.h
M Source/JavaScriptCore/runtime/Exception.cpp
M Source/JavaScriptCore/runtime/ExceptionHelpers.h
M Source/JavaScriptCore/runtime/HashMapHelper.h
M Source/JavaScriptCore/runtime/ISO8601.h
M Source/JavaScriptCore/runtime/IntlObject.h
M Source/JavaScriptCore/runtime/IntlObjectInlines.h
M Source/JavaScriptCore/runtime/JSArrayInlines.h
M Source/JavaScriptCore/runtime/JSBigInt.cpp
M Source/JavaScriptCore/runtime/JSBigInt.h
M Source/JavaScriptCore/runtime/JSBigIntInlines.h
M Source/JavaScriptCore/runtime/JSCInlines.h
M Source/JavaScriptCore/runtime/JSCJSValue.cpp
M Source/JavaScriptCore/runtime/JSCJSValue.h
A Source/JavaScriptCore/runtime/JSCJSValueBigInt.h
A Source/JavaScriptCore/runtime/JSCJSValueCell.h
R Source/JavaScriptCore/runtime/JSCJSValueCellInlines.h
M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
A Source/JavaScriptCore/runtime/JSCJSValuePropertyInlines.h
A Source/JavaScriptCore/runtime/JSCJSValueStructure.h
M Source/JavaScriptCore/runtime/JSCalleeInlines.h
M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h
M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h
M Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h
M Source/JavaScriptCore/runtime/JSGlobalProxy.cpp
M Source/JavaScriptCore/runtime/JSGlobalProxy.h
M Source/JavaScriptCore/runtime/JSGlobalProxyInlines.h
M Source/JavaScriptCore/runtime/JSHeapDouble.cpp
M Source/JavaScriptCore/runtime/JSHeapInt32.cpp
M Source/JavaScriptCore/runtime/JSObject.h
M Source/JavaScriptCore/runtime/JSObjectInlines.h
M Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h
M Source/JavaScriptCore/runtime/JSScriptFetchParametersInlines.h
M Source/JavaScriptCore/runtime/JSScriptFetcherInlines.h
M Source/JavaScriptCore/runtime/JSSourceCode.cpp
M Source/JavaScriptCore/runtime/JSString.cpp
M Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp
M Source/JavaScriptCore/runtime/Lookup.cpp
M Source/JavaScriptCore/runtime/NativeErrorPrototypeInlines.h
M Source/JavaScriptCore/runtime/NumberPrototype.cpp
M Source/JavaScriptCore/runtime/Operations.h
A Source/JavaScriptCore/runtime/OperationsInlines.h
M Source/JavaScriptCore/runtime/PrototypeKey.h
M Source/JavaScriptCore/runtime/ScopedArguments.cpp
M Source/JavaScriptCore/runtime/ScopedArguments.h
M Source/JavaScriptCore/runtime/ScopedArgumentsTable.cpp
M Source/JavaScriptCore/runtime/ShadowRealmObject.cpp
M Source/JavaScriptCore/runtime/ShadowRealmObject.h
M Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp
M Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp
M Source/JavaScriptCore/runtime/Structure.cpp
M Source/JavaScriptCore/runtime/Structure.h
M Source/JavaScriptCore/runtime/StructureCreateInlines.h
M Source/JavaScriptCore/runtime/StructureInlines.h
M Source/JavaScriptCore/runtime/TemporalCalendar.cpp
M Source/JavaScriptCore/runtime/TemporalInstant.cpp
M Source/JavaScriptCore/runtime/WeakMapImpl.cpp
M Source/JavaScriptCore/runtime/WeakMapImpl.h
M Source/JavaScriptCore/runtime/WriteBarrierInlines.h
M Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerIdleStopTest.cpp
M Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerTestSupport.cpp
M
Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerVMLifecycleTest.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyException.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyTag.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyArrayPrototype.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp
M Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp
M Source/WebCore/Modules/streams/WritableStreamSink.cpp
M Source/WebCore/bindings/js/CommonVM.cpp
M Source/WebCore/bindings/js/InternalWritableStream.cpp
M Source/WebCore/bindings/js/JSDOMAsyncIterator.h
M Source/WebCore/bindings/js/JSDOMBuiltinConstructor.h
M Source/WebCore/bindings/js/JSDOMBuiltinConstructorBase.cpp
M Source/WebCore/bindings/js/JSDOMConstructor.h
M Source/WebCore/bindings/js/JSDOMConstructorBase.cpp
M Source/WebCore/bindings/js/JSDOMConstructorNotCallable.h
M Source/WebCore/bindings/js/JSDOMConstructorNotConstructable.h
M Source/WebCore/bindings/js/JSDOMConvertBoolean.cpp
M Source/WebCore/bindings/js/JSDOMConvertStrings.h
M Source/WebCore/bindings/js/JSDOMGlobalObjectInlines.h
M Source/WebCore/bindings/js/JSDOMIterator.h
M Source/WebCore/bindings/js/JSDOMLegacyFactoryFunction.h
M Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp
M Source/WebCore/bindings/js/JSDOMPromiseDeferred.h
M Source/WebCore/bindings/js/JSDOMWindowBase.cpp
M Source/WebCore/bindings/js/JSDOMWindowBase.h
M Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
M Source/WebCore/bindings/js/JSDOMWindowProperties.cpp
M Source/WebCore/bindings/js/JSDOMWindowProperties.h
M Source/WebCore/bindings/js/JSIDBSerializationGlobalObject.cpp
M Source/WebCore/bindings/js/JSIDBSerializationGlobalObject.h
M Source/WebCore/bindings/js/JSNavigatorCustom.cpp
M Source/WebCore/bindings/js/JSValueInWrappedObjectInlines.h
M Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp
M Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h
M Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp
M Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h
M Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp
M Source/WebCore/bindings/js/ScriptController.cpp
M Source/WebCore/bindings/js/ScriptModuleLoader.cpp
M Source/WebCore/bindings/js/SerializedScriptValue.cpp
M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
M Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.cpp
M Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.h
M Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSExposedStar.cpp
M Source/WebCore/bindings/scripts/test/JS/JSExposedStar.h
M Source/WebCore/bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp
M Source/WebCore/bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h
M Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSTestAsyncIterable.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestAsyncIterable.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestAsyncIterableWithoutFlags.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestAsyncIterableWithoutFlags.h
M Source/WebCore/bindings/scripts/test/JS/JSTestAsyncKeyValueIterable.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestAsyncKeyValueIterable.h
M Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h
M Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h
M Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h
M Source/WebCore/bindings/scripts/test/JS/JSTestConditional.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestConditional.h
M Source/WebCore/bindings/scripts/test/JS/JSTestConditionalIncludes.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestConditionalIncludes.h
M Source/WebCore/bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestConditionallyReadWrite.h
M Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h
M Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSON.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSON.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.h
M Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInherit.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h
M Source/WebCore/bindings/scripts/test/JS/JSTestDomainSecurity.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestDomainSecurity.h
M Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.h
M Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.h
M Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h
M Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h
M Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestException.h
M Source/WebCore/bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.h
M Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h
M Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h
M Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h
M Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h
M Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h
M Source/WebCore/bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h
M Source/WebCore/bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h
M Source/WebCore/bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h
M Source/WebCore/bindings/scripts/test/JS/JSTestMapLike.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestMapLike.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceConst.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceConst.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceObject.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceObject.h
M Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestNode.h
M Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
M Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.h
M Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h
M Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.h
M Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h
M Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlyMapLike.h
M Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlySetLike.h
M Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h
M Source/WebCore/bindings/scripts/test/JS/JSTestScheduledAction.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestScheduledAction.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h
M Source/WebCore/bindings/scripts/test/JS/JSTestSetLike.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestSetLike.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h
M Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
M
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h
M Source/WebCore/bindings/scripts/test/JS/JSTestTaggedWrapper.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestTaggedWrapper.h
M Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
M Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h
M Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.h
M Source/WebCore/dom/EventTarget.cpp
M Source/WebCore/fileapi/Blob.cpp
M Source/WebCore/inspector/WebInjectedScriptHost.cpp
M Source/WebCore/inspector/agents/page/PageHeapAgent.cpp
M Source/WebCore/platform/mac/SerializedPlatformDataCueMac.mm
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/js/WebCoreTestSupport.cpp
M Source/WebCore/workers/WorkerOrWorkletScriptController.cpp
M Source/WebKit/Shared/JavaScriptEvaluationResult.cpp
M Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp
M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp
M
Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm
M Source/WebKit/WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMNode.cpp
M Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebFormManager.cpp
M
Source/WebKit/WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp
M Source/WebKit/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp
M Source/WebKit/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp
M Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp
M Source/WebKitLegacy/mac/DOM/DOM.mm
Log Message:
-----------
[Build Speed] Reduce the cost of StructureInlines.h
rdar://174363603
https://bugs.webkit.org/show_bug.cgi?id=311778
Reviewed by Geoffrey Garen.
StructureInlines.h was the 4th most expensive header in the JSC build
(included 180 times, avg 866ms) and 2nd most expensive in the WebCore build
(included 225 times, avg 1096ms). JSCJSValueInlines.h was the 7th most
expensive in WebCore (included 221 times, avg 871ms). The high cost comes
from heavy transitive includes and circular dependencies between core JSC
headers.
This patch reduces these costs through several strategies:
1. Split StructureInlines.h into lighter headers:
- StructureCreateInlines.h: Contains Structure::create(),
createStructure(), subspaceFor(), finishCreation(), and
JSObject::didBecomePrototype(). For code that only defines
createStructure() methods.
- StructureArrayStorageInlines.h: Contains
mayInterceptIndexedAccesses() and holesMustForwardToPrototype(),
breaking the circular dependency between StructureInlines.h,
JSObjectInlines.h, and JSArrayInlines.h.
2. Create JSCJSValueCell.h to break the JSCJSValue/JSCell circular
dependency. This is a regular header (not Inlines) that any header can
include. It provides JSValue type-checking functions (isString, isObject,
isBigInt, toPrimitive, toBoolean, etc.) that previously required
JSCJSValueCellInlines.h. Structure.h includes it so all downstream
headers get these functions.
3. Rename JSCJSValueCellInlines.h to JSCJSValueStructure.h since it is no
longer an Inlines header — it just breaks the circular dependency on
Structure.h, providing JSValue::inherits, classInfoOrNull, and
structureOrNull.
4. Decompose JSCJSValueInlines.h by moving functions to headers that
already have the needed types:
- JSCJSValue.h: getUInt32, equal
- JSBigInt.h: asHeapBigInt, isZeroBigInt, isNegativeBigInt
- JSObject.h: put, putInline, putByIndex, getPrototype
- ExceptionHelpers.h: toIndex, requireObjectCoercible
- JSGlobalProxy.h: isThisValueAltered
- New JSCJSValuePropertyInlines.h: all get/getPropertySlot/
getOwnPropertySlot/getAs overloads (lightweight alternative to
JSCJSValueInlines.h for property access)
This removes 7 includes from JSCJSValueInlines.h: Error.h,
ExceptionHelpers.h, InternalFunction.h, JSGlobalProxy.h, MathCommon.h,
MakeString.h, JSCJSValueCellInlines.h.
5. Split Operations.h into Operations.h (declarations only) and
OperationsInlines.h (definitions). Operations.h is reduced from 6 heavy
includes to just JSExportMacros.h and Forward.h with forward
declarations. The JSBigInt ComparisonMode and ComparisonResult enums are
moved to namespace scope (as JSBigIntComparisonMode and
JSBigIntComparisonResult) to avoid requiring JSBigInt.h.
6. Move JSCell::classInfo() and JSCell::inherits() definitions to
Structure.h (where Structure is complete). Extract the sweeping
validation ASSERT to an out-of-line validateIsNotSweeping() in
JSCell.cpp to avoid pulling vm() into the header.
7. Mark HeapCell::heap() and HeapCell::vm() declarations as inline to catch
missing HeapCellInlines.h at compile time rather than link time. Remove
vm() calls from headers by passing VM& parameters
(FunctionRareData::clearInternalFunctionAllocationProfile,
JSBoundFunction::name/nameString) or using getVM(globalObject)
(JSString.h verifyCanGC). Change reportZappedCellAndCrash signature to
take just const JSCell* to avoid heap() call in JSCast.h.
8. Move Structure::checkOffsetConsistency and checkConsistency to
Structure.cpp since they are only used in debug builds and only called
from within Structure.cpp itself.
ClonedArguments::length(), DirectArguments::length(), and
ScopedArguments::length() are moved out-of-line to their respective .cpp
files since their inline definitions called JSObject::get() which was
previously visible through the transitive include chain being broken.
Long (>4 line) inline function definitions in Structure.h are moved to the
bottom of the file to improve API readability, with declarations marked
inline and annotated with "// Defined below".
After this change, StructureInlines.h drops from the top 5 most expensive
headers to #54 in WebCore, with average cost per include reduced from
~1096ms to ~294ms. In JSC it drops off the top expensive headers list
entirely.
Canonical link: https://commits.webkit.org/311458@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications