From 05bb9b2b4ff04fb85067aa31c84d205b7a00c390 Mon Sep 17 00:00:00 2001 From: Alastair Bridgewater Date: Mon, 24 Oct 2011 18:02:50 -0400 Subject: [PATCH] Fix fixnum and unsigned-fixnum array cleanups. * 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/code/room.lisp b/src/code/room.lisp index 28444c6..3ddbfc6 100644 --- a/src/code/room.lisp +++ b/src/code/room.lisp @@ -103,12 +103,12 @@ (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) -- 1.7.10.4