Integrating fast sum

This commit is contained in:
Justin Ethier 2016-10-14 22:41:08 -04:00
parent d456658077
commit cf735c7917

View file

@ -539,6 +539,15 @@
((prim/data-arg? p) "data") ((prim/data-arg? p) "data")
(else ""))) (else "")))
(tdata-comma (if (> (string-length tdata) 0) "," "")) (tdata-comma (if (> (string-length tdata) 0) "," ""))
(tptr-type (prim/c-var-pointer p))
(tptr-comma (if tptr-type ",&" ""))
(tptr (cond
(tptr-type (mangle (gensym 'local)))
(else "")))
(tptr-decl
(cond
(tptr-type (string-append tptr-type " " tptr "; "))
(else "")))
(c-var-assign (c-var-assign
(lambda (type) (lambda (type)
(let ((cv-name (mangle (gensym 'c)))) (let ((cv-name (mangle (gensym 'c))))
@ -551,20 +560,26 @@
(closure-def closure-def) (closure-def closure-def)
(else "")) (else ""))
;; Emit C variable ;; Emit C variables
tptr-decl
type " " cv-name " = " c-func "(" type " " cv-name " = " c-func "("
;; Emit closure as first arg, if necessary (apply only) ;; Emit closure as first arg, if necessary (apply only)
(cond (cond
(closure-def (closure-def
(string-append (string-append
tdata "," tdata
"&" closure-sym)) tptr-comma tptr
",&" closure-sym))
((prim:cont? p) ((prim:cont? p)
(string-append (string-append
tdata "," tdata
tptr-comma tptr
","
cont)) cont))
(else tdata))))))))) (else
(string-append
tdata tptr-comma tptr))))))))))
(cond (cond
((prim/c-var-assign p) ((prim/c-var-assign p)
(c-var-assign (prim/c-var-assign p))) (c-var-assign (prim/c-var-assign p)))