Some wasm runtimes, eg V8 and Spider monkey, do tiered compilation, where all code is first compiled with a high throughput streaming compiler, and then only the hot paths get recompiled with an optimizing compiler.
Tiered compilation in general does dynamic optimizations, definitely in JavaScript (runtime type collection, etc.) but also to a lesser extent in C# or Java (inlining, etc.). In wasm none of the tiers do dynamic optimizations AFAIK, but tiered compilation definitely helps there too, mostly with startup times.