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

Reply via email to