Update of /cvsroot/sbcl/sbcl/src/compiler
In directory usw-pr-cvs1:/tmp/cvs-serv12898/src/compiler
Modified Files:
seqtran.lisp
Log Message:
0.7.5.5:
Fix bug 186 by adding a declaration to the FILL transform.
... and write a test
... analogous fix in the transform for HAIRY-DATA-VECTOR-SET,
though any bug coming from there hadn't been
detected yet.
Greetings from Paris!
Index: seqtran.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/seqtran.lisp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- seqtran.lisp 18 Jun 2002 08:05:50 -0000 1.28
+++ seqtran.lisp 5 Jul 2002 14:39:51 -0000 1.29
@@ -293,17 +293,22 @@
:policy (> speed space))
"open code"
(let ((element-type (upgraded-element-type-specifier-or-give-up seq)))
- `(with-array-data ((data seq)
- (start start)
- (end end))
+ (values
+ `(with-array-data ((data seq)
+ (start start)
+ (end end))
(declare (type (simple-array ,element-type 1) data))
+ (declare (type fixnum start end))
(do ((i start (1+ i)))
((= i end) seq)
(declare (type index i))
;; WITH-ARRAY-DATA did our range checks once and for all, so
- ;; it'd be wasteful to check again on every AREF.
+ ;; it'd be wasteful to check again on every AREF...
(declare (optimize (safety 0)))
- (setf (aref data i) item)))))
+ (setf (aref data i) item)))
+ ;; ... though we still need to check that the new element can fit
+ ;; into the vector in safe code. -- CSR, 2002-07-05
+ `((declare (type ,element-type item))))))
;;;; utilities
|