Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: de45366f4ebac2ecf43ee0e8e831e5506573d353
      
https://github.com/WebKit/WebKit/commit/de45366f4ebac2ecf43ee0e8e831e5506573d353
  Author: Sosuke Suzuki <[email protected]>
  Date:   2026-05-13 (Wed, 13 May 2026)

  Changed paths:
    A JSTests/modules/import-defer-cycle-root-error.js
    A JSTests/modules/import-defer-evaluation.js
    A JSTests/modules/import-defer-ic-poly.js
    A JSTests/modules/import-defer-ic.js
    A JSTests/modules/import-defer-mixed-phase.js
    A JSTests/modules/import-defer-reentrancy.js
    A JSTests/modules/import-defer-throws.js
    A JSTests/modules/import-defer-tla.js
    A JSTests/modules/import-defer-triggers.js
    A JSTests/modules/import-defer.js
    A JSTests/modules/import-defer/cycle-a.js
    A JSTests/modules/import-defer/cycle-b-exporter.js
    A JSTests/modules/import-defer/cycle-b.js
    A JSTests/modules/import-defer/dep.js
    A JSTests/modules/import-defer/eval-tracker.js
    A JSTests/modules/import-defer/mixed-dep.js
    A JSTests/modules/import-defer/mixed-middle.js
    A JSTests/modules/import-defer/re-export.js
    A JSTests/modules/import-defer/reentrant.js
    A JSTests/modules/import-defer/throws.js
    A JSTests/modules/import-defer/tla-child.js
    A JSTests/modules/import-defer/tla-dep-of-tla.js
    A JSTests/modules/import-defer/tla-parent.js
    A JSTests/modules/import-defer/tla-sync-dep.js
    A JSTests/modules/import-defer/trigger-define.js
    A JSTests/modules/import-defer/trigger-delete.js
    A JSTests/modules/import-defer/trigger-has.js
    A JSTests/modules/import-defer/trigger-index.js
    A JSTests/modules/import-defer/trigger-keys.js
    M JSTests/test262/config.yaml
    M Source/JavaScriptCore/parser/ModuleAnalyzer.cpp
    M Source/JavaScriptCore/parser/ModuleAnalyzer.h
    M Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp
    M Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp
    M Source/JavaScriptCore/runtime/AbstractModuleRecord.h
    M Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp
    M Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp
    M Source/JavaScriptCore/runtime/JSModuleNamespaceObject.h
    M Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp

  Log Message:
  -----------
  [JSC] Implement static `import defer` semantics
https://bugs.webkit.org/show_bug.cgi?id=313827

Reviewed by Yusuke Suzuki.

This implements the runtime semantics of the static `import defer * as ns`
form of the Deferred Module Evaluation proposal[1] on top of the new
C++ module loader. Loading and linking are unchanged; only evaluation is
deferred until the namespace object is touched via a non-symbol-like key.

Dynamic `import.defer()` is intentionally left for a follow-up; the
corresponding test262 entries are skipped in config.yaml.

The feature remains gated behind `--useImportDefer`.

[1] https://tc39.es/proposal-defer-import-eval/

* JSTests/modules/import-defer-cycle-root-error.js: Added.
(catch):
* JSTests/modules/import-defer-evaluation.js: Added.
* JSTests/modules/import-defer-ic.js: Added.
(readSymbol):
(readValue):
(readThen):
* JSTests/modules/import-defer-throws.js: Added.
(read):
* JSTests/modules/import-defer.js: Added.
* JSTests/modules/import-defer/cycle-a.js: Added.
* JSTests/modules/import-defer/cycle-b-exporter.js: Added.
* JSTests/modules/import-defer/cycle-b.js: Added.
* JSTests/modules/import-defer/dep.js: Added.
(export.then):
* JSTests/modules/import-defer/eval-tracker.js: Added.
* JSTests/modules/import-defer/re-export.js: Added.
* JSTests/modules/import-defer/throws.js: Added.
* JSTests/test262/config.yaml:
* Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:
(JSC::ModuleAnalyzer::appendRequestedModule):
(JSC::ModuleAnalyzer::exportVariable):
* Source/JavaScriptCore/parser/ModuleAnalyzer.h:
* Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:
(JSC::ImportDeclarationNode::analyzeModule):
* Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp:
(JSC::AbstractModuleRecord::visitChildrenImpl):
(JSC::AbstractModuleRecord::appendRequestedModule):
(JSC::AbstractModuleRecord::getModuleNamespace):
(JSC::AbstractModuleRecord::gatherAsynchronousTransitiveDependencies):
(JSC::AbstractModuleRecord::readyForSyncExecution):
(JSC::AbstractModuleRecord::evaluateSync):
(JSC::AbstractModuleRecord::innerModuleEvaluation):
* Source/JavaScriptCore/runtime/AbstractModuleRecord.h:
* Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp:
(JSC::CyclicModuleRecord::initializeEnvironment):
* Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::isSymbolLikeNamespaceKey):
(JSC::JSModuleNamespaceObject::ensureDeferredNamespaceEvaluation):
(JSC::JSModuleNamespaceObject::getOwnPropertySlotCommon):
(JSC::JSModuleNamespaceObject::deleteProperty):
(JSC::JSModuleNamespaceObject::deletePropertyByIndex):
(JSC::JSModuleNamespaceObject::getOwnPropertyNames):
(JSC::JSModuleNamespaceObject::defineOwnProperty):
* Source/JavaScriptCore/runtime/JSModuleNamespaceObject.h:
* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::tryCreate):

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



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

Reply via email to