0.8.0.78.vector-nil-string.7:
[sbcl.git] / src / code / array.lisp
index 1b3d506..e951999 100644 (file)
 ;;;; accessor/setter functions
 (eval-when (:compile-toplevel :execute)
   (defparameter *specialized-array-element-types*
+    ;; FIXME: Ideally we would generate this list from
+    ;; SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES.  However, this list
+    ;; is optimized for frequency of occurrence, not type lattice
+    ;; relationships, so it's tricky to do so cleanly.
     '(t
       character
       bit
-      (unsigned-byte 2)
-      (unsigned-byte 4)
       (unsigned-byte 8)
       (unsigned-byte 16)
       (unsigned-byte 32)
       (complex single-float)
       (complex double-float)
       #!+long-float (complex long-float)
+      (unsigned-byte 4)
+      (unsigned-byte 2)
       nil)))
 
 (defun hairy-data-vector-ref (array index)
   (unless (array-header-p vector)
     (macrolet ((frob (name &rest things)
                 `(etypecase ,name
-                   ((simple-array nil (*)) (error 'cell-error
-                                            :name 'nil-array-element))
+                   ((simple-array nil (*)) (error 'nil-array-accessed-error))
                    ,@(mapcar (lambda (thing)
                                (destructuring-bind (type-spec fill-value)
                                    thing