IR1-convertion of lambda is separated into
[sbcl.git] / src / compiler / generic / primtype.lisp
index 3e33039..6b8a396 100644 (file)
@@ -18,7 +18,7 @@
 
 (!def-primitive-type t (descriptor-reg))
 (/show0 "primtype.lisp 20")
-(setf *backend-t-primitive-type* (primitive-type-or-lose 't))
+(setf *backend-t-primitive-type* (primitive-type-or-lose t))
 
 ;;; primitive integer types that fit in registers
 (/show0 "primtype.lisp 24")
 
 ;;; 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
            (part-of list))
           (t
            (any))))
-       (function-type
+       (fun-type
         (exactly function))
-       (sb!xc:class
+       (classoid
         (if (csubtypep type (specifier-type 'function))
             (part-of function)
             (part-of instance)))
        (ctype
-        (any))))))
+         (if (csubtypep type (specifier-type 'function))
+            (part-of function)
+             (any)))))))
 
 (/show0 "primtype.lisp end of file")