X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=ac1482d23b51f626e1fa107d3bdcd2bc4c4fb5be;hb=bcd323c39d6f5f80020ba4a5d9eb8d348c6cc499;hp=7f76e3cddeeb23a954caca6e42993336e9994c1b;hpb=40bff32181a4d9b591ae2bac69bbee3bd77a82bc;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 7f76e3c..ac1482d 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -253,7 +253,7 @@ (defknown expt (number number) number (movable foldable flushable explicit-check recursive)) (defknown log (number &optional real) irrational - (movable foldable flushable explicit-check)) + (movable foldable flushable explicit-check recursive)) (defknown sqrt (number) irrational (movable foldable flushable explicit-check)) (defknown isqrt (unsigned-byte) unsigned-byte @@ -311,10 +311,14 @@ (defknown (numerator denominator) (rational) integer (movable foldable flushable)) -(defknown (floor ceiling truncate round) +(defknown (floor ceiling round) (real &optional real) (values integer real) (movable foldable flushable explicit-check)) +(defknown truncate + (real &optional real) (values integer real) + (movable foldable flushable explicit-check recursive)) + (defknown %multiply-high (word word) word (movable foldable flushable)) @@ -1159,10 +1163,12 @@ :directory :name :type :version)) generalized-boolean - ()) + (recursive)) + (defknown pathname-match-p (pathname-designator pathname-designator) generalized-boolean ()) + (defknown translate-pathname (pathname-designator pathname-designator pathname-designator &key) @@ -1187,7 +1193,7 @@ (:end sequence-end) (:junk-allowed t)) (values (or pathname null) sequence-end) - ()) + (recursive)) (defknown merge-pathnames (pathname-designator &optional pathname-designator pathname-version) @@ -1337,7 +1343,7 @@ (defknown apropos (string-designator &optional package-designator t) (values)) (defknown apropos-list (string-designator &optional package-designator t) list - (flushable)) + (flushable recursive)) (defknown get-decoded-time () (values (integer 0 59) (integer 0 59) (integer 0 23) (integer 1 31) @@ -1361,7 +1367,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 @@ -1398,7 +1404,11 @@ ;;;; magical compiler frobs -(defknown %values-list-or-context (t t t) * (always-translatable)) +(defknown %rest-values (t t t) * (always-translatable)) +(defknown %rest-ref (t t t t) * (always-translatable)) +(defknown %rest-length (t t t) * (always-translatable)) +(defknown %rest-null (t t t t) * (always-translatable)) +(defknown %rest-true (t t t) * (always-translatable)) (defknown %unary-truncate/single-float (single-float) integer (movable foldable flushable)) (defknown %unary-truncate/double-float (double-float) integer (movable foldable flushable)) @@ -1449,7 +1459,8 @@ (defknown (%dpb %deposit-field) (integer bit-index bit-index integer) integer (movable foldable flushable explicit-check)) (defknown %negate (number) number (movable foldable flushable explicit-check)) -(defknown %check-bound (array index fixnum) index (movable foldable flushable)) +(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 @@ -1582,6 +1593,13 @@ ()) (defknown style-warn (t &rest t) null ()) +(defknown coerce-to-condition ((or condition symbol string function) + list type-specifier symbol) + condition + (explicit-check)) + +(defknown sc-number-or-lose (symbol) sc-number + (foldable)) ;;;; memory barriers @@ -1591,6 +1609,12 @@ (defknown sb!vm:%write-barrier () (values) ()) (defknown sb!vm:%data-dependency-barrier () (values) ()) +#!+sb-safepoint +;;; Note: This known function does not have an out-of-line definition; +;;; and if such a definition were needed, it would not need to "call" +;;; itself inline, but could be a no-op, because the compiler inserts a +;;; use of the VOP in the function prologue anyway. +(defknown sb!kernel::gc-safepoint () (values) ()) ;;;; atomic ops (defknown %compare-and-swap-svref (simple-vector index t t) t