0.7.12.12:
authorAlexey Dejneka <adejneka@comail.ru>
Fri, 31 Jan 2003 05:59:01 +0000 (05:59 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Fri, 31 Jan 2003 05:59:01 +0000 (05:59 +0000)
        * Declare MAPCAN and MAPCON to return T;
        * Remove (:FUNCTION :IR1-TRANSFORM) info type.

make-target-2.sh
src/compiler/fndb.lisp
src/compiler/globaldb.lisp
src/compiler/knownfun.lisp
version.lisp-expr

index 0a51ab9..bcfef1b 100644 (file)
@@ -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.
index cd5299d..31f4350 100644 (file)
 (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))
   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
index 0538c43..a5af23c 100644 (file)
 
   (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
   ;;   (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
   :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
 (define-info-type
   :class :function
   :type :definition
-  :type-spec t
+  :type-spec (or fdefn null)
   :default nil)
 \f
 ;;;; definitions for other miscellaneous information
index 1be79d5..86f4b85 100644 (file)
 (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)))
index 413402d..9acf614 100644 (file)
@@ -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"