0.8.5.29:
[sbcl.git] / src / compiler / alpha / array.lisp
index cf3af86..38572a3 100644 (file)
 
 \f
 ;;;; additional accessors and setters for the array header
-
-(defknown sb!impl::%array-dimension (t index) index
-  (flushable))
-(defknown sb!impl::%set-array-dimension (t index index) index
-  ())
-
 (define-full-reffer %array-dimension *
   array-dimensions-offset other-pointer-lowtag
-  (any-reg) positive-fixnum sb!impl::%array-dimension)
+  (any-reg) positive-fixnum sb!kernel:%array-dimension)
 
 (define-full-setter %set-array-dimension *
   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))
+  (any-reg) positive-fixnum sb!kernel:%set-array-dimension #!+gengc nil)
 
 (define-vop (array-rank-vop)
-  (:translate sb!impl::%array-rank)
+  (:translate sb!kernel:%array-rank)
   (:policy :fast-safe)
   (:args (x :scs (descriptor-reg)))
   (:temporary (:scs (non-descriptor-reg)) temp)
@@ -68,8 +59,6 @@
     (inst sra temp n-widetag-bits temp)
     (inst subq temp (1- array-dimensions-offset) temp)
     (inst sll temp 2 res)))
-
-
 \f
 ;;;; bounds checking routine
 
                     (:generator 20
                                 (multiple-value-bind (word extra)
                                    (floor index ,elements-per-word)
-                                  (inst ldl object
+                                  (inst ldl old
                                         (- (* (+ word vector-data-offset)
                                              n-word-bytes)
                                            other-pointer-lowtag)
-                                        old)
+                                        object)
                                   (unless (and (sc-is value immediate)
                                                (= (tn-value value)
                                                  ,(1- (ash 1 bits))))
   (def-full-data-vector-frobs simple-vector *
     descriptor-reg any-reg null zero)
   
-  (def-partial-data-vector-frobs simple-string base-char :byte nil
+  (def-partial-data-vector-frobs simple-base-string base-char :byte nil
     base-char-reg)
   
+  (def-partial-data-vector-frobs simple-array-unsigned-byte-7 positive-fixnum
+    :byte nil unsigned-reg signed-reg)
   (def-partial-data-vector-frobs simple-array-unsigned-byte-8 positive-fixnum
     :byte nil unsigned-reg signed-reg)
   
+  (def-partial-data-vector-frobs simple-array-unsigned-byte-15 positive-fixnum
+    :short nil unsigned-reg signed-reg)
   (def-partial-data-vector-frobs simple-array-unsigned-byte-16 positive-fixnum
     :short nil unsigned-reg signed-reg)
   
+  (def-full-data-vector-frobs simple-array-unsigned-byte-31 unsigned-num
+    unsigned-reg)
   (def-full-data-vector-frobs simple-array-unsigned-byte-32 unsigned-num
     unsigned-reg)
   
   (def-partial-data-vector-frobs simple-array-signed-byte-16 tagged-num
     :short t signed-reg)
   
+  (def-full-data-vector-frobs simple-array-unsigned-byte-29 positive-fixnum any-reg)  
   (def-full-data-vector-frobs simple-array-signed-byte-30 tagged-num any-reg)
   
   (def-full-data-vector-frobs simple-array-signed-byte-32 signed-num