Ignore:
Timestamp:
05/03/09 08:46:39 (14 years ago)
Author:
ehuelsmann
Message:

Small refactoring: introduce a centralized definition of
"enclosed by a block which associates extensive cleanup
with a transfer of control exception".

Also some reordering of functions in jvm.lisp.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp

    r11818 r11819  
    313313           ;; its cleanup forms.
    314314           (dformat t "*blocks* = ~S~%" (mapcar #'block-name *blocks*))
    315            (let ((protected
    316                   (dolist (enclosing-block *blocks*)
    317                     (when (eq enclosing-block block)
    318                       (return nil))
    319                     (when (block-requires-non-local-exit-p enclosing-block)
    320                       (return t)))))
     315           (let ((protected (enclosed-by-protected-block-p block)))
    321316             (dformat t "p1-return-from protected = ~S~%" protected)
    322317             (when protected
     
    366361      (cond ((eq (tag-compiland tag) *current-compiland*)
    367362             ;; Does the GO leave an enclosing UNWIND-PROTECT?
    368              (let ((protected
    369                     (dolist (enclosing-block *blocks*)
    370                       (when (eq enclosing-block tag-block)
    371                         (return nil))
    372                       (when (block-requires-non-local-exit-p enclosing-block)
    373                         (return t)))))
    374                (when protected
    375                  (setf (block-non-local-go-p tag-block) t))))
     363             (when (enclosed-by-protected-block-p tag-block)
     364               (setf (block-non-local-go-p tag-block) t)))
    376365            (t
    377366             (setf (block-non-local-go-p tag-block) t)))))
Note: See TracChangeset for help on using the changeset viewer.