The closure merging in jit_compile_lambda (copying globals + injecting closure bindings into vm_env_ref) produces incorrect variable resolution for inner functions. Symptoms: sx-parse's read-list-loop mishandles closing parens (siblings become children), parser produces wrong ASTs. Fix: vm_call skips JIT compilation for lambdas with non-empty closures. These run on CEK which handles closures correctly. Top-level defines (empty closure) are still JIT-compiled. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
35 KiB
35 KiB