repair for make-object-finder
with threads
The `(cdr tc-ptr-offsets)` in the recrusrion was wrong, but use `thread->objects` and `thread->stack-objects` to work more generally. original commit: fd620699dc620d3d1a522800a7dfaff6cc0393bb
This commit is contained in:
parent
dd0fe4ac40
commit
57c997042e
|
@ -2983,13 +2983,7 @@
|
||||||
(let ([th (lambda () (if (output-port? x) (construct-proc (port-output-buffer x) next-proc) next-proc))])
|
(let ([th (lambda () (if (output-port? x) (construct-proc (port-output-buffer x) next-proc) next-proc))])
|
||||||
(if (input-port? x) (construct-proc (port-input-buffer x) (th)) (th))))]
|
(if (input-port? x) (construct-proc (port-input-buffer x) (th)) (th))))]
|
||||||
[(thread? x)
|
[(thread? x)
|
||||||
(let ([tc ($object-ref 'scheme-object x (constant thread-tc-disp))])
|
(construct-proc (thread->objects x) (thread->stack-objects x) next-proc)]
|
||||||
(if (eqv? tc 0)
|
|
||||||
next-proc
|
|
||||||
(let f ([disp-list tc-ptr-offsets])
|
|
||||||
(if (null? disp-list)
|
|
||||||
next-proc
|
|
||||||
(construct-proc ($object-ref 'scheme-object tc (car disp-list)) (f (cdr tc-ptr-offsets)))))))]
|
|
||||||
[($tlc? x) (construct-proc ($tlc-ht x) ($tlc-keyval x) ($tlc-next x) next-proc)]
|
[($tlc? x) (construct-proc ($tlc-ht x) ($tlc-keyval x) ($tlc-next x) next-proc)]
|
||||||
[else ($oops who "missing case for ~s" x)])])
|
[else ($oops who "missing case for ~s" x)])])
|
||||||
; check if this node is what we're looking for
|
; check if this node is what we're looking for
|
||||||
|
|
Loading…
Reference in New Issue
Block a user