Ignore:
Timestamp:
08/12/11 18:53:46 (10 years ago)
Author:
ehuelsmann
Message:

Move variable-updating form to ditch PROGN form (and locally untabify).

File:
1 edited

Legend:

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

    r13228 r13468  
    725725(defmacro with-local-functions-for-flet/labels
    726726    (form local-functions-var lambda-list-var name-var body-var body1 body2)
    727   `(progn (incf (compiland-children *current-compiland*) (length (cadr ,form)))
    728     (let ((*visible-variables* *visible-variables*)
    729     (*local-functions* *local-functions*)
    730     (*current-compiland* *current-compiland*)
    731     (,local-functions-var '()))
    732       (dolist (definition (cadr ,form))
    733         (let ((,name-var (car definition))
    734         (,lambda-list-var (cadr definition)))
    735     (validate-function-name ,name-var)
    736     (let* ((,body-var (cddr definition))
    737            (compiland (make-compiland :name ,name-var
    738               :parent *current-compiland*)))
    739       ,@body1)))
    740       (setf ,local-functions-var (nreverse ,local-functions-var))
    741       ;; Make the local functions visible.
    742       (dolist (local-function ,local-functions-var)
    743         (push local-function *local-functions*)
    744         (let ((variable (local-function-variable local-function)))
    745     (when variable
    746       (push variable *visible-variables*))))
    747       ,@body2)))
     727  `(let ((*visible-variables* *visible-variables*)
     728         (*local-functions* *local-functions*)
     729         (*current-compiland* *current-compiland*)
     730         (,local-functions-var '()))
     731     (incf (compiland-children *current-compiland*) (length (cadr ,form)))
     732     (dolist (definition (cadr ,form))
     733       (let ((,name-var (car definition))
     734             (,lambda-list-var (cadr definition)))
     735         (validate-function-name ,name-var)
     736         (let* ((,body-var (cddr definition))
     737                (compiland (make-compiland :name ,name-var
     738                                           :parent *current-compiland*)))
     739           ,@body1)))
     740     (setf ,local-functions-var (nreverse ,local-functions-var))
     741     ;; Make the local functions visible.
     742     (dolist (local-function ,local-functions-var)
     743       (push local-function *local-functions*)
     744       (let ((variable (local-function-variable local-function)))
     745         (when variable
     746           (push variable *visible-variables*))))
     747     ,@body2))
    748748
    749749(defun split-decls (forms specific-vars)
Note: See TracChangeset for help on using the changeset viewer.