- `(var (,(make-symbol branch) ,initag))
- `(var (,(make-symbol tbidx) #()))
- `(label tbloop
- (while true
- (try
- (switch ,(make-symbol branch)
- ,@(with-collect
- (collect `(case ,initag))
- (dolist (form (cdr body))
- (if (go-tag-p form)
- (let ((b (lookup-in-lexenv form *environment* 'gotag)))
- (collect `(case ,(second (binding-value b)))))
- (progn
- (collect (ls-compile form))
- ;; TEMPORAL!
- (collect '(code ";"))))))
- default
- (break tbloop)))
- (catch (jump)
- (if (and (== (get jump "type") "tagbody")
- (== (get jump "id") ,(make-symbol tbidx)))
- (= ,(make-symbol branch) (get jump "label"))
- (throw jump)))))
- `(return ,(ls-compile nil))))))
+ (var (,(make-symbol branch) ,initag))
+ (var (,(make-symbol tbidx) #()))
+ (label tbloop
+ (while true
+ (try
+ (switch ,(make-symbol branch)
+ ,@(with-collect
+ (collect `(case ,initag))
+ (dolist (form (cdr body))
+ (if (go-tag-p form)
+ (let ((b (lookup-in-lexenv form *environment* 'gotag)))
+ (collect `(case ,(second (binding-value b)))))
+ (progn
+ (collect (ls-compile form))
+ ;; TEMPORAL!
+ (collect '(code ";"))))))
+ default
+ (break tbloop)))
+ (catch (jump)
+ (if (and (== (get jump "type") "tagbody")
+ (== (get jump "id") ,(make-symbol tbidx)))
+ (= ,(make-symbol branch) (get jump "label"))
+ (throw jump)))))
+ (return ,(ls-compile nil))))))