From 470fb174652d17e8edce0dfa7518c6aeb403f418 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 17 Feb 2017 18:28:32 +0000 Subject: [PATCH] Compile bignum consts --- scheme/cyclone/cgen.sld | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index 6774d085..95630ca4 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -472,6 +472,19 @@ (c-compile-vector exp)) ((bytevector? exp) (c-compile-bytevector exp)) + ((bignum? exp) + (let ((cvar-name (mangle (gensym 'c))) + (num2str (cond + (else + (number->string exp))))) + (c-code/vars + (string-append "" cvar-name) ; Code is just the variable name + (list ; Allocate pointer on the C stack + (string-append + "alloc_bignum(data, " cvar-name "); " + ;; TODO: need error checking, this is just a first cut: + "mp_read_radix(&bignum_value(" cvar-name "), \"" num2str "\", 10);")))) + ) ((integer? exp) ; (let ((cvar-name (mangle (gensym 'c)))) ; (c-code/vars