Skip to content

Commit c571db1

Browse files
authored
Adding logic to eager evaluate async dependencies of indirect requests (#24)
1 parent 650d723 commit c571db1

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

spec.emu

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,14 +1234,18 @@ contributors: Nicolò Ribaudo
12341234
1. Append _requiredModule_ to _evaluationList_.
12351235
1. If _requiredModule_ is a Cyclic Module Record, then
12361236
1. Let _importedNames_ be _request_.[[ImportedNames]].
1237-
1. [id="step-BuildEvaluationList-reset-importedNames"] If _importedNames_ = ~all~, set _importedNames_ to « ».
1238-
1. Let _optionalIndirectRequests_ be _requiredModule_.GetOptionalIndirectExportsModuleRequests(_importedNames_).
1239-
1. Perform BuildEvaluationList(_evaluationList_, _requiredModule_, _optionalIndirectRequests_).
1237+
1. [id="step-BuildEvaluationList-all-importedNames"] If _importedNames_ = ~all~, then
1238+
1. Let _allOptionalIndirectRequests_ be _requiredModule_.GetOptionalIndirectExportsModuleRequests(_importedNames_).
1239+
1. Let _seen_ be a new empty List.
1240+
1. Perform ListAppendUnique(_evaluationList_, GatherAsynchronousTransitiveDependenciesForRequests(_requiredModule_, _allOptionalIndirectRequests_, _seen_)).
1241+
1. Else,
1242+
1. Let _optionalIndirectRequests_ be _requiredModule_.GetOptionalIndirectExportsModuleRequests(_importedNames_).
1243+
1. Perform BuildEvaluationList(_evaluationList_, _requiredModule_, _optionalIndirectRequests_).
12401244
1. Return ~unused~.
12411245
</emu-alg>
12421246

12431247
<emu-note>
1244-
<p>Step <emu-xref href="#step-BuildEvaluationList-reset-importedNames"></emu-xref> empties _request_.[[ImportedNames]] when it's set to ~all~, so that `import *` does not cause the evaluation of modules loaded through `export defer`. They will be evaluated by the module namespace exotic object <emu-xref href="#sec-module-namespace-exotic-objects-get-p-receiver">[[Get]]</emu-xref> internal method, upon access of the corresponding binding.</p>
1248+
<p>Step <emu-xref href="#step-BuildEvaluationList-all-importedNames"></emu-xref> is true when there's `import *`. For such case, only asynchronous transitive dependencies of modules loaded through `export defer` are evaluated at this point, while synchronous dependecies should not be evaluated. They will be evaluated by the module namespace exotic object <emu-xref href="#sec-module-namespace-exotic-objects-get-p-receiver">[[Get]]</emu-xref> internal method, upon access of the corresponding binding.</p>
12451249
</emu-note>
12461250

12471251
<emu-note>
@@ -1294,13 +1298,13 @@ contributors: Nicolò Ribaudo
12941298
1. <del>For each Module Record _m_ of _additionalModules_, do</del>
12951299
1. <del>If _result_ does not contain _m_, append _m_ to _result_.</del>
12961300
1. <del>Return _result_.</del>
1297-
1. <ins>Return InnerGatherAsynchronousTransitiveDependencies(_module_, _module_.[[RequestedModules]], _seen_).</ins>
1301+
1. <ins>Return GatherAsynchronousTransitiveDependenciesForRequests(_module_, _module_.[[RequestedModules]], _seen_).</ins>
12981302
</emu-alg>
12991303

1300-
<emu-clause id="sec-InnerGatherAsynchronousTransitiveDependencies" type="abstract operation">
1304+
<emu-clause id="sec-GatherAsynchronousTransitiveDependenciesForRequests" type="abstract operation">
13011305
<h1>
13021306
<ins>
1303-
InnerGatherAsynchronousTransitiveDependencies (
1307+
GatherAsynchronousTransitiveDependenciesForRequests (
13041308
_referrer_: a Cyclic Module Record,
13051309
_moduleRequests_: a List of ModuleRequest Records,
13061310
_seen_: a List of Module Records
@@ -1318,7 +1322,7 @@ contributors: Nicolò Ribaudo
13181322
1. Let _requiredModule_ be GetImportedModule(_referrer_, _request_).
13191323
1. Perform ListAppendUnique(_result_, GatherAsynchronousTransitiveDependencies(_requiredModule_, _seen_)).
13201324
1. Let _optionalIndirectRequests_ be _requiredModule_.GetOptionalIndirectExportsModuleRequests(_request_.[[ImportedNames]]).
1321-
1. Perform ListAppendUnique(_result_, InnerGatherAsynchronousTransitiveDependencies(_requiredModule_, _optionalIndirectRequests_, _seen_)).
1325+
1. Perform ListAppendUnique(_result_, GatherAsynchronousTransitiveDependenciesForRequests(_requiredModule_, _optionalIndirectRequests_, _seen_)).
13221326
1. Return _result_.
13231327
</emu-alg>
13241328
</emu-clause>

0 commit comments

Comments
 (0)