mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-22 07:09:18 +02:00
Adding todo for dynamic-wind.
This commit is contained in:
parent
3b10f4f748
commit
c9d24497d9
1 changed files with 12 additions and 9 deletions
|
@ -552,16 +552,19 @@
|
|||
(set-dk! (cons (cons before after) dk))
|
||||
(let ((res (thunk))) (set-dk! dk) res)))
|
||||
|
||||
(define (set-dk! dk)
|
||||
(if (not (eq? dk (%dk)))
|
||||
;; TODO: Implement a non-mutating tree oriented stack so we don't need
|
||||
;; to reset the stack in child threads.
|
||||
(define (set-dk! new-dk)
|
||||
(if (not (eq? new-dk (%dk)))
|
||||
(begin
|
||||
(set-dk! (cdr dk))
|
||||
(let ((before (car (car dk))) (dk dk))
|
||||
(set-car! (%dk) (cons (cdr (car dk)) before))
|
||||
(set-cdr! (%dk) dk)
|
||||
(set-car! dk #f)
|
||||
(set-cdr! dk '())
|
||||
(%dk dk)
|
||||
(set-dk! (cdr new-dk))
|
||||
(let ((before (car (car new-dk)))
|
||||
(old-dk (%dk)))
|
||||
(set-car! old-dk (cons (cdr (car new-dk)) before))
|
||||
(set-cdr! old-dk new-dk)
|
||||
(set-car! new-dk #f)
|
||||
(set-cdr! new-dk '())
|
||||
(%dk new-dk)
|
||||
(before)))))
|
||||
|
||||
(define (call-with-current-continuation proc)
|
||||
|
|
Loading…
Add table
Reference in a new issue