;;; environment pointer should be saved after the binding is
;;; instantiated.
;;;
-;;; Environment-Info
-;;; Holds the IR2-Environment structure.
+;;; Physenv-Info
+;;; Holds the Ir2-Physenv structure.
;;;
;;; Tail-Set-Info
;;; Holds the Return-Info structure.
;; 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.
-(defstruct (ir2-environment (:copier nil))
+;;; An IR2-PHYSENV is used to annotate non-LET LAMBDAs with their
+;;; passing locations. It is stored in the PHYSENV-INFO.
+(defstruct (ir2-physenv (: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
;; from their passing locations, etc. This is the start of the
;; function as far as the debugger is concerned.
(environment-start nil :type (or label null)))
-(defprinter (ir2-environment)
+(defprinter (ir2-physenv)
environment
old-fp
return-pc
;; the arg/result type restrictions. We compute this from the
;; PRIMITIVE-TYPE restrictions to make life easier for IR1 phases
;; that need to anticipate LTN's template selection.
- (type (required-argument) :type function-type)
+ (type (required-argument) :type fun-type)
;; lists of restrictions on the argument and result types. A
;; restriction may take several forms:
;; -- The restriction * is no restriction at all.
(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.
;; some kind of info about how important this TN is
(cost 0 :type fixnum)
;; If a :ENVIRONMENT or :DEBUG-ENVIRONMENT TN, this is the
- ;; environment that the TN is live throughout.
- (environment nil :type (or environment null)))
+ ;; physical environment that the TN is live throughout.
+ (physenv nil :type (or physenv null)))
(def!method print-object ((tn tn) stream)
(print-unreadable-object (tn stream :type t)
;; KLUDGE: The distinction between PRINT-TN and PRINT-OBJECT on TN is