X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=b6cdfcbbe9b6b05d807b2305b7ea5045c4ba9b55;hb=b7eed59f1877263e1af5ad80299e641e8276f77d;hp=23a156eb50fd4f379c8d824a562a3b2e7d0f5460;hpb=5f492c8a8eea8a407d82de104e16b7148a7f9eb8;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 23a156e..b6cdfcb 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 @@ -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)) @@ -455,11 +456,11 @@ (:initial-element t)) consed-sequence (movable unsafe) - :derive-type (result-type-specifier-nth-arg 1)) + :derive-type (creation-result-type-specifier-nth-arg 1)) (defknown concatenate (type-specifier &rest sequence) consed-sequence () - :derive-type (result-type-specifier-nth-arg 1)) + :derive-type (creation-result-type-specifier-nth-arg 1)) (defknown (map %map) (type-specifier callable sequence &rest sequence) consed-sequence @@ -642,7 +643,7 @@ &key (:key callable)) sequence (call) - :derive-type (result-type-specifier-nth-arg 1)) + :derive-type (creation-result-type-specifier-nth-arg 1)) ;;; not FLUSHABLE, despite what CMU CL's DEFKNOWN said.. (defknown read-sequence (sequence stream @@ -686,7 +687,7 @@ (defknown list-length (list) (or index null) (foldable unsafely-flushable)) (defknown nth (unsigned-byte list) t (foldable flushable)) (defknown nthcdr (unsigned-byte list) t (foldable unsafely-flushable)) -(defknown last (list &optional index) t (foldable flushable)) +(defknown last (list &optional unsigned-byte) t (foldable flushable)) (defknown list (&rest t) list (movable flushable unsafe)) (defknown list* (t &rest t) t (movable flushable unsafe)) (defknown make-list (index &key (:initial-element t)) list @@ -707,8 +708,8 @@ (defknown nconc (&rest t) t ()) (defknown nreconc (list t) t ()) -(defknown butlast (list &optional index) list (flushable)) -(defknown nbutlast (list &optional index) list ()) +(defknown butlast (list &optional unsigned-byte) list (flushable)) +(defknown nbutlast (list &optional unsigned-byte) list ()) (defknown ldiff (list t) list (flushable)) (defknown (rplaca rplacd) (cons t) list (unsafe)) @@ -919,7 +920,10 @@ (defknown make-echo-stream (stream stream) stream (flushable)) (defknown make-string-input-stream (string &optional index index) stream (flushable unsafe)) -(defknown make-string-output-stream () stream (flushable)) +(defknown make-string-output-stream + (&key (:element-type type-specifier)) + stream + (flushable)) (defknown get-output-stream-string (stream) simple-string ()) (defknown streamp (t) boolean (movable foldable flushable)) (defknown stream-element-type (stream) type-specifier @@ -1416,6 +1420,13 @@ (defknown %setnth (unsigned-byte list t) t (unsafe)) (defknown %set-fill-pointer (vector index) index (unsafe)) +;;;; ALIEN and call-out-to-C stuff + +;;; 'call' 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) (call)) +(defknown sb!vm::pop-words-from-c-stack (index) (values) (call)) + ;;;; miscellaneous internal utilities (defknown %fun-name (function) t (flushable)) @@ -1423,3 +1434,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 ())