(setf (ir2-component-wired-tns instance) value))
;;; Remove all TNs with no references from the lists of unpacked TNs.
-;;; We null out the Offset so that nobody will mistake deleted wired
+;;; We null out the OFFSET so that nobody will mistake deleted wired
;;; TNs for properly packed TNs. We mark non-deleted alias TNs so that
;;; aliased TNs aren't considered to be unreferenced.
(defun delete-unreferenced-tns (component)
(push-in tn-next res (ir2-component-restricted-tns component))
res))
-;;; Make TN be live throughout environment. Return TN. In the DEBUG
-;;; case, the TN is treated normally in blocks in the environment
-;;; which reference the TN, allowing targeting to/from the TN. This
-;;; results in move efficient code, but may result in the TN sometimes
-;;; not being live when you want it.
-(defun physenv-live-tn (tn env)
- (declare (type tn tn) (type physenv env))
+;;; Make TN be live throughout PHYSENV. Return TN. In the DEBUG case,
+;;; the TN is treated normally in blocks in the environment which
+;;; reference the TN, allowing targeting to/from the TN. This results
+;;; in move efficient code, but may result in the TN sometimes not
+;;; being live when you want it.
+(defun physenv-live-tn (tn physenv)
+ (declare (type tn tn) (type physenv physenv))
(aver (eq (tn-kind tn) :normal))
(setf (tn-kind tn) :environment)
- (setf (tn-physenv tn) env)
- (push tn (ir2-physenv-live-tns (physenv-info env)))
+ (setf (tn-physenv tn) physenv)
+ (push tn (ir2-physenv-live-tns (physenv-info physenv)))
tn)
-(defun physenv-debug-live-tn (tn env)
- (declare (type tn tn) (type physenv env))
+(defun physenv-debug-live-tn (tn physenv)
+ (declare (type tn tn) (type physenv physenv))
(aver (eq (tn-kind tn) :normal))
(setf (tn-kind tn) :debug-environment)
- (setf (tn-physenv tn) env)
- (push tn (ir2-physenv-debug-live-tns (physenv-info env)))
+ (setf (tn-physenv tn) physenv)
+ (push tn (ir2-physenv-debug-live-tns (physenv-info physenv)))
tn)
;;; Make TN be live throughout the current component. Return TN.
*component-being-compiled*)))
tn)
-;;; Specify that Save be used as the save location for TN. TN is returned.
+;;; Specify that SAVE be used as the save location for TN. TN is returned.
(defun specify-save-tn (tn save)
(declare (type tn tn save))
(aver (eq (tn-kind save) :normal))
;;; Return a list of N normal TNs of the specified primitive type.
(defun make-n-tns (n ptype)
(declare (type unsigned-byte n) (type primitive-type ptype))
- (collect ((res))
- (dotimes (i n)
- (res (make-normal-tn ptype)))
- (res)))
+ (loop repeat n
+ collect (make-normal-tn ptype)))
;;; Return true if X and Y are packed in the same location, false otherwise.
;;; This is false if either operand is constant.
;;; Return the value of an immediate constant TN.
(defun tn-value (tn)
(declare (type tn tn))
+ ;; FIXME: What is :CACHED-CONSTANT?
(aver (member (tn-kind tn) '(:constant :cached-constant)))
(constant-value (tn-leaf tn)))
(unless (and (not (sc-save-p sc))
(eq (sb-kind (sc-sb sc)) :unbounded))
(dolist (alt (sc-alternate-scs sc)
- (error "SC ~S has no :unbounded :save-p NIL alternate SC."
+ (error "SC ~S has no :UNBOUNDED :SAVE-P NIL alternate SC."
(sc-name sc)))
(when (and (not (sc-save-p alt))
(eq (sb-kind (sc-sb alt)) :unbounded))