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.
11 lines
213 B
Plaintext
11 lines
213 B
Plaintext
(module
|
|
(func (export "as-if-then") (param i32 i32) (result i32)
|
|
(block (result i32)
|
|
(if (result i32) (local.get 0)
|
|
(then (br 1 (i32.const 3)))
|
|
(else (local.get 1))
|
|
)
|
|
)
|
|
)
|
|
)
|