Changeset 11802


Ignore:
Timestamp:
04/29/09 21:46:29 (14 years ago)
Author:
ehuelsmann
Message:

Rename maybe-rewrite-aux-vars -> rewrite-aux-vars.

File:
1 edited

Legend:

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

    r11800 r11802  
    417417      ,@body2)))
    418418
    419 (defun rewrite-aux-vars-process-decls (forms arg-vars aux-vars)
    420   (declare (ignore aux-vars))
    421   (let ((lambda-decls nil)
    422         (let-decls nil))
     419(defun split-decls (forms specific-vars)
     420  (let ((other-decls nil)
     421        (specific-decls nil))
    423422    (dolist (form forms)
    424423      (unless (and (consp form) (eq (car form) 'DECLARE)) ; shouldn't happen
     
    427426        (case (car decl)
    428427          ((OPTIMIZE DECLARATION DYNAMIC-EXTENT FTYPE INLINE NOTINLINE)
    429            (push (list 'DECLARE decl) lambda-decls))
     428           (push (list 'DECLARE decl) other-decls))
    430429          (SPECIAL
    431430           (dolist (name (cdr decl))
    432              (if (memq name arg-vars)
    433                  (push (list 'DECLARE (list 'SPECIAL name)) lambda-decls)
    434                  (push (list 'DECLARE (list 'SPECIAL name)) let-decls))))
     431             (if (memq name specific-vars)
     432                 (push `(DECLARE (SPECIAL ,name)) specific-decls)
     433                 (push `(DECLARE (SPECIAL ,name)) other-decls))))
    435434          (TYPE
    436435           (dolist (name (cddr decl))
    437              (if (memq name arg-vars)
    438                  (push (list 'DECLARE (list 'TYPE (cadr decl) name)) lambda-decls)
    439                  (push (list 'DECLARE (list 'TYPE (cadr decl) name)) let-decls))))
     436             (if (memq name specific-vars)
     437                 (push `(DECLARE (TYPE ,(cadr decl) ,name)) specific-decls)
     438                 (push `(DECLARE (TYPE ,(cadr decl) ,name)) other-decls))))
    440439          (t
    441440           (dolist (name (cdr decl))
    442              (if (memq name arg-vars)
    443                  (push (list 'DECLARE (list (car decl) name)) lambda-decls)
    444                  (push (list 'DECLARE (list (car decl) name)) let-decls)))))))
    445     (setq lambda-decls (nreverse lambda-decls))
    446     (setq let-decls (nreverse let-decls))
    447     (values lambda-decls let-decls)))
    448 
    449 (defun maybe-rewrite-aux-vars (form)
     441             (if (memq name specific-vars)
     442                 (push `(DECLARE (,(car decl) ,name)) specific-decls)
     443                 (push `(DECLARE (,(car decl) ,name)) other-decls)))))))
     444    (values (nreverse other-decls)
     445            (nreverse specific-decls))))
     446
     447(defun rewrite-aux-vars (form)
    450448  (let* ((lambda-list (cadr form))
    451449         (lets (cdr (memq '&AUX lambda-list)))
     
    453451    (unless lets
    454452      ;; no rewriting required
    455       (return-from maybe-rewrite-aux-vars form))
     453      (return-from rewrite-aux-vars form))
    456454    (multiple-value-bind (body decls)
    457455        (parse-body (cddr form))
    458456      (dolist (form lets)
    459457        (cond ((consp form)
    460                (push (%car form) aux-vars))
     458               (push (car form) aux-vars))
    461459              (t
    462460               (push form aux-vars))))
    463       (setq lambda-list (subseq lambda-list 0 (position '&AUX lambda-list)))
    464461      (multiple-value-bind (lambda-decls let-decls)
    465           (rewrite-aux-vars-process-decls decls
    466                                           (lambda-list-names lambda-list)
    467                                           (nreverse aux-vars))
    468         `(lambda ,lambda-list
     462          (split-decls decls aux-vars)
     463        `(lambda ,(subseq lambda-list 0 (position '&AUX lambda-list))
    469464           ,@lambda-decls
    470465           (let* ,lets
     
    480475     (let* ((block-name (fdefinition-block-name name))
    481476      (lambda-expression
    482                    (maybe-rewrite-aux-vars
     477                   (rewrite-aux-vars
    483478       `(lambda ,lambda-list ,@decls (block ,block-name ,@body))))
    484479      (*visible-variables* *visible-variables*)
     
    508503   (multiple-value-bind (body decls) (parse-body body)
    509504     (setf (compiland-lambda-expression compiland)
    510                  (maybe-rewrite-aux-vars
     505                 (rewrite-aux-vars
    511506     `(lambda ,lambda-list ,@decls (block ,name ,@body)))))
    512507   (push variable *all-variables*)
     
    569564               (setf (compiland-lambda-expression compiland)
    570565                     ;; if there still was a doc-string present, remove it
    571                      (maybe-rewrite-aux-vars
     566                     (rewrite-aux-vars
    572567                      `(lambda ,lambda-list ,@decls ,@body)))
    573568               (let ((*visible-variables* *visible-variables*)
     
    599594                    "P1-LAMBDA: can't handle optional argument with non-constant initform.")))))))
    600595    (p1-function (list 'FUNCTION
    601                         (maybe-rewrite-aux-vars form)))))
     596                        (rewrite-aux-vars form)))))
    602597
    603598(defun p1-eval-when (form)
     
    916911  (let ((form (compiland-lambda-expression compiland)))
    917912    (aver (eq (car form) 'LAMBDA))
    918     (setf form (maybe-rewrite-aux-vars form))
     913    (setf form (rewrite-aux-vars form))
    919914    (process-optimization-declarations (cddr form))
    920915
Note: See TracChangeset for help on using the changeset viewer.