This commit is contained in:
Justin Ethier 2015-07-10 22:02:28 -04:00
parent 961c36b888
commit 621ef69d24

View file

@ -2,36 +2,29 @@
(scheme file) (scheme file)
(scheme write)) (scheme write))
(call-with-output-file "tmp.c" (with-output-to-file
(lambda (fp) "tmp.c"
(lambda ()
(display " (display "
#include \"cyclone.h\" #include \"cyclone.h\"
#include \"runtime.h\" #include \"runtime.h\"
void do_dispatch(int argc, function_type func, object clo, object *b) { void do_dispatch(int argc, function_type func, object clo, object *b) {
switch(argc) {" fp) switch(argc) {" )
(define bs "") (define bs "")
;(for-each
; (lambda (i)
(let loop ((i 0)) (let loop ((i 0))
(display "case " )
(display "case " fp) (display i )
(display i fp) (display ":func(" )
(display ":func(" fp) (display i )
(display i fp) (display ",clo" )
(display ",clo" fp) (display bs )
(display bs fp) (display ");" )
(display ");" fp)
(set! bs (string-append bs ",*(b+" (number->string i) ")")) (set! bs (string-append bs ",*(b+" (number->string i) ")"))
(if (< i 129) (if (< i 129)
(loop (+ i 1)))) (loop (+ i 1))))
; '(0 1 2))
; case (0): func(0, clo);
; case (1): func(1, clo, *(b+0));
; case (2): func(2, clo, *(b+0), *(b+1));
(display " (display "
default: default:
@ -41,5 +34,5 @@ void do_dispatch(int argc, function_type func, object clo, object *b) {
Cyc_rt_raise_msg(buf); Cyc_rt_raise_msg(buf);
} }
} }
}" fp))) }" )))