Fix fixnum and unsigned-fixnum array cleanups.
authorAlastair Bridgewater <nyef@virtdev-1.lisphacker.com>
Mon, 24 Oct 2011 22:02:50 +0000 (18:02 -0400)
committerAlastair Bridgewater <nyef@virtdev-1.lisphacker.com>
Mon, 24 Oct 2011 22:02:50 +0000 (18:02 -0400)
  * dd04bd449535e9016b5652a708a3cac2ca24c87d removes the specialized
array types with specific fixnum widths in favor of more generic
fixnum and unsigned-fixnum array types.

  * In SYS:SRC;CODE;ROOM.LISP, a mistake was made in converting over
to the newer representations, involving an alist of type tag names
to a constant related to the size of array elements.  The mistake
was even made inconsistently, so that neither 32-bit nor 64-bit
targets behaved correctly.

  * Fixed, to use sb!vm:word-shift instead of literal constants.

  * Original report and bisection by akovalenko on #sbcl.

src/code/room.lisp

index 28444c6..3ddbfc6 100644 (file)
                  (simple-array-unsigned-byte-16-widetag . 1)
                  (simple-array-unsigned-byte-31-widetag . 2)
                  (simple-array-unsigned-byte-32-widetag . 2)
-                 (simple-array-unsigned-fixnum-widetag . 3)
+                 (simple-array-unsigned-fixnum-widetag . #.sb!vm:word-shift)
                  (simple-array-unsigned-byte-63-widetag . 3)
                  (simple-array-unsigned-byte-64-widetag . 3)
                  (simple-array-signed-byte-8-widetag . 0)
                  (simple-array-signed-byte-16-widetag . 1)
-                 (simple-array-fixnum-widetag . 2)
+                 (simple-array-fixnum-widetag . #.sb!vm:word-shift)
                  (simple-array-signed-byte-32-widetag . 2)
                  (simple-array-signed-byte-64-widetag . 3)
                  (simple-array-single-float-widetag . 2)