X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Ffndb.lisp;h=de4ce88ed52292bc662efb8939159908d7c714ae;hb=74cf7a4d01664fbf72a662ba093ad67ca243b524;hp=a83a56840f54769e2443736df92ab2e3f5cc496f;hpb=373df66df093e8c1771069dcc30c2ec32598af6a;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index a83a568..de4ce88 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -367,6 +367,10 @@ (defknown logbitp (unsigned-byte integer) boolean (movable foldable flushable)) (defknown ash (integer integer) integer (movable foldable flushable explicit-check)) +#!+ash-right-vops +(defknown %ash/right ((or word sb!vm:signed-word) (mod #.sb!vm:n-word-bits)) + (or word sb!vm:signed-word) + (movable foldable flushable always-translatable)) (defknown (logcount integer-length) (integer) bit-index (movable foldable flushable explicit-check)) ;;; FIXME: According to the ANSI spec, it's legal to use any @@ -469,10 +473,6 @@ (defknown %map-to-list-arity-1 (callable sequence) list (flushable call)) (defknown %map-to-simple-vector-arity-1 (callable sequence) simple-vector (flushable call)) -(defknown %map-to-nil-on-simple-vector (callable simple-vector) null - (flushable call)) -(defknown %map-to-nil-on-vector (callable vector) null (flushable call)) -(defknown %map-to-nil-on-sequence (callable sequence) null (flushable call)) (defknown map-into (sequence callable &rest sequence) sequence @@ -703,9 +703,19 @@ (defknown make-list (index &key (:initial-element t)) list (movable flushable)) +(defknown sb!impl::backq-list (&rest t) list (movable flushable)) +(defknown sb!impl::backq-list* (t &rest t) t (movable flushable)) +(defknown sb!impl::backq-append (&rest t) t (flushable)) +(defknown sb!impl::backq-nconc (&rest t) t () + :destroyed-constant-args (remove-non-constants-and-nils #'butlast)) +(defknown sb!impl::backq-cons (t t) cons (foldable movable flushable)) +(defknown sb!impl::backq-vector (list) simple-vector + (foldable movable flushable)) + ;;; All but last must be of type LIST, but there seems to be no way to ;;; express that in this syntax. (defknown append (&rest t) t (flushable)) +(defknown sb!impl::append2 (list t) t (flushable)) (defknown copy-list (list) list (flushable)) (defknown copy-alist (list) list (flushable)) @@ -1100,7 +1110,8 @@ (:lines (or unsigned-byte null)) (:right-margin (or unsigned-byte null)) (:miser-width (or unsigned-byte null)) - (:pprint-dispatch t)) + (:pprint-dispatch t) + (:suppress-errors t)) t (any explicit-check) :derive-type #'result-type-first-arg) @@ -1367,7 +1378,7 @@ (defknown (get-internal-run-time get-internal-real-time) () internal-time (flushable)) -(defknown sleep ((or (rational 0) (float 0.0))) null) +(defknown sleep ((real 0)) null (explicit-check)) ;;; Even though ANSI defines LISP-IMPLEMENTATION-TYPE and ;;; LISP-IMPLEMENTATION-VERSION to possibly punt and return NIL, we @@ -1462,12 +1473,12 @@ (defknown %check-bound (array index fixnum) index (movable foldable flushable dx-safe)) (defknown data-vector-ref (simple-array index) t - (foldable explicit-check always-translatable)) -(defknown data-vector-ref-with-offset (simple-array index fixnum) t - (foldable explicit-check always-translatable)) + (foldable unsafely-flushable explicit-check always-translatable)) +(defknown data-vector-ref-with-offset (simple-array fixnum fixnum) t + (foldable unsafely-flushable explicit-check always-translatable)) (defknown data-vector-set (array index t) t (explicit-check always-translatable)) -(defknown data-vector-set-with-offset (array index fixnum t) t +(defknown data-vector-set-with-offset (array fixnum fixnum t) t (explicit-check always-translatable)) (defknown hairy-data-vector-ref (array index) t (foldable explicit-check))