From 1a2ffda175bb5842617841362b2df40d7cfa97dd Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 22 Mar 2021 11:20:22 +0100 Subject: [PATCH] py/runtime: Make sys.modules preallocate to a configurable size. This allows configuring the pre-allocated size of sys.modules dict, in order to prevent unwanted reallocations at run-time (3 sys-modules is really not quite enough for a larger project). --- py/mpconfig.h | 5 +++++ py/runtime.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/py/mpconfig.h b/py/mpconfig.h index 454fc12b7c..b26fa2137a 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -229,6 +229,11 @@ #define MICROPY_MODULE_DICT_SIZE (1) #endif +// Initial size of sys.modules dict +#ifndef MICROPY_LOADED_MODULES_DICT_SIZE +#define MICROPY_LOADED_MODULES_DICT_SIZE (3) +#endif + // Whether realloc/free should be passed allocated memory region size // You must enable this if MICROPY_MEM_STATS is enabled #ifndef MICROPY_MALLOC_USES_ALLOCATED_SIZE diff --git a/py/runtime.c b/py/runtime.c index 5d476a2764..0ce6854732 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -91,7 +91,7 @@ void mp_init(void) { #endif // init global module dict - mp_obj_dict_init(&MP_STATE_VM(mp_loaded_modules_dict), 3); + mp_obj_dict_init(&MP_STATE_VM(mp_loaded_modules_dict), MICROPY_LOADED_MODULES_DICT_SIZE); // initialise the __main__ module mp_obj_dict_init(&MP_STATE_VM(dict_main), 1);