~ chicken-core (chicken-5) f1866224afcbeac28145c6153593171a36ce3cdb
commit f1866224afcbeac28145c6153593171a36ce3cdb Merge: 69776d0c 197fb6f8 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue May 17 15:24:09 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue May 17 15:24:09 2011 +0200 resolved conflicts diff --cc c-platform.scm index 01772426,79a29353..cf28da92 --- a/c-platform.scm +++ b/c-platform.scm @@@ -843,24 -824,23 +843,23 @@@ (rewrite 'floor 15 'flonum 'fixnum 'fpfloor #f) (rewrite 'ceiling 15 'flonum 'fixnum 'fpceiling #f) (rewrite 'truncate 15 'flonum 'fixnum 'fptruncate #f) - (rewrite 'round 15 'flonum 'fixnum 'fpround #f) -(rewrite 'fpsin 16 1 "C_a_i_flonum_sin" 'specialized words-per-flonum) -(rewrite 'fpcos 16 1 "C_a_i_flonum_cos" 'specialized words-per-flonum) -(rewrite 'fptan 16 1 "C_a_i_flonum_tan" 'specialized words-per-flonum) -(rewrite 'fpasin 16 1 "C_a_i_flonum_asin" 'specialized words-per-flonum) -(rewrite 'fpacos 16 1 "C_a_i_flonum_acos" 'specialized words-per-flonum) -(rewrite 'fpatan 16 1 "C_a_i_flonum_atan" 'specialized words-per-flonum) -(rewrite 'fpatan2 16 2 "C_a_i_flonum_atan2" 'specialized words-per-flonum) -(rewrite 'fpexp 16 1 "C_a_i_flonum_exp" 'specialized words-per-flonum) -(rewrite 'fpexpt 16 2 "C_a_i_flonum_expt" 'specialized words-per-flonum) -(rewrite 'fplog 16 1 "C_a_i_flonum_log" 'specialized words-per-flonum) -(rewrite 'fpsqrt 16 1 "C_a_i_flonum_sqrt" 'specialized words-per-flonum) -(rewrite 'fpabs 16 1 "C_a_i_flonum_abs" 'specialized words-per-flonum) -(rewrite 'fptruncate 16 1 "C_a_i_flonum_truncate" 'specialized words-per-flonum) -(rewrite 'fpround 16 1 "C_a_i_flonum_round" 'specialized words-per-flonum) -(rewrite 'fpceiling 16 1 "C_a_i_flonum_ceiling" 'specialized words-per-flonum) -(rewrite 'fpfloor 16 1 "C_a_i_flonum_floor" 'specialized words-per-flonum) +(rewrite 'fpsin 16 1 "C_a_i_flonum_sin" #f words-per-flonum) +(rewrite 'fpcos 16 1 "C_a_i_flonum_cos" #f words-per-flonum) +(rewrite 'fptan 16 1 "C_a_i_flonum_tan" #f words-per-flonum) +(rewrite 'fpasin 16 1 "C_a_i_flonum_asin" #f words-per-flonum) +(rewrite 'fpacos 16 1 "C_a_i_flonum_acos" #f words-per-flonum) +(rewrite 'fpatan 16 1 "C_a_i_flonum_atan" #f words-per-flonum) +(rewrite 'fpatan2 16 2 "C_a_i_flonum_atan2" #f words-per-flonum) +(rewrite 'fpexp 16 1 "C_a_i_flonum_exp" #f words-per-flonum) +(rewrite 'fpexpt 16 2 "C_a_i_flonum_expt" #f words-per-flonum) +(rewrite 'fplog 16 1 "C_a_i_flonum_log" #f words-per-flonum) +(rewrite 'fpsqrt 16 1 "C_a_i_flonum_sqrt" #f words-per-flonum) +(rewrite 'fpabs 16 1 "C_a_i_flonum_abs" #f words-per-flonum) +(rewrite 'fptruncate 16 1 "C_a_i_flonum_truncate" #f words-per-flonum) - (rewrite 'fpround 16 1 "C_a_i_flonum_truncate" #f words-per-flonum) - (rewrite 'fpceiling 16 1 "C_a_i_flonum_truncate" #f words-per-flonum) - (rewrite 'fpround 16 1 "C_a_i_flonum_truncate" #f words-per-flonum) ++(rewrite 'fpround 16 1 "C_a_i_flonum_round" #f words-per-flonum) ++(rewrite 'fpceiling 16 1 "C_a_i_flonum_ceiling" #f words-per-flonum) ++(rewrite 'fpround 16 1 "C_a_i_flonum_floor" #f words-per-flonum) (rewrite 'string->number 8 diff --cc manual/Using the compiler index 284c0c3b,28f2373e..c5c8b2b7 --- a/manual/Using the compiler +++ b/manual/Using the compiler @@@ -155,12 -182,6 +155,10 @@@ the source text should be read from sta ; -scrutinize : Enable simple flow-analysis to catch common type errors and argument/result mismatches. You can also use the {{scrutinize}} declaration to enable scrutiny. +; -specialize : Enable simple flow-analysis for doing some type-directed optimizations. + - ; -static-extension NAME : similar to {{-require-extension NAME}}, but links extension statically (also applies for an explicit {{(require-extension NAME)}}). - +; -strict-types : Assume that the type of variables is not changed by assignments. This gives more type-information during specialization, but violating this assumption will result in unsafe and incorrectly behaving code. + ; -types FILENAME : load additional type database from {{FILENAME}}. Type-definitions in {{FILENAME}} will override previous type-definitions. ; -compile-syntax : Makes macros also available at run-time. By default macros are not available at run-time. diff --cc types.db index 0c8b831a,cfbcce71..98a1a38d --- a/types.db +++ b/types.db @@@ -1126,49 -598,34 +1126,44 @@@ ;; lolevel -(address->pointer (procedure address->pointer (fixnum) pointer)) +(address->pointer (procedure! address->pointer (fixnum) pointer) + ((fixnum) (##sys#address->pointer #(1)))) + (align-to-word (procedure align-to-word (*) *)) - (allocate (procedure! allocate (fixnum) pointer)) -(allocate (procedure allocate (fixnum) (or boolean pointer))) -(block-ref (procedure block-ref (* fixnum) *)) -(block-set! (procedure block-set! (* fixnum *) *)) -(clear-unbound-variable-value! (procedure clear-unbound-variable-value! () undefined)) -(extend-procedure (procedure extend-procedure (procedure *) procedure)) ++(allocate (procedure! allocate (fixnum) (or boolean pointer))) +(block-ref (procedure! block-ref (* fixnum) *)) +(block-set! (procedure! block-set! (* fixnum *) *)) +(extend-procedure (procedure! extend-procedure (procedure *) procedure)) (extended-procedure? (procedure extended-procedure? (*) boolean)) -(free (procedure free (pointer) *)) -(global-bound? deprecated) -(global-make-unbound! deprecated) -(global-ref deprecated) -(global-set! deprecated) -(invalid-procedure-call-handler (procedure invalid-procedure-call-handler () procedure)) -(locative->object (procedure locative->object (locative) *)) -(locative-ref (procedure locative-ref (locative) *)) -(locative-set! (procedure locative-set! (locative *) *)) +(free (procedure! free (pointer) *)) +(locative->object (procedure! locative->object (locative) *)) +(locative-ref (procedure! locative-ref (locative) *)) +(locative-set! (procedure! locative-set! (locative *) *)) (locative? (procedure locative? (*) boolean)) -(make-locative (procedure make-locative (* #!optional fixnum) locative)) -(make-pointer-vector (procedure make-pointer-vector (fixnum #!optional pointer) pointer-vector)) +(make-locative (procedure! make-locative (* #!optional fixnum) locative)) +(make-pointer-vector (procedure! make-pointer-vector (fixnum #!optional pointer) pointer-vector)) (make-record-instance (procedure make-record-instance (* #!rest) *)) -(make-weak-locative (procedure make-weak-locative (* #!optional fixnum) locative)) -(move-memory! (procedure move-memory! (* * #!optional fixnum fixnum fixnum) *)) -(mutate-procedure (procedure mutate-procedure (procedure procedure) procedure)) +(make-weak-locative (procedure! make-weak-locative (* #!optional fixnum) locative)) + +(move-memory! (procedure! move-memory! (* * #!optional fixnum fixnum fixnum) *) + ((pointer pointer fixnum) + (##core#inline "C_copy_ptr_memory" #(2) #(1) #(3) '0 '0)) + ((pointer pointer fixnum fixnum) + (##core#inline "C_copy_ptr_memory" #(2) #(1) #(3) '0 #(4))) + ((pointer pointer fixnum fixnum fixnum) + (##core#inline "C_copy_ptr_memory" #(2) #(1) #(3) #(5) #(4))) + ((locative locative fixnum) + (##core#inline "C_copy_ptr_memory" #(2) #(1) #(3) '0 '0)) + ((locative locative fixnum fixnum) + (##core#inline "C_copy_ptr_memory" #(2) #(1) #(3) '0 #(4))) + ((locative locative fixnum fixnum fixnum) + (##core#inline "C_copy_ptr_memory" #(2) #(1) #(3) #(5) #(4)))) + +(mutate-procedure (procedure! mutate-procedure (procedure procedure) procedure)) - (null-pointer (procedure null-pointer () pointer)) - - (null-pointer? (procedure! null-pointer? (pointer) boolean) - ((pointer) (##core#inline "C_null_pointerp" #(1)))) - + (null-pointer deprecated) + (null-pointer? deprecated) (number-of-bytes (procedure number-of-bytes (*) fixnum)) - -(number-of-slots (procedure number-of-slots (*) fixnum)) +(number-of-slots (procedure number-of-slots (*) fixnum)) ;XXX - (object->pointer (procedure object->pointer (*) *)) (object-become! (procedure object-become! (list) *)) (object-copy (procedure object-copy (*) *))Trap