X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fvm-typetran.lisp;h=ae7d8e65bb42fd3d0e24d4fc087aacf0a923e9bb;hb=95591ed483dbb8c0846c129953acac1554f28809;hp=8446c0e98d80b199452975e429fe62e0694e32ff;hpb=f1ffbf976aaa50b7b22f126b97e34afe06a91210;p=sbcl.git diff --git a/src/compiler/generic/vm-typetran.lisp b/src/compiler/generic/vm-typetran.lisp index 8446c0e..ae7d8e6 100644 --- a/src/compiler/generic/vm-typetran.lisp +++ b/src/compiler/generic/vm-typetran.lisp @@ -96,15 +96,24 @@ #!+sb-unicode (define-type-predicate simple-character-string-p (simple-array character (*))) (define-type-predicate system-area-pointer-p system-area-pointer) +#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or)) (define-type-predicate unsigned-byte-32-p (unsigned-byte 32)) +#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or)) (define-type-predicate signed-byte-32-p (signed-byte 32)) -(define-type-predicate vector-t-p (vector t)) +#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) +(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-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)