X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fvm-array.lisp;h=63bc1aefba433ef96f5de06cf865a994a370e08b;hb=7f579b076a1fc54587538ead07e506e7f06f3fe8;hp=f2a37c6edca3f7740211cbb627144bcc5b74b2b9;hpb=cfc3b695e6452907fef6492710777511ac4af979;p=sbcl.git diff --git a/src/compiler/generic/vm-array.lisp b/src/compiler/generic/vm-array.lisp index f2a37c6..63bc1ae 100644 --- a/src/compiler/generic/vm-array.lisp +++ b/src/compiler/generic/vm-array.lisp @@ -116,7 +116,8 @@ ((unsigned-byte 16) 0 16 simple-array-unsigned-byte-16 :importance 12) #!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or)) - ((unsigned-byte 29) 0 32 simple-array-unsigned-byte-29 + ((unsigned-byte #.sb!vm:n-positive-fixnum-bits) + 0 32 simple-array-unsigned-fixnum :importance 8 :fixnum-p t) ((unsigned-byte 31) 0 32 simple-array-unsigned-byte-31 @@ -124,7 +125,8 @@ ((unsigned-byte 32) 0 32 simple-array-unsigned-byte-32 :importance 11) #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) - ((unsigned-byte 60) 0 64 simple-array-unsigned-byte-60 + ((unsigned-byte #.sb!vm:n-positive-fixnum-bits) + 0 64 simple-array-unsigned-fixnum :importance 8 :fixnum-p t) #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) @@ -141,14 +143,14 @@ ;; compiler/generic/primtype.lisp, for why this is FIXNUM and ;; not (SIGNED-BYTE 30) #!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or)) - (fixnum 0 32 simple-array-signed-byte-30 + (fixnum 0 32 simple-array-fixnum :importance 8 :fixnum-p t) ((signed-byte 32) 0 32 simple-array-signed-byte-32 :importance 7) ;; KLUDGE: see above KLUDGE for the 32-bit case #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) - (fixnum 0 64 simple-array-signed-byte-61 + (fixnum 0 64 simple-array-fixnum :importance 8 :fixnum-p t) #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) @@ -198,6 +200,21 @@ "An alist for mapping simple array element types to their corresponding primitive types.") +(defvar *vector-without-complex-typecode-infos* + #+sb-xc-host + (loop for saetp across *specialized-array-element-type-properties* + for specifier = (saetp-specifier saetp) + unless (saetp-complex-typecode saetp) + collect (list (if (atom specifier) + (intern (format nil "VECTOR-~A-P" specifier)) + ;; at the moment, all specialized array + ;; specifiers are either atoms or + ;; two-element lists. + (intern (format nil "VECTOR-~A-~A-P" (car specifier) (cadr specifier)))) + specifier)) + #-sb-xc-host + '#.*vector-without-complex-typecode-infos*) + (in-package "SB!C") (defun find-saetp (element-type)