Revert iterative cek_run, restore working WASM kernel

Iterative cek_run broke page-script parsing in browser. Reverted to
recursive — bytecode compilation overflow handled by native Sx_compiler.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-30 11:10:51 +00:00
parent 951b3a6586
commit fffb5ab0b5
2 changed files with 13 additions and 28 deletions

View File

@@ -374,16 +374,11 @@ and expand_macro mac raw_args env =
(* cek-run *)
and cek_run state =
(* Iterative loop — no stack growth. Essential for WASM where JS stack is limited. *)
let s = ref state in
(try
while not (match cek_terminal_p !s with Bool true -> true | _ -> false) do
s := cek_step !s
done;
cek_value !s
with Eval_error msg ->
(if !_last_error_kont = Nil then _last_error_kont := cek_kont !s);
raise (Eval_error msg))
(if sx_truthy ((cek_terminal_p (state))) then (cek_value (state)) else
try cek_run ((cek_step (state)))
with Eval_error msg ->
(if !_last_error_kont = Nil then _last_error_kont := cek_kont state);
raise (Eval_error msg))
(* cek-step *)
and cek_step state =

File diff suppressed because one or more lines are too long