X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fnode.lisp;h=3c96b070ab8db9ef3c0aa9f5073063ea0775d96f;hb=2c06e3056fe6aa820817a927fa0e840eb7b8edb7;hp=49400c5cea6cf13099e6d4faf684496c023a991b;hpb=f22ad70037030c07074327cf239bd84dc17b44b6;p=sbcl.git diff --git a/src/compiler/node.lisp b/src/compiler/node.lisp index 49400c5..3c96b07 100644 --- a/src/compiler/node.lisp +++ b/src/compiler/node.lisp @@ -617,6 +617,9 @@ :read-only t) ;; the type which values of this leaf must have (type *universal-type* :type ctype) + ;; the type which values of this leaf have last been defined to have + ;; (but maybe won't have in future, in case of redefinition) + (defined-type *universal-type* :type ctype) ;; where the TYPE information came from: ;; :DECLARED, from a declaration. ;; :ASSUMED, from uses of the object. @@ -631,8 +634,8 @@ ;; true if there was ever a REF or SET node for this leaf. This may ;; be true when REFS and SETS are null, since code can be deleted. (ever-used nil :type boolean) - ;; is it declared dynamic-extent? - (dynamic-extent nil :type boolean) + ;; is it declared dynamic-extent, or truly-dynamic-extent? + (dynamic-extent nil :type (member nil t :truly)) ;; some kind of info used by the back end (info nil)) @@ -1113,7 +1116,7 @@ ;; propagation. This is left null by the lambda pre-pass if it ;; determine that this is a set closure variable, and is thus not a ;; good subject for flow analysis. - (constraints nil :type (or sset null)) + (constraints nil :type (or null t #| FIXME: conset |#)) ;; Initial type of a LET variable as last seen by PROPAGATE-FROM-SETS. (last-initial-type *universal-type* :type ctype) ;; The FOP handle of the lexical variable represented by LAMBDA-VAR @@ -1169,9 +1172,9 @@ ;; the blocks that we execute next in true and false case, ;; respectively (may be the same) (consequent (missing-arg) :type cblock) - (consequent-constraints nil :type (or null sset)) + (consequent-constraints nil :type (or null t #| FIXME: conset |#)) (alternative (missing-arg) :type cblock) - (alternative-constraints nil :type (or null sset))) + (alternative-constraints nil :type (or null t #| FIXME: conset |#))) (defprinter (cif :conc-name if- :identity t) (test :prin1 (lvar-uses test)) consequent