From: Stas Boukarev <stassats@gmail.com>
Date: Thu, 17 Oct 2013 16:53:18 +0000 (+0400)
Subject: Add some missing FNDB declarations.
X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=c58678f9ae90cb3aba995baa5d5d640c95590b44;p=sbcl.git

Add some missing FNDB declarations.
---

diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp
index 0909630..0894e9f 100644
--- a/src/compiler/fndb.lisp
+++ b/src/compiler/fndb.lisp
@@ -1011,9 +1011,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 +1148,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 +1375,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 +1424,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
diff --git a/src/pcl/fixup.lisp b/src/pcl/fixup.lisp
index d4e0257..3ba1153 100644
--- a/src/pcl/fixup.lisp
+++ b/src/pcl/fixup.lisp
@@ -41,8 +41,14 @@
 (in-package "SB-C")
 
 (defknown slot-value (t symbol) t (any))
+(defknown (slot-boundp slot-exists-p) (t symbol) boolean)
 (defknown sb-pcl::set-slot-value (t symbol t) t (any))
 
+(defknown find-class (symbol &optional t lexenv-designator)
+  (or class null))
+(defknown class-of (t) class (flushable))
+(defknown class-name (class) symbol (flushable))
+
 (deftransform slot-value ((object slot-name) (t (constant-arg symbol)) *
                           :node node)
   (let ((c-slot-name (lvar-value slot-name)))