Ignore:
Timestamp:
05/04/09 19:43:30 (14 years ago)
Author:
ehuelsmann
Message:

Simplify p1-compiland and p2-compiland.
Create a new 'free-specials' field in the compiland
structure to share work done in p1 with p2.

File:
1 edited

Legend:

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

    r11828 r11829  
    10211021
    10221022    (let* ((lambda-list (cadr form))
    1023            (body (cddr form)))
    1024 
    1025       (let* ((closure (make-closure `(lambda ,lambda-list nil) nil))
    1026              (syms (sys::varlist closure))
    1027              (vars nil))
    1028         (dolist (sym syms)
    1029           (let ((var (make-variable :name sym
    1030                                     :special-p (special-variable-p sym))))
    1031             (push var vars)
    1032             (push var *all-variables*)))
    1033         (setf (compiland-arg-vars compiland) (nreverse vars))
    1034         (let ((*visible-variables* *visible-variables*))
    1035           (dolist (var (compiland-arg-vars compiland))
    1036             (push var *visible-variables*))
    1037           (let ((free-specials (process-declarations-for-vars body *visible-variables*)))
    1038             (dolist (var free-specials)
    1039               (push var *visible-variables*)))
    1040           (setf (compiland-p1-result compiland)
    1041                 (list* 'LAMBDA lambda-list (p1-body body))))))))
     1023           (body (cddr form))
     1024           (*visible-variables* *visible-variables*)
     1025           (closure (make-closure `(lambda ,lambda-list nil) nil))
     1026           (syms (sys::varlist closure))
     1027           (vars nil))
     1028      (dolist (sym syms)
     1029        (let ((var (make-variable :name sym
     1030                                  :special-p (special-variable-p sym))))
     1031          (push var vars)
     1032          (push var *all-variables*)
     1033          (push var *visible-variables*)))
     1034      (setf (compiland-arg-vars compiland) (nreverse vars))
     1035      (let ((free-specials (process-declarations-for-vars body vars)))
     1036        (setf (compiland-free-specials compiland) free-specials)
     1037        (dolist (var free-specials)
     1038          (push var *visible-variables*)))
     1039      (setf (compiland-p1-result compiland)
     1040            (list* 'LAMBDA lambda-list (p1-body body))))))
    10421041
    10431042(provide "COMPILER-PASS1")
Note: See TracChangeset for help on using the changeset viewer.