py: Make GC's STACK_SIZE definition a proper MICROPY_ config variable.

This commit is contained in:
Damien George 2015-01-01 22:04:46 +00:00
parent 872a82970d
commit fd40a9c38e
2 changed files with 7 additions and 3 deletions

View File

@ -47,7 +47,6 @@
#define WORDS_PER_BLOCK (4) #define WORDS_PER_BLOCK (4)
#define BYTES_PER_BLOCK (WORDS_PER_BLOCK * BYTES_PER_WORD) #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 byte *gc_alloc_table_start;
STATIC mp_uint_t gc_alloc_table_byte_len; 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 mp_uint_t *gc_pool_end;
STATIC int gc_stack_overflow; 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 mp_uint_t *gc_sp;
STATIC uint16_t gc_lock_depth; STATIC uint16_t gc_lock_depth;
uint16_t gc_auto_collect_enabled; uint16_t gc_auto_collect_enabled;
@ -196,7 +195,7 @@ bool gc_is_locked(void) {
if (ATB_GET_KIND(_block) == AT_HEAD) { \ if (ATB_GET_KIND(_block) == AT_HEAD) { \
/* an unmarked head, mark it, and push it on gc stack */ \ /* an unmarked head, mark it, and push it on gc stack */ \
ATB_HEAD_TO_MARK(_block); \ 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; \ *gc_sp++ = _block; \
} else { \ } else { \
gc_stack_overflow = 1; \ gc_stack_overflow = 1; \

View File

@ -51,6 +51,11 @@
/*****************************************************************************/ /*****************************************************************************/
/* Memory allocation policy */ /* 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 // Initial amount for lexer indentation level
#ifndef MICROPY_ALLOC_LEXER_INDENT_INIT #ifndef MICROPY_ALLOC_LEXER_INDENT_INIT
#define MICROPY_ALLOC_LEXER_INDENT_INIT (10) #define MICROPY_ALLOC_LEXER_INDENT_INIT (10)