X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=358208f9f5d41ea0bc60e58d8e2576644aeb4a21;hb=f25039178959a9b302b3399dd04a4d7ba492674d;hp=ac471cffb60c5b975bbdde73f3ef88dc5f7edbf9;hpb=7acdf15e27993655c9249f79d36fe2117843dbdf;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index ac471cf..358208f 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -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)) @@ -1367,7 +1377,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 @@ -1404,7 +1414,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)) @@ -1605,6 +1619,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