You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix JIT regression when code cache flushes during translation
This addresses critical issues in the JIT compiler that caused failures,
particularly noticeable when ENABLE_EXT_F=0:
1. Check translation success before execution: The emulator now verifies
that jit_translate() successfully marked a block as "hot" before
attempting to execute the JIT-compiled code. This prevents execution
of incomplete or failed translations.
2. Reset jump count on cache flush: The state->n_jumps counter was not
being reset during code_cache_flush(), causing stale jump entries to
persist and corrupt subsequent translations.
3. Mark incomplete translations properly: When a cache flush occurs
mid-translation, the block is now correctly marked as not hot,
ensuring it won't be mistakenly executed as valid JIT code.
These fixes resolve the non-deterministic test failures observed in
the pi calculation test and other compute-intensive benchmarks.
0 commit comments