https://github.com/python/cpython/commit/cae15267166e217822e3c58ac22b7817162f323a
commit: cae15267166e217822e3c58ac22b7817162f323a
branch: main
author: Hood Chatham <[email protected]>
committer: encukou <[email protected]>
date: 2024-07-14T11:25:09+02:00
summary:

gh-121698 Emscripten: Use updated WebAssembly type reflection proposal 
(GH-121699)

files:
M Python/emscripten_trampoline.c

diff --git a/Python/emscripten_trampoline.c b/Python/emscripten_trampoline.c
index 2a80ec4f18d757..960c6b4a2ef995 100644
--- a/Python/emscripten_trampoline.c
+++ b/Python/emscripten_trampoline.c
@@ -10,7 +10,17 @@
  * 
https://github.com/GoogleChromeLabs/wasm-feature-detect/blob/main/src/detectors/type-reflection/index.js
  */
 EM_JS(int, _PyEM_detect_type_reflection, (), {
-    return "Function" in WebAssembly;
+    if (!("Function" in WebAssembly)) {
+        return false;
+    }
+    if (WebAssembly.Function.type) {
+        // Node v20
+        Module.PyEM_CountArgs = (func) => 
WebAssembly.Function.type(wasmTable.get(func)).parameters.length;
+    } else {
+        // Node >= 22, v8-based browsers
+        Module.PyEM_CountArgs = (func) => 
wasmTable.get(func).type().parameters.length;
+    }
+    return true;
 });
 
 void
@@ -43,7 +53,7 @@ EM_JS(int, _PyEM_CountFuncParams, (PyCFunctionWithKeywords 
func),
     if (n !== undefined) {
         return n;
     }
-    n = WebAssembly.Function.type(wasmTable.get(func)).parameters.length;
+    n = Module.PyEM_CountArgs(func);
     _PyEM_CountFuncParams.cache.set(func, n);
     return n;
 }

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to