py/modsys: Use MP_REGISTER_ROOT_POINTER().
This uses MP_REGISTER_ROOT_POINTER() to register cur_exception, sys_exitfunc, mp_sys_path_obj, mp_sys_argv_obj and sys_mutable instead of using a conditional inside of mp_state_vm_t. Signed-off-by: David Lechner <david@pybricks.com>
This commit is contained in:
committed by
Damien George
parent
a98aa66df6
commit
85b4f36100
20
py/modsys.c
20
py/modsys.c
@@ -286,4 +286,24 @@ const mp_obj_module_t mp_module_sys = {
|
|||||||
|
|
||||||
MP_REGISTER_MODULE(MP_QSTR_usys, mp_module_sys);
|
MP_REGISTER_MODULE(MP_QSTR_usys, mp_module_sys);
|
||||||
|
|
||||||
|
// If MICROPY_PY_SYS_PATH_ARGV_DEFAULTS is not enabled then these two lists
|
||||||
|
// must be initialised after the call to mp_init.
|
||||||
|
MP_REGISTER_ROOT_POINTER(mp_obj_list_t mp_sys_path_obj);
|
||||||
|
MP_REGISTER_ROOT_POINTER(mp_obj_list_t mp_sys_argv_obj);
|
||||||
|
|
||||||
|
#if MICROPY_PY_SYS_EXC_INFO
|
||||||
|
// current exception being handled, for sys.exc_info()
|
||||||
|
MP_REGISTER_ROOT_POINTER(mp_obj_base_t * cur_exception);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if MICROPY_PY_SYS_ATEXIT
|
||||||
|
// exposed through sys.atexit function
|
||||||
|
MP_REGISTER_ROOT_POINTER(mp_obj_t sys_exitfunc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if MICROPY_PY_SYS_ATTR_DELEGATION
|
||||||
|
// Contains mutable sys attributes.
|
||||||
|
MP_REGISTER_ROOT_POINTER(mp_obj_t sys_mutable[MP_SYS_MUTABLE_NUM]);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // MICROPY_PY_SYS
|
||||||
|
|||||||
22
py/mpstate.h
22
py/mpstate.h
@@ -154,31 +154,9 @@ typedef struct _mp_state_vm_t {
|
|||||||
mp_sched_item_t sched_queue[MICROPY_SCHEDULER_DEPTH];
|
mp_sched_item_t sched_queue[MICROPY_SCHEDULER_DEPTH];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// current exception being handled, for sys.exc_info()
|
|
||||||
#if MICROPY_PY_SYS_EXC_INFO
|
|
||||||
mp_obj_base_t *cur_exception;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if MICROPY_PY_SYS_ATEXIT
|
|
||||||
// exposed through sys.atexit function
|
|
||||||
mp_obj_t sys_exitfunc;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// dictionary for the __main__ module
|
// dictionary for the __main__ module
|
||||||
mp_obj_dict_t dict_main;
|
mp_obj_dict_t dict_main;
|
||||||
|
|
||||||
#if MICROPY_PY_SYS
|
|
||||||
// If MICROPY_PY_SYS_PATH_ARGV_DEFAULTS is not enabled then these two lists
|
|
||||||
// must be initialised after the call to mp_init.
|
|
||||||
mp_obj_list_t mp_sys_path_obj;
|
|
||||||
mp_obj_list_t mp_sys_argv_obj;
|
|
||||||
|
|
||||||
#if MICROPY_PY_SYS_ATTR_DELEGATION
|
|
||||||
// Contains mutable sys attributes.
|
|
||||||
mp_obj_t sys_mutable[MP_SYS_MUTABLE_NUM];
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// dictionary for overridden builtins
|
// dictionary for overridden builtins
|
||||||
#if MICROPY_CAN_OVERRIDE_BUILTINS
|
#if MICROPY_CAN_OVERRIDE_BUILTINS
|
||||||
mp_obj_dict_t *mp_module_builtins_override_dict;
|
mp_obj_dict_t *mp_module_builtins_override_dict;
|
||||||
|
|||||||
Reference in New Issue
Block a user