pyodide/emsdk/patches/0003-Changes-for-JSPI.patch

86 lines
2.8 KiB
Diff
Raw Normal View History

2025-02-01 19:14:52 +00:00
From 3d483b35ff7ed6dbb8c438f08e5a3579725fe304 Mon Sep 17 00:00:00 2001
From: Hood Chatham <roberthoodchatham@gmail.com>
Date: Thu, 22 Jun 2023 18:53:22 -0700
2025-02-01 12:02:06 +00:00
Subject: [PATCH 3/5] Changes for JSPI
---
src/library.js | 2 +-
src/library_dylink.js | 3 ++-
2024-05-07 07:59:57 +00:00
src/parseTools.mjs | 2 +-
2025-02-01 12:02:06 +00:00
src/preamble.js | 5 +++++
4 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/library.js b/src/library.js
2025-02-01 19:14:52 +00:00
index c7f26d291..caca8ff7d 100644
--- a/src/library.js
+++ b/src/library.js
2025-02-01 19:14:52 +00:00
@@ -492,7 +492,7 @@ addToLibrary({
#if EXCEPTION_STACK_TRACES
throw new EmscriptenSjLj;
#else
- throw Infinity;
+ throw Module.wrapException(Infinity);
#endif
},
#elif !SUPPORT_LONGJMP
diff --git a/src/library_dylink.js b/src/library_dylink.js
2025-02-01 12:02:06 +00:00
index b3440d9dc..5cbd4c487 100644
--- a/src/library_dylink.js
+++ b/src/library_dylink.js
@@ -73,6 +73,7 @@ var LibraryDylink = {
#if !DISABLE_EXCEPTION_CATCHING || SUPPORT_LONGJMP == 'emscripten'
$createInvokeFunction__internal: true,
2024-05-07 07:59:57 +00:00
$createInvokeFunction__deps: ['$dynCall', 'setThrew', '$stackSave', '$stackRestore'],
+ $createInvokeFunction__postset: "if(!Module.createInvoke) { Module.createInvoke = Module.createInvokeFunction; }",
2025-01-20 14:44:04 +00:00
$createInvokeFunction: (sig) => (ptr, ...args) => {
var sp = stackSave();
try {
@@ -129,7 +130,7 @@ var LibraryDylink = {
// Asm.js-style exception handling: invoke wrapper generation
else if (symName.startsWith('invoke_')) {
// Create (and cache) new invoke_ functions on demand.
- sym = wasmImports[symName] = createInvokeFunction(symName.split('_')[1]);
+ sym = wasmImports[symName] = Module.createInvoke(symName.split('_')[1]);
}
#endif
#if !DISABLE_EXCEPTION_CATCHING
2024-05-07 07:59:57 +00:00
diff --git a/src/parseTools.mjs b/src/parseTools.mjs
2025-02-01 12:02:06 +00:00
index ca474affa..300f38e38 100644
2024-05-07 07:59:57 +00:00
--- a/src/parseTools.mjs
+++ b/src/parseTools.mjs
2025-01-29 11:06:53 +00:00
@@ -585,7 +585,7 @@ function makeThrow(excPtr) {
}
return `assert(false, '${assertInfo}');`;
}
- return `throw ${excPtr};`;
+ return `throw Module.wrapException(${excPtr});`;
}
function storeException(varName, excPtr) {
diff --git a/src/preamble.js b/src/preamble.js
2025-02-01 12:02:06 +00:00
index d924c4ab9..f80aae1ff 100644
--- a/src/preamble.js
+++ b/src/preamble.js
2025-01-30 17:50:19 +00:00
@@ -14,6 +14,10 @@
// An online HTML version (which may be of a different version of Emscripten)
// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
+if(!Module.wrapException) {
+ Module.wrapException = (e) => e;
+}
+
#if RELOCATABLE
{{{ makeModuleReceiveWithVar('dynamicLibraries', undefined, '[]', true) }}}
#endif
2025-02-01 12:02:06 +00:00
@@ -1054,6 +1058,7 @@ function createWasm() {
#endif // WASM_ASYNC_COMPILATION
2024-05-07 07:59:57 +00:00
var info = getWasmImports();
2025-02-01 12:02:06 +00:00
+ Module.adjustWasmImports?.(info);
#if expectToReceiveOnModule('instantiateWasm')
// User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback
--
2024-05-07 07:59:57 +00:00
2.34.1