From 6375e825c7a5f3b8f3ceddc0f22dae5de0c10bec Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Thu, 21 Dec 2017 02:17:14 +0300 Subject: [PATCH] Fix FILL on large bit-vectors. UB1-BASH-FILL was restricted to (unsigned-byte 27) offsets on x86, which is not enough. --- src/code/bit-bash.lisp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/code/bit-bash.lisp b/src/code/bit-bash.lisp index bed1fc2e1..b10259390 100644 --- a/src/code/bit-bash.lisp +++ b/src/code/bit-bash.lisp @@ -154,20 +154,7 @@ (let* ((bytes-per-word (/ n-word-bits bitsize)) (byte-offset `(integer 0 (,bytes-per-word))) (byte-count `(integer 1 (,bytes-per-word))) - (max-bytes (ash sb!xc:most-positive-fixnum - ;; FIXME: this reflects code contained in the - ;; original bit-bash.lisp, but seems very - ;; nonsensical. Why shouldn't we be able to - ;; handle M-P-FIXNUM bits? And if we can't, - ;; are these other shift amounts bogus, too? - (ecase bitsize - (1 -2) - (2 -1) - (4 0) - (8 0) - (16 0) - (32 0) - (64 0)))) + (max-bytes sb!xc:most-positive-fixnum) (offset `(integer 0 ,max-bytes)) (max-word-offset (ceiling max-bytes bytes-per-word)) (word-offset `(integer 0 ,max-word-offset)) -- 2.11.4.GIT