Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 17e27ee7cfd37a7d107fbee197cdba485d351c5f
https://github.com/WebKit/WebKit/commit/17e27ee7cfd37a7d107fbee197cdba485d351c5f
Author: Yusuke Suzuki <[email protected]>
Date: 2026-05-31 (Sun, 31 May 2026)
Changed paths:
M Source/JavaScriptCore/CMakeLists.txt
M Source/JavaScriptCore/DerivedSources-input.xcfilelist
M Source/JavaScriptCore/DerivedSources-output.xcfilelist
M Source/JavaScriptCore/DerivedSources.make
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
A Source/JavaScriptCore/Scripts/preprocess-builtin-js.py
M Source/JavaScriptCore/builtins/ArrayConstructor.js
M Source/JavaScriptCore/builtins/ArrayIteratorPrototype.js
M Source/JavaScriptCore/builtins/ArrayPrototype.js
M Source/JavaScriptCore/builtins/AsyncFromSyncIteratorPrototype.js
M Source/JavaScriptCore/builtins/AsyncGeneratorPrototype.js
A Source/JavaScriptCore/builtins/BuiltinsMacros.h
M Source/JavaScriptCore/builtins/DisposableStackPrototype.js
M Source/JavaScriptCore/builtins/GeneratorPrototype.js
M Source/JavaScriptCore/builtins/GlobalOperations.js
M Source/JavaScriptCore/builtins/IteratorHelpers.js
M Source/JavaScriptCore/builtins/JSIteratorConstructor.js
M Source/JavaScriptCore/builtins/PromiseOperations.js
M Source/JavaScriptCore/builtins/ProxyHelpers.js
M Source/JavaScriptCore/builtins/RegExpPrototype.js
M Source/JavaScriptCore/builtins/ShadowRealmPrototype.js
M Source/JavaScriptCore/inspector/InjectedScriptSource.js
M Source/WTF/wtf/Platform.h
Log Message:
-----------
[JSC] Apply C-preprocessor to JS builtin files
https://bugs.webkit.org/show_bug.cgi?id=314507
rdar://176723141
Reviewed by Mark Lam.
Currently, our builtin JS mechanism lacks many important mechanism,
1. We cannot use compile-time flags. It is problematic for debug-only
testing etc., making assertion etc. hard.
2. Our constant embedding mechanism is using BytecodeIntrinsic, which
requires substaintial weird code to just embed a named constant.
These things can be solved if we just run preprocessor onto the JS file,
like what we are doing to our sandbox definition file (preprocessor is applied,
so that it can use macro-definitions / compile-time flags).
* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/DerivedSources-input.xcfilelist:
* Source/JavaScriptCore/DerivedSources-output.xcfilelist:
* Source/JavaScriptCore/DerivedSources.make:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Scripts/preprocess-builtin-js.py: Added.
(extract_leading_comment):
(translate_extra_for_clang_cl):
(build_command):
(main):
* Source/JavaScriptCore/builtins/ArrayConstructor.js:
(linkTimeConstant.visibility.PrivateRecursive.async
defaultAsyncFromAsyncIterator): Deleted.
(linkTimeConstant.visibility.PrivateRecursive.async
defaultAsyncFromAsyncArrayLike): Deleted.
* Source/JavaScriptCore/builtins/ArrayIteratorPrototype.js:
(linkTimeConstant.arrayIteratorNextHelper): Deleted.
* Source/JavaScriptCore/builtins/ArrayPrototype.js:
(alwaysInline.filter): Deleted.
(linkTimeConstant.flatIntoArray): Deleted.
(linkTimeConstant.flatIntoArrayWithCallback): Deleted.
* Source/JavaScriptCore/builtins/AsyncFromSyncIteratorPrototype.js:
(linkTimeConstant.createAsyncFromSyncIterator): Deleted.
* Source/JavaScriptCore/builtins/AsyncGeneratorPrototype.js:
(linkTimeConstant.asyncGeneratorResumeNext): Deleted.
* Source/JavaScriptCore/builtins/BuiltinsMacros.h: Added.
* Source/JavaScriptCore/builtins/DisposableStackPrototype.js:
(linkTimeConstant.createDisposableResource): Deleted.
(linkTimeConstant.getDisposeMethod): Deleted.
(linkTimeConstant.getAsyncDisposeMethod): Deleted.
(linkTimeConstant.addDisposableResource): Deleted.
* Source/JavaScriptCore/builtins/GeneratorPrototype.js:
(linkTimeConstant.generatorResume): Deleted.
* Source/JavaScriptCore/builtins/GlobalOperations.js:
(linkTimeConstant.speciesConstructor): Deleted.
* Source/JavaScriptCore/builtins/IteratorHelpers.js:
(linkTimeConstant.performIteration): Deleted.
(linkTimeConstant.wrappedIterator.wrapper.iterator): Deleted.
(linkTimeConstant.wrappedIterator): Deleted.
(set linkTimeConstant.builtinMapIterable): Deleted.
* Source/JavaScriptCore/builtins/JSIteratorConstructor.js:
(linkTimeConstant.getIteratorFlattenable): Deleted.
* Source/JavaScriptCore/builtins/PromiseOperations.js:
(linkTimeConstant.newPromiseCapabilitySlow): Deleted.
(linkTimeConstant.newPromiseCapability): Deleted.
* Source/JavaScriptCore/builtins/ProxyHelpers.js:
(linkTimeConstant.performProxyObjectHas): Deleted.
(linkTimeConstant.performProxyObjectHasByVal): Deleted.
(linkTimeConstant.performProxyObjectGet): Deleted.
(linkTimeConstant.performProxyObjectGetByVal): Deleted.
(linkTimeConstant.performProxyObjectSetSloppy): Deleted.
(linkTimeConstant.performProxyObjectSetStrict): Deleted.
(linkTimeConstant.performProxyObjectSetByValSloppy): Deleted.
(linkTimeConstant.performProxyObjectSetByValStrict): Deleted.
* Source/JavaScriptCore/builtins/RegExpPrototype.js:
(linkTimeConstant.advanceStringIndex): Deleted.
(linkTimeConstant.regExpExec): Deleted.
(linkTimeConstant.hasObservableSideEffectsForRegExpMatch): Deleted.
(linkTimeConstant.matchSlow): Deleted.
(linkTimeConstant.hasObservableSideEffectsForRegExpSplit): Deleted.
* Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:
(linkTimeConstant.wrapRemoteValue): Deleted.
(linkTimeConstant.crossRealmThrow): Deleted.
* Source/JavaScriptCore/inspector/InjectedScriptSource.js:
(linkTimeConstant.createObjectWithoutPrototype): Deleted.
(linkTimeConstant.createArrayWithoutPrototype): Deleted.
* Source/WTF/wtf/Platform.h:
Canonical link: https://commits.webkit.org/314243@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications