diff options
Diffstat (limited to 'py/modgc.c')
-rw-r--r-- | py/modgc.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/py/modgc.c b/py/modgc.c index c53eed235f..4ffdc2be68 100644 --- a/py/modgc.c +++ b/py/modgc.c @@ -24,8 +24,8 @@ * THE SOFTWARE. */ -#include "misc.h" #include "mpconfig.h" +#include "misc.h" #include "qstr.h" #include "obj.h" #include "builtin.h" @@ -61,11 +61,27 @@ STATIC mp_obj_t gc_enable(void) { } MP_DEFINE_CONST_FUN_OBJ_0(gc_enable_obj, gc_enable); +STATIC mp_obj_t gc_mem_free(void) { + gc_info_t info; + gc_info(&info); + return MP_OBJ_NEW_SMALL_INT((machine_uint_t)info.free); +} +MP_DEFINE_CONST_FUN_OBJ_0(gc_mem_free_obj, gc_mem_free); + +STATIC mp_obj_t gc_mem_alloc(void) { + gc_info_t info; + gc_info(&info); + return MP_OBJ_NEW_SMALL_INT((machine_uint_t)info.used); +} +MP_DEFINE_CONST_FUN_OBJ_0(gc_mem_alloc_obj, gc_mem_alloc); + STATIC const mp_map_elem_t mp_module_gc_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_gc) }, { MP_OBJ_NEW_QSTR(MP_QSTR_collect), (mp_obj_t)&gc_collect_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_disable), (mp_obj_t)&gc_disable_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_enable), (mp_obj_t)&gc_enable_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_mem_free), (mp_obj_t)&gc_mem_free_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_mem_alloc), (mp_obj_t)&gc_mem_alloc_obj }, }; STATIC const mp_obj_dict_t mp_module_gc_globals = { @@ -73,8 +89,8 @@ STATIC const mp_obj_dict_t mp_module_gc_globals = { .map = { .all_keys_are_qstrs = 1, .table_is_fixed_array = 1, - .used = ARRAY_SIZE(mp_module_gc_globals_table), - .alloc = ARRAY_SIZE(mp_module_gc_globals_table), + .used = MP_ARRAY_SIZE(mp_module_gc_globals_table), + .alloc = MP_ARRAY_SIZE(mp_module_gc_globals_table), .table = (mp_map_elem_t*)mp_module_gc_globals_table, }, }; |