Petr Penzin
Досмотрел (да, я - тормоз). Хочу добавить что вся "магия", кроме аллокации регистров, происходит в процессе компиляции wasm файла, а не при компиляции модуля в браузере. По-моему это важный нюанс, т.к. движки не оптимизируют сам код (не удаляют ненужные команды и т.п.), а производят машинные команды по известным шаблонам.
Это все очень сильно зависит от рантайма. Например тот же cranelift бэкенд части из которого уже в FF используются, а в wasmtime и вовсе полностью, использует не только свертку констант и peephole оптимизации (которые сопоставляются по шаблону и отвечает за это теперь peepmatic) но так же делает и CFG/DFG оптимизации как разворачивание циклов, CSE, DCE, LICM, branch relaxation и т д, и вообще у него свой ir для этого всего есть:
https://github.com/bytecodealliance/wasmtime/tree/main/cranelift/codegen/src/irНо конечно до того, что делает тот же LLVM JIT ему очень далеко