diff --git a/compiler/vop.lisp b/compiler/vop.lisp
index f1238f00b7ca78461f1c13c098a64796346d0431..582ff7be1975bb5050e6b80e1790d3d79673a509 100644
--- a/compiler/vop.lisp
+++ b/compiler/vop.lisp
@@ -135,7 +135,7 @@
   ;;
   ;; 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 unsigned-byte null))
+  (number nil :type (or index null))
   ;;
   ;; The IR1 block that this block is in the Info for.  
   (block nil :type cblock)
@@ -271,7 +271,7 @@
 (defstruct ir2-component
   ;;
   ;; The counter used to allocate global TN numbers.
-  (global-tn-counter 0 :type unsigned-byte)
+  (global-tn-counter 0 :type index)
   ;;
   ;; Normal-TNs is the head of the list of all the normal TNs that need to be
   ;; packed, linked through the Next slot.  We place TNs on this list when we
@@ -342,7 +342,15 @@
   (entries nil :type list)
   ;;
   ;; Head of the list of :ALIAS TNs in this component, threaded by TN-NEXT.
-  (alias-tns nil :type (or tn null)))
+  (alias-tns nil :type (or tn null))
+  ;;
+  ;; Spilled-VOPs is a hashtable translating from "interesting" VOPs to a list
+  ;; of the TNs spilled at that VOP.  This is used when computing debug info so
+  ;; that we don't consider the TN's value to be valid when it is in fact
+  ;; somewhere else.  Spilled-TNs has T for every "interesting" TN that is ever
+  ;; spilled, providing a representation that is more convenient some places.
+  (spilled-vops (make-hash-table :test #'eq) :type hash-table)
+  (spilled-tns (make-hash-table :test #'eq) :type hash-table))
 
 
 ;;; The Entry-Info structure condenses all the information that the dumper
@@ -441,7 +449,7 @@
   ;; The number of values returned, or :Unknown if we don't know.  Count may be
   ;; known when Kind is :Unknown, since we may choose the standard return
   ;; convention for other reasons.
-  (count nil :type (or unsigned-byte (member :unknown)))
+  (count nil :type (or index (member :unknown)))
   ;;
   ;; If count isn't :Unknown, then this is a list of the primitive-types of
   ;; each value.
@@ -679,7 +687,7 @@
   ;;
   ;; The base cost for this template, given optimistic assumptions such as no
   ;; operand loading, etc.
-  (cost nil :type unsigned-byte)
+  (cost nil :type index)
   ;;
   ;; If true, then a short noun-like phrase describing what this VOP "does",
   ;; i.e. the implementation strategy.  This is for use in efficiency notes.
@@ -688,7 +696,7 @@
   ;; The number of trailing arguments to VOP or %Primitive that we bundle into
   ;; a list and pass into the emit function.  This provides a way to pass
   ;; uninterpreted stuff directly to the code generator.
-  (info-arg-count 0 :type unsigned-byte)
+  (info-arg-count 0 :type index)
   ;;
   ;; A function that emits the VOPs for this template.  Arguments:
   ;;  1] Node for source context.
@@ -814,7 +822,7 @@
   ;;
   ;; The number of elements in the SB.  If finite, this is the total size.  If
   ;; unbounded, this is the size that the SB is initially allocated at.
-  (size 0 :type unsigned-byte))
+  (size 0 :type index))
 
 (defprinter sb
   name)
@@ -828,12 +836,12 @@
   ;;
   ;;
   ;; The number of locations currently allocated in this SB.
-  (current-size 0 :type unsigned-byte)
+  (current-size 0 :type index)
   ;;
   ;; The last location packed in, used by pack to scatter TNs to prevent a few
   ;; locations from getting all the TNs, and thus getting overcrowded, reducing
   ;; the possiblilities for targeting.
-  (last-offset 0 :type unsigned-byte)
+  (last-offset 0 :type index)
   ;;
   ;; A vector containing, for each location in this SB, a vector indexed by IR2
   ;; block numbers, holding local conflict bit vectors.  A TN must not be
@@ -867,7 +875,7 @@
   (sb nil :type (or sb null))
   ;;
   ;; The size of elements in this SC, in units of locations in the SB.
-  (element-size 0 :type unsigned-byte)
+  (element-size 0 :type index)
   ;;
   ;; If our SB is finite, a list of the locations in this SC.
   (locations nil :type list)
@@ -1044,7 +1052,7 @@
   ;;
   ;; The offset within the SB that this TN is packed into.  This is what
   ;; indicates that the TN is packed.
-  (offset nil :type (or unsigned-byte null))
+  (offset nil :type (or index null))
   ;;
   ;; Some kind of info about how important this TN is.
   (cost 0 :type fixnum)