X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fnode.lisp;h=ceb1a2bc354828193e3e94e4bed6f206b6f24873;hb=9837343101c3da7b3a8f94609ec116ec5025436a;hp=3c96b070ab8db9ef3c0aa9f5073063ea0775d96f;hpb=0c8643845555805048f50c783e118762e2c43a26;p=sbcl.git diff --git a/src/compiler/node.lisp b/src/compiler/node.lisp index 3c96b07..ceb1a2b 100644 --- a/src/compiler/node.lisp +++ b/src/compiler/node.lisp @@ -465,8 +465,6 @@ kind mess-up (info :test info)) -(defmacro cleanup-nlx-info (cleanup) - `(cleanup-info ,cleanup)) ;;; A PHYSENV represents the result of physical environment analysis. ;;; @@ -624,11 +622,12 @@ ;; :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 @@ -690,7 +689,7 @@ (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 @@ -710,16 +709,16 @@ ;; 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)) ;;;; function stuff @@ -971,7 +970,11 @@ ;; 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 @@ -1158,7 +1161,7 @@ (%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.