Changeset 11819 for trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
- Timestamp:
- 05/03/09 08:46:39 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r11818 r11819 4439 4439 (compile-progn-body body target representation)))) 4440 4440 4441 (defknown find-tag (t) t)4442 (defun find-tag (name)4443 (dolist (tag *visible-tags*)4444 (when (eql name (tag-name tag))4445 (return tag))))4446 4447 4441 (defknown p2-tagbody-node (t t) t) 4448 4442 (defun p2-tagbody-node (block target) … … 4535 4529 ;; Local case. 4536 4530 (let* ((tag-block (tag-block tag)) 4537 (register nil) 4538 (protected 4539 ;; Does the GO leave an enclosing CATCH or UNWIND-PROTECT? 4540 (dolist (enclosing-block *blocks*) 4541 (when (eq enclosing-block tag-block) 4542 (return nil)) 4543 (when (block-requires-non-local-exit-p enclosing-block) 4544 (return t))))) 4545 (unless protected 4531 (register nil)) 4532 (unless (enclosed-by-protected-block-p tag-block) 4546 4533 (dolist (block *blocks*) 4547 4534 (if (eq block tag-block) … … 4723 4710 ;; Local case. Is the RETURN nested inside an UNWIND-PROTECT which is 4724 4711 ;; inside the block we're returning from? 4725 (let ((protected 4726 (dolist (enclosing-block *blocks*) 4727 (when (eq enclosing-block block) 4728 (return nil)) 4729 (when (block-requires-non-local-exit-p enclosing-block) 4730 (return t))))) 4731 (unless protected 4732 (unless (compiland-single-valued-p *current-compiland*) 4712 (unless (enclosed-by-protected-block-p block) 4713 (unless (compiland-single-valued-p *current-compiland*) 4733 4714 ;; (format t "compiland not single-valued: ~S~%" 4734 4715 ;; (compiland-name *current-compiland*)) 4735 4736 4737 4738 (return-from p2-return-from)))))4716 (emit-clear-values)) 4717 (compile-form result-form (block-target block) nil) 4718 (emit 'goto (block-exit block)) 4719 (return-from p2-return-from)))) 4739 4720 ;; Non-local RETURN. 4740 4721 (aver (block-non-local-return-p block))
Note: See TracChangeset
for help on using the changeset viewer.