Skip to content

Commit 707f16b

Browse files
committed
py: Use mp_locals/mp_globals accessor funcs instead of MP_STATE_CTX.
To improve maintainability of the code.
1 parent f4ee1ba commit 707f16b

2 files changed

Lines changed: 17 additions & 16 deletions

File tree

py/runtime.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ void mp_init(void) {
9797
mp_obj_dict_store(MP_OBJ_FROM_PTR(&MP_STATE_VM(dict_main)), MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR___main__));
9898

9999
// locals = globals for outer module (see Objects/frameobject.c/PyFrame_New())
100-
MP_STATE_CTX(dict_locals) = MP_STATE_CTX(dict_globals) = &MP_STATE_VM(dict_main);
100+
mp_locals_set(&MP_STATE_VM(dict_main));
101+
mp_globals_set(&MP_STATE_VM(dict_main));
101102

102103
#if MICROPY_CAN_OVERRIDE_BUILTINS
103104
// start with no extensions to builtins
@@ -136,8 +137,8 @@ mp_obj_t mp_load_name(qstr qst) {
136137
// logic: search locals, globals, builtins
137138
DEBUG_OP_printf("load name %s\n", qstr_str(qst));
138139
// If we're at the outer scope (locals == globals), dispatch to load_global right away
139-
if (MP_STATE_CTX(dict_locals) != MP_STATE_CTX(dict_globals)) {
140-
mp_map_elem_t *elem = mp_map_lookup(&MP_STATE_CTX(dict_locals)->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
140+
if (mp_locals_get() != mp_globals_get()) {
141+
mp_map_elem_t *elem = mp_map_lookup(&mp_locals_get()->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
141142
if (elem != NULL) {
142143
return elem->value;
143144
}
@@ -148,7 +149,7 @@ mp_obj_t mp_load_name(qstr qst) {
148149
mp_obj_t mp_load_global(qstr qst) {
149150
// logic: search globals, builtins
150151
DEBUG_OP_printf("load global %s\n", qstr_str(qst));
151-
mp_map_elem_t *elem = mp_map_lookup(&MP_STATE_CTX(dict_globals)->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
152+
mp_map_elem_t *elem = mp_map_lookup(&mp_globals_get()->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
152153
if (elem == NULL) {
153154
#if MICROPY_CAN_OVERRIDE_BUILTINS
154155
if (MP_STATE_VM(mp_module_builtins_override_dict) != NULL) {
@@ -188,24 +189,24 @@ mp_obj_t mp_load_build_class(void) {
188189

189190
void mp_store_name(qstr qst, mp_obj_t obj) {
190191
DEBUG_OP_printf("store name %s <- %p\n", qstr_str(qst), obj);
191-
mp_obj_dict_store(MP_OBJ_FROM_PTR(MP_STATE_CTX(dict_locals)), MP_OBJ_NEW_QSTR(qst), obj);
192+
mp_obj_dict_store(MP_OBJ_FROM_PTR(mp_locals_get()), MP_OBJ_NEW_QSTR(qst), obj);
192193
}
193194

194195
void mp_delete_name(qstr qst) {
195196
DEBUG_OP_printf("delete name %s\n", qstr_str(qst));
196197
// TODO convert KeyError to NameError if qst not found
197-
mp_obj_dict_delete(MP_OBJ_FROM_PTR(MP_STATE_CTX(dict_locals)), MP_OBJ_NEW_QSTR(qst));
198+
mp_obj_dict_delete(MP_OBJ_FROM_PTR(mp_locals_get()), MP_OBJ_NEW_QSTR(qst));
198199
}
199200

200201
void mp_store_global(qstr qst, mp_obj_t obj) {
201202
DEBUG_OP_printf("store global %s <- %p\n", qstr_str(qst), obj);
202-
mp_obj_dict_store(MP_OBJ_FROM_PTR(MP_STATE_CTX(dict_globals)), MP_OBJ_NEW_QSTR(qst), obj);
203+
mp_obj_dict_store(MP_OBJ_FROM_PTR(mp_globals_get()), MP_OBJ_NEW_QSTR(qst), obj);
203204
}
204205

205206
void mp_delete_global(qstr qst) {
206207
DEBUG_OP_printf("delete global %s\n", qstr_str(qst));
207208
// TODO convert KeyError to NameError if qst not found
208-
mp_obj_dict_delete(MP_OBJ_FROM_PTR(MP_STATE_CTX(dict_globals)), MP_OBJ_NEW_QSTR(qst));
209+
mp_obj_dict_delete(MP_OBJ_FROM_PTR(mp_globals_get()), MP_OBJ_NEW_QSTR(qst));
209210
}
210211

211212
mp_obj_t mp_unary_op(mp_uint_t op, mp_obj_t arg) {

py/vm.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,12 @@ run_code_state: ;
285285
DECODE_QSTR;
286286
mp_obj_t key = MP_OBJ_NEW_QSTR(qst);
287287
mp_uint_t x = *ip;
288-
if (x < MP_STATE_CTX(dict_locals)->map.alloc && MP_STATE_CTX(dict_locals)->map.table[x].key == key) {
289-
PUSH(MP_STATE_CTX(dict_locals)->map.table[x].value);
288+
if (x < mp_locals_get()->map.alloc && mp_locals_get()->map.table[x].key == key) {
289+
PUSH(mp_locals_get()->map.table[x].value);
290290
} else {
291-
mp_map_elem_t *elem = mp_map_lookup(&MP_STATE_CTX(dict_locals)->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
291+
mp_map_elem_t *elem = mp_map_lookup(&mp_locals_get()->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
292292
if (elem != NULL) {
293-
*(byte*)ip = (elem - &MP_STATE_CTX(dict_locals)->map.table[0]) & 0xff;
293+
*(byte*)ip = (elem - &mp_locals_get()->map.table[0]) & 0xff;
294294
PUSH(elem->value);
295295
} else {
296296
PUSH(mp_load_name(MP_OBJ_QSTR_VALUE(key)));
@@ -314,12 +314,12 @@ run_code_state: ;
314314
DECODE_QSTR;
315315
mp_obj_t key = MP_OBJ_NEW_QSTR(qst);
316316
mp_uint_t x = *ip;
317-
if (x < MP_STATE_CTX(dict_globals)->map.alloc && MP_STATE_CTX(dict_globals)->map.table[x].key == key) {
318-
PUSH(MP_STATE_CTX(dict_globals)->map.table[x].value);
317+
if (x < mp_globals_get()->map.alloc && mp_globals_get()->map.table[x].key == key) {
318+
PUSH(mp_globals_get()->map.table[x].value);
319319
} else {
320-
mp_map_elem_t *elem = mp_map_lookup(&MP_STATE_CTX(dict_globals)->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
320+
mp_map_elem_t *elem = mp_map_lookup(&mp_globals_get()->map, MP_OBJ_NEW_QSTR(qst), MP_MAP_LOOKUP);
321321
if (elem != NULL) {
322-
*(byte*)ip = (elem - &MP_STATE_CTX(dict_globals)->map.table[0]) & 0xff;
322+
*(byte*)ip = (elem - &mp_globals_get()->map.table[0]) & 0xff;
323323
PUSH(elem->value);
324324
} else {
325325
PUSH(mp_load_global(MP_OBJ_QSTR_VALUE(key)));

0 commit comments

Comments
 (0)