X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fvm-array.lisp;h=f81b1834f0b4197cbe496ad21ea6c8897ffca167;hb=b63c4fb9b98fa8188e17ba926e150ba417a74635;hp=5d2c78003788557d1fa3bbb0b9a16bd3aaf6b87e;hpb=dc6275b2e4a18db86f3de147b531a94fb8a1144f;p=sbcl.git diff --git a/src/compiler/generic/vm-array.lisp b/src/compiler/generic/vm-array.lisp index 5d2c780..f81b183 100644 --- a/src/compiler/generic/vm-array.lisp +++ b/src/compiler/generic/vm-array.lisp @@ -64,6 +64,15 @@ (nil #:mu 0 simple-array-nil :complex-typecode #.sb!vm:complex-vector-nil-widetag :importance 0) + #!-sb-unicode + (character ,(code-char 0) 8 simple-base-string + ;; (SIMPLE-BASE-STRINGs are stored with an extra + ;; trailing #\NULL for convenience in calling out + ;; to C.) + :n-pad-elements 1 + :complex-typecode #.sb!vm:complex-base-string-widetag + :importance 17) + #!+sb-unicode (base-char ,(code-char 0) 8 simple-base-string ;; (SIMPLE-BASE-STRINGs are stored with an extra ;; trailing #\NULL for convenience in calling out @@ -71,6 +80,11 @@ :n-pad-elements 1 :complex-typecode #.sb!vm:complex-base-string-widetag :importance 17) + #!+sb-unicode + (character ,(code-char 0) 32 simple-character-string + :n-pad-elements 1 + :complex-typecode #.sb!vm:complex-character-string-widetag + :importance 17) (single-float 0.0f0 32 simple-array-single-float :importance 6) (double-float 0.0d0 64 simple-array-double-float @@ -99,12 +113,22 @@ :importance 12) ((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 :importance 8) ((unsigned-byte 31) 0 32 simple-array-unsigned-byte-31 :importance 11) ((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 + :importance 8) + #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) + ((unsigned-byte 63) 0 64 simple-array-unsigned-byte-63 + :importance 9) + #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) + ((unsigned-byte 64) 0 64 simple-array-unsigned-byte-64 + :importance 9) ((signed-byte 8) 0 8 simple-array-signed-byte-8 :importance 10) ((signed-byte 16) 0 16 simple-array-signed-byte-16 @@ -112,10 +136,18 @@ ;; KLUDGE: See the comment in PRIMITIVE-TYPE-AUX, ;; 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 :importance 8) ((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 + :importance 8) + #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) + ((signed-byte 64) 0 64 simple-array-signed-byte-64 + :importance 7) ((complex single-float) #C(0.0f0 0.0f0) 64 simple-array-complex-single-float :importance 3)