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!")
        ;; 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.
 
         ;; 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 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))
   (call))
 
 (defknown (mapc mapl) (callable list &rest list) list (foldable call))
   t
   (foldable flushable))
 
   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
 (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))
 
 
   (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
 ;;; 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.
   ;;   (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
 
 ;;; where this information came from:
 ;;;    :ASSUMED  = from uses of the object
   :type :ir1-convert
   :type-spec (or function null))
 
   :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
 ;;; 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
 (define-info-type
   :class :function
   :type :definition
-  :type-spec t
+  :type-spec (or fdefn null)
   :default nil)
 \f
 ;;;; definitions for other miscellaneous information
   :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
 (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)))
        (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".)
 
 ;;; 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"