This commit introduces initial support for multi-value Wasm. Wasm blocks and calls can now take and return an arbitrary number of values. The encoding for multi-value blocks means that we need to keep the contents of the "Types" section around when translating function bodies. To do this, we introduce a `WasmTypesMap` type that maps the type indices to their parameters and returns, construct it when parsing the "Types" section, and shepherd it through a bunch of functions and methods when translating function bodies.
23 lines
494 B
Plaintext
23 lines
494 B
Plaintext
(module
|
|
(func (export "large-sig")
|
|
(param i32 i64 f32 f32 i32 f64 f32 i32 i32 i32 f32 f64 f64 f64 i32 i32 f32)
|
|
(result f64 f32 i32 i32 i32 i64 f32 i32 i32 f32 f64 f64 i32 f32 i32 f64)
|
|
(local.get 5)
|
|
(local.get 2)
|
|
(local.get 0)
|
|
(local.get 8)
|
|
(local.get 7)
|
|
(local.get 1)
|
|
(local.get 3)
|
|
(local.get 9)
|
|
(local.get 4)
|
|
(local.get 6)
|
|
(local.get 13)
|
|
(local.get 11)
|
|
(local.get 15)
|
|
(local.get 16)
|
|
(local.get 14)
|
|
(local.get 12)
|
|
)
|
|
)
|