diff --git a/imports/emscripten/emscripten_test.go b/imports/emscripten/emscripten_test.go index a68aa93774..5bad84a137 100644 --- a/imports/emscripten/emscripten_test.go +++ b/imports/emscripten/emscripten_test.go @@ -30,7 +30,7 @@ var growWasm []byte // invokeWasm was generated by the following: // -// cd testdata; wat2wasm --debug-names invoke.wat +// cd testdata; wasm-tools parse invoke.wat -o invoke.wasm // //go:embed testdata/invoke.wasm var invokeWasm []byte diff --git a/imports/emscripten/testdata/invoke.wasm b/imports/emscripten/testdata/invoke.wasm index b2020dec78..aaa241a56f 100644 Binary files a/imports/emscripten/testdata/invoke.wasm and b/imports/emscripten/testdata/invoke.wasm differ diff --git a/imports/emscripten/testdata/invoke.wat b/imports/emscripten/testdata/invoke.wat index 15acbb0332..ee49a8ff13 100644 --- a/imports/emscripten/testdata/invoke.wat +++ b/imports/emscripten/testdata/invoke.wat @@ -15,9 +15,9 @@ (table 22 22 funcref) (global $__stack_pointer (mut i32) (i32.const 65536)) - (func $stackSave (export "stackSave") (result i32) + (func $stackSave (export "emscripten_stack_get_current") (result i32) global.get $__stack_pointer) - (func $stackRestore (export "stackRestore") (param i32) + (func $stackRestore (export "_emscripten_stack_restore") (param i32) local.get 0 global.set $__stack_pointer) (func $setThrew (export "setThrew") (param i32 i32)) diff --git a/internal/emscripten/emscripten.go b/internal/emscripten/emscripten.go index 4492df58c7..9606f26b58 100644 --- a/internal/emscripten/emscripten.go +++ b/internal/emscripten/emscripten.go @@ -110,21 +110,21 @@ func (v *InvokeFunc) Call(ctx context.Context, mod api.Module, stack []uint64) { // indirection function calls in Emscripten JS is like this: // // function invoke_iii(index,a1,a2) { - // var sp = stackSave(); + // var sp = emscripten_stack_get_current(); // try { // return getWasmTableEntry(index)(a1,a2); // } catch(e) { - // stackRestore(sp); + // _emscripten_stack_restore(sp); // if (e !== e+0) throw e; // _setThrew(1, 0); // } //} - // This is the equivalent of "var sp = stackSave();". + // This is the equivalent of "var sp = emscripten_stack_get_current();". // We reuse savedStack to save allocations. We allocate with a size of 2 // here to accommodate for the input and output of setThrew. var savedStack [2]uint64 - callOrPanic(ctx, mod, "stackSave", savedStack[:]) + callOrPanic(ctx, mod, "emscripten_stack_get_current", savedStack[:]) err := f.CallWithStack(ctx, stack) if err != nil { @@ -133,9 +133,9 @@ func (v *InvokeFunc) Call(ctx context.Context, mod api.Module, stack []uint64) { panic(err) } - // This is the equivalent of "stackRestore(sp);". + // This is the equivalent of "_emscripten_stack_restore(sp);". // Do not overwrite err here to preserve the original error. - callOrPanic(ctx, mod, "stackRestore", savedStack[:]) + callOrPanic(ctx, mod, "_emscripten_stack_restore", savedStack[:]) // If we encounter ThrowLongjmpError, this means that the C code did a // longjmp, which in turn called _emscripten_throw_longjmp and that is