From e2064d67504bc360c20e03eeea8b360d605cb439 Mon Sep 17 00:00:00 2001 From: Agriya Khetarpal <74401230+agriyakhetarpal@users.noreply.github.com> Date: Fri, 7 Feb 2025 04:55:27 +0000 Subject: [PATCH] Emscripten: use better `_Py_Version` computation for worker module (#129757) Use integer bit shifting instead of conversion to strings to compute Python version. --- Tools/wasm/emscripten/web_example/python.worker.mjs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Tools/wasm/emscripten/web_example/python.worker.mjs b/Tools/wasm/emscripten/web_example/python.worker.mjs index 8043e4199667..5f9012a492a3 100644 --- a/Tools/wasm/emscripten/web_example/python.worker.mjs +++ b/Tools/wasm/emscripten/web_example/python.worker.mjs @@ -70,12 +70,9 @@ const emscriptenSettings = { postMessage({ type: "ready", stdinBuffer: stdinBuffer.sab }); }, async preRun(Module) { - const versionHex = Module.HEAPU32[Module._Py_Version / 4].toString(16); - const versionTuple = versionHex - .padStart(8, "0") - .match(/.{1,2}/g) - .map((x) => parseInt(x, 16)); - const [major, minor, ..._] = versionTuple; + const versionInt = Module.HEAPU32[Module._Py_Version >>> 2]; + const major = (versionInt >>> 24) & 0xff; + const minor = (versionInt >>> 16) & 0xff; // Prevent complaints about not finding exec-prefix by making a lib-dynload directory Module.FS.mkdirTree(`/lib/python${major}.${minor}/lib-dynload/`); Module.addRunDependency("install-stdlib"); -- 2.47.3