summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-01-01 22:04:46 +0000
committerDamien George <damien.p.george@gmail.com>2015-01-01 22:04:46 +0000
commitfd40a9c38e7e15850b8802fb9845dc4ea423f53b (patch)
tree8198a6f42077515e08855446f4ae42559aa5f725 /py
parent872a82970d0caa97ed5e7751d6d7b6a29b8d4fce (diff)
downloadmicropython-fd40a9c38e7e15850b8802fb9845dc4ea423f53b.tar.gz
micropython-fd40a9c38e7e15850b8802fb9845dc4ea423f53b.zip
py: Make GC's STACK_SIZE definition a proper MICROPY_ config variable.
Diffstat (limited to 'py')
-rw-r--r--py/gc.c5
-rw-r--r--py/mpconfig.h5
2 files changed, 7 insertions, 3 deletions
diff --git a/py/gc.c b/py/gc.c
index 8404281e46..07f0b80d2e 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -47,7 +47,6 @@
#define WORDS_PER_BLOCK (4)
#define BYTES_PER_BLOCK (WORDS_PER_BLOCK * BYTES_PER_WORD)
-#define STACK_SIZE (64) // tunable; minimum is 1
STATIC byte *gc_alloc_table_start;
STATIC mp_uint_t gc_alloc_table_byte_len;
@@ -62,7 +61,7 @@ STATIC mp_uint_t *gc_pool_start = (void*)4;
STATIC mp_uint_t *gc_pool_end;
STATIC int gc_stack_overflow;
-STATIC mp_uint_t gc_stack[STACK_SIZE];
+STATIC mp_uint_t gc_stack[MICROPY_ALLOC_GC_STACK_SIZE];
STATIC mp_uint_t *gc_sp;
STATIC uint16_t gc_lock_depth;
uint16_t gc_auto_collect_enabled;
@@ -196,7 +195,7 @@ bool gc_is_locked(void) {
if (ATB_GET_KIND(_block) == AT_HEAD) { \
/* an unmarked head, mark it, and push it on gc stack */ \
ATB_HEAD_TO_MARK(_block); \
- if (gc_sp < &gc_stack[STACK_SIZE]) { \
+ if (gc_sp < &gc_stack[MICROPY_ALLOC_GC_STACK_SIZE]) { \
*gc_sp++ = _block; \
} else { \
gc_stack_overflow = 1; \
diff --git a/py/mpconfig.h b/py/mpconfig.h
index bbc791c0b7..e3270bd13f 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -51,6 +51,11 @@
/*****************************************************************************/
/* Memory allocation policy */
+// Number of words allocated (in BSS) to the GC stack (minimum is 1)
+#ifndef MICROPY_ALLOC_GC_STACK_SIZE
+#define MICROPY_ALLOC_GC_STACK_SIZE (64)
+#endif
+
// Initial amount for lexer indentation level
#ifndef MICROPY_ALLOC_LEXER_INDENT_INIT
#define MICROPY_ALLOC_LEXER_INDENT_INIT (10)