From c58678f9ae90cb3aba995baa5d5d640c95590b44 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Thu, 17 Oct 2013 20:53:18 +0400 Subject: [PATCH] Add some missing FNDB declarations. --- src/compiler/fndb.lisp | 18 ++++++++++++++++++ src/pcl/fixup.lisp | 6 ++++++ 2 files changed, 24 insertions(+) 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))) -- 1.7.10.4