diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index d947e6a97..0ff86d5a8 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -73,6 +73,11 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { { test: /\.wasm$/i, type: "webassembly/experimental" + }, + { + test: /\.wast$/i, + loader: "@webassemblyjs/wast-loader", + type: "webassembly/experimental" } ]); diff --git a/package.json b/package.json index 37c932e86..ce8548bec 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@webassemblyjs/ast": "1.4.3", "@webassemblyjs/wasm-edit": "1.4.3", "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-loader": "^1.5.4", "acorn": "^5.0.0", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", diff --git a/test/cases/wasm/decoding/index.js b/test/cases/wasm/decoding/index.js index 5951edc43..a5e4265f1 100644 --- a/test/cases/wasm/decoding/index.js +++ b/test/cases/wasm/decoding/index.js @@ -1,5 +1,5 @@ it("should support wasm compiled from c++", function() { - return import("./memory3.wasm").then(function(wasm) { + return import("./memory3.wast").then(function(wasm) { expect(wasm._Z3getv()).toBe(0); wasm._Z3seti(42); expect(wasm._Z3getv()).toBe(42); @@ -7,7 +7,7 @@ it("should support wasm compiled from c++", function() { }); it("should raw memory export without data", function() { - return import("./memory2.wasm").then(function(wasm) { + return import("./memory2.wast").then(function(wasm) { expect(wasm.memory).toBeInstanceOf(WebAssembly.Memory); expect(wasm.memory.buffer).toBeInstanceOf(ArrayBuffer); expect(wasm.memory.buffer.byteLength).toBe(1 << 16); diff --git a/test/cases/wasm/decoding/memory2.wasm b/test/cases/wasm/decoding/memory2.wasm deleted file mode 100644 index 654daf1d9..000000000 Binary files a/test/cases/wasm/decoding/memory2.wasm and /dev/null differ diff --git a/test/cases/wasm/decoding/memory2.wast b/test/cases/wasm/decoding/memory2.wast new file mode 100644 index 000000000..0a1657bb7 --- /dev/null +++ b/test/cases/wasm/decoding/memory2.wast @@ -0,0 +1,3 @@ +(module + (memory $memory (export "memory") 1)) + diff --git a/test/cases/wasm/decoding/memory3.wasm b/test/cases/wasm/decoding/memory3.wasm deleted file mode 100644 index 0c2ca20c8..000000000 Binary files a/test/cases/wasm/decoding/memory3.wasm and /dev/null differ diff --git a/test/cases/wasm/decoding/memory3.wast b/test/cases/wasm/decoding/memory3.wast new file mode 100644 index 000000000..2382a8661 --- /dev/null +++ b/test/cases/wasm/decoding/memory3.wast @@ -0,0 +1,14 @@ +(module + (type $t0 (func (param i32))) + (type $t1 (func (result i32))) + (func $_Z3seti (export "_Z3seti") (type $t0) (param $p0 i32) + (i32.store offset=12 + (i32.const 0) + (get_local $p0))) + (func $_Z3getv (export "_Z3getv") (type $t1) (result i32) + (i32.load offset=12 + (i32.const 0))) + (table $T0 0 anyfunc) + (memory $memory (export "memory") 1) + (data (i32.const 12) "\00\00\00\00")) + diff --git a/yarn.lock b/yarn.lock index 4a1db94e3..0d7604911 100644 --- a/yarn.lock +++ b/yarn.lock @@ -125,6 +125,12 @@ "@webassemblyjs/wasm-parser" "1.4.3" webassemblyjs "1.4.3" +"@webassemblyjs/wast-loader@^1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-loader/-/wast-loader-1.5.4.tgz#6db66671edc5955cb77cbf90a6c4f627f6335a6a" + dependencies: + wabt "^1.0.0" + "@webassemblyjs/wast-parser@1.4.3": version "1.4.3" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz#3250402e2c5ed53dbe2233c9de1fe1f9f0d51745" @@ -6257,6 +6263,10 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +wabt@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wabt/-/wabt-1.0.0.tgz#f33a5c4a6405370ec80ba97e782d092f1d599ff4" + walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"