A tiny and incomplete wasm interpreter
This module contains a tiny and incomplete wasm interpreter built on top of
walrus’s module structure. Each
Interpreter contains some state
about the execution of a wasm instance. The “incomplete” part here is
related to the fact that this is only used to execute the various
descriptor functions for wasm-bindgen.
As a recap, the wasm-bindgen macro generate “descriptor functions” which
basically as a mapping of rustc’s trait resolution in executable code. This
allows us to detect, after the macro is invoke, what trait selection did and
what types of functions look like. By executing descriptor functions they’ll
each invoke a known import (with only one argument) some number of times,
which gives us a list of
u32 values to then decode.
The interpreter here is only geared towards this one exact use case, so it’s quite small and likely not extra-efficient.
A ready-to-go interpreter of a wasm module.