~ chicken-core (chicken-5) 7b656ccb6045fd458828cb2f41641176b3610bb8


commit 7b656ccb6045fd458828cb2f41641176b3610bb8
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Mar 9 09:29:37 2011 -0500
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed Mar 9 09:29:37 2011 -0500

    spec. fixes

diff --git a/batch-driver.scm b/batch-driver.scm
index 13d78814..04fa37bf 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -517,7 +517,7 @@
 		 (set! first-analysis #f)
 		 (set! db (analyze 'scrutiny node0))
 		 (print-db "analysis" '|0| db 0)
-		 (end-time "pre-analysis")
+		 (end-time "pre-analysis (scrutiny)")
 		 (begin-time)
 		 (debugging 'p "performing scrutiny")
 		 (scrutinize node0 db do-scrutinize do-specialize)
@@ -561,26 +561,7 @@
 		      (lambda (ilf)
 			(dribble "Loading inline file ~a ..." ilf)
 			(load-inline-file ilf) )
-		      ifs)))
-		 (when do-scrutinize
-		   ;;*** hardcoded database file name
-		   (unless (memq 'ignore-repository options)
-		     (load-type-database "types.db"))
-		   (for-each (cut load-type-database <> #f) (collect-options 'types))
-		   (for-each
-		    (lambda (id)
-		      (load-type-database (make-pathname #f (symbol->string id) "types")))
-		    mreq)
-		   (begin-time)
-		   (set! first-analysis #f)
-		   (set! db (analyze 'scrutiny node0))
-		   (print-db "analysis" '|0| db 0)
-		   (end-time "pre-analysis")
-		   (begin-time)
-		   (debugging 'p "performing scrutiny")
-		   (scrutinize node0 db)
-		   (end-time "scrutiny")
-		   (set! first-analysis #t) ) )
+		      ifs))))
 
 	       ;; lambda-lifting
 	       (when do-lambda-lifting
diff --git a/types.db b/types.db
index 5c05e65f..bfb8f1ad 100644
--- a/types.db
+++ b/types.db
@@ -138,7 +138,7 @@
        ((number) (##core#inline "C_u_i_zerop" #(1))))
 
 (odd? (procedure odd? (number) boolean) ((fixnum) (fxodd? #(1))))
-(even? (procedure even? (number) boolean) ((fixnum) (fxeven? #(1)))
+(even? (procedure even? (number) boolean) ((fixnum) (fxeven? #(1))))
 
 (positive? (procedure positive? (number) boolean)
 	   ((fixnum) (##core#inline "C_fixnum_greaterp" #(1) 0))
@@ -157,6 +157,7 @@
      ((float float) (##core#inline "C_i_flonum_min" #(1) #(2))))
 
 (+ (procedure + (#!rest number) number)
+   (((or fixnum flonum number)) #(1))
    ((fixnum fixnum) (##core#inline "C_u_fixnum_plus" #(1) #(2)))
    ((float float) (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) #(2))))
 
@@ -168,6 +169,7 @@
    ((float) (##core#inline_allocate ("C_a_i_flonum_negate" 4) #(1))))
 
 (* (procedure * (#!rest number) number)
+   (((or fixnum float number)) #(1))
    ((fixnum fixnum) (##core#inline "C_fixnum_times" #(1) #(2)))
    ((float float) (##core#inline_allocate ("C_a_i_flonum_times" 4) 
 					  #(1) #(2))))
@@ -228,7 +230,7 @@
        ((fixnum) #(1))
        ((float) (##core#inline_allocate ("C_a_i_flonum_round" 4) #(1))))
 
-(exact->inexact (procedure exact->inexact (number) number) ((float) #(1))
+(exact->inexact (procedure exact->inexact (number) number) ((float) #(1)))
 (inexact->exact (procedure inexact->exact (number) number) ((fixnum) #(1)))
 
 (exp (procedure exp (number) float)
Trap