X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fvm-typetran.lisp;h=fbf173623c352b644a83c86de1596942434f2436;hb=aadc8391153b7b939462752dfa3f8dec49b2eba1;hp=05a08ebb69d8199a181c14cd53ed6d66cba0b347;hpb=a4cffc065c83d046fce193919bf6d4e53f181455;p=sbcl.git diff --git a/src/compiler/generic/vm-typetran.lisp b/src/compiler/generic/vm-typetran.lisp index 05a08eb..fbf1736 100644 --- a/src/compiler/generic/vm-typetran.lisp +++ b/src/compiler/generic/vm-typetran.lisp @@ -47,16 +47,16 @@ (simple-array (unsigned-byte 15) (*))) (define-type-predicate simple-array-unsigned-byte-16-p (simple-array (unsigned-byte 16) (*))) -#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or)) -(define-type-predicate simple-array-unsigned-byte-29-p - (simple-array (unsigned-byte 29) (*))) + +(define-type-predicate simple-array-unsigned-fixnum-p + (simple-array + (unsigned-byte #.sb!vm:n-positive-fixnum-bits) (*))) + (define-type-predicate simple-array-unsigned-byte-31-p - (simple-array (unsigned-byte 31) (*))) + (simple-array (unsigned-byte 31) (*))) (define-type-predicate simple-array-unsigned-byte-32-p (simple-array (unsigned-byte 32) (*))) -#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) -(define-type-predicate simple-array-unsigned-byte-60-p - (simple-array (unsigned-byte 60) (*))) + #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) (define-type-predicate simple-array-unsigned-byte-63-p (simple-array (unsigned-byte 63) (*))) @@ -67,14 +67,14 @@ (simple-array (signed-byte 8) (*))) (define-type-predicate simple-array-signed-byte-16-p (simple-array (signed-byte 16) (*))) -#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or)) -(define-type-predicate simple-array-signed-byte-30-p - (simple-array (signed-byte 30) (*))) + +(define-type-predicate simple-array-fixnum-p + (simple-array (signed-byte #.sb!vm:n-fixnum-bits) + (*))) + (define-type-predicate simple-array-signed-byte-32-p - (simple-array (signed-byte 32) (*))) -#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) -(define-type-predicate simple-array-signed-byte-61-p - (simple-array (signed-byte 61) (*))) + (simple-array (signed-byte 32) (*))) + #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) (define-type-predicate simple-array-signed-byte-64-p (simple-array (signed-byte 64) (*))) @@ -104,13 +104,16 @@ (define-type-predicate unsigned-byte-64-p (unsigned-byte 64)) #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) (define-type-predicate signed-byte-64-p (signed-byte 64)) -(define-type-predicate vector-t-p (vector t)) (define-type-predicate vector-nil-p (vector nil)) (define-type-predicate weak-pointer-p weak-pointer) (define-type-predicate code-component-p code-component) (define-type-predicate lra-p lra) (define-type-predicate fdefn-p fdefn) - +(macrolet + ((def () + `(progn ,@(loop for (name spec) in *vector-without-complex-typecode-infos* + collect `(define-type-predicate ,name (vector ,spec)))))) + (def)) ;;; Unlike the un-%'ed versions, these are true type predicates, ;;; accepting any type object. (define-type-predicate %standard-char-p standard-char)