;;; primitive other-pointer array types
(/show0 "primtype.lisp 96")
+(!def-primitive-type simple-array-nil (descriptor-reg)
+ :type (simple-array nil (*)))
(!def-primitive-type simple-string (descriptor-reg)
:type simple-base-string)
(!def-primitive-type simple-bit-vector (descriptor-reg))
(!def-primitive-type simple-array-complex-long-float (descriptor-reg)
:type (simple-array (complex long-float) (*)))
-;;; Note: The complex array types are not included, 'cause it is pointless to
-;;; restrict VOPs to them.
+;;; Note: The complex array types are not included, 'cause it is
+;;; pointless to restrict VOPs to them.
;;; other primitive other-pointer types
(!def-primitive-type system-area-pointer (sap-reg descriptor-reg))
\f
;;;; PRIMITIVE-TYPE-OF and friends
-;;; Return the most restrictive primitive type that contains Object.
+;;; Return the most restrictive primitive type that contains OBJECT.
(/show0 "primtype.lisp 147")
(!def-vm-support-routine primitive-type-of (object)
(let ((type (ctype-of object)))
*backend-t-primitive-type*))))
(defvar *simple-array-primitive-types*
- '((base-char . simple-string)
+ '((nil . simple-array-nil)
+ (base-char . simple-string)
(bit . simple-bit-vector)
((unsigned-byte 2) . simple-array-unsigned-byte-2)
((unsigned-byte 4) . simple-array-unsigned-byte-4)
(ecase (named-type-name type)
((t *) (values *backend-t-primitive-type* t))
((nil) (any))))
- (sb!xc:built-in-class
- (case (sb!xc:class-name type)
+ (built-in-classoid
+ (case (classoid-name type)
((complex function instance
system-area-pointer weak-pointer)
- (values (primitive-type-or-lose (sb!xc:class-name type)) t))
+ (values (primitive-type-or-lose (classoid-name type)) t))
(funcallable-instance
(part-of function))
(base-char
(any))))
(fun-type
(exactly function))
- (sb!xc:class
+ (classoid
(if (csubtypep type (specifier-type 'function))
(part-of function)
(part-of instance)))