X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=9fadaf96acd0d64ff0e6dec16a0004463da336ec;hb=12b1dae1a1ed90c6ffe4d958f1281c1c04a8e89b;hp=0909630c116669386f359942aad782d5bbb9afaf;hpb=f0f3805c145f2699701997761e2c6f55c475c192;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 0909630..9fadaf9 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -162,7 +162,6 @@ ;;;; from the "Symbols" chapter: (defknown get (symbol t &optional t) t (flushable)) -(defknown sb!impl::get2 (symbol t) t (flushable)) (defknown sb!impl::get3 (symbol t t) t (flushable)) (defknown remprop (symbol t) t) (defknown symbol-plist (symbol) list (flushable)) @@ -486,6 +485,11 @@ () :derive-type (creation-result-type-specifier-nth-arg 1)) +(defknown %concatenate-to-string (&rest sequence) simple-string + (explicit-check flushable)) +(defknown %concatenate-to-base-string (&rest sequence) simple-base-string + (explicit-check flushable)) + (defknown (map %map) (type-specifier callable sequence &rest sequence) consed-sequence (call) @@ -839,8 +843,6 @@ (defknown hash-table-p (t) boolean (movable foldable flushable)) (defknown gethash (t hash-table &optional t) (values t boolean) (flushable)) ; not FOLDABLE, since hash table contents can change -(defknown sb!impl::gethash2 (t hash-table) (values t boolean) - (flushable)) ; not FOLDABLE, since hash table contents can change (defknown sb!impl::gethash3 (t hash-table t) (values t boolean) (flushable)) ; not FOLDABLE, since hash table contents can change (defknown %puthash (t hash-table t) t () @@ -1011,9 +1013,14 @@ (defknown streamp (t) boolean (movable foldable flushable)) (defknown stream-element-type (stream) type-specifier (movable foldable flushable)) +(defknown stream-external-format (stream) t (flushable)) (defknown (output-stream-p input-stream-p) (stream) boolean (movable foldable flushable)) +(defknown open-stream-p (stream) boolean (flushable)) (defknown close (stream &key (:abort t)) (eql t) ()) +(defknown file-string-length (ansi-stream (or string character)) + (or unsigned-byte null) + (flushable)) ;;;; from the "Input/Output" chapter: @@ -1143,6 +1150,9 @@ (any explicit-check) :derive-type #'result-type-first-arg) +(defknown (pprint) (t &optional stream-designator) (values) + (explicit-check)) + ;;; xxx-TO-STRING functions are not foldable because they depend on ;;; the dynamic environment, the state of the pretty printer dispatch ;;; table, and probably other run-time factors. @@ -1367,6 +1377,13 @@ (:emit-cfasl t)) (values (or pathname null) boolean boolean)) +(defknown (compile-file-pathname) + (pathname-designator &key (:output-file (or pathname-designator + null + (member t))) + &allow-other-keys) + pathname) + ;; FIXME: consider making (OR CALLABLE CONS) something like ;; EXTENDED-FUNCTION-DESIGNATOR (defknown disassemble ((or callable cons) &key @@ -1409,6 +1426,9 @@ (defknown sleep ((real 0)) null (explicit-check)) +(defknown call-with-timing (callable callable &rest t) * + (call)) + ;;; Even though ANSI defines LISP-IMPLEMENTATION-TYPE and ;;; LISP-IMPLEMENTATION-VERSION to possibly punt and return NIL, we ;;; know that there's no valid reason for our implementations to ever @@ -1460,6 +1480,9 @@ (movable flushable explicit-check)) (defknown %instance-typep (t (or type-specifier ctype)) boolean (movable flushable explicit-check always-translatable)) +;;; We should never emit a call to %typep-wrapper +(defknown %typep-wrapper (t t (or type-specifier ctype)) t + (movable flushable always-translatable)) (defknown %cleanup-point () t) (defknown %special-bind (t t) t) @@ -1620,8 +1643,9 @@ ;;;; SETF inverses -(defknown %aset (array &rest t) t () - :destroyed-constant-args (nth-constant-args 1)) +(defknown (setf aref) (t array &rest index) t () + :destroyed-constant-args (nth-constant-args 2) + :derive-type #'result-type-first-arg) (defknown %set-row-major-aref (array index t) t () :destroyed-constant-args (nth-constant-args 1)) (defknown (%rplaca %rplacd) (cons t) t () @@ -1633,10 +1657,10 @@ :derive-type #'result-type-last-arg) (defknown %svset (simple-vector index t) t () :destroyed-constant-args (nth-constant-args 1)) -(defknown %bitset ((array bit) &rest index) bit () - :destroyed-constant-args (nth-constant-args 1)) -(defknown %sbitset ((simple-array bit) &rest index) bit () - :destroyed-constant-args (nth-constant-args 1)) +(defknown (setf bit) (bit (array bit) &rest index) bit () + :destroyed-constant-args (nth-constant-args 2)) +(defknown (setf sbit) (bit (simple-array bit) &rest index) bit () + :destroyed-constant-args (nth-constant-args 2)) (defknown %charset (string index character) character () :destroyed-constant-args (nth-constant-args 1)) (defknown %scharset (simple-string index character) character ()