Bugfix - account for the use-alloca flag

This commit is contained in:
Justin Ethier 2019-03-22 12:26:10 -04:00
parent f13186ee17
commit e68fa56f94

View file

@ -447,7 +447,11 @@
(letrec ((cvar-name (mangle (gensym 'vec)))
(len (vector-length exp))
(ev-name (mangle (gensym 'e)))
(elem-decl (string-append "object * " ev-name " [" (number->string len) "];\n"))
(elem-decl
(if use-alloca
(string-append "object *" ev-name " = (object *)alloca(sizeof(object) * "
(number->string len) ");")
(string-append "object " ev-name " [" (number->string len) "];\n")))
(addr-op (if use-alloca "" "&"))
(deref-op (if use-alloca "->" "."))
(c-make-macro (if use-alloca "alloca_empty_vector" "make_empty_vector"))
@ -1584,7 +1588,11 @@
(string-append "closureN_type * " cv-name " = alloca(sizeof(closureN_type));\n")
(string-append "closureN_type " cv-name ";\n")))
(ev-name (mangle (gensym 'e)))
(elem-decl (string-append "object * " ev-name " [" (number->string (length free-vars)) "];\n"))
(elem-decl
(if use-alloca?
(string-append "object *" ev-name " = (object *)alloca(sizeof(object) * "
(number->string (length free-vars)) ");")
(string-append "object " ev-name " [" (number->string (length free-vars)) "];\n")))
(sep (if use-alloca? "->" ".")))
(string-append
decl