From 1061369af4e8bc221abacb17a983632b9e997b3c Mon Sep 17 00:00:00 2001 From: Cheng Shao <terrorjack@type.dance> Date: Sun, 16 Mar 2025 21:03:06 +0000 Subject: [PATCH] wasm: fix dyld setImmediate usage in browser The wasm dyld script used to only run in node and directly uses setImmediate in globalThis. In case of browsers, it needs to import setImmediate from the prelude, hence this commit. (cherry picked from commit 9a6971813d16054d8e1aec6f2948188bbd74e892) (cherry picked from commit 5f261dcde90bcf28ac966199994eefa38ad2ea23) --- utils/jsffi/dyld.mjs | 2 +- utils/jsffi/prelude.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/jsffi/dyld.mjs b/utils/jsffi/dyld.mjs index 3dea4474115..a602becee25 100755 --- a/utils/jsffi/dyld.mjs +++ b/utils/jsffi/dyld.mjs @@ -91,7 +91,7 @@ import fs from "node:fs"; import path from "node:path"; import stream from "node:stream"; import { WASI } from "node:wasi"; -import { JSValManager } from "./prelude.mjs"; +import { JSValManager, setImmediate } from "./prelude.mjs"; import { parseRecord, parseSections } from "./post-link.mjs"; // Make a consumer callback from a buffer. See Parser class diff --git a/utils/jsffi/prelude.mjs b/utils/jsffi/prelude.mjs index 91015283caa..7af91e52add 100644 --- a/utils/jsffi/prelude.mjs +++ b/utils/jsffi/prelude.mjs @@ -39,7 +39,7 @@ export class JSValManager { // To benchmark different setImmediate() implementations in the // browser, use https://github.com/jphpsf/setImmediate-shim-demo as a // starting point. -const setImmediate = await (async () => { +export const setImmediate = await (async () => { // node, bun, or other scripts might have set this up in the browser if (globalThis.setImmediate) { return globalThis.setImmediate; -- GitLab