X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fseq.lisp;h=7cc96924a0742245d99102981a6c2959df5a010c;hb=47a74763ae1c352ac851d242b426623b06b6ee03;hp=c76c58673d955f7675657c0450e2170152b4295f;hpb=6822034325136cde4e14773c83c3769b42721306;p=sbcl.git diff --git a/src/code/seq.lisp b/src/code/seq.lisp index c76c586..7cc9692 100644 --- a/src/code/seq.lisp +++ b/src/code/seq.lisp @@ -520,22 +520,18 @@ (end end) :force-inline t :check-fill-pointer t) - (macrolet ((frob () - `(locally (declare (optimize (safety 0) (speed 3))) - (do ((i start (1+ i))) - ((= i end) sequence) - (declare (index i)) - (setf (aref data i) item))))) - (etypecase data - #!+sb-unicode - ((simple-array character (*)) - (let ((item (locally (declare (optimize (safety 3))) - (the character item)))) - (frob))) - ((simple-array base-char (*)) - (let ((item (locally (declare (optimize (safety 3))) - (the base-char item)))) - (frob))))))) + ;; DEFTRANSFORM for FILL will turn these into + ;; calls to UB*-BASH-FILL. + (etypecase data + #!+sb-unicode + ((simple-array character (*)) + (let ((item (locally (declare (optimize (safety 3))) + (the character item)))) + (fill data item :start start :end end))) + ((simple-array base-char (*)) + (let ((item (locally (declare (optimize (safety 3))) + (the base-char item)))) + (fill data item :start start :end end)))))) (defun fill (sequence item &key (start 0) end) #!+sb-doc