diff --git a/.eslintrc.js b/.eslintrc.js index 57345ff50dc46d..fc9c9118532371 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -359,6 +359,7 @@ module.exports = { MessagePort: 'readable', TextEncoder: 'readable', TextDecoder: 'readable', + WebAssembly: 'readonly', queueMicrotask: 'readable', globalThis: 'readable', btoa: 'readable', diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml index 90715e4ea37d69..824d13527986cc 100644 --- a/lib/.eslintrc.yaml +++ b/lib/.eslintrc.yaml @@ -152,6 +152,7 @@ rules: into: Safe - name: WeakSet into: Safe + - name: WebAssembly globals: Intl: false # Parameters passed to internal modules diff --git a/lib/internal/freeze_intrinsics.js b/lib/internal/freeze_intrinsics.js index ea613966980c96..618489cc9650bb 100644 --- a/lib/internal/freeze_intrinsics.js +++ b/lib/internal/freeze_intrinsics.js @@ -118,6 +118,14 @@ const { WeakRefPrototype, WeakSet, WeakSetPrototype, + WebAssembly, + WebAssemblyModulePrototype, + WebAssemblyInstancePrototype, + WebAssemblyTablePrototype, + WebAssemblyMemoryPrototype, + WebAssemblyCompileErrorPrototype, + WebAssemblyLinkErrorPrototype, + WebAssemblyRuntimeErrorPrototype, decodeURI, decodeURIComponent, encodeURI, @@ -129,7 +137,6 @@ const { Atomics, Intl, SharedArrayBuffer, - WebAssembly } = globalThis; module.exports = function() { @@ -217,13 +224,13 @@ module.exports = function() { // Other APIs / Web Compatibility console.Console.prototype, - WebAssembly.Module.prototype, - WebAssembly.Instance.prototype, - WebAssembly.Table.prototype, - WebAssembly.Memory.prototype, - WebAssembly.CompileError.prototype, - WebAssembly.LinkError.prototype, - WebAssembly.RuntimeError.prototype, + WebAssemblyModulePrototype, + WebAssemblyInstancePrototype, + WebAssemblyTablePrototype, + WebAssemblyMemoryPrototype, + WebAssemblyCompileErrorPrototype, + WebAssemblyLinkErrorPrototype, + WebAssemblyRuntimeErrorPrototype, ]; const intrinsics = [ // 10.2.4.1 ThrowTypeError diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js index ba00041c417706..eea6ab99d56419 100644 --- a/lib/internal/modules/esm/translators.js +++ b/lib/internal/modules/esm/translators.js @@ -17,7 +17,11 @@ const { StringPrototypeSlice, StringPrototypeStartsWith, SyntaxErrorPrototype, - globalThis: { WebAssembly }, + WebAssembly, + WebAssemblyCompile, + WebAssemblyInstance, + WebAssemblyModuleExports, + WebAssemblyModuleImports, } = primordials; let _TYPES = null; @@ -345,21 +349,21 @@ translators.set('wasm', async function(url, source) { let compiled; try { - compiled = await WebAssembly.compile(source); + compiled = await WebAssemblyCompile(source); } catch (err) { err.message = errPath(url) + ': ' + err.message; throw err; } const imports = - ArrayPrototypeMap(WebAssembly.Module.imports(compiled), + ArrayPrototypeMap(WebAssemblyModuleImports(compiled), ({ module }) => module); const exports = - ArrayPrototypeMap(WebAssembly.Module.exports(compiled), + ArrayPrototypeMap(WebAssemblyModuleExports(compiled), ({ name }) => name); return createDynamicModule(imports, exports, url, (reflect) => { - const { exports } = new WebAssembly.Instance(compiled, reflect.imports); + const { exports } = new WebAssemblyInstance(compiled, reflect.imports); for (const expt of ObjectKeys(exports)) reflect.exports[expt].set(exports[expt]); }).module;