X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Flexenv.lisp;h=033a4fae55a6c4b16e63ca44a210d7c3779bb9df;hb=91392754bf1d241cd6913c728268caf18eae1485;hp=0726e528a15866ac6305cf761d6c9ef27786acbf;hpb=913e06f191acb65c1d99d42234704bec38500ff4;p=sbcl.git diff --git a/src/compiler/lexenv.lisp b/src/compiler/lexenv.lisp index 0726e52..033a4fa 100644 --- a/src/compiler/lexenv.lisp +++ b/src/compiler/lexenv.lisp @@ -18,15 +18,22 @@ #!-sb-fluid (declaim (inline internal-make-lexenv)) ; only called in one place (def!struct (lexenv (:constructor make-null-lexenv ()) + (:constructor make-null-interactive-lexenv + (&aux (policy (list '(safety . 3) + '(compilation-speed . 2) + '(speed . 1) + '(space . 1) + '(debug . 1) + '(inhibit-warnings . 1))))) (:constructor internal-make-lexenv - (functions variables blocks tags type-restrictions - lambda cleanup policy options))) + (funs vars blocks tags type-restrictions + lambda cleanup policy))) ;; an alist of (NAME . WHAT), where WHAT is either a FUNCTIONAL (a ;; local function), a DEFINED-FUN, representing an ;; INLINE/NOTINLINE declaration, or a list (MACRO . ) (a ;; local macro, with the specifier expander). Note that NAME may be ;; a (SETF ) list, not necessarily a single symbol. - (functions nil :type list) + (funs nil :type list) ;; an alist translating variable names to LEAF structures. A special ;; binding is indicated by a :SPECIAL GLOBAL-VAR leaf. Each special ;; binding within the code gets a distinct leaf structure, as does @@ -36,7 +43,7 @@ ;; ;; If the CDR is (MACRO . ), then is the expansion of a ;; symbol macro. - (variables nil :type list) + (vars nil :type list) ;; BLOCKS and TAGS are alists from block and go-tag names to 2-lists ;; of the form ( ), where is the ;; continuation to exit to, and is the corresponding ENTRY node. @@ -50,17 +57,14 @@ ;; type declaration. (type-restrictions nil :type list) ;; the lexically enclosing lambda, if any - ;; + ;; ;; FIXME: This should be :TYPE (OR CLAMBDA NULL), but it was too hard ;; to get CLAMBDA defined in time for the cross-compiler. - (lambda nil) + (lambda nil) ;; the lexically enclosing cleanup, or NIL if none enclosing within Lambda (cleanup nil) ;; the current OPTIMIZE policy - (policy *policy* :type policy) - ;; an alist of miscellaneous options that are associated with the - ;; lexical environment - (options nil :type list)) + (policy *policy* :type policy)) ;;; support for the idiom (in MACROEXPAND and elsewhere) that NIL is ;;; to be taken as a null lexical environment @@ -85,5 +89,5 @@ ;; by LAMBDA, but this implementation doesn't try. (and (null (lexenv-blocks lexenv)) (null (lexenv-tags lexenv)) - (null (lexenv-variables lexenv)) - (null (lexenv-functions lexenv)))) + (null (lexenv-vars lexenv)) + (null (lexenv-funs lexenv))))