Changeset 15799 in project


Ignore:
Timestamp:
09/08/09 21:40:12 (10 years ago)
Author:
felix
Message:

enabled compiler-syntax for map, better rewrites for add1/sub1; WARNING: not tested, yet

Location:
chicken/trunk
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • chicken/trunk/TODO

    r15668 r15799  
    2929
    3030** modules
    31 *** `require-extension' fails in interpreter when extension is .so without import library
    32     probably because load and import is in same toplevel form, and the
    33     load is performed after the import (at runtime). A possibly fix
    34     would be to load the extension immediately (at
    35     compile-/expansion-time), when import is #t and o import lib
    36     exists.
    3731*** mark import-source (module) on plist of imported symbols and use in re-import warning
    3832    doesn't work that easily, try to find another solution
     
    4640    reported by Jim Ursetto
    4741    reverted original patch, see patches/finalizer-closures.diff
    48 *** The units that are the results of splitting the extras unit have been chosen arbitrarily
    49 **** create combination unit ("chicken-stuff")
    50 ***** data-structures, extras, files, ports, utils
    5142
    5243** tools
     
    5849** branches
    5950*** try to improve performance in lazy-gensyms
     51    this *should* give better performance, but the extra handling of symbols
     52    without name seems to be to expensive
    6053
    6154** module issues
     
    7568
    7669** compiler
    77 *** test inlining with compiler modules
    7870*** (csc) generate object-files in /tmp (or TMPDIR)?
    79 *** option ("-M") to compile file as unnamed module (importing scheme + chicken)
    8071
    8172** setup/install
     
    8374**** use "HTTP_PROXY"/"http_proxy" env. var
    8475**** handle redirects in http-fetch
    85 *** chicken-install: option to list servers
    8676
    8777** library units
    8878*** read-mark list should be stored in read-table
    89 *** ports should have indicator slot about exact type (tcp, file, ...)
    9079*** normalize-pathname: return short name on windows? (mingw/msvc)
    9180*** Use record-descriptors instead of symbols as 1st slot in structure objects?
     
    10594** scrutiny
    10695*** add support for keyword arguments and check even length and available keywords
    107 
    108 
    109 * wiki
    110 
    111 ** compatibility page
    11296
    11397
     
    154138   the compiler)
    155139
    156 
    157 * 4.0.9 benchmark results
    158 
    159 (c)2008-2009 The Chicken Team
    160 (c)2000-2007 Felix L. Winkelmann
    161 Version 4.0.9 - SVN rev. 15246
    162 linux-unix-gnu-x86 [ manyargs dload ptables applyhook ]
    163 compiled 2009-07-23 on x (Linux)
    164 
    165 
    166 CC:
    167 Using built-in specs.
    168 Target: i486-linux-gnu
    169 Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
    170 Thread model: posix
    171 gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
    172 
    173 CFLAGS:
    174 -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H -Os -fomit-frame-pointer -I/home/felix/include
    175 
    176 Running benchmarks ...
    177 
    178   (averaging over 5 runs, dropping highest and lowest, binaries are statically linked and stripped)
    179 
    180                      (runtime)                                  (code size)
    181 
    182                      base       fast     unsafe        max      base      fast    unsafe       max
    183                   ----------------------------------------------------------------------------------
    184 0                   0.000      0.000      0.000      0.000     1013k     1013k      902k      902k
    185 binarytrees         0.076      0.081      0.082      0.004     1021k     1021k      910k      910k
    186 boyer               0.053      0.052      0.053      0.004     1045k     1045k      934k      934k
    187 browse              0.088      0.086      0.073      0.072     1029k     1029k      918k      918k
    188 conform             0.108      0.072      0.072      0.064     1089k     1085k      954k      954k
    189 cpstak              0.272      0.250      0.208      0.169     1013k     1013k      906k      906k
    190 ctak                0.124      0.128      0.110      0.106     1017k     1017k      906k      906k
    191 dderiv              0.106      0.089      0.082      0.076     1021k     1021k      910k      910k
    192 deriv               0.078      0.081      0.068      0.078     1017k     1017k      910k      906k
    193 destructive         0.069      0.076      0.062      0.070     1017k     1017k      910k      906k
    194 div-iter            0.002      0.021      0.018      0.021     1013k     1013k      906k      906k
    195 div-rec             0.046      0.052      0.036      0.057     1013k     1013k      906k      906k
    196 dynamic             0.074      0.062      0.078      0.056     1293k     1285k     1078k     1078k
    197 earley              0.029      0.018      0.028      0.028     1073k     1065k      950k      950k
    198 fft                 0.046      0.032      0.028                1025k     1025k      914k      950k
    199 fib                 0.014      0.148      0.109      0.033     1013k     1013k      902k      902k
    200 fibc                1.464      0.854      0.736      0.572     1017k     1013k      906k      906k
    201 fprint              0.121      0.124      0.112      0.117     1017k     1017k      906k      906k
    202 fread               0.572      0.056      0.524      0.526     1013k     1013k      902k      902k
    203 hanoi               0.414      0.392      0.341      0.145     1013k     1013k      906k      902k
    204 lattice             5.228      5.109      4.156      4.168     1029k     1029k      918k      918k
    205 maze                0.136      0.112      0.085                1089k     1077k      946k      918k
    206 nbody               2.414      1.610      0.528                1045k     1033k      914k      918k
    207 nqueens             0.068      0.064      0.029      0.021     1017k     1017k      906k      906k
    208 puzzle              0.052      0.056      0.028      0.026     1037k     1037k      922k      918k
    209 scheme              0.025      0.014      0.010      0.010     1165k     1165k      998k      998k
    210 tak                 0.273      0.268      0.217      0.056     1013k     1013k      906k      902k
    211 takl                0.142      0.148      0.057      0.073     1017k     1017k      906k      906k
    212 takr                0.438      0.430      0.301      0.246     1125k     1125k      998k      998k
    213 traverse            0.224      0.150      0.012      0.112     1037k     1033k      914k      914k
    214 travinit            0.033      0.033      0.026      0.018     1037k     1033k      910k      910k
    215 triangl             0.546      0.553      0.042      0.377     1017k     1017k      906k      906k
    216 
    217 TOTAL              13.488     11.733      8.805      7.385
    218 
    219 
    220 ** These benchmarks are meaningless - find real ones.
     140** The benchmarks are meaningless - find real ones.
  • chicken/trunk/c-platform.scm

    r15773 r15799  
    316316             '##core#call '(#t)
    317317             (cons* (make-node '##core#proc '("C_quotient" #t) '()) cont callargs) ) ) ) ) )
     318
     319(let ()
     320  ;; (add1 <x>) -> (##core#inline "C_fixnum_increase" <x>)     [fixnum-mode]
     321  ;; (add1 <x>) -> (##core#inline "C_u_fixnum_increase" <x>)   [fixnum-mode + unsafe]
     322  ;; (add1 <x>) -> (##core#inline_allocate ("C_a_i_plus" 4) <x> 1)
     323  ;; (sub1 <x>) -> (##core#inline "C_fixnum_decrease" <x>)     [fixnum-mode]
     324  ;; (sub1 <x>) -> (##core#inline "C_u_fixnum_decrease" <x>)   [fixnum-mode + unsafe]
     325  ;; (sub1 <x>) -> (##core#inline_allocate ("C_a_i_minus" 4) <x> 1)
     326  (define ((op1 fiop ufiop aiop) db classargs cont callargs)
     327    (and (= (length callargs) 1)
     328         (make-node
     329          '##core#call '(#t)
     330          (list
     331           cont
     332           (if (eq? 'fixnum number-type)
     333               (make-node '##core#inline (list (if unsafe ufiop fiop)) callargs)
     334               (make-node
     335                '##core#inline_allocate (list aiop 4)
     336                (list (car callargs) (qnode 1))))))))
     337  (rewrite 'add1 8 (op1 "C_fixnum_increase" "C_u_fixnum_increase" "C_a_i_plus"))
     338  (rewrite 'sub1 8 (op1 "C_fixnum_decrease" "C_u_fixnum_decrease" "C_a_i_minus")))
    318339
    319340(let ()
     
    759780(rewrite 'even? 14 'fixnum 1 "C_i_fixnumevenp" "C_i_fixnumevenp")
    760781(rewrite 'odd? 14 'fixnum 1 "C_i_fixnumoddp" "C_i_fixnumoddp")
    761 (rewrite 'add1 14 'fixnum 1 "C_fixnum_increase" "C_u_fixnum_increase")
    762 (rewrite 'sub1 14 'fixnum 1 "C_fixnum_decrease" "C_u_fixnum_decrease")
    763782(rewrite 'remainder 14 'fixnum 2 "C_fixnum_modulo" "C_fixnum_modulo")
    764783
  • chicken/trunk/compiler-syntax.scm

    r15795 r15799  
    5959(define-internal-compiler-syntax ((for-each ##sys#for-each #%for-each) x r c)
    6060  (pair?)
     61  ;; XXX add support for multiple lists
    6162  (let ((%let (r 'let))
    6263        (%if (r 'if))
     
    6667        (%pair? (r 'pair?)))
    6768    (if (and (memq 'for-each standard-bindings) ; we have to check this because the db (and thus
    68              (= 3 (length x)))                   ; intrinsic marks) isn't set up yet
     69             (= (length+ x) 3))                  ; intrinsic marks) isn't set up yet
    6970        `(,%let ,%loop ((,%lst ,(caddr x)))
    7071                (,%if (,%pair? ,%lst)
     
    7475        x)))
    7576
    76 #+xxx
    7777(define-internal-compiler-syntax ((map ##sys#map #%map) x r c)
    7878  (pair?)
     79  ;; XXX add support for multiple lists
    7980  (let ((%let (r 'let))
    8081        (%let* (r 'let*))
Note: See TracChangeset for help on using the changeset viewer.