0.8.15:
[sbcl.git] / src / compiler / tn.lisp
index 8ec5260..d5e6f77 100644 (file)
@@ -16,9 +16,9 @@
 ;;; in this component.
 (defvar *component-being-compiled*)
 
-;;; Do-Packed-TNs (TN-Var Component [Result]) Declaration* Form*
+;;; DO-PACKED-TNS (TN-Var Component [Result]) Declaration* Form*
 ;;;
-;;; Iterate over all packed TNs allocated in Component.
+;;; Iterate over all packed TNs allocated in COMPONENT.
 (defmacro do-packed-tns ((tn component &optional result) &body body)
   (let ((n-component (gensym)))
     `(let ((,n-component (component-info ,component)))
@@ -52,7 +52,7 @@
   (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))
 \f
 ;;;; TN referencing
 
-;;; Make a TN-Ref that references TN and return it. Write-P should be true
-;;; if this is a write reference, otherwise false. All we do other than
-;;; calling the constructor is add the reference to the TN's references.
+;;; Make a TN-REF that references TN and return it. WRITE-P should be
+;;; true if this is a write reference, otherwise false. All we do
+;;; other than calling the constructor is add the reference to the
+;;; TN's references.
 (defun reference-tn (tn write-p)
   (declare (type tn tn) (type boolean write-p))
   (let ((res (make-tn-ref tn write-p)))
        (push-in tn-ref-next res (tn-reads tn)))
     res))
 
-;;; Make TN-Refs to reference each TN in TNs, linked together by
-;;; TN-Ref-Across. Write-P is the Write-P value for the refs. More is
-;;; stuck in the TN-Ref-Across of the ref for the last TN, or returned as the
-;;; result if there are no TNs.
+;;; Make TN-REFS to reference each TN in TNs, linked together by
+;;; TN-REF-ACROSS. WRITE-P is the WRITE-P value for the refs. MORE is
+;;; stuck in the TN-REF-ACROSS of the ref for the last TN, or returned
+;;; as the result if there are no TNs.
 (defun reference-tn-list (tns write-p &optional more)
   (declare (list tns) (type boolean write-p) (type (or tn-ref null) more))
   (if tns
   (values))
 
 ;;; Do stuff to change the TN referenced by Ref. We remove Ref from its
-;;; old TN's refs, add ref to TN's refs, and set the TN-Ref-TN.
+;;; old TN's refs, add ref to TN's refs, and set the TN-REF-TN.
 (defun change-tn-ref-tn (ref tn)
   (declare (type tn-ref ref) (type tn tn))
   (delete-tn-ref ref)
            (setf (ir2-block-start-vop block) first))))
   (values))
 
-;;; Delete all of the TN-Refs associated with VOP and remove VOP from the IR2.
+;;; Delete all of the TN-REFs associated with VOP and remove VOP from the IR2.
 (defun delete-vop (vop)
   (declare (type vop vop))
   (do ((ref (vop-refs vop) (tn-ref-next-ref ref)))
 ;;; 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))