@@ -1452,7 +1452,7 @@ WebAssembly Module Records have the following methods:
1452
1452
1. [=list/iterate|For each=] Record |r| of |resolveSet|,
1453
1453
1. If |record| and |r|.\[[Module]] are the same Module Record and |exportName| is |r|.\[[ExportName]] ,
1454
1454
1. Return null.
1455
- 1. Append the record { \[[Module]] : |record|, [[ExportName]] : |exportName| } to |resolveSet|.
1455
+ 1. Append the record { \[[Module]] : |record|, \ [[ExportName]] : |exportName| } to |resolveSet|.
1456
1456
1. [=list/iterate|For each=] (|name|, |importedModuleName|, |importName|, <var ignore> type</var> ) in [=module_indirect_exports=] (|module|),
1457
1457
1. If |name| is equal to |exportName|,
1458
1458
1. Let |importedModule| be [$GetImportedModule$] (|record|, |importedModuleName|).
@@ -1482,12 +1482,19 @@ WebAssembly Module Records have the following methods:
1482
1482
1. Let |env| be [$NewModuleEnvironment$] (null).
1483
1483
1. Set |record|.\[[Environment]] to |env|.
1484
1484
1. Let |module| be |record|.\[[ModuleSource]] .\[[Module]] .
1485
- 1. [=list/iterate|For each=] (|importedModuleName|, |name|, | type| ) in [=module_imports=] (|module|),
1485
+ 1. [=list/iterate|For each=] (|importedModuleName|, |name|, <var ignore> type</var> ) in [=module_imports=] (|module|),
1486
1486
1. Let |importedModule| be [$GetImportedModule$] (|record|, |importedModuleName|).
1487
1487
1. Let |resolution| be |importedModule|.ResolveExport(|name|).
1488
1488
1. If |resolution| is null or ~AMBIGUOUS~, throw a {{SyntaxError}} exception.
1489
+ 1. [=list/iterate|For each=] (|name|, |importedModuleName|, |importName|, <var ignore> type</var> ) in [=module_indirect_exports=] (|module|),
1490
+ 1. Let |importedModule| be [$GetImportedModule$] (|record|, |importedModuleName|).
1491
+ 1. Let |resolved| be [=?=] |importedModule|.ResolveExport(|importName|).
1492
+ 1. Assert |resolved| is not null or ~AMBIGUOUS~.
1493
+ 1. If |resolved|.\[[Module]] is not a WebAssembly Module Record,
1494
+ 1. Note: This case corresponds to indirect exports to non-WebAssembly bindings, which are always snapshotted.
1495
+ 1. Perform [=!=] |env|.CreateImmutableBinding(|name|, true).
1489
1496
1. [=list/iterate|For each=] (|name|, |externtype|) of [=module_direct_exports=] (|module|),
1490
- 1. If |type | is of the form [=global=] [=var=] | valtype| ,
1497
+ 1. If |externtype | is of the form [=global=] [=var=] <var ignore> valtype</var> ,
1491
1498
1. Perform [=!=] |env|.CreateMutableBinding(|name|, false).
1492
1499
1. Otherwise,
1493
1500
1. Perform [=!=] |env|.CreateImmutableBinding(|name|, true).
@@ -1499,14 +1506,14 @@ WebAssembly Module Records have the following methods:
1499
1506
<h3 id="module-execution">ExecuteModule ( [ |promiseCapability| ] ) Concrete Method</h3>
1500
1507
1. Assert: |promiseCapability| was not provided.
1501
1508
1. Let |record| be this WebAssembly Module Record.
1502
- 1. Let |module| be |record|.\[[ModuleSource]] \. [[Module]] .
1509
+ 1. Let |module| be |record|.\[[ModuleSource]] .\ [[Module]] .
1503
1510
1. Let |imports| be « ».
1504
1511
1. [=list/iterate|For each=] (|importedModuleName|, |name|, |importtype|) in [=module_imports=] (|module|),
1505
1512
1. Let |importedModule| be [$GetImportedModule$] (|record|, |importedModuleName|).
1506
1513
1. Let |resolution| be |importedModule|.ResolveExport(|name|).
1507
1514
1. If |resolution|.\[[Module]] is a WebAssembly Module Record,
1508
1515
1. Let |resolutionInstance| be |resolution|.\[[Module]] .\[[Instance]] .
1509
- 1. Let |resolutionModule| be |resolution|.\[[Module]] .\[[ModuleSource]] \. [[Module]] .
1516
+ 1. Let |resolutionModule| be |resolution|.\[[Module]] .\[[ModuleSource]] .\ [[Module]] .
1510
1517
1. Let |resolutionName| be |resolution|.\[[BindingName]] .
1511
1518
1. Let |externval| be [=instance_export=] (|resolutionInstance|, |resolutionName|).
1512
1519
1. Assert: |externval| is not [=error=] .
@@ -1523,7 +1530,7 @@ WebAssembly Module Records have the following methods:
1523
1530
1. Let |funcaddr| be the value of |v|'s \[[FunctionAddress]] internal slot.
1524
1531
1. Otherwise,
1525
1532
1. [=Create a host function=] from |v| and |functype|, and let |funcaddr| be the result.
1526
- 1. Let | index| be the number of external functions in |imports|. This value |index| is known as the <dfn> index of the host function</dfn> |funcaddr|.
1533
+ 1. Let <var ignore> index</var> be the number of external functions in |imports|, defining the [= index of the host function=] |funcaddr|.
1527
1534
1. Let |externfunc| be the [=external value=] [=external value|func=] |funcaddr|.
1528
1535
1. [=list/Append=] |externfunc| to |imports|.
1529
1536
1. If |importtype| is of the form [=global=] |mut| |valtype|,
@@ -1565,9 +1572,9 @@ WebAssembly Module Records have the following methods:
1565
1572
1. Note: When integrating with shared globals, they will be excluded here similarly to v128 above.
1566
1573
1. Perform [=!=] |record|.\[[Environment]] .InitializeBinding(|name|, [=ToJSValue=] (|global_value|)).
1567
1574
1. Associate all future mutations to the mutable value at |globaladdr| with the ECMA-262 binding record for |name| in
1568
- |record|.\[[Environment]] , such that |record|.\[[Environment]] .GetBindingValue(|resolution|.\[[BindingName]] , true)
1569
- always returns [=ToJSValue=] ([=global_read=] (|store|, |globaladdr|)) for the current [=surrounding agent=] 's
1570
- [=associated store=] |store|.
1575
+ |record|.\[[Environment]] , such that |record|.\[[Environment]] .GetBindingValue(|resolution|.\[[BindingName]] , true)
1576
+ always returns [=ToJSValue=] ([=global_read=] (|store|, |globaladdr|)) for the current [=surrounding agent=] 's
1577
+ [=associated store=] |store|.
1571
1578
1. If |externtype| is of the form [=mem=] <var ignore> memtype</var> ,
1572
1579
1. Assert: |externval| is of the form [=external value|mem=] |memaddr|.
1573
1580
1. Let [=external value|mem=] |memaddr| be |externval|.
0 commit comments