X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=e8b3b32e2577d23b1bcb71a3461a218be0a1311d;hb=cd13034f9415f64cdaa05893a4ac5ff1e95c97bd;hp=30439400a81a4ff126f41a9f8fb7d12caaa93dae;hpb=acb7e69e6029efd8127b3c4288f750c2d0cb7a42;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 3043940..e8b3b32 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -336,21 +336,21 @@ (movable foldable flushable explicit-check)) (defknown (ffloor fceiling fround ftruncate) - (real &optional real) (values float float) + (real &optional real) (values float real) (movable foldable flushable explicit-check)) (defknown decode-float (float) (values float float-exponent float) (movable foldable flushable explicit-check)) (defknown scale-float (float float-exponent) float - (movable foldable flushable explicit-check)) + (movable foldable unsafely-flushable explicit-check)) (defknown float-radix (float) float-radix - (movable foldable flushable explicit-check)) + (movable foldable flushable)) (defknown float-sign (float &optional float) float (movable foldable flushable explicit-check)) (defknown (float-digits float-precision) (float) float-digits (movable foldable flushable explicit-check)) (defknown integer-decode-float (float) - (values integer float-exponent (member -1 1)) + (values integer float-int-exponent (member -1 1)) (movable foldable flushable explicit-check)) (defknown complex (real &optional real) number @@ -370,7 +370,7 @@ (defknown lognot (integer) integer (movable foldable flushable explicit-check)) (defknown logtest (integer integer) boolean (movable foldable flushable)) -(defknown logbitp (bit-index integer) boolean (movable foldable flushable)) +(defknown logbitp (unsigned-byte integer) boolean (movable foldable flushable)) (defknown ash (integer integer) integer (movable foldable flushable explicit-check)) (defknown (logcount integer-length) (integer) bit-index @@ -393,7 +393,8 @@ (movable foldable flushable)) (defknown deposit-field (integer byte-specifier integer) integer (movable foldable flushable)) -(defknown random ((real (0)) &optional random-state) (real 0) ()) +(defknown random ((or (float (0.0)) (integer 1)) &optional random-state) + (or (float 0.0) (integer 0)) ()) (defknown make-random-state (&optional (or (member nil t) random-state)) random-state (flushable)) (defknown random-state-p (t) boolean (movable foldable flushable)) @@ -961,6 +962,41 @@ (character character &optional (or readtable null)) (or callable null) ()) +(defknown copy-pprint-dispatch + (&optional (or sb!pretty:pprint-dispatch-table null)) + sb!pretty:pprint-dispatch-table + ()) +(defknown pprint-dispatch + (t &optional (or sb!pretty:pprint-dispatch-table null)) + (values callable boolean) + ()) +(defknown (pprint-fill pprint-linear) + (streamlike t &optional t t) + null + ()) +(defknown pprint-tabular + (streamlike t &optional t t unsigned-byte) + null + ()) +(defknown pprint-indent + ((member :block :current) real &optional streamlike) + null + ()) +(defknown pprint-newline + ((member :linear :fill :miser :mandatory) &optional streamlike) + null + ()) +(defknown pprint-tab + ((member :line :section :line-relative :section-relative) + unsigned-byte unsigned-byte &optional streamlike) + null + ()) +(defknown set-pprint-dispatch + (type-specifier (or null callable) + &optional real sb!pretty:pprint-dispatch-table) + null + ()) + ;;; may return any type due to eof-value... (defknown (read read-preserving-whitespace read-char-no-hang read-char) (&optional streamlike t t t) t (explicit-check)) @@ -1343,7 +1379,7 @@ (defknown %type-check-error (t t) nil) ;; FIXME: This function does not return, but due to the implementation -;; of FILTER-CONTINUATION we cannot write it here. +;; of FILTER-LVAR we cannot write it here. (defknown %compile-time-type-error (t t t) *) (defknown %odd-key-args-error () nil) @@ -1419,6 +1455,13 @@ (defknown %setnth (unsigned-byte list t) t (unsafe)) (defknown %set-fill-pointer (vector index) index (unsafe)) +;;;; ALIEN and call-out-to-C stuff + +;;; 'unsafe' attribute because we store the arg on the stack, which is in +;;; some sense 'passing it upwards' +(defknown sb!vm::push-word-on-c-stack (system-area-pointer) (values) (unsafe)) +(defknown sb!vm::pop-words-from-c-stack (index) (values) ()) + ;;;; miscellaneous internal utilities (defknown %fun-name (function) t (flushable)) @@ -1426,3 +1469,10 @@ (defknown policy-quality (policy symbol) policy-quality (flushable)) + +(defknown (compiler-abort compiler-error) (string &rest t) nil ()) +(defknown (compiler-warn compiler-style-warn) (string &rest t) (values) ()) +(defknown (compiler-notify maybe-compiler-notify) ((or string symbol) &rest t) + (values) + ()) +(defknown style-warn (string &rest t) null ())