From 2dac9e987c259dee1d0208009a5b4ff9c4f41be8 Mon Sep 17 00:00:00 2001
From: ram <ram>
Date: Sun, 11 Nov 1990 00:03:57 +0000
Subject: [PATCH] updated comments in the SC structure to correspond to the new
 usage of the MOVE-VOPS and MOVE-ARG-VOPS wherein multiple VOPs per SC pair
 are supported.

---
 compiler/vop.lisp | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/compiler/vop.lisp b/compiler/vop.lisp
index 0303861bb..7e356001f 100644
--- a/compiler/vop.lisp
+++ b/compiler/vop.lisp
@@ -916,16 +916,22 @@
   (load-costs (make-array sc-number-limit :initial-element nil)
 	      :type sc-vector)
   ;;
-  ;; Vector mapping from SC numbers to representation move and coerce VOPs.  If
-  ;; an entry is non-null, then it is the VOP-INFO for the VOP that coerces an
-  ;; object in the index SC's representation info this SC's representation.  If
-  ;; null, no special VOP is necessary: just use MOVE.  This vector is filled
-  ;; out with entries for all SCs that can somehow be coerced into this SC, not
-  ;; just those VOPs defined to directly move into this SC (i.e. it allows for
-  ;; operand loading on the move VOP's operands.)
-  ;;
-  ;; If there are special non-coercing moves (i.e. non-null entries for this SC
-  ;; or its alternates), then they should not use any wired temporaries.
+  ;; Vector mapping from SC numbers to possibly representation-specific move
+  ;; and coerce VOPs.  Each entry is a list of VOP-INFOs for VOPs that
+  ;; move/coerce an object in the index SC's representation into this SC's
+  ;; representation.  This vector is filled out with entries for all SCs that
+  ;; can somehow be coerced into this SC, not just those VOPs defined to
+  ;; directly move into this SC (i.e. it allows for operand loading on the move
+  ;; VOP's operands.)
+  ;;
+  ;; When there are multiple applicable VOPs, the template arg and result type
+  ;; restrictions are used to determine which one to use.  The list is sorted
+  ;; by increasing cost, so the first applicable VOP should be used.
+  ;;
+  ;; Move (or move-arg) VOPs with descriptor results shouldn't have TNs wired
+  ;; in the standard argument registers, since there may already be live TNs
+  ;; wired in those locations holding the values that we are setting up for
+  ;; unknown-values return.
   (move-vops (make-array sc-number-limit :initial-element nil)
 	     :type sc-vector)
   ;;
-- 
GitLab