0.8.1.9:
[sbcl.git] / src / compiler / generic / vm-type.lisp
index 279ec9d..4b47009 100644 (file)
@@ -82,7 +82,8 @@
 (defvar *specialized-array-element-types*)
 (!cold-init-forms
   (setf *specialized-array-element-types*
-       '(bit
+       '(nil
+         bit
          (unsigned-byte 2)
          (unsigned-byte 4)
          (unsigned-byte 8)
                    (return stype))))))
     type))
 
+(defun sb!xc:upgraded-array-element-type (spec &optional environment)
+  #!+sb-doc
+  "Return the element type that will actually be used to implement an array
+   with the specifier :ELEMENT-TYPE Spec."
+  (declare (ignore environment))
+  (if (unknown-type-p (specifier-type spec))
+      (error "undefined type: ~S" spec)
+      (type-specifier (array-type-specialized-element-type
+                      (specifier-type `(array ,spec))))))
+
 ;;; Return the most specific integer type that can be quickly checked that
 ;;; includes the given type.
 (defun containing-integer-type (subtype)
      (if (type= type (specifier-type 'cons))
         'sb!c:check-cons
         nil))
-    (built-in-class
+    (built-in-classoid
      (if (type= type (specifier-type 'symbol))
         'sb!c:check-symbol
         nil))