X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fnode.lisp;h=2e5fd521046174c98b15c91e433dbddcc32df32a;hb=0f3a5f2e8886d18d0b4f6485c38a42be629422ae;hp=c8ac71e6f2a9b319ea415e411604f9a23b7e41ed;hpb=e8011f7c83587a9dc1b13281d0cc974bb0b054be;p=sbcl.git diff --git a/src/compiler/node.lisp b/src/compiler/node.lisp index c8ac71e..2e5fd52 100644 --- a/src/compiler/node.lisp +++ b/src/compiler/node.lisp @@ -173,17 +173,17 @@ (!def-boolean-attribute block reoptimize flush-p type-check delete-p type-asserted test-modified) -;;; FIXME: Tweak so that definitions of e.g. BLOCK-DELETE-P is -;;; findable by grep for 'def.*block-delete-p'. -(macrolet ((frob (slot) - `(defmacro ,(symbolicate "BLOCK-" slot) (block) - `(block-attributep (block-flags ,block) ,',slot)))) - (frob reoptimize) - (frob flush-p) - (frob type-check) - (frob delete-p) - (frob type-asserted) - (frob test-modified)) +(macrolet ((defattr (block-slot) + `(defmacro ,block-slot (block) + `(block-attributep + (block-flags ,block) + ,(symbolicate (subseq (string ',block-slot) 6)))))) + (defattr block-reoptimize) + (defattr block-flush-p) + (defattr block-type-check) + (defattr block-delete-p) + (defattr block-type-asserted) + (defattr block-test-modified)) ;;; The CBLOCK structure represents a basic block. We include ;;; SSET-ELEMENT so that we can have sets of blocks. Initially the @@ -676,7 +676,9 @@ (where-from :defined))) (:include leaf)) ;; the value of the constant - (value (missing-arg) :type t)) + (value (missing-arg) :type t) + ;; Boxed TN for this constant, if any. + (boxed-tn nil :type (or null tn))) (defprinter (constant :identity t) value) @@ -1140,6 +1142,14 @@ ;; determine that this is a set closure variable, and is thus not a ;; good subject for flow analysis. (constraints nil :type (or null t #| FIXME: conset |#)) + ;; Content-addressed indices for the CONSTRAINTs on this variable. + ;; These are solely used by FIND-CONSTRAINT + (ctype-constraints nil :type (or null hash-table)) + (eq-constraints nil :type (or null hash-table)) + ;; sorted sets of constraints we like to iterate over + (eql-var-constraints nil :type (or null (array t 1))) + (inheritable-constraints nil :type (or null (array t 1))) + (private-constraints nil :type (or null (array t 1))) ;; 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