package wax-lib

  1. Overview
  2. Docs
Libraries for Wax, a Rust-like syntax for WebAssembly

Install

dune-project
 Dependency

Authors

Maintainers

Sources

wax-v0.2.0.tbz
sha256=4361e1324b7754a4c08ab5b505df32061f3ce0cea60443fd0d3699e0fa796b32
sha512=fcc756d2f160ba90a9aa1131f2ab22ed7f45466ccd658c21cf9df6868a6aab0cee7f404719d698a379958802f9820398f2fe0685ecc4dda018ca4f653294e39b

doc/wax-lib.conversion/Wax_conversion/Recover_dispatch/index.html

Module Wax_conversion.Recover_dispatchSource

module_ m rewrites each function body, folding the conventional dense-switch shape — a stack of void blocks with a br_table in the innermost and a case body after each block — into a high-level dispatch with every case an arm. The outermost case's body is the code following the outermost block, so a block is folded together with the statements after it. This recovers the jump-table idiom when decompiling WAT/WASM to Wax (and lets a Wax dispatch survive a round trip through the binary).

Folding is the exact inverse of Ast_utils.lower_dispatch, so re-lowering reproduces the original blocks byte-for-byte and the rewrite always preserves runtime semantics. Meant to run on From_wasm.module_ output, before Sink_let.module_ (which would otherwise sink locals into the case blocks and hide the shape).