From: Alexey Dejneka Date: Fri, 31 Jan 2003 05:59:01 +0000 (+0000) Subject: 0.7.12.12: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=2010727926b091b23a246f6f659be61e27e19667;p=sbcl.git 0.7.12.12: * Declare MAPCAN and MAPCON to return T; * Remove (:FUNCTION :IR1-TRANSFORM) info type. --- diff --git a/make-target-2.sh b/make-target-2.sh index 0a51ab9..bcfef1b 100644 --- a/make-target-2.sh +++ b/make-target-2.sh @@ -32,6 +32,7 @@ echo //doing warm init ;; Now that we use the compiler for macros, interpreted ;; /SHOW doesn't work until later in init. #+sb-show (print "/hello, world!") + (sb!ext:purify) ;; Until PRINT-OBJECT and other machinery is set up, ;; we want limits on printing to avoid infinite output. diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index cd5299d..31f4350 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -130,7 +130,12 @@ (defknown apply (callable t &rest t) *) ; ### Last arg must be List... (defknown funcall (callable &rest t) *) -(defknown (mapcar maplist mapcan mapcon) (callable list &rest list) list +(defknown (mapcar maplist) (callable list &rest list) list + (call)) + +;;; According to CLHS the result must be a LIST, but we do not check +;;; it. +(defknown (mapcan mapcon) (callable list &rest list) t (call)) (defknown (mapc mapl) (callable list &rest list) list (foldable call)) @@ -648,6 +653,9 @@ t (foldable flushable)) +;; Correct argument type restrictions for these functions are +;; complicated, so we just declare them to accept LISTs and suppress +;; flushing is safe code. (defknown (caar cadr cdar cddr caaar caadr cadar caddr cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr cadaar cadadr caddar cadddr diff --git a/src/compiler/globaldb.lisp b/src/compiler/globaldb.lisp index 0538c43..a5af23c 100644 --- a/src/compiler/globaldb.lisp +++ b/src/compiler/globaldb.lisp @@ -717,8 +717,8 @@ (values)) -;;; Given a volatile environment Env, bind Table-Var the environment's table -;;; and Index-Var to the index of Name's bucket in the table. We also flush +;;; Given a volatile environment ENV, bind TABLE-VAR the environment's table +;;; and INDEX-VAR to the index of NAME's bucket in the table. We also flush ;;; the cache so that things will be consistent if body modifies something. (eval-when (:compile-toplevel :execute) (#+sb-xc-host cl:defmacro @@ -1036,7 +1036,7 @@ ;; (or approximate-fun-type null)). ;; It was changed to T as a hopefully-temporary hack while getting ;; cold init problems untangled. - :type-spec t) + :type-spec t) ;;; where this information came from: ;;; :ASSUMED = from uses of the object @@ -1119,13 +1119,6 @@ :type :ir1-convert :type-spec (or function null)) -;;; a function which gets a chance to do stuff to the IR1 for any call -;;; to this function. -(define-info-type - :class :function - :type :ir1-transform - :type-spec (or function null)) - ;;; If a function is "known" to the compiler, then this is a FUN-INFO ;;; structure containing the info used to special-case compilation. (define-info-type @@ -1143,7 +1136,7 @@ (define-info-type :class :function :type :definition - :type-spec t + :type-spec (or fdefn null) :default nil) ;;;; definitions for other miscellaneous information diff --git a/src/compiler/knownfun.lisp b/src/compiler/knownfun.lisp index 1be79d5..86f4b85 100644 --- a/src/compiler/knownfun.lisp +++ b/src/compiler/knownfun.lisp @@ -179,8 +179,8 @@ (defun %defknown (names type attributes &key derive-type optimizer) (let ((ctype (specifier-type type)) (info (make-fun-info :attributes attributes - :derive-type derive-type - :optimizer optimizer)) + :derive-type derive-type + :optimizer optimizer)) (target-env *info-environment*)) (dolist (name names) (let ((old-fun-info (info :function :info name))) diff --git a/version.lisp-expr b/version.lisp-expr index 413402d..9acf614 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.12.11" +"0.7.12.12"