;; 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
(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
;;; A REF represents a reference to a LEAF. REF-REOPTIMIZE is
;;; initially (and forever) NIL, since REFs don't receive any values
;;; and don't have any IR1 optimizer.
-(defstruct (ref (:include node (:reoptimize nil))
+(defstruct (ref (:include node (reoptimize nil))
(:constructor make-ref (derived-type leaf))
(:copier nil))
;; The leaf referenced.