~ 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