Basic-block translation and block chaining are exactly what makes Dolphin's JIT recompiler and PCSX2 fast enough to run GameCube and PS2 games at full speed on a modern PC, and QEMU's TCG dynarec uses this same code-cache-plus-invalidation design to run entire guest operating systems. Self-modifying code invalidation is a real, recurring source of bugs in these projects — games that write instructions at runtime routinely break naive dynarecs.