random-source.
rbtree.scm:131: (without-interrupts
+ Caller: rb-tree/insert! is exported to ()
rbtree.scm:180:(define-integrable (without-interrupts thunk)
+ Redundant definition.
rbtree.scm:181: (let ((interrupt-mask (set-interrupt-enables! interrupt-mask/gc-ok)))
+ Caller: without-interrupts
rbtree.scm:183: (set-interrupt-enables! interrupt-mask)
+ Caller: without-interrupts
rbtree.scm:197: (without-interrupts
+ Caller: delete-node!
+ rb-tree/delete! is exported to ()
+ rb-tree/delete-{min,max}{,-datum,-pair}! is exported to ()
+
+ This seems to be about avoid aborts that could break the
+ subtree. Turned without-interrupts into without-interruption.
rep.scm:141: (with-interrupt-mask interrupt-mask/all
(let loop ((x (tree-root tree)) (y #f) (d #f))
(cond ((not x)
(let ((z (make-node key datum)))
- (without-interrupts
+ (without-interruption
(lambda ()
(set-node-up! z y)
(cond ((not y) (set-tree-root! tree z))
((null? alist))
(rb-tree/insert! tree (caar alist) (cdar alist)))
tree))
-
-(define-integrable (without-interrupts thunk)
- (let ((interrupt-mask (set-interrupt-enables! interrupt-mask/gc-ok)))
- (thunk)
- (set-interrupt-enables! interrupt-mask)
- unspecific))
\f
(define (rb-tree/delete! tree key)
(guarantee-rb-tree tree 'RB-TREE/DELETE!)
(else (loop (node-right x)))))))
(define (delete-node! tree z)
- (without-interrupts
+ (without-interruption
(lambda ()
(let ((z
(if (and (node-left z) (node-right z))