@@ -349,13 +349,15 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje
349
349
350
350
* \[[Module]] : a WebAssembly [=/module=]
351
351
* \[[Bytes]] : the source bytes of \[[Module]] .
352
+ * \[[ModuleRecord]] : the <a>WebAssembly Module Record</a> if this WebAssembly module is associated with one.
352
353
353
354
<div algorithm>
354
355
To <dfn>construct a WebAssembly module object</dfn> from a module |module| and source bytes |bytes|, perform the following steps:
355
356
356
357
1. Let |moduleObject| be a new {{Module}} object.
357
358
1. Set |moduleObject|.\[[Module]] to |module|.
358
359
1. Set |moduleObject|.\[[Bytes]] to |bytes|.
360
+ 1. Set |moduleObject|.\[[ModuleRecord]] to null.
359
361
1. Return |moduleObject|.
360
362
</div>
361
363
@@ -1388,7 +1390,7 @@ To <dfn export>parse a WebAssembly module</dfn> given a <a>byte sequence</a> |by
1388
1390
1. Let |requestedModules| be a set.
1389
1391
1. For each (|moduleName|, <var ignore> name</var> , <var ignore> type</var> ) in [=module_imports=] (|module|.\[[Module]] ),
1390
1392
1. [=set/Append=] |moduleName| to |requestedModules|.
1391
- 1. Return {
1393
+ 1. Let |moduleRecord| be {
1392
1394
<!-- Abstract Module Records -->
1393
1395
\[[Realm]] : |realm|,
1394
1396
\[[Environment]] : ~empty~,
@@ -1409,6 +1411,8 @@ To <dfn export>parse a WebAssembly module</dfn> given a <a>byte sequence</a> |by
1409
1411
\[[AsyncParentModules]] : « »,
1410
1412
\[[PendingAsyncDependencies]] : ~empty~,
1411
1413
}.
1414
+ 1. Set |module|.\[[ModuleRecord]] to |moduleRecord|.
1415
+ 1. Return |moduleRecord|.
1412
1416
1413
1417
Note: From HTML, it's not observable when [=parse a WebAssembly module=] begins, so any work perfomed in compilation may be performed off-thread.
1414
1418
</div>
@@ -1443,6 +1447,13 @@ WebAssembly Module Records have the following methods:
1443
1447
1444
1448
</div>
1445
1449
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
+
1446
1457
<div algorithm=InitializeEnvironment>
1447
1458
1448
1459
<h3 id="module-declaration-environment-setup">InitializeEnvironment ( ) Concrete Method</h3>
@@ -1481,9 +1492,38 @@ WebAssembly Module Records have the following methods:
1481
1492
1482
1493
</div>
1483
1494
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]] : « »,
1516
+ \[[CycleRoot]] : ~empty~,
1517
+ \[[HasTLA]] : false,
1518
+ \[[AsyncEvaluation]] : false,
1519
+ \[[TopLevelCapability]] : ~empty~
1520
+ \[[AsyncParentModules]] : « »,
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~.
1487
1527
1488
1528
Note: See corresponding modifications to HTML in <a href="https://github.com/whatwg/html/pull/10380">PR #10380</a> .
1489
1529
0 commit comments