Review fixes: registration key, thread-locals, debug flag timing
- Register a fn under the name Chez actually reports for its frame, not the def name: a named fn literal whose name differs from the def (def foo (fn bar …)) is framed as 'bar', and an anonymous fn def (def foo (fn …)) as jv$ns$foo. Both previously registered under the def name and so never appeared in traces. - rdr-source-file / rdr-pos-cursor are thread parameters, so concurrent compiles (futures, core.async) don't clobber each other's file/line attribution. - Read JOLT_DEBUG_FRAMES at call time: a built binary evaluates top-level forms at heap-build time, where a load-time getenv is always unset. Re-mint (backend + reader); prelude byte-identical, selfhost holds.
This commit is contained in:
parent
8fd5cf9f68
commit
8d7008b232
4 changed files with 18 additions and 12 deletions
|
|
@ -333,7 +333,7 @@
|
|||
;; bound rdr-source-file. read-string leaves the file unset. The analyzer reads
|
||||
;; this back via jolt.host/form-position to stamp :pos on call nodes; macros and
|
||||
;; (meta (read-string "(…)")) see it too.
|
||||
(define rdr-source-file (make-parameter #f))
|
||||
(define rdr-source-file (make-thread-parameter #f))
|
||||
(define rdr-kw-line (keyword #f "line"))
|
||||
(define rdr-kw-column (keyword #f "column"))
|
||||
(define rdr-kw-file (keyword #f "file"))
|
||||
|
|
@ -341,7 +341,7 @@
|
|||
;; Forms are read left-to-right, so the indices queried are non-decreasing within
|
||||
;; one source string — keep a cursor and count newlines only over the delta
|
||||
;; (O(n) total, not O(n^2)). A different string or a backward index resets it.
|
||||
(define rdr-pos-cursor (make-parameter #f)) ; #f | (vector s i line col)
|
||||
(define rdr-pos-cursor (make-thread-parameter #f)) ; #f | (vector s i line col)
|
||||
(define (rdr-line-col-at s i)
|
||||
(let* ((cur (rdr-pos-cursor))
|
||||
(reuse (and (vector? cur) (eq? (vector-ref cur 0) s)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue