1.0.23.38: fix bug 430 (stack alloc by nested defstruct constructors)
[sbcl.git] / src / compiler / node.lisp
index 3c96b07..ed0676e 100644 (file)
   ;;  :DECLARED, from a declaration.
   ;;  :ASSUMED, from uses of the object.
   ;;  :DEFINED, from examination of the definition.
+  ;;  :DEFINED-METHOD, implicit, piecemeal declarations from CLOS.
   ;; FIXME: This should be a named type. (LEAF-WHERE-FROM? Or
   ;; perhaps just WHERE-FROM, since it's not just used in LEAF,
   ;; but also in various DEFINE-INFO-TYPEs in globaldb.lisp,
   ;; and very likely elsewhere too.)
-  (where-from :assumed :type (member :declared :assumed :defined))
+  (where-from :assumed :type (member :declared :assumed :defined :defined-method))
   ;; list of the REF nodes for this leaf
   (refs () :type list)
   ;; true if there was ever a REF or SET node for this leaf. This may
   ;; list of embedded lambdas
   (children nil :type list)
   (parent nil :type (or clambda null))
-  (allow-instrumenting *allow-instrumenting* :type boolean))
+  (allow-instrumenting *allow-instrumenting* :type boolean)
+  ;; True if this is a system introduced lambda: it may contain user code, but
+  ;; the lambda itself is not, and the bindings introduced by it are considered
+  ;; transparent by the nested DX analysis.
+  (system-lambda-p nil :type boolean))
 (defprinter (clambda :conc-name lambda- :identity t)
   %source-name
   %debug-name