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.