NEXT;
}
-VM_DEFINE_INSTRUCTION (86, throw, "throw", 1, -1, -1)
+VM_DEFINE_INSTRUCTION (86, abort, "abort", 1, -1, -1)
{
unsigned n = FETCH ();
SCM k;
POP (args);
POP (k);
SYNC_REGISTER ();
- vm_throw (vm, k, args);
- /* vm_throw should not return */
+ vm_abort (vm, k, args);
+ /* vm_abort should not return */
abort ();
}
<dynwind> dynwind? make-dynwind dynwind-src dynwind-winder dynwind-body dynwind-unwinder
<dynlet> dynlet? make-dynlet dynlet-src dynlet-fluids dynlet-vals dynlet-body
<prompt> prompt? make-prompt prompt-src prompt-tag prompt-body prompt-handler
- <control> control? make-control control-src control-tag control-type control-args
+ <abort> abort? make-abort abort-src abort-tag abort-args
parse-tree-il
unparse-tree-il
(<dynwind> winder body unwinder)
(<dynlet> fluids vals body)
(<prompt> tag body handler)
- (<control> tag type args))
+ (<abort> tag args))
\f
((prompt ,tag ,body ,handler)
(make-prompt loc (retrans tag) (retrans body) (retrans handler)))
- ((control ,tag ,type ,args)
- (make-control loc (retrans tag) type (map retrans args)))
+ ((abort ,tag ,type ,args)
+ (make-abort loc (retrans tag) type (map retrans args)))
(else
(error "unrecognized tree-il" exp)))))
((<prompt> tag body handler)
`(prompt ,tag ,(unparse-tree-il body) ,(unparse-tree-il handler)))
- ((<control> tag type args)
- `(control ,(unparse-tree-il tag) ,type ,(map unparse-tree-il args)))))
+ ((<abort> tag args)
+ `(abort ,(unparse-tree-il tag) ,(map unparse-tree-il args)))))
(define (tree-il->scheme e)
(record-case e
,(tree-il->scheme handler)))
- ((<control> tag type args)
- (case type
- ((throw) `(throw ,(tree-il->scheme tag) ,@(map tree-il->scheme args)))
- (else (error "bad control type" type))))))
+ ((<abort> tag args)
+ `(@abort ,(tree-il->scheme tag) ,@(map tree-il->scheme args)))))
\f
(define (tree-il-fold leaf down up seed tree)
(up tree
(loop tag (loop body (loop handler
(down tree result))))))
- ((<control> tag type args)
+ ((<abort> tag args)
(up tree (loop tag (loop args (down tree result)))))
(else
(leaf tree result))))))
(let*-values (((seed ...) (foldts tag seed ...))
((seed ...) (foldts body seed ...)))
(foldts handler seed ...)))
- ((<control> tag args)
+ ((<abort> tag args)
(let*-values (((seed ...) (foldts tag seed ...)))
(fold-values foldts args seed ...)))
(else
(set! (prompt-body x) (lp body))
(set! (prompt-handler x) (lp handler)))
- ((<control> tag args)
- (set! (control-tag x) (lp tag))
- (set! (control-args x) (map lp args)))
+ ((<abort> tag args)
+ (set! (abort-tag x) (lp tag))
+ (set! (abort-args x) (map lp args)))
(else #f))
(set! (prompt-body x) (lp body))
(set! (prompt-handler x) (lp handler)))
- ((<control> tag args)
- (set! (control-tag x) (lp tag))
- (set! (control-args x) (map lp args)))
+ ((<abort> tag args)
+ (set! (abort-tag x) (lp tag))
+ (set! (abort-args x) (map lp args)))
(else #f))
x)))