Skip to content

Commit 3ff2891

Browse files
author
Guy Bedford
committed
fixup
1 parent 88ef520 commit 3ff2891

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

document/js-api/index.bs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,7 @@ WebAssembly Module Records have the following methods:
14521452
1. [=list/iterate|For each=] Record |r| of |resolveSet|,
14531453
1. If |record| and |r|.\[[Module]] are the same Module Record and |exportName| is |r|.\[[ExportName]],
14541454
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|.
14561456
1. [=list/iterate|For each=] (|name|, |importedModuleName|, |importName|, <var ignore>type</var>) in [=module_indirect_exports=](|module|),
14571457
1. If |name| is equal to |exportName|,
14581458
1. Let |importedModule| be [$GetImportedModule$](|record|, |importedModuleName|).
@@ -1482,12 +1482,19 @@ WebAssembly Module Records have the following methods:
14821482
1. Let |env| be [$NewModuleEnvironment$](null).
14831483
1. Set |record|.\[[Environment]] to |env|.
14841484
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|),
14861486
1. Let |importedModule| be [$GetImportedModule$](|record|, |importedModuleName|).
14871487
1. Let |resolution| be |importedModule|.ResolveExport(|name|).
14881488
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).
14891496
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>,
14911498
1. Perform [=!=] |env|.CreateMutableBinding(|name|, false).
14921499
1. Otherwise,
14931500
1. Perform [=!=] |env|.CreateImmutableBinding(|name|, true).
@@ -1499,14 +1506,14 @@ WebAssembly Module Records have the following methods:
14991506
<h3 id="module-execution">ExecuteModule ( [ |promiseCapability| ] ) Concrete Method</h3>
15001507
1. Assert: |promiseCapability| was not provided.
15011508
1. Let |record| be this WebAssembly Module Record.
1502-
1. Let |module| be |record|.\[[ModuleSource]]\.[[Module]].
1509+
1. Let |module| be |record|.\[[ModuleSource]].\[[Module]].
15031510
1. Let |imports| be « ».
15041511
1. [=list/iterate|For each=] (|importedModuleName|, |name|, |importtype|) in [=module_imports=](|module|),
15051512
1. Let |importedModule| be [$GetImportedModule$](|record|, |importedModuleName|).
15061513
1. Let |resolution| be |importedModule|.ResolveExport(|name|).
15071514
1. If |resolution|.\[[Module]] is a WebAssembly Module Record,
15081515
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]].
15101517
1. Let |resolutionName| be |resolution|.\[[BindingName]].
15111518
1. Let |externval| be [=instance_export=](|resolutionInstance|, |resolutionName|).
15121519
1. Assert: |externval| is not [=error=].
@@ -1523,7 +1530,7 @@ WebAssembly Module Records have the following methods:
15231530
1. Let |funcaddr| be the value of |v|'s \[[FunctionAddress]] internal slot.
15241531
1. Otherwise,
15251532
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|.
15271534
1. Let |externfunc| be the [=external value=] [=external value|func=] |funcaddr|.
15281535
1. [=list/Append=] |externfunc| to |imports|.
15291536
1. If |importtype| is of the form [=global=] |mut| |valtype|,
@@ -1565,9 +1572,9 @@ WebAssembly Module Records have the following methods:
15651572
1. Note: When integrating with shared globals, they will be excluded here similarly to v128 above.
15661573
1. Perform [=!=] |record|.\[[Environment]].InitializeBinding(|name|, [=ToJSValue=](|global_value|)).
15671574
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|.
15711578
1. If |externtype| is of the form [=mem=] <var ignore>memtype</var>,
15721579
1. Assert: |externval| is of the form [=external value|mem=] |memaddr|.
15731580
1. Let [=external value|mem=] |memaddr| be |externval|.

0 commit comments

Comments
 (0)