From 4b3a3d9d0f84df8997d466d009da9fffdfbdcbe1 Mon Sep 17 00:00:00 2001 From: Casper Beyer Date: Sat, 15 Aug 2020 01:48:37 +0800 Subject: [PATCH] Enable WebAssembly.instantiateStreaming (#7043) --- cli/tests/integration_tests.rs | 5 +++++ cli/tests/wasm_streaming.js | 29 +++++++++++++++++++++++++++++ cli/tests/wasm_streaming.out | 1 + core/core_isolate.rs | 1 + 4 files changed, 36 insertions(+) create mode 100644 cli/tests/wasm_streaming.js create mode 100644 cli/tests/wasm_streaming.out diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 6e487d12f9..76f82df231 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -2060,6 +2060,11 @@ itest!(wasm_async { output: "wasm_async.out", }); +itest!(wasm_streaming { + args: "run wasm_streaming.js", + output: "wasm_streaming.out", +}); + itest!(wasm_unreachable { args: "run wasm_unreachable.js", output: "wasm_unreachable.out", diff --git a/cli/tests/wasm_streaming.js b/cli/tests/wasm_streaming.js new file mode 100644 index 0000000000..6c94573251 --- /dev/null +++ b/cli/tests/wasm_streaming.js @@ -0,0 +1,29 @@ +// The following blob can be created by taking the following s-expr and pass +// it through wat2wasm. +// (module +// (func $add (param $a i32) (param $b i32) (result i32) +// local.get $a +// local.get $b +// i32.add) +// (export "add" (func $add)) +// ) +// deno-fmt-ignore +const bytes = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x07, 0x01, 0x60, + 0x02, 0x7f, 0x7f, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x00, 0x07, 0x07, 0x01, + 0x03, 0x61, 0x64, 0x64, 0x00, 0x00, 0x0a, 0x09, 0x01, 0x07, 0x00, 0x20, + 0x00, 0x20, 0x01, 0x6a, 0x0b +]); + +async function main() { + const wasm = await WebAssembly.instantiateStreaming(bytes, { + }); + + const result = wasm.instance.exports.add(1, 3); + console.log("1 + 3 =", result); + if (result != 4) { + throw Error("bad"); + } +} + +main(); diff --git a/cli/tests/wasm_streaming.out b/cli/tests/wasm_streaming.out new file mode 100644 index 0000000000..5cdf17de73 --- /dev/null +++ b/cli/tests/wasm_streaming.out @@ -0,0 +1 @@ +1 + 3 = 4 diff --git a/core/core_isolate.rs b/core/core_isolate.rs index 199bbd832a..dc523c9828 100644 --- a/core/core_isolate.rs +++ b/core/core_isolate.rs @@ -175,6 +175,7 @@ pub unsafe fn v8_init() { // See https://github.com/denoland/deno/issues/2544 let argv = vec![ "".to_string(), + "--wasm-test-streaming".to_string(), "--no-wasm-async-compilation".to_string(), "--harmony-top-level-await".to_string(), "--experimental-wasm-bigint".to_string(),