diff --git a/benchmarks/results.Larceny-r6rs b/benchmarks/results.Larceny-r6rs index b847086..1175536 100644 --- a/benchmarks/results.Larceny-r6rs +++ b/benchmarks/results.Larceny-r6rs @@ -1170,3 +1170,235 @@ Words allocated: 201324942 Words reclaimed: 0 Elapsed time...: 4280 ms (User: 3750 ms; System: 529 ms) Elapsed GC time: 2443 ms (CPU: 2444 in 768 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:30:18 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing peval under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 34340444 +Words reclaimed: 0 +Elapsed time...: 1255 ms (User: 1248 ms; System: 7 ms) +Elapsed GC time: 55 ms (CPU: 60 in 131 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:43:05 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing peval under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 34340444 +Words reclaimed: 0 +Elapsed time...: 1256 ms (User: 1249 ms; System: 7 ms) +Elapsed GC time: 60 ms (CPU: 65 in 131 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:44:20 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing paraffins under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 201324942 +Words reclaimed: 0 +Elapsed time...: 4278 ms (User: 3750 ms; System: 528 ms) +Elapsed GC time: 2445 ms (CPU: 2437 in 768 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:46:28 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing compiler under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> WARNING from macro expander: +Redefining +bound? + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:47:54 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing slatex under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 4194150 +Words reclaimed: 0 +Elapsed time...: 1843 ms (User: 532 ms; System: 777 ms) +Elapsed GC time: 15 ms (CPU: 8 in 16 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:49:52 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing scheme under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 29621860 +Words reclaimed: 0 +Elapsed time...: 1193 ms (User: 1190 ms; System: 3 ms) +Elapsed GC time: 46 ms (CPU: 45 in 113 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 18:50:38 EST 2007 under Darwin Vesuvius.local 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing earley under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 123206268 +Words reclaimed: 0 +Elapsed time...: 2023 ms (User: 1932 ms; System: 91 ms) +Elapsed GC time: 580 ms (CPU: 582 in 470 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 22:59:25 EST 2007 under Darwin adsl-68-251-150-42.dsl.bltnin.ameritech.net 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing dderiv under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 244055776 +Words reclaimed: 0 +Elapsed time...: 1905 ms (User: 1893 ms; System: 11 ms) +Elapsed GC time: 333 ms (CPU: 332 in 931 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 23:00:51 EST 2007 under Darwin adsl-68-251-150-42.dsl.bltnin.ameritech.net 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing puzzle under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 8126378 +Words reclaimed: 0 +Elapsed time...: 1953 ms (User: 1807 ms; System: 144 ms) +Elapsed GC time: 17 ms (CPU: 10 in 31 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 23:02:15 EST 2007 under Darwin adsl-68-251-150-42.dsl.bltnin.ameritech.net 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing parsing under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 100923902 +Words reclaimed: 0 +Elapsed time...: 6587 ms (User: 6512 ms; System: 74 ms) +Elapsed GC time: 295 ms (CPU: 295 in 385 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 23:30:51 EST 2007 under Darwin adsl-68-251-150-42.dsl.bltnin.ameritech.net 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing parsing under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 100923902 +Words reclaimed: 0 +Elapsed time...: 6584 ms (User: 6509 ms; System: 72 ms) +Elapsed GC time: 296 ms (CPU: 287 in 385 collections.) + +**************************** +Benchmarking Larceny-r6rs on Mon Feb 19 23:32:41 EST 2007 under Darwin adsl-68-251-150-42.dsl.bltnin.ameritech.net 8.8.3 Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006; root:xnu-792.15.4.obj~4/RELEASE_I386 i386 i386 + +Testing parsing under Larceny-r6rs +Compiling... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +> +Running... +Larceny v0.93 "Deviated Prevert" (Nov 10 2006 04:27:45, precise:BSD Unix:unified) + + +> +Words allocated: 100923902 +Words reclaimed: 0 +Elapsed time...: 6590 ms (User: 6512 ms; System: 75 ms) +Elapsed GC time: 284 ms (CPU: 288 in 385 collections.) diff --git a/benchmarks/sys/larceny/compiler.scm b/benchmarks/sys/larceny/compiler.scm index ad1520c..79b01c9 100644 --- a/benchmarks/sys/larceny/compiler.scm +++ b/benchmarks/sys/larceny/compiler.scm @@ -560,6 +560,8 @@ (define parsing-iters 1000) (define gcold-iters 10000) ;(define nbody-iters 1) ; nondeterministic (order of evaluation) + + ;(define integer->char ascii->char) ;(define char->integer char->ascii) diff --git a/src/ikarus.boot b/src/ikarus.boot index bba2855..6698924 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/libaltcogen.ss b/src/libaltcogen.ss index 8ce839f..e3d9b09 100644 --- a/src/libaltcogen.ss +++ b/src/libaltcogen.ss @@ -198,6 +198,7 @@ [top-level-value v] [$symbol-value v] + [$memq pv] [$record vt] [$record/rtd? p] @@ -494,6 +495,26 @@ (case (length rands) [(1) (P (car rands))] [else (make-seq (E x) (make-constant #t))])] + [($memq) + (record-case (cadr rands) + [(constant ls) + (unless (list? ls) (error who "invalid call to $memq")) + (cond + [(null? ls) + (make-seq (E (car rands)) (make-constant #f))] + [else + (let ([t (unique-var 'tmp)]) + (make-bind (list t) (list (V (car rands))) + (let f ([ls ls]) + (cond + [(null? (cdr ls)) + (make-primcall 'eq? (list t (make-constant (car ls))))] + [else + (make-conditional + (make-primcall 'eq? (list t (make-constant (car ls)))) + (make-constant #t) + (f (cdr ls)))]))))])] + [else (Predicafy x)])] [(not) (make-conditional (P (car rands)) @@ -567,6 +588,26 @@ [(e) (make-seq (E x) (make-constant (void)))] [(pv) (case op + [($memq) + (record-case (cadr rands) + [(constant ls) + (unless (list? ls) (error who "invalid call to $memq")) + (cond + [(null? ls) + (make-seq (E (car rands)) (make-constant #f))] + [else + (let ([t (unique-var 'tmp)]) + (make-bind (list t) (list (V (car rands))) + (let f ([ls ls]) + (cond + [(null? ls) + (make-constant #f)] + [else + (make-conditional + (make-primcall 'eq? (list t (make-constant (car ls)))) + (make-constant ls) + (f (cdr ls)))]))))])] + [else (make-funcall (make-primref '$memq) (map V rands))])] [(list*) (case (length rands) [(0) (make-funcall (make-primref 'list*) '())] @@ -1767,11 +1808,9 @@ (cond [(null? nf*) ac] [else - (let ([t (unique-var 't)]) - (do-bind (list t) (list (car v*)) - (make-seq - (make-set (car nf*) t) - (do-bind-frmt* (cdr nf*) (cdr v*) ac))))])) + (make-seq + (V (car nf*) (car v*)) + (do-bind-frmt* (cdr nf*) (cdr v*) ac))])) ;;; (define (handle-nontail-call rator rands value-dest call-targ) (let-values ([(reg-locs reg-args frm-args) @@ -2466,6 +2505,11 @@ [(nfv? d) (cond [(not (mem-nfv? d ns)) (error who "dead nfv")] + [(or (disp? s) (constant? s) (reg? s)) + (let ([ns (rem-nfv d ns)]) + (mark-nfv/vars-conf! d vs) + (mark-nfv/frms-conf! d fs) + (R s vs rs fs ns))] [(var? s) (let ([ns (rem-nfv d ns)] [vs (rem-var s vs)]) @@ -2496,6 +2540,14 @@ (let ([rs (rem-reg d rs)]) (mark-reg/vars-conf! d vs) (R s vs (set-add d rs) fs ns))])] + [(nfv? d) + (cond + [(not (mem-nfv? d ns)) (error who "dead nfv")] + [else + (let ([ns (rem-nfv d ns)]) + (mark-nfv/vars-conf! d vs) + (mark-nfv/frms-conf! d fs) + (R s vs rs fs (add-nfv d ns)))])] [else (error who "invalid op d ~s" (unparse x))])] [(idiv) (mark-reg/vars-conf! eax vs) diff --git a/src/libintelasm.ss b/src/libintelasm.ss index 790a6d8..086f8fe 100644 --- a/src/libintelasm.ss +++ b/src/libintelasm.ss @@ -540,6 +540,8 @@ (CODE #x29 (ModRM 3 src dst ac))] [(and (mem? src) (reg? dst)) (CODErd #x2B dst src ac)] + [(and (imm? src) (mem? dst)) + ((CODE/digit #x81 '/5) dst (IMM32 src ac))] [(and (reg? src) (mem? dst)) ((CODE/digit #x29 src) dst ac)] [else (error who "invalid ~s" instr)])]