X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=fb05a7c53b114a53cf153d5ffece34fd9b4a7f7f;hb=0a7604d54581d2c846838c26ce6a7993629586fa;hp=fe73ff01cb443a0b8b894098079ea13e9bded037;hpb=462b946eaf95cdba2648a67ad2bc3b06b7c7a4f2;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index fe73ff0..fb05a7c 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -204,7 +204,7 @@ (defknown unexport (symbols-designator &optional package-designator) (eql t)) (defknown shadowing-import (symbols-designator &optional package-designator) (eql t)) -(defknown shadow ((or symbol string list) &optional package-designator) +(defknown shadow ((or symbol character string list) &optional package-designator) (eql t)) (defknown (use-package unuse-package) ((or list package-designator) &optional package-designator) (eql t)) @@ -381,6 +381,8 @@ (movable foldable flushable)) (defknown random ((or (float (0.0)) (integer 1)) &optional random-state) (or (float 0.0) (integer 0)) ()) +(defknown %inclusive-random-integer (unsigned-byte random-state) unsigned-byte + ()) (defknown make-random-state (&optional (or (member nil t) random-state)) random-state (flushable)) (defknown random-state-p (t) boolean (movable foldable flushable)) @@ -476,35 +478,25 @@ (foldable unsafely-flushable call)) ;;; unsafe for :INITIAL-VALUE... -(defknown reduce (callable - sequence - &key - (:from-end t) - (:start index) - (:end sequence-end) - (:initial-value t) - (:key callable)) +(defknown reduce (callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:initial-value t) (:key callable)) t (foldable flushable call unsafe)) -(defknown fill (sequence t &key (:start index) (:end sequence-end)) sequence +(defknown fill (sequence t &rest t &key + (:start index) (:end sequence-end)) sequence (unsafe) :derive-type #'result-type-first-arg :destroyed-constant-args (nth-constant-nonempty-sequence-args 1)) -(defknown replace (sequence - sequence - &key - (:start1 index) - (:end1 sequence-end) - (:start2 index) - (:end2 sequence-end)) +(defknown replace (sequence sequence &rest t &key (:start1 index) + (:end1 sequence-end) (:start2 index) (:end2 sequence-end)) sequence () :derive-type #'result-type-first-arg :destroyed-constant-args (nth-constant-nonempty-sequence-args 1)) (defknown remove - (t sequence &key (:from-end t) (:test callable) + (t sequence &rest t &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) (:count sequence-count) (:key callable)) consed-sequence @@ -512,7 +504,7 @@ :derive-type (sequence-result-nth-arg 2)) (defknown substitute - (t t sequence &key (:from-end t) (:test callable) + (t t sequence &rest t &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) (:count sequence-count) (:key callable)) consed-sequence @@ -520,21 +512,21 @@ :derive-type (sequence-result-nth-arg 3)) (defknown (remove-if remove-if-not) - (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-count) (:key callable)) + (callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) (defknown (substitute-if substitute-if-not) - (t callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-count) (:key callable)) + (t callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) (defknown delete - (t sequence &key (:from-end t) (:test callable) + (t sequence &rest t &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) (:count sequence-count) (:key callable)) sequence @@ -543,7 +535,7 @@ :destroyed-constant-args (nth-constant-nonempty-sequence-args 2)) (defknown nsubstitute - (t t sequence &key (:from-end t) (:test callable) + (t t sequence &rest t &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) (:count sequence-count) (:key callable)) sequence @@ -552,82 +544,82 @@ :destroyed-constant-args (nth-constant-nonempty-sequence-args 3)) (defknown (delete-if delete-if-not) - (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-count) (:key callable)) + (callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:count sequence-count) (:key callable)) sequence (flushable call important-result) :derive-type (sequence-result-nth-arg 2) :destroyed-constant-args (nth-constant-nonempty-sequence-args 2)) (defknown (nsubstitute-if nsubstitute-if-not) - (t callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-count) (:key callable)) + (t callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 3) :destroyed-constant-args (nth-constant-nonempty-sequence-args 3)) (defknown remove-duplicates - (sequence &key (:test callable) (:test-not callable) (:start index) + (sequence &rest t &key (:test callable) (:test-not callable) (:start index) (:from-end t) (:end sequence-end) (:key callable)) consed-sequence (unsafely-flushable call) :derive-type (sequence-result-nth-arg 1)) (defknown delete-duplicates - (sequence &key (:test callable) (:test-not callable) (:start index) + (sequence &rest t &key (:test callable) (:test-not callable) (:start index) (:from-end t) (:end sequence-end) (:key callable)) sequence (unsafely-flushable call important-result) :derive-type (sequence-result-nth-arg 1) :destroyed-constant-args (nth-constant-nonempty-sequence-args 1)) -(defknown find (t sequence &key (:test callable) (:test-not callable) - (:start index) (:from-end t) (:end sequence-end) - (:key callable)) +(defknown find (t sequence &rest t &key (:test callable) + (:test-not callable) (:start index) (:from-end t) + (:end sequence-end) (:key callable)) t (foldable flushable call)) (defknown (find-if find-if-not) - (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:key callable)) + (callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:key callable)) t (foldable flushable call)) -(defknown position (t sequence &key (:test callable) (:test-not callable) - (:start index) (:from-end t) (:end sequence-end) - (:key callable)) +(defknown position (t sequence &rest t &key (:test callable) + (:test-not callable) (:start index) (:from-end t) + (:end sequence-end) (:key callable)) (or index null) (foldable flushable call)) (defknown (position-if position-if-not) - (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:key callable)) + (callable sequence &rest t &key (:from-end t) (:start index) + (:end sequence-end) (:key callable)) (or index null) (foldable flushable call)) -(defknown count (t sequence &key (:test callable) (:test-not callable) - (:start index) (:from-end t) (:end sequence-end) - (:key callable)) +(defknown count (t sequence &rest t &key + (:test callable) (:test-not callable) (:start index) + (:from-end t) (:end sequence-end) (:key callable)) index (foldable flushable call)) (defknown (count-if count-if-not) - (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:key callable)) + (callable sequence &rest t &key + (:from-end t) (:start index) (:end sequence-end) (:key callable)) index (foldable flushable call)) (defknown (mismatch search) - (sequence sequence &key (:from-end t) (:test callable) (:test-not callable) - (:start1 index) (:end1 sequence-end) - (:start2 index) (:end2 sequence-end) - (:key callable)) + (sequence sequence &rest t &key (:from-end t) (:test callable) + (:test-not callable) (:start1 index) (:end1 sequence-end) + (:start2 index) (:end2 sequence-end) (:key callable)) (or index null) (foldable flushable call)) ;;; not FLUSHABLE, since vector sort guaranteed in-place... -(defknown (stable-sort sort) (sequence callable &key (:key callable)) sequence +(defknown (stable-sort sort) (sequence callable &rest t &key (:key callable)) + sequence (call) :derive-type (sequence-result-nth-arg 1) :destroyed-constant-args (nth-constant-nonempty-sequence-args 1)) @@ -1441,8 +1433,14 @@ (defknown %check-bound (array index fixnum) index (movable foldable flushable)) (defknown data-vector-ref (simple-array index) t (foldable explicit-check always-translatable)) +#!+x86 +(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 +(defknown data-vector-set-with-offset (array index fixnum t) t + (unsafe explicit-check always-translatable)) (defknown hairy-data-vector-ref (array index) t (foldable explicit-check)) (defknown hairy-data-vector-set (array index t) t (unsafe explicit-check)) @@ -1543,7 +1541,7 @@ (defknown policy-quality (policy symbol) policy-quality (flushable)) -(defknown (compiler-abort compiler-error) (string &rest t) nil ()) +(defknown compiler-error (t &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)