X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=73e3db14a0cc0ecf83464205dd311d0bd6b58580;hb=2e5263a05f55e2b56a3194ad7853e9ae18ad69af;hp=fc5daa7d34b47a1edd9b91ed6dcb4d5742bf62fa;hpb=ed53de3c94faddfdc7447b3d61fef821c250e8d1;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index fc5daa7..73e3db1 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -380,8 +380,12 @@ (defknown deposit-field (integer byte-specifier integer) integer (movable foldable flushable)) (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)) + (or (float 0.0) (integer 0)) + (explicit-check)) +(defknown make-random-state (&optional + (or (member nil t) random-state unsigned-byte + (simple-array (unsigned-byte 8) (*)) + (simple-array (unsigned-byte 32) (*)))) random-state (flushable)) (defknown random-state-p (t) boolean (movable foldable flushable)) @@ -871,13 +875,16 @@ (defknown array-has-fill-pointer-p (array) boolean (movable foldable flushable)) -(defknown fill-pointer (vector) index (foldable unsafely-flushable)) -(defknown vector-push (t vector) (or index null) () +(defknown fill-pointer (complex-vector) index + (unsafely-flushable explicit-check)) +(defknown vector-push (t complex-vector) (or index null) + (explicit-check) :destroyed-constant-args (nth-constant-args 2)) -(defknown vector-push-extend (t vector &optional (and index (integer 1))) - index () +(defknown vector-push-extend (t complex-vector &optional (and index (integer 1))) index + (explicit-check) :destroyed-constant-args (nth-constant-args 2)) -(defknown vector-pop (vector) t () +(defknown vector-pop (complex-vector) t + (explicit-check) :destroyed-constant-args (nth-constant-args 1)) ;;; FIXME: complicated :DESTROYED-CONSTANT-ARGS @@ -1289,7 +1296,9 @@ null) ;;; and analogous SBCL extension: +(defknown sb!impl::%failed-aver (t) nil) (defknown bug (t &rest t) nil) ; never returns + ;;;; from the "Miscellaneous" Chapter: @@ -1385,6 +1394,9 @@ (defknown get-bytes-consed () unsigned-byte (flushable)) (defknown mask-signed-field ((integer 0 *) integer) integer (movable flushable foldable)) + +(defknown array-storage-vector (array) (simple-array * (*)) + (any)) ;;;; magical compiler frobs @@ -1396,7 +1408,7 @@ (defknown %typep (t (or type-specifier ctype)) boolean (movable flushable explicit-check)) (defknown %instance-typep (t (or type-specifier ctype)) boolean - (movable flushable explicit-check)) + (movable flushable explicit-check always-translatable)) (defknown %cleanup-point () t) (defknown %special-bind (t t) t) @@ -1531,7 +1543,8 @@ (defknown %set-symbol-plist (symbol list) list (unsafe)) (defknown %setnth (unsigned-byte list t) t (unsafe) :destroyed-constant-args (nth-constant-args 2)) -(defknown %set-fill-pointer (vector index) index (unsafe) +(defknown %set-fill-pointer (complex-vector index) index + (unsafe explicit-check) :destroyed-constant-args (nth-constant-args 1)) ;;;; ALIEN and call-out-to-C stuff @@ -1569,6 +1582,16 @@ ()) (defknown style-warn (t &rest t) null ()) + +;;;; memory barriers + +(defknown sb!vm:%compiler-barrier () (values) ()) +(defknown sb!vm:%memory-barrier () (values) ()) +(defknown sb!vm:%read-barrier () (values) ()) +(defknown sb!vm:%write-barrier () (values) ()) +(defknown sb!vm:%data-dependency-barrier () (values) ()) + + ;;;; atomic ops (defknown %compare-and-swap-svref (simple-vector index t t) t (unsafe))