Parent: #479 Related: #496, #501
Problem
Every tree-walker eval entry probes the Context-wide debugger statement-location registry, including expression nodes and the synthetic Program node that the parser never publishes as statement locations. The current-main one-lane representative_temporal_availability attribution records 5,994 cache misses and 10,822 hits during configuration; a fresh five-second cold profile samples Interpreter.debugStatementLocation and serviceDebugStatement even though no debugger is attached.
The parser publishes locations only for nodes returned by parseStatement. Negative expression lookups therefore cannot produce debugger metadata, but they occupy and churn the bounded 64-entry interpreter-local cache and repeatedly reach the registry.
Scope
- Prove and encode the exact AST tags that can be parser-published statement roots.
- Preserve host statement hooks at every existing evaluator checkpoint.
- Skip only impossible debugger-location lookups; keep debugger, profiler, stack-trace, late-attach, VM checkpoint, and explicit
debugStatementLocationsemantics exact. - Mirror any shared evaluator/VM boundary needed for tier parity.
- Add focused positive/negative, cache-counter, late debugger, and TSan coverage.
- Measure current main against its exact parent with existing cold/attribution rows.
Acceptance
- Impossible expression/Program probes do not query or perturb the debugger registry/cache.
- Every parser-published statement tag still resolves its exact script/line/column, including
debugger;, nested control flow, declarations, modules, and empty statements. - Host hooks keep their current invocation contract.
- C/private debugger late attachment, stepping, exception locations, and warmed-function behavior remain green.
- Exact attribution proves fewer registry probes; paired timing and full unit/test262 evidence are reported without overstating neutral results.
- No AST widening, disabled debugger capability, input-specific shortcut, or unbounded cache.