mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-14 05:12:38 -08:00
New function to create the root environment for each toplevel form
This commit is contained in:
parent
4d1d068edf
commit
b48bc21580
2 changed files with 16 additions and 4 deletions
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue