primitive-type-name
&key (n-pad-elements 0) complex-typecode (importance 0)
&aux (typecode
- (eval (symbolicate primitive-type-name "-WIDETAG")))))
+ (symbol-value (symbolicate primitive-type-name "-WIDETAG")))))
(:copier nil))
;; the element specifier, e.g. BASE-CHAR or (UNSIGNED-BYTE 4)
(specifier (missing-arg) :type type-specifier :read-only t)
(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
: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
:importance 5)
- #!+long-float
- (long-float 0.0l0 #!+x86 96 #!+sparc 128 simple-array-long-float
- :importance 4)
(bit 0 1 simple-bit-vector
:complex-typecode #.sb!vm:complex-bit-vector-widetag
:importance 16)
:importance 15)
((unsigned-byte 4) 0 4 simple-array-unsigned-byte-4
:importance 14)
+ ((unsigned-byte 7) 0 8 simple-array-unsigned-byte-7
+ :importance 13)
((unsigned-byte 8) 0 8 simple-array-unsigned-byte-8
:importance 13)
+ ((unsigned-byte 15) 0 16 simple-array-unsigned-byte-15
+ :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
;; 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)
((complex long-float) #C(0.0l0 0.0l0) #!+x86 192 #!+sparc 256
simple-array-complex-long-float
:importance 1)
- (t 0 32 simple-vector :importance 18))))
+ (t 0 #.sb!vm:n-word-bits simple-vector :importance 18))))
(defvar sb!kernel::*specialized-array-element-types*
(map 'list