~ 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