X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=3578f2fb9a71da1d54aa7e88690f3cbafa22670c;hb=d01d509257052e694365b76be5ab597fa06764ec;hp=a83a56840f54769e2443736df92ab2e3f5cc496f;hpb=373df66df093e8c1771069dcc30c2ec32598af6a;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index a83a568..3578f2f 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -76,6 +76,11 @@ (defknown (eq eql) (t t) boolean (movable foldable flushable)) (defknown (equal equalp) (t t) boolean (foldable flushable recursive)) + +#!+(or x86 x86-64) +(defknown fixnum-mod-p (t fixnum) boolean + (movable foldable flushable always-translatable)) + ;;;; classes @@ -367,6 +372,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 @@ -409,6 +418,14 @@ char-lessp char-greaterp char-not-greaterp char-not-lessp) (character &rest character) boolean (movable foldable flushable)) +(defknown (two-arg-char-equal + two-arg-char-not-equal + two-arg-char-lessp + two-arg-char-not-lessp + two-arg-char-greaterp + two-arg-char-not-greaterp) + (character character) boolean (movable foldable flushable)) + (defknown character (t) character (movable foldable unsafely-flushable)) (defknown char-code (character) char-code (movable foldable flushable)) (defknown (char-upcase char-downcase) (character) character @@ -469,10 +486,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 +716,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)) @@ -829,6 +852,7 @@ (defknown hash-table-test (hash-table) symbol (foldable flushable)) (defknown sxhash (t) hash (#-sb-xc-host foldable flushable)) (defknown psxhash (t &optional t) hash (#-sb-xc-host foldable flushable)) +(defknown hash-table-equalp (hash-table hash-table) boolean (foldable flushable)) ;;;; from the "Arrays" chapter @@ -1100,7 +1124,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) @@ -1230,6 +1255,8 @@ (defknown pathname-version (pathname-designator) pathname-version (flushable)) +(defknown pathname= (pathname pathname) boolean (movable foldable flushable)) + (defknown (namestring file-namestring directory-namestring host-namestring) (pathname-designator) (or simple-string null) (unsafely-flushable)) @@ -1367,7 +1394,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 +1489,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))