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