1.0.7.19: SB-EXT:COMPARE-AND-SWAP
[sbcl.git] / src / code / array.lisp
index 65927a1..817bdb7 100644 (file)
@@ -337,11 +337,7 @@ of specialized arrays is supported."
                             (:little-endian
                              (- sb!vm:other-pointer-lowtag))
                             (:big-endian
-                             ;; I'm not completely sure of what this
-                             ;; 3 represents symbolically. It's
-                             ;; just what all the LOAD-TYPE vops
-                             ;; are doing.
-                             (- 3 sb!vm:other-pointer-lowtag)))))
+                             (- (1- sb!vm:n-word-bytes) sb!vm:other-pointer-lowtag)))))
                    ;; WIDETAG-OF needs extra code to handle
                    ;; LIST and FUNCTION lowtags. We're only
                    ;; dispatching on other pointers, so let's
@@ -444,7 +440,7 @@ of specialized arrays is supported."
                 ,@(loop for widetag in '(sb!vm:complex-vector-widetag
                                          sb!vm:complex-vector-nil-widetag
                                          sb!vm:complex-bit-vector-widetag
-                                         sb!vm:complex-character-string-widetag
+                                         #!+sb-unicode sb!vm:complex-character-string-widetag
                                          sb!vm:complex-base-string-widetag
                                          sb!vm:simple-array-widetag
                                          sb!vm:complex-array-widetag)
@@ -473,6 +469,9 @@ of specialized arrays is supported."
 (defun data-vector-ref (array index)
   (hairy-data-vector-ref array index))
 
+(defun data-vector-ref-with-offset (array index offset)
+  (hairy-data-vector-ref array (+ index offset)))
+
 ;;; SUBSCRIPTS has a dynamic-extent list structure and is destroyed
 (defun %array-row-major-index (array subscripts
                                      &optional (invalid-index-error-p t))