Skip to content

Commit 8f8a354

Browse files
authored
Merge pull request #98 from WebAssembly/get-module-source-module-record
Use updated HostGetModuleSourceModuleRecord host function
2 parents cad8154 + ba0f161 commit 8f8a354

File tree

1 file changed

+44
-4
lines changed

1 file changed

+44
-4
lines changed

document/js-api/index.bs

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -349,13 +349,15 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje
349349

350350
* \[[Module]] : a WebAssembly [=/module=]
351351
* \[[Bytes]] : the source bytes of \[[Module]].
352+
* \[[ModuleRecord]] : the <a>WebAssembly Module Record</a> if this WebAssembly module is associated with one.
352353

353354
<div algorithm>
354355
To <dfn>construct a WebAssembly module object</dfn> from a module |module| and source bytes |bytes|, perform the following steps:
355356

356357
1. Let |moduleObject| be a new {{Module}} object.
357358
1. Set |moduleObject|.\[[Module]] to |module|.
358359
1. Set |moduleObject|.\[[Bytes]] to |bytes|.
360+
1. Set |moduleObject|.\[[ModuleRecord]] to null.
359361
1. Return |moduleObject|.
360362
</div>
361363

@@ -1388,7 +1390,7 @@ To <dfn export>parse a WebAssembly module</dfn> given a <a>byte sequence</a> |by
13881390
1. Let |requestedModules| be a set.
13891391
1. For each (|moduleName|, <var ignore>name</var>, <var ignore>type</var>) in [=module_imports=](|module|.\[[Module]]),
13901392
1. [=set/Append=] |moduleName| to |requestedModules|.
1391-
1. Return {
1393+
1. Let |moduleRecord| be {
13921394
<!-- Abstract Module Records -->
13931395
\[[Realm]]: |realm|,
13941396
\[[Environment]]: ~empty~,
@@ -1409,6 +1411,8 @@ To <dfn export>parse a WebAssembly module</dfn> given a <a>byte sequence</a> |by
14091411
\[[AsyncParentModules]]: &laquo; &raquo;,
14101412
\[[PendingAsyncDependencies]]: ~empty~,
14111413
}.
1414+
1. Set |module|.\[[ModuleRecord]] to |moduleRecord|.
1415+
1. Return |moduleRecord|.
14121416

14131417
Note: From HTML, it's not observable when [=parse a WebAssembly module=] begins, so any work perfomed in compilation may be performed off-thread.
14141418
</div>
@@ -1443,6 +1447,13 @@ WebAssembly Module Records have the following methods:
14431447

14441448
</div>
14451449

1450+
<div algorithm=GetModuleSourceKind>
1451+
1452+
<h3 id="get-module-source-kind">GetModuleSourceKind ( ) Concrete Method</h3>
1453+
1. Return "WebAssembly.Module".
1454+
1455+
</div>
1456+
14461457
<div algorithm=InitializeEnvironment>
14471458

14481459
<h3 id="module-declaration-environment-setup">InitializeEnvironment ( ) Concrete Method</h3>
@@ -1481,9 +1492,38 @@ WebAssembly Module Records have the following methods:
14811492

14821493
</div>
14831494

1484-
<h3 id="hostgetmodulesourcename">HostGetModuleSourceName</h3>
1485-
1486-
Hosts should implement [$HostGetModuleSourceName$] such that whenever a WebAssembly {{Module}} object is provided with a \[[Module]] internal slot, the string "<code data-x="">WebAssembly.Module</code>" is always returned.
1495+
<h3 id="hostgetmodulesourcemodulerecord">HostGetModuleSourceModuleRecord ( |specifier| )</h3>
1496+
1. If |specifier| is a WebAssembly {{Module}} object with a \[[Module]] internal slot,
1497+
1. If |specifier|.\[[Module]].\[[ModuleRecord]] is null,
1498+
1. Let |realm| be the current agent's realm record.
1499+
1. Let |requestedModules| be a set.
1500+
1. For each (|moduleName|, <var ignore>name</var>, <var ignore>type</var>) in [=module_imports=](|specifier|.\[[Module]]),
1501+
1. [=set/Append=] |moduleName| to |requestedModules|.
1502+
1. Let |moduleRecord| be {
1503+
<!-- Abstract Module Records -->
1504+
\[[Realm]]: |realm|,
1505+
\[[Environment]]: ~empty~,
1506+
\[[Namespace]]: ~empty~,
1507+
\[[ModuleSource]]: |module|,
1508+
\[[HostDefined]]: ~empty~,
1509+
<!-- Cyclic Module Records -->
1510+
\[[Status]]: "new",
1511+
\[[EvaluationError]]: undefined,
1512+
\[[DFSIndex]]: undefined,
1513+
\[[DFSAncestorIndex]]: undefined,
1514+
\[[RequestedModules]]: |requestedModules|,
1515+
\[[LoadedModules]]: &laquo; &raquo;,
1516+
\[[CycleRoot]]: ~empty~,
1517+
\[[HasTLA]]: false,
1518+
\[[AsyncEvaluation]]: false,
1519+
\[[TopLevelCapability]]: ~empty~
1520+
\[[AsyncParentModules]]: &laquo; &raquo;,
1521+
\[[PendingAsyncDependencies]]: ~empty~,
1522+
}.
1523+
1. Set |module|.\[[ModuleRecord]] to |moduleRecord|.
1524+
1. Return |moduleRecord|.
1525+
1. Return |specifier|.\[[Module]].\[[ModuleRecord]].
1526+
1. Return ~not-a-source~.
14871527

14881528
Note: See corresponding modifications to HTML in <a href="https://github.com/whatwg/html/pull/10380">PR #10380</a>.
14891529

0 commit comments

Comments
 (0)