X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Farray.lisp;h=e2d4ef6fdbf688940eaf7f5d55a577ff4ced28d3;hb=69ef68ba7393e3492c1b4a756d1140f71c2922bc;hp=725b4576e085386a3a7d97a9febd02b4a578a983;hpb=78fa16bf55be44cc16845be84d98023e83fb14bc;p=sbcl.git diff --git a/src/compiler/x86-64/array.lisp b/src/compiler/x86-64/array.lisp index 725b457..e2d4ef6 100644 --- a/src/compiler/x86-64/array.lisp +++ b/src/compiler/x86-64/array.lisp @@ -269,7 +269,8 @@ (mask ,(1- (ash 1 bits))) (shift (* extra ,bits))) (unless (= value mask) - (inst mov mask-tn (lognot (ash mask shift))) + (inst mov mask-tn (ldb (byte 64 0) + (lognot (ash mask shift)))) (inst and old mask-tn)) (unless (zerop value) (inst mov mask-tn (ash value shift)) @@ -1385,6 +1386,10 @@ 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) ;;;; miscellaneous array VOPs