(unsupplied-or-nil fill-pointer))))
(specifier-type
`(,(if simple 'simple-array 'array)
(unsupplied-or-nil fill-pointer))))
(specifier-type
`(,(if simple 'simple-array 'array)
+;;; FIXME: This was commented out in sbcl-0.6.9.21 since it was
+;;; causing a problem in a CHAR form in HEXSTR. It's still important
+;;; to be able to inline this, so something along these lines
+;;; will probably be back, but it might be different in detail, e.g.
+;;; (DECLAIM (MAYBE-INLINE %WITH-ARRAY-DATA)).
+#|
;;; Handle the 1-dimensional case of %WITH-ARRAY-DATA specially. It's
;;; important to do this efficiently if we want people to be able to
;;; use vectors with fill pointers anywhere near inner loops, and
;;; hence it's important to do this efficiently if we want people to
;;; be able to use sequence functions anywhere near inner loops.
(deftransform %with-array-data ((array start end)
;;; Handle the 1-dimensional case of %WITH-ARRAY-DATA specially. It's
;;; important to do this efficiently if we want people to be able to
;;; use vectors with fill pointers anywhere near inner loops, and
;;; hence it's important to do this efficiently if we want people to
;;; be able to use sequence functions anywhere near inner loops.
(deftransform %with-array-data ((array start end)
(element-type-specifier (type-specifier element-ctype))
(simple-array-type `(simple-array ,element-type-specifier 1)))
(declare (type ctype element-ctype))
(element-type-specifier (type-specifier element-ctype))
(simple-array-type `(simple-array ,element-type-specifier 1)))
(declare (type ctype element-ctype))
`(let* (;; FIXME: Instead of doing this hairy expression for SIZE,
;; it should just be (ARRAY-DIMENSION ARRAY 0), and there
;; should be a DEFTRANSFORM for ARRAY-DIMENSION which
`(let* (;; FIXME: Instead of doing this hairy expression for SIZE,
;; it should just be (ARRAY-DIMENSION ARRAY 0), and there
;; should be a DEFTRANSFORM for ARRAY-DIMENSION which
(error "The start of vector data was out of range."))
(defun vector-data-end-out-of-range ()
(error "The end of vector data was out of range."))
(error "The start of vector data was out of range."))
(defun vector-data-end-out-of-range ()
(error "The end of vector data was out of range."))