;;;; 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.
)
;;; 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))
\f
;;;; from the "Predicates" chapter:
(defknown %check-bound (array index fixnum) index (movable foldable flushable))
(defknown data-vector-ref (simple-array index) t
(foldable explicit-check always-translatable))
-#!+x86
+#!+(or x86 x86-64)
(defknown data-vector-ref-with-offset (simple-array index fixnum) t
(foldable explicit-check always-translatable))
(defknown data-vector-set (array index t) t
(unsafe explicit-check always-translatable))
-#!+x86
+#!+(or x86 x86-64)
(defknown data-vector-set-with-offset (array index fixnum t) t
(unsafe explicit-check always-translatable))
(defknown hairy-data-vector-ref (array index) t
(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)))