1.0.42.1: add release script
[sbcl.git] / src / compiler / node.lisp
index ed0676e..41964ad 100644 (file)
   (flag nil)
   ;; some kind of info used by the back end
   (info nil)
-  ;; what macroexpansions happened "in" this block, used for xref
-  (macroexpands nil :type list)
+  ;; what macroexpansions and source transforms happened "in" this block, used
+  ;; for xref
+  (xrefs nil :type list)
   ;; Cache the physenv of a block during lifetime analysis. :NONE if
   ;; no cached value has been stored yet.
   (physenv-cache :none :type (or null physenv (member :none))))
   kind
   mess-up
   (info :test info))
-(defmacro cleanup-nlx-info (cleanup)
-  `(cleanup-info ,cleanup))
 
 ;;; A PHYSENV represents the result of physical environment analysis.
 ;;;
 (def!struct (global-var (:include basic-var))
   ;; kind of variable described
   (kind (missing-arg)
-        :type (member :special :global-function :global)))
+        :type (member :special :global-function :global :unknown)))
 (defprinter (global-var :identity t)
   %source-name
   #!+sb-show id
   ;; global environment.
   (inlinep nil :type inlinep)
   (inline-expansion nil :type (or cons null))
-  ;; the block-local definition of this function (either because it
-  ;; was semi-inline, or because it was defined in this block). If
-  ;; this function is not an entry point, then this may be deleted or
-  ;; LET-converted. Null if we haven't converted the expansion yet.
-  (functional nil :type (or functional null)))
+  ;; List of functionals corresponding to this DEFINED-FUN: either from the
+  ;; conversion of a NAMED-LAMBDA, or from inline-expansion (see
+  ;; RECOGNIZE-KNOWN-CALL) - we need separate functionals for each policy in
+  ;; which the function is used.
+  (functionals nil :type list))
 (defprinter (defined-fun :identity t)
   %source-name
   #!+sb-show id
   inlinep
-  (functional :test functional))
+  (functionals :test functionals))
 \f
 ;;;; function stuff
 
   ;; the original function or macro lambda list, or :UNSPECIFIED if
   ;; this is a compiler created function
   (arg-documentation nil :type (or list (member :unspecified)))
+  ;; the documentation string for the lambda
+  (documentation nil :type (or null string))
   ;; Node, allocating closure for this lambda. May be NIL when we are
   ;; sure that no closure is needed.
   (allocator nil :type (or null combination))
   ;; xref information for this functional (only used for functions with an
   ;; XEP)
   (xref () :type list)
-  ;; True if this functional was created from an inline expansion
-  (inline-expanded nil :type boolean))
+  ;; True if this functional was created from an inline expansion. This
+  ;; is either T, or the GLOBAL-VAR for which it is an expansion.
+  (inline-expanded nil))
 (defprinter (functional :identity t)
   %source-name
   %debug-name
   (%source-name (missing-arg) :type symbol :read-only t))
 (defprinter (ref :identity t)
   #!+sb-show id
-  %source-name
+  (%source-name :test (neq %source-name '.anonymous.))
   leaf)
 
 ;;; Naturally, the IF node always appears at the end of a block.