0.7.7.4:
[sbcl.git] / src / compiler / alpha / array.lisp
index 123ef77..cf3af86 100644 (file)
   (:temporary (:scs (non-descriptor-reg)) header)
   (:results (result :scs (descriptor-reg)))
   (:generator 13
   (:temporary (:scs (non-descriptor-reg)) header)
   (:results (result :scs (descriptor-reg)))
   (:generator 13
-    (inst addq rank (+ (* array-dimensions-offset word-bytes)
+    (inst addq rank (+ (* array-dimensions-offset n-word-bytes)
                       lowtag-mask)
          bytes)
     (inst li (lognot lowtag-mask) header)
     (inst and bytes header bytes)
     (inst addq rank (fixnumize (1- array-dimensions-offset)) header)
                       lowtag-mask)
          bytes)
     (inst li (lognot lowtag-mask) header)
     (inst and bytes header bytes)
     (inst addq rank (fixnumize (1- array-dimensions-offset)) header)
-    (inst sll header type-bits header)
+    (inst sll header n-widetag-bits header)
     (inst bis header type header)
     (inst srl header 2 header)
     (pseudo-atomic ()
     (inst bis header type header)
     (inst srl header 2 header)
     (pseudo-atomic ()
-      (inst bis alloc-tn other-pointer-type result)
-      (storew header result 0 other-pointer-type)
+      (inst bis alloc-tn other-pointer-lowtag result)
+      (storew header result 0 other-pointer-lowtag)
       (inst addq alloc-tn bytes alloc-tn))))
 
 
       (inst addq alloc-tn bytes alloc-tn))))
 
 
   ())
 
 (define-full-reffer %array-dimension *
   ())
 
 (define-full-reffer %array-dimension *
-  array-dimensions-offset other-pointer-type
+  array-dimensions-offset other-pointer-lowtag
   (any-reg) positive-fixnum sb!impl::%array-dimension)
 
 (define-full-setter %set-array-dimension *
   (any-reg) positive-fixnum sb!impl::%array-dimension)
 
 (define-full-setter %set-array-dimension *
-  array-dimensions-offset other-pointer-type
-  (any-reg) positive-fixnum sb!impl::%set-array-dimension #+gengc nil)
+  array-dimensions-offset other-pointer-lowtag
+  (any-reg) positive-fixnum sb!impl::%set-array-dimension #!+gengc nil)
 
 
 (defknown sb!impl::%array-rank (t) index (flushable))
 
 
 (defknown sb!impl::%array-rank (t) index (flushable))
@@ -64,8 +64,8 @@
   (:temporary (:scs (non-descriptor-reg)) temp)
   (:results (res :scs (any-reg descriptor-reg)))
   (:generator 6
   (:temporary (:scs (non-descriptor-reg)) temp)
   (:results (res :scs (any-reg descriptor-reg)))
   (:generator 6
-    (loadw temp x 0 other-pointer-type)
-    (inst sra temp type-bits temp)
+    (loadw temp x 0 other-pointer-lowtag)
+    (inst sra temp n-widetag-bits temp)
     (inst subq temp (1- array-dimensions-offset) temp)
     (inst sll temp 2 res)))
 
     (inst subq temp (1- array-dimensions-offset) temp)
     (inst sll temp 2 res)))
 
              `(progn
                 (define-full-reffer ,(symbolicate "DATA-VECTOR-REF/" type)
                  ,type
              `(progn
                 (define-full-reffer ,(symbolicate "DATA-VECTOR-REF/" type)
                  ,type
-                  vector-data-offset other-pointer-type
-                  ,(remove-if #'(lambda (x) (member x '(null zero))) scs)
+                  vector-data-offset other-pointer-lowtag
+                  ,(remove-if (lambda (x) (member x '(null zero))) scs)
                   ,element-type
                   data-vector-ref)
                 (define-full-setter ,(symbolicate "DATA-VECTOR-SET/" type)
                  ,type
                   ,element-type
                   data-vector-ref)
                 (define-full-setter ,(symbolicate "DATA-VECTOR-SET/" type)
                  ,type
-                  vector-data-offset other-pointer-type ,scs ,element-type
+                  vector-data-offset other-pointer-lowtag ,scs ,element-type
                   data-vector-set #+gengc ,(if (member 'descriptor-reg scs)
                                               t
                                               nil))))
                   data-vector-set #+gengc ,(if (member 'descriptor-reg scs)
                                               t
                                               nil))))
              `(progn
                 (define-partial-reffer ,(symbolicate "DATA-VECTOR-REF/" type)
                  ,type
              `(progn
                 (define-partial-reffer ,(symbolicate "DATA-VECTOR-REF/" type)
                  ,type
-                  ,size ,signed vector-data-offset other-pointer-type ,scs
+                  ,size ,signed vector-data-offset other-pointer-lowtag ,scs
                   ,element-type data-vector-ref)
                 (define-partial-setter ,(symbolicate "DATA-VECTOR-SET/" type)
                  ,type
                   ,element-type data-vector-ref)
                 (define-partial-setter ,(symbolicate "DATA-VECTOR-SET/" type)
                  ,type
-                  ,size vector-data-offset other-pointer-type ,scs
+                  ,size vector-data-offset other-pointer-lowtag ,scs
                   ,element-type data-vector-set)))
            (def-small-data-vector-frobs (type bits)
                   ,element-type data-vector-set)))
            (def-small-data-vector-frobs (type bits)
-             (let* ((elements-per-word (floor word-bits bits))
+             (let* ((elements-per-word (floor n-word-bits bits))
                     (bit-shift (1- (integer-length elements-per-word))))
                `(progn
                   (define-vop (,(symbolicate 'data-vector-ref/ type))
                     (bit-shift (1- (integer-length elements-per-word))))
                `(progn
                   (define-vop (,(symbolicate 'data-vector-ref/ type))
                                 (inst sll temp 2 temp)
                                 (inst addq object temp lip)
                                 (inst ldl result
                                 (inst sll temp 2 temp)
                                 (inst addq object temp lip)
                                 (inst ldl result
-                                      (- (* vector-data-offset word-bytes)
-                                         other-pointer-type)
+                                      (- (* vector-data-offset n-word-bytes)
+                                         other-pointer-lowtag)
                                       lip)
                                 (inst and index ,(1- elements-per-word) temp)
                                 ,@(unless (= bits 1)
                                       lip)
                                 (inst and index ,(1- elements-per-word) temp)
                                 ,@(unless (= bits 1)
                                 (:constant
                                  (integer 0
                                           ,(1- (* (1+ (- (floor (+ #x7fff
                                 (:constant
                                  (integer 0
                                           ,(1- (* (1+ (- (floor (+ #x7fff
-                                                                   other-pointer-type)
-                                                                word-bytes)
+                                                                   other-pointer-lowtag)
+                                                                n-word-bytes)
                                                          vector-data-offset))
                                                   elements-per-word)))))
                     (:info index)
                                                          vector-data-offset))
                                                   elements-per-word)))))
                     (:info index)
                                    (floor index ,elements-per-word)
                                   (loadw result object (+ word
                                                          vector-data-offset) 
                                    (floor index ,elements-per-word)
                                   (loadw result object (+ word
                                                          vector-data-offset) 
-                                         other-pointer-type)
+                                         other-pointer-lowtag)
                                   (unless (zerop extra)
                                     (inst srl result (* extra ,bits) result))
                                   (unless (= extra ,(1- elements-per-word))
                                   (unless (zerop extra)
                                     (inst srl result (* extra ,bits) result))
                                   (unless (= extra ,(1- elements-per-word))
                                 (inst sll temp 2 temp)
                                 (inst addq object temp lip)
                                 (inst ldl old
                                 (inst sll temp 2 temp)
                                 (inst addq object temp lip)
                                 (inst ldl old
-                                      (- (* vector-data-offset word-bytes)
-                                         other-pointer-type)
+                                      (- (* vector-data-offset n-word-bytes)
+                                         other-pointer-lowtag)
                                       lip)
                                 (inst and index ,(1- elements-per-word) shift)
                                 ,@(unless (= bits 1)
                                       lip)
                                 (inst and index ,(1- elements-per-word) shift)
                                 ,@(unless (= bits 1)
                                   (inst sll temp shift temp)
                                   (inst bis old temp old))
                                 (inst stl old
                                   (inst sll temp shift temp)
                                   (inst bis old temp old))
                                 (inst stl old
-                                      (- (* vector-data-offset word-bytes)
-                                         other-pointer-type)
+                                      (- (* vector-data-offset n-word-bytes)
+                                         other-pointer-lowtag)
                                       lip)
                                 (sc-case value
                                          (immediate
                                       lip)
                                 (sc-case value
                                          (immediate
                                 (:constant
                                  (integer 0
                                           ,(1- (* (1+ (- (floor (+ #x7fff
                                 (:constant
                                  (integer 0
                                           ,(1- (* (1+ (- (floor (+ #x7fff
-                                                                   other-pointer-type)
-                                                                word-bytes)
+                                                                   other-pointer-lowtag)
+                                                                n-word-bytes)
                                                          vector-data-offset))
                                                   elements-per-word))))
                                 positive-fixnum)
                                                          vector-data-offset))
                                                   elements-per-word))))
                                 positive-fixnum)
                                    (floor index ,elements-per-word)
                                   (inst ldl object
                                         (- (* (+ word vector-data-offset)
                                    (floor index ,elements-per-word)
                                   (inst ldl object
                                         (- (* (+ word vector-data-offset)
-                                             word-bytes)
-                                           other-pointer-type)
+                                             n-word-bytes)
+                                           other-pointer-lowtag)
                                         old)
                                   (unless (and (sc-is value immediate)
                                                (= (tn-value value)
                                         old)
                                   (unless (and (sc-is value immediate)
                                                (= (tn-value value)
                                             (inst bis old temp old)))
                                   (inst stl old
                                         (- (* (+ word vector-data-offset)
                                             (inst bis old temp old)))
                                   (inst stl old
                                         (- (* (+ word vector-data-offset)
-                                             word-bytes)
-                                           other-pointer-type)
+                                             n-word-bytes)
+                                           other-pointer-lowtag)
                                         object)
                                   (sc-case value
                                            (immediate
                                         object)
                                   (sc-case value
                                            (immediate
   (:generator 20
     (inst addq object index lip)
     (inst lds value
   (:generator 20
     (inst addq object index lip)
     (inst lds value
-         (- (* vector-data-offset word-bytes)
-            other-pointer-type)
+         (- (* vector-data-offset n-word-bytes)
+            other-pointer-lowtag)
           lip)))
 
 (define-vop (data-vector-set/simple-array-single-float)
           lip)))
 
 (define-vop (data-vector-set/simple-array-single-float)
   (:generator 20
     (inst addq object index lip)
     (inst sts value
   (:generator 20
     (inst addq object index lip)
     (inst sts value
-         (- (* vector-data-offset word-bytes)
-            other-pointer-type)
+         (- (* vector-data-offset n-word-bytes)
+            other-pointer-lowtag)
          lip)
     (unless (location= result value)
       (inst fmove value result))))
          lip)
     (unless (location= result value)
       (inst fmove value result))))
     (inst addq object index lip)
     (inst addq lip index lip)
     (inst ldt value
     (inst addq object index lip)
     (inst addq lip index lip)
     (inst ldt value
-         (- (* vector-data-offset word-bytes)
-            other-pointer-type)
+         (- (* vector-data-offset n-word-bytes)
+            other-pointer-lowtag)
          lip)))
 
 (define-vop (data-vector-set/simple-array-double-float)
          lip)))
 
 (define-vop (data-vector-set/simple-array-double-float)
     (inst addq object index lip)
     (inst addq lip index lip)
     (inst stt value
     (inst addq object index lip)
     (inst addq lip index lip)
     (inst stt value
-         (- (* vector-data-offset word-bytes)
-            other-pointer-type) lip)
+         (- (* vector-data-offset n-word-bytes)
+            other-pointer-lowtag) lip)
     (unless (location= result value)
       (inst fmove value result))))
 \f
     (unless (location= result value)
       (inst fmove value result))))
 \f
       (inst addq object index lip)
       (inst addq lip index lip)
       (inst lds real-tn
       (inst addq object index lip)
       (inst addq lip index lip)
       (inst lds real-tn
-           (- (* vector-data-offset word-bytes) other-pointer-type)
+           (- (* vector-data-offset n-word-bytes) other-pointer-lowtag)
            lip))
     (let ((imag-tn (complex-single-reg-imag-tn value)))
       (inst lds imag-tn
            lip))
     (let ((imag-tn (complex-single-reg-imag-tn value)))
       (inst lds imag-tn
-           (- (* (1+ vector-data-offset) word-bytes) other-pointer-type)
+           (- (* (1+ vector-data-offset) n-word-bytes) other-pointer-lowtag)
            lip))))
 
 (define-vop (data-vector-set/simple-array-complex-single-float)
            lip))))
 
 (define-vop (data-vector-set/simple-array-complex-single-float)
       (inst addq object index lip)
       (inst addq lip index lip)
       (inst sts value-real
       (inst addq object index lip)
       (inst addq lip index lip)
       (inst sts value-real
-           (- (* vector-data-offset word-bytes) other-pointer-type)
+           (- (* vector-data-offset n-word-bytes) other-pointer-lowtag)
            lip)
       (unless (location= result-real value-real)
        (inst fmove value-real result-real)))
     (let ((value-imag (complex-single-reg-imag-tn value))
          (result-imag (complex-single-reg-imag-tn result)))
       (inst sts value-imag
            lip)
       (unless (location= result-real value-real)
        (inst fmove value-real result-real)))
     (let ((value-imag (complex-single-reg-imag-tn value))
          (result-imag (complex-single-reg-imag-tn result)))
       (inst sts value-imag
-           (- (* (1+ vector-data-offset) word-bytes) other-pointer-type)
+           (- (* (1+ vector-data-offset) n-word-bytes) other-pointer-lowtag)
            lip)
       (unless (location= result-imag value-imag)
        (inst fmove value-imag result-imag)))))
            lip)
       (unless (location= result-imag value-imag)
        (inst fmove value-imag result-imag)))))
       (inst addq lip index lip)
       (inst addq lip index lip)
       (inst ldt real-tn
       (inst addq lip index lip)
       (inst addq lip index lip)
       (inst ldt real-tn
-           (- (* vector-data-offset word-bytes) other-pointer-type)
+           (- (* vector-data-offset n-word-bytes) other-pointer-lowtag)
            lip))
     (let ((imag-tn (complex-double-reg-imag-tn value)))
       (inst ldt imag-tn
            lip))
     (let ((imag-tn (complex-double-reg-imag-tn value)))
       (inst ldt imag-tn
-           (- (* (+ vector-data-offset 2) word-bytes) other-pointer-type)
+           (- (* (+ vector-data-offset 2) n-word-bytes) other-pointer-lowtag)
            lip))))
 
 (define-vop (data-vector-set/simple-array-complex-double-float)
            lip))))
 
 (define-vop (data-vector-set/simple-array-complex-double-float)
       (inst addq lip index lip)
       (inst addq lip index lip)
       (inst stt value-real
       (inst addq lip index lip)
       (inst addq lip index lip)
       (inst stt value-real
-           (- (* vector-data-offset word-bytes) other-pointer-type)
+           (- (* vector-data-offset n-word-bytes) other-pointer-lowtag)
            lip)
       (unless (location= result-real value-real)
        (inst fmove value-real result-real)))
     (let ((value-imag (complex-double-reg-imag-tn value))
          (result-imag (complex-double-reg-imag-tn result)))
       (inst stt value-imag
            lip)
       (unless (location= result-real value-real)
        (inst fmove value-real result-real)))
     (let ((value-imag (complex-double-reg-imag-tn value))
          (result-imag (complex-double-reg-imag-tn result)))
       (inst stt value-imag
-           (- (* (+ vector-data-offset 2) word-bytes) other-pointer-type)
+           (- (* (+ vector-data-offset 2) n-word-bytes) other-pointer-lowtag)
            lip)
       (unless (location= result-imag value-imag)
        (inst fmove value-imag result-imag)))))
            lip)
       (unless (location= result-imag value-imag)
        (inst fmove value-imag result-imag)))))
 ;;; These vops are useful for accessing the bits of a vector irrespective of
 ;;; what type of vector it is.
 ;;;
 ;;; These vops are useful for accessing the bits of a vector irrespective of
 ;;; what type of vector it is.
 ;;;
-(define-full-reffer raw-bits * 0 other-pointer-type (unsigned-reg) unsigned-num
+(define-full-reffer raw-bits * 0 other-pointer-lowtag (unsigned-reg) unsigned-num
   %raw-bits)
   %raw-bits)
-(define-full-setter set-raw-bits * 0 other-pointer-type (unsigned-reg)
+(define-full-setter set-raw-bits * 0 other-pointer-lowtag (unsigned-reg)
   unsigned-num %set-raw-bits #+gengc nil)
 
 \f
   unsigned-num %set-raw-bits #+gengc nil)
 
 \f