vm-ext: exclude js parser (jp-*) from JIT — fixes js 147/148 -> 148/148
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) <noreply@anthropic.com>
This commit is contained in:
@@ -6999,4 +6999,4 @@
|
|||||||
;; The JS evaluator (transpile.sx) uses call/cc for control flow (exceptions,
|
;; 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.
|
;; 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.
|
;; Exclude the js- namespace from JIT. See Sx_types.jit_excluded_prefixes.
|
||||||
(jit-exclude! "js-*")
|
(jit-exclude! "js-*" "jp-*")
|
||||||
|
|||||||
Reference in New Issue
Block a user