From 031c6b6035392f91777872360eb4b9d1a2f2041d Mon Sep 17 00:00:00 2001 From: Kevin Deng Date: Sat, 13 Jun 2026 18:25:05 +0900 Subject: [PATCH] perf: hoist instantiate function in helpers module --- src/helper.ts | 9 +++++---- tests/__snapshots__/init/browser.snap | 7 ++++--- tests/__snapshots__/init/neutral.snap | 7 ++++--- tests/__snapshots__/init/node.snap | 7 ++++--- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/helper.ts b/src/helper.ts index e687d63..bb388a9 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -85,11 +85,12 @@ function envModule(env: TargetEnv) { } export const getHelpersModule = (env: TargetEnv) => ` +function instantiate(source, imports, stream) { + const instantiate = WebAssembly[stream ? 'instantiateStreaming' : 'instantiate'] + return instantiate(source, imports).then(({ instance }) => instance) +} + export function loadWasmModule(sync, fileUrl, src, imports) { - function instantiate(source, imports, stream) { - const instantiate = stream ? WebAssembly.instantiateStreaming : WebAssembly.instantiate; - return instantiate(source, imports).then(({ instance }) => instance) - } ${envModule(env)} diff --git a/tests/__snapshots__/init/browser.snap b/tests/__snapshots__/init/browser.snap index 8b3ca75..58a85e3 100644 --- a/tests/__snapshots__/init/browser.snap +++ b/tests/__snapshots__/init/browser.snap @@ -2,10 +2,11 @@ [BINARY] // init.js //#region \0wasm-helpers.js +function instantiate(source, imports, stream) { + const instantiate = WebAssembly[stream ? "instantiateStreaming" : "instantiate"]; + return instantiate(source, imports).then(({ instance }) => instance); +} function loadWasmModule(sync, fileUrl, src, imports) { - function instantiate(source, imports, stream) { - return (stream ? WebAssembly.instantiateStreaming : WebAssembly.instantiate)(source, imports).then(({ instance }) => instance); - } let buf = null; if (fileUrl) return instantiate(fetch(fileUrl), imports, true); const raw = globalThis.atob(src); diff --git a/tests/__snapshots__/init/neutral.snap b/tests/__snapshots__/init/neutral.snap index b445425..d99f018 100644 --- a/tests/__snapshots__/init/neutral.snap +++ b/tests/__snapshots__/init/neutral.snap @@ -2,10 +2,11 @@ [BINARY] // init.js //#region \0wasm-helpers.js +function instantiate(source, imports, stream) { + const instantiate = WebAssembly[stream ? "instantiateStreaming" : "instantiate"]; + return instantiate(source, imports).then(({ instance }) => instance); +} function loadWasmModule(sync, fileUrl, src, imports) { - function instantiate(source, imports, stream) { - return (stream ? WebAssembly.instantiateStreaming : WebAssembly.instantiate)(source, imports).then(({ instance }) => instance); - } let buf = null; const isNode = typeof process !== "undefined" && process.versions != null && process.versions.node != null; if (fileUrl && isNode) { diff --git a/tests/__snapshots__/init/node.snap b/tests/__snapshots__/init/node.snap index 1664810..258cfa8 100644 --- a/tests/__snapshots__/init/node.snap +++ b/tests/__snapshots__/init/node.snap @@ -2,10 +2,11 @@ [BINARY] // init.js //#region \0wasm-helpers.js +function instantiate(source, imports, stream) { + const instantiate = WebAssembly[stream ? "instantiateStreaming" : "instantiate"]; + return instantiate(source, imports).then(({ instance }) => instance); +} function loadWasmModule(sync, fileUrl, src, imports) { - function instantiate(source, imports, stream) { - return (stream ? WebAssembly.instantiateStreaming : WebAssembly.instantiate)(source, imports).then(({ instance }) => instance); - } let buf = null; if (fileUrl) { const { readFile } = process.getBuiltinModule("fs/promises"); -- 2.51.2