diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-04-05 04:51:26 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-04-05 05:10:12 +0300 |
commit | a0d32991ed57ebbbb8c9207dab3223b12ca4aa44 (patch) | |
tree | 21197e7430836f4e665546f35de19d5a5474eca7 /py | |
parent | e3f58c838022fcdbb39b9a28274b72bc0f69d1ea (diff) | |
download | micropython-a0d32991ed57ebbbb8c9207dab3223b12ca4aa44.tar.gz micropython-a0d32991ed57ebbbb8c9207dab3223b12ca4aa44.zip |
mp_load_name(): Optimize for outer scope where locals == globals.
Diffstat (limited to 'py')
-rw-r--r-- | py/runtime.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/py/runtime.c b/py/runtime.c index a5f45a2fb4..238c3a56e2 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -93,13 +93,15 @@ mp_obj_t mp_load_const_bytes(qstr qstr) { mp_obj_t mp_load_name(qstr qstr) { // logic: search locals, globals, builtins - DEBUG_OP_printf("load name %s\n", qstr_str(qstr)); - mp_map_elem_t *elem = mp_map_lookup(map_locals, MP_OBJ_NEW_QSTR(qstr), MP_MAP_LOOKUP); - if (elem != NULL) { - return elem->value; - } else { - return mp_load_global(qstr); + DEBUG_OP_printf("load name %s\n", map_locals, qstr_str(qstr)); + // If we're at the outer scope (locals == globals), dispatch to load_global right away + if (map_locals != map_globals) { + mp_map_elem_t *elem = mp_map_lookup(map_locals, MP_OBJ_NEW_QSTR(qstr), MP_MAP_LOOKUP); + if (elem != NULL) { + return elem->value; + } } + return mp_load_global(qstr); } mp_obj_t mp_load_global(qstr qstr) { |