aboutsummaryrefslogtreecommitdiff
path: root/py/objint.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-04-08 23:30:46 +0100
committerDamien George <damien.p.george@gmail.com>2014-04-08 23:30:46 +0100
commit88d7bba961cb38c594d72b6be5847cb1106f91b2 (patch)
tree4d49fb9d1c61148dde6e3429ccb950449e3f3581 /py/objint.h
parent803b9263ab1049d19d62d9a09e5f82084b7afa41 (diff)
py: Make it so that printing a small int does not allocate heap memory.
With the implementation of proper string formatting, code to print a small int was delegated to mpz_as_str_inpl (after first converting the small int to an mpz using stack memory). But mpz_as_str_inpl allocates heap memory to do the conversion, so small ints needed heap memory just to be printed. This fix has a separate function to print small ints, which does not allocate heap, and allocates less stack. String formatting, printf and pfenv are now large beasts, with some semi-duplicated code.
Diffstat (limited to 'py/objint.h')
-rw-r--r--py/objint.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/py/objint.h b/py/objint.h
index 7ee476269..5b21d55fe 100644
--- a/py/objint.h
+++ b/py/objint.h
@@ -10,6 +10,8 @@ typedef struct _mp_obj_int_t {
void mp_obj_int_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t self_in, mp_print_kind_t kind);
char *mp_obj_int_formatted(char **buf, int *buf_size, int *fmt_size, mp_obj_t self_in,
int base, const char *prefix, char base_char, char comma);
+char *mp_obj_int_formatted_impl(char **buf, int *buf_size, int *fmt_size, mp_obj_t self_in,
+ int base, const char *prefix, char base_char, char comma);
bool mp_obj_int_is_positive(mp_obj_t self_in);
mp_obj_t mp_obj_int_unary_op(int op, mp_obj_t o_in);
mp_obj_t mp_obj_int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in);