diff --git a/src/cmp/cmppass1-call.lsp b/src/cmp/cmppass1-call.lsp index 762900507..c282be923 100644 --- a/src/cmp/cmppass1-call.lsp +++ b/src/cmp/cmppass1-call.lsp @@ -181,7 +181,7 @@ ;; environment in which the function was defined to get ;; inlining of closures right. (let ((*cmp-env* (cmp-env-copy (fun-cmp-env fun)))) - (mapc #'push-vars let-vars) + (mapc #'cmp-env-register-var let-vars) (process-let-body 'LET* let-vars let-inits specials other-decls body setjmps)))))) (defun c1call-local (fname fun args) diff --git a/src/cmp/cmppass1-fun.lsp b/src/cmp/cmppass1-fun.lsp index 23086823a..9bad5f480 100644 --- a/src/cmp/cmppass1-fun.lsp +++ b/src/cmp/cmppass1-fun.lsp @@ -248,7 +248,7 @@ (var (c1make-var name ss is ts))) (push var type-checks) (setf (first specs) var) - (push-vars var))) + (cmp-env-register-var var))) (do ((specs (setq optionals (cdr optionals)) (cdddr specs))) ((endp specs)) @@ -261,15 +261,17 @@ :safe "In (LAMBDA ~a...)" function-name) (default-init var))) (push var type-checks) - (push-vars var) + (cmp-env-register-var var) (when flag - (push-vars (setq flag (c1make-var flag ss is ts)))) + (setq flag (c1make-var flag ss is ts)) + (cmp-env-register-var flag)) (setf (first specs) var (second specs) init (third specs) flag))) (when rest - (push-vars (setq rest (c1make-var rest ss is ts)))) + (setq rest (c1make-var rest ss is ts)) + (cmp-env-register-var rest)) (do ((specs (setq keywords (cdr keywords)) (cddddr specs))) ((endp specs)) @@ -284,9 +286,10 @@ :safe "In (LAMBDA ~a...)" function-name) (default-init var))) (push var type-checks) - (push-vars var) + (cmp-env-register-var var) (when flag - (push-vars (setq flag (c1make-var flag ss is ts)))) + (setq flag (c1make-var flag ss is ts)) + (cmp-env-register-var flag)) (setf (second specs) var (third specs) init (fourth specs) flag))) diff --git a/src/cmp/cmppass1-var.lsp b/src/cmp/cmppass1-var.lsp index b9a42d0d4..1448935a6 100644 --- a/src/cmp/cmppass1-var.lsp +++ b/src/cmp/cmppass1-var.lsp @@ -111,11 +111,12 @@ (when var (push var vars) (push init forms) - (when (eq let/let* 'LET*) (push-vars var))))) + (when (eq let/let* 'LET*) + (cmp-env-register-var var))))) (setf vars (nreverse vars) forms (nreverse forms)) (when (eq let/let* 'LET) - (mapc #'push-vars vars)) + (mapc #'cmp-env-register-var vars)) (check-vdecl (mapcar #'var-name vars) types ignoreds) (values vars forms specials other-decls body)))) @@ -361,7 +362,7 @@ (let* ((vars (loop for name in variables collect (c1make-var name ss is ts)))) (setq init-form (c1expr init-form)) - (mapc #'push-vars vars) + (mapc #'cmp-env-register-var vars) (check-vdecl variables ts is) (setq body (c1decl-body other-decls body)) (mapc #'check-vref vars) diff --git a/src/cmp/cmptypes.lsp b/src/cmp/cmptypes.lsp index 369ac8ef1..f225dc046 100644 --- a/src/cmp/cmptypes.lsp +++ b/src/cmp/cmptypes.lsp @@ -73,7 +73,6 @@ ;;; lex-ndx is the index within the array for this env. ;;; For SPECIAL and GLOBAL: the vv-index for variable name. (type t) ;;; Type of the variable. - (index -1) ;;; position in *vars*. Used by similar. (ignorable nil) ;;; Whether there was an IGNORABLE/IGNORE declaration ) diff --git a/src/cmp/cmpvar.lsp b/src/cmp/cmpvar.lsp index 5c20300d7..fd049e4f3 100644 --- a/src/cmp/cmpvar.lsp +++ b/src/cmp/cmpvar.lsp @@ -239,7 +239,3 @@ (defun useful-var-p (var) (or (plusp (var-ref var)) (global-var-p var))) - -(defun push-vars (v) - (setf (var-index v) (length (cmp-env-variables))) - (cmp-env-register-var v))