From 5edd2771619ddc3cd2f6c76cc93ee64277aa17c2 Mon Sep 17 00:00:00 2001 From: Andreu Botella Date: Sun, 10 Oct 2021 07:03:23 -0700 Subject: feat: Show the URL of streaming WASM modules in stack traces (#12268) WebAssembly modules compiled through `WebAssembly.compile()` and similar non-streaming APIs don't have a URL associated to them, because they have been compiled from a buffer source. In stack traces, V8 will use a URL such as `wasm://wasm/d1c677ea`, with a hash of the module. However, wasm modules compiled through streaming APIs, like `WebAssembly.compileStreaming()`, do have a known URL, which can be obtained from the `Response` object passed into the streaming APIs. And as per the developer-facing display conventions in the WebAssembly Web API spec, this URL should be used in stack traces. This change implements that. --- cli/tests/testdata/wasm_unreachable.js | 47 +++------------------------------- 1 file changed, 3 insertions(+), 44 deletions(-) (limited to 'cli/tests/testdata/wasm_unreachable.js') diff --git a/cli/tests/testdata/wasm_unreachable.js b/cli/tests/testdata/wasm_unreachable.js index 991ebcec8..36aab0d84 100644 --- a/cli/tests/testdata/wasm_unreachable.js +++ b/cli/tests/testdata/wasm_unreachable.js @@ -1,50 +1,9 @@ // WebAssembly module containing a single function with an unreachable instruction -const binary = Uint8Array.from([ - 0x00, - 0x61, - 0x73, - 0x6d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x04, - 0x01, - 0x60, - 0x00, - 0x00, - 0x03, - 0x02, - 0x01, - 0x00, - 0x07, - 0x0f, - 0x01, - 0x0b, - 0x75, - 0x6e, - 0x72, - 0x65, - 0x61, - 0x63, - 0x68, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x00, - 0x00, - 0x0a, - 0x05, - 0x01, - 0x03, - 0x00, - 0x00, - 0x0b, -]); +const binary = await Deno.readFile("./unreachable.wasm"); const module = new WebAssembly.Module(binary); const instance = new WebAssembly.Instance(module); +// Compare the stack trace with wasm_url.js, which compiles the WASM module with +// streaming APIs. instance.exports.unreachable(); -- cgit v1.2.3