New function to create the root environment for each toplevel form

This commit is contained in:
Juan Jose Garcia Ripoll 2010-05-07 21:18:50 +02:00
parent 4d1d068edf
commit b48bc21580
2 changed files with 16 additions and 4 deletions

View file

@ -14,8 +14,18 @@
(in-package #-new-cmp "COMPILER" #+new-cmp "C-ENV")
(defmacro cmp-env-new ()
'(cons nil nil))
(defun cmp-env-new ()
(cons nil nil))
(defun cmp-env-root (&optional (env *cmp-env-root*))
"Provide a root environment for toplevel forms storing all declarations
that are susceptible to be changed by PROCLAIM."
(let* ((env (cmp-env-copy env)))
(destructuring-bind (debug safety space speed)
(cmp-env-all-optimizations env)
(add-one-declaration env `(optimize
(speed ,speed) (space ,space)
(debug ,debug) (safety ,safety))))))
(defun cmp-env-copy (&optional (env *cmp-env*))
(cons (car env) (cdr env)))

View file

@ -16,7 +16,9 @@
(defun t1expr (form)
(let* ((*current-toplevel-form* nil)
(*cmp-env* (cmp-env-copy (or *cmp-env* *cmp-env-root*))))
(*cmp-env* (if *cmp-env*
(cmp-env-copy *cmp-env*)
(cmp-env-root))))
(push (t1expr* form) *top-level-forms*)))
(defvar *toplevel-forms-to-print*
@ -651,7 +653,7 @@
(*ihs-used-p* nil)
(*reservation-cmacro* (next-cmacro))
(*inline-blocks* 1)
(*cmp-env* (cmp-env-copy (fun-cmp-env fun))))
(*cmp-env* (c1form-env lambda-expr)))
(wt-nl1 "{")
(wt " VT" *reservation-cmacro*
" VLEX" *reservation-cmacro*