X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fnode.lisp;h=8b1d32b42433c48da7c0b736d01b533ad221261c;hb=86fca9c405f91d02784bcdd24b25a81dce549332;hp=44f0bfe4ef8a585d0592b3433c3c696a2ed35937;hpb=78a057624fecd10d0fb2ead4ef02ffc361b1ee22;p=sbcl.git diff --git a/src/compiler/node.lisp b/src/compiler/node.lisp index 44f0bfe..8b1d32b 100644 --- a/src/compiler/node.lisp +++ b/src/compiler/node.lisp @@ -124,14 +124,14 @@ ;; will be used. In the latter case, LTN must ensure that a safe ;; implementation *is* used. ;; - ;; :ERROR - ;; There is a compile-time type error in some use of this - ;; continuation. A type check should still be generated, but be - ;; careful. - ;; ;; This is computed lazily by CONTINUATION-DERIVED-TYPE, so use ;; CONTINUATION-TYPE-CHECK instead of the %'ed slot accessor. - (%type-check t :type (member t nil :deleted :no-check :error)) + (%type-check t :type (member t nil :deleted :no-check)) + ;; Asserted type, weakend according to policies + (type-to-check *wild-type* :type ctype) + ;; Cached type which is checked by DEST. If NIL, then this must be + ;; recomputed: see CONTINUATION-EXTERNALLY-CHECKABLE-TYPE. + (%externally-checkable-type nil :type (or null ctype)) ;; something or other that the back end annotates this continuation with (info nil) ;; uses of this continuation in the lexical environment. They are @@ -221,7 +221,7 @@ ;;; is set when a continuation type assertion is strengthened. ;;; TEST-MODIFIED is set whenever the test for the ending IF has ;;; changed (may be true when there is no IF.) -(def-boolean-attribute block +(!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 @@ -311,7 +311,9 @@ (test-constraint nil :type (or sset null))) (def!method print-object ((cblock cblock) stream) (print-unreadable-object (cblock stream :type t :identity t) - (format stream ":START c~W" (cont-num (block-start cblock))))) + (format stream "~W :START c~W" + (block-number cblock) + (cont-num (block-start cblock))))) ;;; The BLOCK-ANNOTATION class is inherited (via :INCLUDE) by ;;; different BLOCK-INFO annotation structures so that code @@ -700,8 +702,7 @@ (sets () :type list)) ;;; The GLOBAL-VAR structure represents a value hung off of the symbol -;;; NAME. We use a :CONSTANT VAR when we know that the thing is a -;;; constant, but don't know what the value is at compile time. +;;; NAME. (def!struct (global-var (:include basic-var)) ;; kind of variable described (kind (missing-arg)