Support for multi-value wasm (#399)

* deps: bump wasmparser to 0.39.2

This has a bug fix for multi-value Wasm validation that is required for getting
the spec tests passing.

https://github.com/yurydelendik/wasmparser.rs/pull/135

* Update cranelift to 0.46.1 to get multi-value Wasm support

The `cranelift_wasm` APIs had to change a little bit to maintain state necessary
when translating multi-value Wasm blocks. The `translate_module` function now
returns a `ModuleTranslationState` that is borrowed during each function's
translation.

* Enable multi-value proposal's spec tests

This enables all the Wasm multi-value proposal's spec tests other than the ones
that rely on functions having more return values than registers available on the
target. That is not supported by cranelift yet.

* wasmtime-interface-types: always use multi-value Wasm

And remove the return pointer hacks that work around the lack of multi-value.
This commit is contained in:
Nick Fitzgerald
2019-10-17 17:12:01 -07:00
committed by Dan Gohman
parent 9d54f84a32
commit 842faf5aa6
25 changed files with 177 additions and 172 deletions

View File

@@ -12,11 +12,11 @@ name = "_wasmtime"
crate-type = ["cdylib"]
[dependencies]
cranelift-codegen = "0.44.0"
cranelift-native = "0.44.0"
cranelift-entity = "0.44.0"
cranelift-wasm = "0.44.0"
cranelift-frontend = "0.44.0"
cranelift-codegen = "0.46.1"
cranelift-native = "0.46.1"
cranelift-entity = "0.46.1"
cranelift-wasm = "0.46.1"
cranelift-frontend = "0.46.1"
wasmtime-environ = { path = "../../wasmtime-environ" }
wasmtime-interface-types = { path = "../../wasmtime-interface-types" }
wasmtime-jit = { path = "../../wasmtime-jit" }
@@ -24,7 +24,7 @@ wasmtime-runtime = { path = "../../wasmtime-runtime" }
target-lexicon = { version = "0.8.1", default-features = false }
failure = "0.1"
region = "2.0.0"
wasmparser = "0.39.1"
wasmparser = "0.39.2"
[dependencies.pyo3]
version = "0.8.0"