From fed58b28143dcc3c491ad90d4c44f8f24b11a381 Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 28 Jun 2026 16:42:27 +0000 Subject: [PATCH] =?UTF-8?q?vm-ext:=20exclude=20js=20parser=20(jp-*)=20from?= =?UTF-8?q?=20JIT=20=E2=80=94=20fixes=20js=20147/148=20->=20148/148?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lone js opt-in-JIT residual was async/await_in_loop, which failed to PARSE under JIT ("Unexpected token: op '<'" on `i < 5`) while passing on CEK. The js exclusion was "js-*", but the recursive-descent parser is the jp-* namespace (75 functions in lib/js/parser.sx) — only the lexer/transpile/runtime are js-*. So the parser was left JIT-eligible and a jp-* function miscompiled this construct (the long-standing parser-miscompile class). Fix: extend the js exclusion to "js-* jp-*" so the parser is interpret-only too, matching how every other guest's front-end is handled. js conformance under SX_SERVING_JIT=1 is now 148/148, == CEK. Co-Authored-By: Claude Opus 4.8 (1M context) --- lib/js/runtime.sx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/js/runtime.sx b/lib/js/runtime.sx index 94896a5f..3ee36430 100644 --- a/lib/js/runtime.sx +++ b/lib/js/runtime.sx @@ -6999,4 +6999,4 @@ ;; The JS evaluator (transpile.sx) uses call/cc for control flow (exceptions, ;; early return); a JIT-compiled frame can't escape through a CEK continuation. ;; Exclude the js- namespace from JIT. See Sx_types.jit_excluded_prefixes. -(jit-exclude! "js-*") +(jit-exclude! "js-*" "jp-*")