From: Agriya Khetarpal <74401230+agriyakhetarpal@users.noreply.github.com> Date: Fri, 7 Feb 2025 04:55:27 +0000 (+0000) Subject: Emscripten: use better `_Py_Version` computation for worker module (#129757) X-Git-Tag: v3.14.0a5~73 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e2064d67504bc360c20e03eeea8b360d605cb439;p=thirdparty%2FPython%2Fcpython.git Emscripten: use better `_Py_Version` computation for worker module (#129757) Use integer bit shifting instead of conversion to strings to compute Python version. --- 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");