0.9.1.36:
[sbcl.git] / src / compiler / x86 / array.lisp
index a0983c2..f061798 100644 (file)
                       (mask ,(1- (ash 1 bits)))
                       (shift (* extra ,bits)))
                  (unless (= value mask)
-                   (inst and old (lognot (ash mask shift))))
+                   (inst and old (ldb (byte n-word-bits 0)
+                                       (lognot (ash mask shift)))))
                  (unless (zerop value)
                    (inst or old (ash value shift)))))
               (unsigned-reg
   unsigned-num %raw-bits)
 (define-full-setter set-raw-bits * 0 other-pointer-lowtag (unsigned-reg)
   unsigned-num %set-raw-bits)
+(define-full-reffer vector-raw-bits * vector-data-offset other-pointer-lowtag
+  (unsigned-reg) unsigned-num %vector-raw-bits)
+(define-full-setter set-vector-raw-bits * vector-data-offset other-pointer-lowtag
+  (unsigned-reg) unsigned-num %set-vector-raw-bits)
 \f
 ;;;; miscellaneous array VOPs