0.pre7.38:
[sbcl.git] / src / compiler / vop.lisp
index a1fe842..39c688a 100644 (file)
   ;; of this function
   (type 'function :type (or list (member function))))
 
-;;; An IR2-ENVIRONMENT is used to annotate non-LET lambdas with their
-;;; passing locations. It is stored in the Environment-Info.
+;;; An IR2-ENVIRONMENT is used to annotate non-LET LAMBDAs with their
+;;; passing locations. It is stored in the ENVIRONMENT-INFO.
 (defstruct (ir2-environment (:copier nil))
   ;; the TNs that hold the passed environment within the function.
-  ;; This is an alist translating from the NLX-Info or lambda-var to
+  ;; This is an alist translating from the NLX-INFO or LAMBDA-VAR to
   ;; the TN that holds the corresponding value within this function.
-  ;; This list is in the same order as the ENVIRONMENT-CLOSURE.
-  (environment nil :type list)
+  ;;
+  ;; The elements of this list correspond to the elements of the list
+  ;; in the CLOSURE slot of the ENVIRONMENT object that links to us:
+  ;; essentially this list is related to the CLOSURE list by MAPCAR.
+  (environment (required-argument) :type list :read-only t)
   ;; the TNs that hold the OLD-FP and RETURN-PC within the function.
   ;; We always save these so that the debugger can do a backtrace,
   ;; even if the function has no return (and thus never uses them).
   ;; Null only temporarily.
   (old-fp nil :type (or tn null))
   (return-pc nil :type (or tn null))
-  ;; The passing location for the Return-PC. The return PC is treated
+  ;; The passing location for the RETURN-PC. The return PC is treated
   ;; differently from the other arguments, since in some
   ;; implementations we may use a call instruction that requires the
   ;; return PC to be passed in a particular place.
-  (return-pc-pass (required-argument) :type tn)
+  (return-pc-pass (required-argument) :type tn :read-only t)
   ;; True if this function has a frame on the number stack. This is
   ;; set by representation selection whenever it is possible that some
   ;; function in our tail set will make use of the number stack.
   (live-tns nil :type list)
   ;; a list of all the :DEBUG-ENVIRONMENT TNs live in this environment
   (debug-live-tns nil :type list)
-  ;; a label that marks the start of elsewhere code for this function.
-  ;; Null until this label is assigned by codegen. Used for
+  ;; a label that marks the start of elsewhere code for this function,
+  ;; or null until this label is assigned by codegen. Used for
   ;; maintaining the debug source map.
   (elsewhere-start nil :type (or label null))
   ;; a label that marks the first location in this function at which
   (arg-load-scs nil :type list)
   (result-load-scs nil :type list)
   ;; if true, a function that is called with the VOP to do operand
-  ;; targeting. This is done by modifiying the TN-Ref-Target slots in
-  ;; the TN-Refs so that they point to other TN-Refs in the same VOP.
+  ;; targeting. This is done by modifying the TN-REF-TARGET slots in
+  ;; the TN-REFS so that they point to other TN-REFS in the same VOP.
   (target-function nil :type (or null function))
   ;; a function that emits assembly code for a use of this VOP when it
-  ;; is called with the VOP structure. Null if this VOP has no
-  ;; specified generator (i.e. it exists only to be inherited by other
-  ;; VOPs.)
+  ;; is called with the VOP structure. This is null if this VOP has no
+  ;; specified generator (i.e. if it exists only to be inherited by
+  ;; other VOPs).
   (generator-function nil :type (or function null))
   ;; a list of things that are used to parameterize an inherited
   ;; generator. This allows the same generator function to be used for
   ;;
   ;;   :SAVE
   ;;   :SAVE-ONCE
-  ;;   A TN used for saving a :Normal TN across function calls. The
+  ;;   A TN used for saving a :NORMAL TN across function calls. The
   ;;   lifetime information slots are unitialized: get the original
-  ;;   TN our of the SAVE-TN slot and use it for conflicts. Save-Once
-  ;;   is like :Save, except that it is only save once at the single
+  ;;   TN our of the SAVE-TN slot and use it for conflicts. SAVE-ONCE
+  ;;   is like :SAVE, except that it is only save once at the single
   ;;   writer of the original TN.
   ;;
   ;;   :SPECIFIED-SAVE
   ;;   determination method.
   ;;
   ;;   :CONSTANT
-  ;;   Represents a constant, with TN-Leaf a Constant leaf. Lifetime
+  ;;   Represents a constant, with TN-LEAF a CONSTANT leaf. Lifetime
   ;;   information isn't computed, since the value isn't allocated by
   ;;   pack, but is instead generated as a load at each use. Since
-  ;;   lifetime analysis isn't done on :Constant TNs, they don't have
-  ;;   Local-Numbers and similar stuff.
+  ;;   lifetime analysis isn't done on :CONSTANT TNs, they don't have
+  ;;   LOCAL-NUMBERs and similar stuff.
   ;;
   ;;   :ALIAS
   ;;   A special kind of TN used to represent initialization of local
   (local-conflicts (make-array local-tn-limit :element-type 'bit
                               :initial-element 0)
                   :type local-tn-bit-vector)
-  ;; head of the list of Global-Conflicts structures for a global TN.
+  ;; head of the list of GLOBAL-CONFLICTS structures for a global TN.
   ;; This list is sorted by block number (i.e. reverse DFO), allowing
   ;; the intersection between the lifetimes for two global TNs to be
   ;; easily found. If null, then this TN is a local TN.