From: Nathan F. <nf...@us...> - 2006-12-01 16:35:23
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv6125/src/compiler Modified Files: seqtran.lisp Log Message: 1.0.0.8: Elide array bounds checks when inlining the FIND and POSITION family of functions. Index: seqtran.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/seqtran.lisp,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- seqtran.lisp 15 Nov 2006 16:19:57 -0000 1.64 +++ seqtran.lisp 1 Dec 2006 16:35:10 -0000 1.65 @@ -972,7 +972,11 @@ ,n-sequence ,start ,n-end))) (block ,block (macrolet ((maybe-return () - '(let ((,element (aref ,sequence ,index))) + ;; WITH-ARRAY-DATA has already performed bounds + ;; checking, so we can safely elide the checks + ;; in the inner loop. + '(let ((,element (locally (declare (optimize (insert-array-bounds-checks 0))) + (aref ,sequence ,index)))) (when ,done-p-expr (return-from ,block (values ,element |