package wax-lib
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=41b580846af8d41bdf6c3f005f62e38feda3e60fe2e9e4aa440db34ce515a153
sha512=4b3a181fcc7d743194a8647260870fb5190770066a197bcc48104c2b77fd40c643228b795c2bcd6b29a120820e969eb42a37a9bcec98b3f608d13f152d9f6579
doc/wax-lib.conversion/Wax_conversion/Recover_dispatch/index.html
Module Wax_conversion.Recover_dispatchSource
val module_ :
Wax_lang.Ast.location Wax_lang.Ast.module_ ->
Wax_lang.Ast.location Wax_lang.Ast.module_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).