X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=2fe43243c1a2efdd7b59a5d969b4f1fc36c581c6;hb=cd71fa005a6168cf9c79eca38459210bdd9a6c4b;hp=f99d8ed1015fc5bce0398f09aa86288f3448836e;hpb=ce02ab2ecd9c6ae2e570abd8c93ebf3be55bbdad;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index f99d8ed..2fe4324 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -97,7 +97,7 @@ ;;;; classes -(sb!xc:deftype name-for-class () 't) +(sb!xc:deftype name-for-class () t) (defknown class-name (sb!xc:class) name-for-class (flushable)) (defknown find-class (name-for-class &optional t lexenv) (or sb!xc:class null) ()) @@ -249,12 +249,12 @@ (defknown lcm (&rest integer) unsigned-byte (movable foldable flushable explicit-check)) -#!-propagate-fun-type +#+sb-xc-host ; (See CROSS-FLOAT-INFINITY-KLUDGE.) (defknown exp (number) irrational (movable foldable flushable explicit-check recursive) :derive-type #'result-type-float-contagion) -#!+propagate-fun-type +#-sb-xc-host ; (See CROSS-FLOAT-INFINITY-KLUDGE.) (defknown exp (number) irrational (movable foldable flushable explicit-check recursive)) @@ -272,7 +272,7 @@ (defknown cis (real) (complex float) (movable foldable flushable explicit-check)) -#!-propagate-fun-type +#+sb-xc-host ; (See CROSS-FLOAT-INFINITY-KLUDGE.) (progn (defknown (sin cos) (number) (or (float -1.0 1.0) (complex float)) @@ -289,7 +289,7 @@ :derive-type #'result-type-float-contagion) ) ; PROGN -#!+propagate-fun-type +#-sb-xc-host ; (See CROSS-FLOAT-INFINITY-KLUDGE.) (progn (defknown (sin cos) (number) (or (float -1.0 1.0) (complex float)) @@ -893,7 +893,7 @@ (movable foldable flushable)) (defknown (output-stream-p input-stream-p) (stream) boolean (movable foldable flushable)) -(defknown close (stream &key (:abort t)) stream ()) +(defknown close (stream &key (:abort t)) (eql t) ()) ;;;; from the "Input/Output" chapter: @@ -919,7 +919,7 @@ (defknown make-dispatch-macro-character (character &optional t readtable) (eql t) ()) (defknown set-dispatch-macro-character - (character character callable &optional readtable) (eql t) + (character character callable &optional readtable) function (unsafe)) (defknown get-dispatch-macro-character (character character &optional (or readtable null)) callable @@ -1058,7 +1058,7 @@ (:start index) (:end sequence-end) (:junk-allowed t)) - (values (or pathname null) index) + (values (or pathname null) sequence-end) ()) (defknown merge-pathnames @@ -1137,14 +1137,10 @@ (:verbose t) (:print t) (:if-does-not-exist (member :error :create nil)) - ;; FIXME: ANSI specifies an :EXTERNAL-FORMAT keyword too. - ) + (:external-format (member :default))) t) -(defknown directory (pathname-designator &key - (:check-for-subdirs t) - (:all t) - (:follow-links t)) +(defknown directory (pathname-designator &key) list (flushable)) ;;;; from the "Errors" chapter: @@ -1162,6 +1158,8 @@ (defknown compile-file (filename &key + + ;; ANSI options (:output-file (or filename null ;; FIXME: This last case is a non-ANSI hack. @@ -1169,9 +1167,10 @@ (:verbose t) (:print t) (:external-format t) - (:block-compile t) - (:entry-points list) - (:byte-compile (member t nil :maybe))) + + ;; extensions + (:trace-file t) + (:block-compile t)) (values (or pathname null) boolean boolean)) (defknown disassemble (callable &key @@ -1185,11 +1184,10 @@ (defknown describe (t &optional (or stream (member t nil))) (values)) (defknown inspect (t) (values)) - (defknown room (&optional (member t nil :default)) (values)) (defknown ed (&optional (or symbol cons filename) &key (:init t) (:display t)) t) -(defknown dribble (&optional filename &key (:if-exists t)) t) +(defknown dribble (&optional filename &key (:if-exists t)) (values)) (defknown apropos (stringable &optional package-designator t) (values)) (defknown apropos-list (stringable &optional package-designator t) list @@ -1240,6 +1238,17 @@ (defknown constantly (t) function (movable flushable)) (defknown complement (function) function (movable flushable)) +;;;; miscellaneous extensions + +(defknown get-bytes-consed () unsigned-byte (flushable)) + +;;; PCOUNTERs +(defknown incf-pcounter (pcounter unsigned-byte) pcounter) +(defknown pcounter->integer (pcounter) unsigned-byte) +(defknown %incf-pcounter-or-fixnum ((or pcounter fixnum) unsigned-byte) + (or pcounter fixnum)) +(defknown pcounter-or-fixnum->integer ((or pcounter fixnum)) unsigned-byte) + ;;;; magical compiler frobs ;;; We can't fold this in general because of SATISFIES. There is a @@ -1288,8 +1297,17 @@ (values (simple-array * (*)) index index index) (foldable flushable)) (defknown %set-symbol-package (symbol t) t (unsafe)) -(defknown %coerce-name-to-function ((or symbol cons)) function (flushable)) -(defknown %coerce-callable-to-function (callable) function (flushable)) +(defknown %coerce-name-to-fun ((or symbol cons)) function (flushable)) +(defknown %coerce-callable-to-fun (callable) function (flushable)) +(defknown failed-%with-array-data (t t t) nil) +(defknown %find-position + (t sequence t index sequence-end function function) + (values t (or index null)) + (flushable call)) +(defknown %find-position-if + (function sequence t index sequence-end function) + (values t (or index null)) + (call)) ;;; Structure slot accessors or setters are magically "known" to be ;;; these functions, although the var remains the Slot-Accessor @@ -1299,6 +1317,8 @@ ;;; ordinary functions. (defknown %slot-accessor (t) t (flushable)) (defknown %slot-setter (t t) t (unsafe)) + +(defknown sb!kernel::arg-count-error (t t t t t t) nil (unsafe)) ;;;; SETF inverses @@ -1314,26 +1334,10 @@ (defknown %charset (string index character) character (unsafe)) (defknown %scharset (simple-string index character) character (unsafe)) (defknown %set-symbol-value (symbol t) t (unsafe)) -(defknown fset (symbol function) function (unsafe)) +(defknown (setf symbol-function) (function symbol) function (unsafe)) (defknown %set-symbol-plist (symbol t) t (unsafe)) (defknown (setf fdocumentation) ((or string null) t symbol) (or string null) ()) (defknown %setnth (index list t) t (unsafe)) (defknown %set-fill-pointer (vector index) index (unsafe)) - -;;;; internal type predicates - -;;; Simple TYPEP uses that don't have any standard predicate are -;;; translated into non-standard unary predicates. -(defknown (fixnump bignump ratiop short-float-p single-float-p double-float-p - long-float-p base-char-p %standard-char-p %instancep - array-header-p) - (t) boolean (movable foldable flushable)) - -;;;; miscellaneous "sub-primitives" - -(defknown %sp-string-compare - (simple-string index index simple-string index index) - (or index null) - (foldable flushable))