(defstruct (ir2-block (:include block-annotation)
(:constructor make-ir2-block (block))
(:copier nil))
- ;; the IR2-Block's number, which differs from Block's Block-Number
+ ;; the IR2-BLOCK's number, which differs from BLOCK's BLOCK-NUMBER
;; if any blocks are split. This is assigned by lifetime analysis.
(number nil :type (or index null))
;; information about unknown-values continuations that is used by
;; the assembler label that points to the beginning of the code for
;; this block, or NIL when we haven't assigned a label yet
(%label nil)
- ;; list of Location-Info structures describing all the interesting
+ ;; list of LOCATION-INFO structures describing all the interesting
;; (to the debugger) locations in this block
(locations nil :type list))
;;; IR2 conversion may need to compile a forward reference. In this
;;; case the slots aren't actually initialized until entry analysis runs.
(defstruct (entry-info (:copier nil))
- ;; true if this function has a non-null closure environment
+ ;; Does this function have a non-null closure environment?
(closure-p nil :type boolean)
;; a label pointing to the entry vector for this function, or NIL
;; before ENTRY-ANALYZE runs
;; of the function, a symbol or (SETF <symbol>). Otherwise, this is
;; some string that is intended to be informative.
(name "<not computed>" :type (or simple-string list symbol))
- ;; a string representing the argument list that the function was
- ;; defined with
- (arguments nil :type (or simple-string null))
+ ;; the argument list that the function was defined with.
+ (arguments nil :type list)
;; a function type specifier representing the arguments and results
;; of this function
(type 'function :type (or list (member function))))
;;; 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
- ;; the TN that holds the corresponding value within this function.
- ;;
- ;; 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 (missing-arg) :type list :read-only t)
+ ;; TN info for closed-over things within the function: an alist
+ ;; mapping from NLX-INFOs and LAMBDA-VARs to TNs holding the
+ ;; corresponding thing within this function
+ ;;
+ ;; Elements of this list have a one-to-one correspondence with
+ ;; elements of the PHYSENV-CLOSURE list of the PHYSENV object that
+ ;; links to us.
+ (closure (missing-arg) :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).
;; function as far as the debugger is concerned.
(environment-start nil :type (or label null)))
(defprinter (ir2-physenv)
- environment
+ closure
old-fp
return-pc
return-pc-pass)
;; the type constraint as a Lisp function type.
;;
;; If RESULT-TYPES is :CONDITIONAL, then this is an IF-FOO style
- ;; conditional that yeilds its result as a control transfer. The
+ ;; conditional that yields its result as a control transfer. The
;; emit function takes two info arguments: the target label and a
;; boolean flag indicating whether to negate the sense of the test.
(arg-types nil :type list)
;; info for automatic emission of move-arg VOPs by representation
;; selection. If NIL, then do nothing special. If non-null, then
;; there must be a more arg. Each more arg is moved to its passing
- ;; location using the appropriate representation-specific
- ;; move-argument VOP. The first (fixed) argument must be the
- ;; control-stack frame pointer for the frame to move into. The first
- ;; info arg is the list of passing locations.
+ ;; location using the appropriate representation-specific MOVE-ARG
+ ;; VOP. The first (fixed) argument must be the control-stack frame
+ ;; pointer for the frame to move into. The first info arg is the
+ ;; list of passing locations.
;;
;; Additional constraints depend on the value:
;;
;; if true, a function that is called with the VOP to do operand
;; 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))
+ (target-fun 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. This is null if this VOP has no
;; specified generator (i.e. if it exists only to be inherited by
;; true if the values in this SC needs to be saved across calls
(save-p nil :type boolean)
;; vectors mapping from SC numbers to information about how to load
- ;; from the index SC to this one. Move-Functions holds the names of
- ;; the functions used to do loading, and Load-Costs holds the cost
- ;; of the corresponding Move-Functions. If loading is impossible,
- ;; then the entries are NIL. Load-Costs is initialized to have a 0
+ ;; from the index SC to this one. MOVE-FUNS holds the names of
+ ;; the functions used to do loading, and LOAD-COSTS holds the cost
+ ;; of the corresponding move functions. If loading is impossible,
+ ;; then the entries are NIL. LOAD-COSTS is initialized to have a 0
;; for this SC.
- (move-functions (make-array sc-number-limit :initial-element nil)
- :type sc-vector)
+ (move-funs (make-array sc-number-limit :initial-element nil)
+ :type sc-vector)
(load-costs (make-array sc-number-limit :initial-element nil)
:type sc-vector)
;; a vector mapping from SC numbers to possibly