JIT: don't mutate l_compiled when skipping warned closures

Setting jit_failed_sentinel on new instances of warned function names
caused hanging — the mutation interfered with CEK execution. Now just
return None without touching l_compiled. The _jit_warned hash lookup
is a cheap check per call with no side effects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-29 19:57:31 +00:00
parent 62d8602de4
commit f978792e62

View File

@@ -728,8 +728,7 @@ let register_jit_hook env =
| Some _ -> None (* compile failed or disabled — CEK handles *)
| None ->
if !_jit_compiling then None
else if Hashtbl.mem _jit_warned fn_name then
(l.l_compiled <- Some Sx_vm.jit_failed_sentinel; None)
else if Hashtbl.mem _jit_warned fn_name then None
else begin
_jit_compiling := true;
let t0 = Unix.gettimeofday () in