From: Alexey D. <ade...@us...> - 2002-10-14 06:59:25
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory usw-pr-cvs1:/tmp/cvs-serv14551/src/compiler Modified Files: fndb.lisp ir1opt.lisp knownfun.lisp Log Message: 0.7.8.36: * :COUNT argument to sequence functions may be negative. * DO-SYMBOLS body may contain declarations. * Reverted patch by CSR in 0.7.8.28: ARRAY-HAS-FILL-POINTER-P is FLUSHABLE again. Index: fndb.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/fndb.lisp,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- fndb.lisp 12 Oct 2002 11:45:25 -0000 1.42 +++ fndb.lisp 14 Oct 2002 06:59:20 -0000 1.43 @@ -495,7 +495,7 @@ (defknown remove (t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) @@ -503,21 +503,21 @@ (defknown substitute (t t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) (defknown (remove-if remove-if-not) (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) (defknown (substitute-if substitute-if-not) (t callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) @@ -525,7 +525,7 @@ (defknown delete (t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) @@ -533,21 +533,21 @@ (defknown nsubstitute (t t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) (defknown (delete-if delete-if-not) (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) (defknown (nsubstitute-if nsubstitute-if-not) (t callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) @@ -805,7 +805,7 @@ #|:derive-type #'result-type-last-arg|#) (defknown array-has-fill-pointer-p (array) boolean - (movable foldable unsafely-flushable)) + (movable foldable flushable)) (defknown fill-pointer (vector) index (foldable unsafely-flushable)) (defknown vector-push (t vector) (or index null) ()) (defknown vector-push-extend (t vector &optional index) index ()) Index: ir1opt.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/ir1opt.lisp,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- ir1opt.lisp 27 Sep 2002 11:30:58 -0000 1.42 +++ ir1opt.lisp 14 Oct 2002 06:59:20 -0000 1.43 @@ -485,6 +485,9 @@ (if (policy node (= safety 3)) (and (ir1-attributep attr flushable) (every (lambda (arg) + ;; FIXME: when bug 203 + ;; will be fixed, remove + ;; this check (member (continuation-type-check arg) '(nil :deleted))) (basic-combination-args node)) Index: knownfun.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/knownfun.lisp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- knownfun.lisp 21 Sep 2002 10:24:08 -0000 1.23 +++ knownfun.lisp 14 Oct 2002 06:59:20 -0000 1.24 @@ -51,7 +51,10 @@ ;; may be eliminated if value is unused. The function has no side ;; effects except possibly cons. If a function might signal errors, ;; then it is not flushable even if it is movable, foldable or - ;; unsafely-flushable. Implies UNSAFELY-FLUSHABLE. + ;; unsafely-flushable. Implies UNSAFELY-FLUSHABLE. (In safe code + ;; type checking of arguments is always performed by the caller, so + ;; a function which SHOULD signal an error if arguments are not of + ;; declared types may be FLUSHABLE.) flushable ;; unsafe call may be eliminated if value is unused. The function ;; has no side effects except possibly cons and signalling an error |