package wax-lib

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

wax-0.1.0.tbz
sha256=41b580846af8d41bdf6c3f005f62e38feda3e60fe2e9e4aa440db34ce515a153
sha512=4b3a181fcc7d743194a8647260870fb5190770066a197bcc48104c2b77fd40c643228b795c2bcd6b29a120820e969eb42a37a9bcec98b3f608d13f152d9f6579

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

Module Wax_conversion.Recover_loopsSource

module_ m rewrites each function body, folding the loop shape that Ast_utils.lower_while produces — a void loop whose body is a single back-edged if (leading test) — into a high-level while loop. The (possibly synthetic) loop label is kept only when the body still branches to it once the back-edge is removed (a "continue"), so a label-less source loop round-trips label-less. A trailing-test loop (ending in a back-edged br_if) has no leading-while equivalent and is left a bare loop.

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