X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=e0bd99d272f52063daf95f181ceb960f987abfa7;hb=fe962ba01d267b92f638c8f0d19be41054219f04;hp=249ff052fdb346e0a37904ee9f72d54a1a9d4c48;hpb=df06965814a879aa8ccd9367f2b1c450daccc601;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 249ff05..e0bd99d 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -16,9 +16,9 @@ ;;;; information for known functions: (defknown coerce (t type-specifier) t - ;; Note: - ;; This is not FLUSHABLE because it's defined to signal errors. - (movable) + ;; Note: + ;; This is not FLUSHABLE because it's defined to signal errors. + (movable) ;; :DERIVE-TYPE RESULT-TYPE-SPEC-NTH-ARG 2 ? Nope... (COERCE 1 'COMPLEX) ;; returns REAL/INTEGER, not COMPLEX. ) @@ -29,8 +29,8 @@ ;;; These can be affected by type definitions, so they're not FOLDABLE. (defknown (sb!xc:upgraded-complex-part-type sb!xc:upgraded-array-element-type) - (type-specifier &optional lexenv-designator) type-specifier - (unsafely-flushable)) + (type-specifier &optional lexenv-designator) type-specifier + (unsafely-flushable)) ;;;; from the "Predicates" chapter: @@ -231,7 +231,7 @@ (defknown * (&rest number) number (movable foldable flushable explicit-check)) (defknown / (number &rest number) number - (movable foldable flushable explicit-check)) + (movable foldable unsafely-flushable explicit-check)) (defknown (1+ 1-) (number) number (movable foldable flushable explicit-check)) @@ -809,6 +809,8 @@ (defknown hash-table-test (hash-table) symbol (foldable flushable)) (defknown sxhash (t) (integer 0 #.sb!xc:most-positive-fixnum) (#-sb-xc-host foldable flushable)) +(defknown psxhash (t &optional t) (integer 0 #.sb!xc:most-positive-fixnum) + (#-sb-xc-host foldable flushable)) ;;;; from the "Arrays" chapter @@ -1442,6 +1444,11 @@ (defknown hairy-data-vector-ref (array index) t (foldable explicit-check)) (defknown hairy-data-vector-set (array index t) t (unsafe explicit-check)) +(defknown hairy-data-vector-ref/check-bounds (array index) t + (foldable explicit-check)) +(defknown hairy-data-vector-set/check-bounds (array index t) + t + (unsafe explicit-check)) (defknown %caller-frame-and-pc () (values t t) (flushable)) (defknown %with-array-data (array index (or index null)) (values (simple-array * (*)) index index index) @@ -1545,3 +1552,11 @@ (values) ()) (defknown style-warn (string &rest t) null ()) + +;;;; atomic ops +#!+(or x86 x86-64) +(progn + (defknown %simple-vector-compare-and-swap (simple-vector index t t) t + (unsafe)) + (defknown %instance-compare-and-swap (instance index t t) t + (unsafe)))