diff --git a/runtime.c b/runtime.c index 33af35ed..729bee96 100644 --- a/runtime.c +++ b/runtime.c @@ -1533,10 +1533,10 @@ object Cyc_num_op_va_list(void *data, int argc, object (fn_op(void *, common_typ fn_op(data, buf, va_arg(ns, object)); } -// // TODO: if result is integer, could convert to an immediate here -// if (type_of(buf) == integer_tag) { -// return obj_int2obj(buf->integer_t.value); -// } + // TODO: if result is integer, could convert to an immediate here + if (type_of(buf) == integer_tag) { + return obj_int2obj(buf->integer_t.value); + } return buf; } diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index 859fc954..381fbde6 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -405,14 +405,14 @@ ((vector? exp) (c-compile-vector exp)) ((integer? exp) - (let ((cvar-name (mangle (gensym 'c)))) - (c-code/vars - (string-append "&" cvar-name) ; Code is just the variable name - (list ; Allocate integer on the C stack - (string-append - "make_int(" cvar-name ", " (number->string exp) ");"))))) -; (c-code (string-append "obj_int2obj(" -; (number->string exp) ")"))) +; (let ((cvar-name (mangle (gensym 'c)))) +; (c-code/vars +; (string-append "&" cvar-name) ; Code is just the variable name +; (list ; Allocate integer on the C stack +; (string-append +; "make_int(" cvar-name ", " (number->string exp) ");"))))) + (c-code (string-append "obj_int2obj(" + (number->string exp) ")"))) ((real? exp) (let ((cvar-name (mangle (gensym 'c)))) (c-code/vars