diff --git a/document/js-api/index.bs b/document/js-api/index.bs
index d2096747..eeb9ab38 100644
--- a/document/js-api/index.bs
+++ b/document/js-api/index.bs
@@ -349,6 +349,7 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje
* \[[Module]] : a WebAssembly [=/module=]
* \[[Bytes]] : the source bytes of \[[Module]].
+ * \[[ModuleRecord]] : the WebAssembly Module Record if this WebAssembly module is associated with one.
To construct a WebAssembly module object from a module |module| and source bytes |bytes|, perform the following steps:
@@ -356,6 +357,7 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje
1. Let |moduleObject| be a new {{Module}} object.
1. Set |moduleObject|.\[[Module]] to |module|.
1. Set |moduleObject|.\[[Bytes]] to |bytes|.
+ 1. Set |moduleObject|.\[[ModuleRecord]] to null.
1. Return |moduleObject|.
@@ -1388,7 +1390,7 @@ To parse a WebAssembly module given a byte sequence |by
1. Let |requestedModules| be a set.
1. For each (|moduleName|, name, type) in [=module_imports=](|module|.\[[Module]]),
1. [=set/Append=] |moduleName| to |requestedModules|.
-1. Return {
+1. Let |moduleRecord| be {
\[[Realm]]: |realm|,
\[[Environment]]: ~empty~,
@@ -1409,6 +1411,8 @@ To parse a WebAssembly module given a byte sequence |by
\[[AsyncParentModules]]: « »,
\[[PendingAsyncDependencies]]: ~empty~,
}.
+1. Set |module|.\[[ModuleRecord]] to |moduleRecord|.
+1. Return |moduleRecord|.
Note: From HTML, it's not observable when [=parse a WebAssembly module=] begins, so any work perfomed in compilation may be performed off-thread.
@@ -1443,6 +1447,13 @@ WebAssembly Module Records have the following methods:
+
+
+
GetModuleSourceKind ( ) Concrete Method
+1. Return "WebAssembly.Module".
+
+
+
InitializeEnvironment ( ) Concrete Method
@@ -1481,9 +1492,38 @@ WebAssembly Module Records have the following methods:
-HostGetModuleSourceName
-
-Hosts should implement [$HostGetModuleSourceName$] such that whenever a WebAssembly {{Module}} object is provided with a \[[Module]] internal slot, the string "WebAssembly.Module
" is always returned.
+HostGetModuleSourceModuleRecord ( |specifier| )
+1. If |specifier| is a WebAssembly {{Module}} object with a \[[Module]] internal slot,
+ 1. If |specifier|.\[[Module]].\[[ModuleRecord]] is null,
+ 1. Let |realm| be the current agent's realm record.
+ 1. Let |requestedModules| be a set.
+ 1. For each (|moduleName|, name, type) in [=module_imports=](|specifier|.\[[Module]]),
+ 1. [=set/Append=] |moduleName| to |requestedModules|.
+ 1. Let |moduleRecord| be {
+
+ \[[Realm]]: |realm|,
+ \[[Environment]]: ~empty~,
+ \[[Namespace]]: ~empty~,
+ \[[ModuleSource]]: |module|,
+ \[[HostDefined]]: ~empty~,
+
+ \[[Status]]: "new",
+ \[[EvaluationError]]: undefined,
+ \[[DFSIndex]]: undefined,
+ \[[DFSAncestorIndex]]: undefined,
+ \[[RequestedModules]]: |requestedModules|,
+ \[[LoadedModules]]: « »,
+ \[[CycleRoot]]: ~empty~,
+ \[[HasTLA]]: false,
+ \[[AsyncEvaluation]]: false,
+ \[[TopLevelCapability]]: ~empty~
+ \[[AsyncParentModules]]: « »,
+ \[[PendingAsyncDependencies]]: ~empty~,
+ }.
+ 1. Set |module|.\[[ModuleRecord]] to |moduleRecord|.
+ 1. Return |moduleRecord|.
+ 1. Return |specifier|.\[[Module]].\[[ModuleRecord]].
+1. Return ~not-a-source~.
Note: See corresponding modifications to HTML in PR #10380.