diff options
author | Damien George <damien.p.george@gmail.com> | 2018-10-27 22:41:21 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-10-28 00:38:18 +1100 |
commit | e328a5d4693f9e4a03b296e7a9a7af6660d99515 (patch) | |
tree | 178e4fbab5adbd14fb3c03e9754f044699626fc8 /py/emitcommon.c | |
parent | ba92c798414d5dcf76ac7bfd153884873cceca08 (diff) |
py/scope: Optimise scope_find_or_add_id to not need "added" arg.
Taking the address of a local variable is mildly expensive, in code size
and stack usage. So optimise scope_find_or_add_id() to not need to take a
pointer to the "added" variable, and instead take the kind to use for newly
added identifiers.
Diffstat (limited to 'py/emitcommon.c')
-rw-r--r-- | py/emitcommon.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/py/emitcommon.c b/py/emitcommon.c index 149e0b0f1..791bf398a 100644 --- a/py/emitcommon.c +++ b/py/emitcommon.c @@ -30,26 +30,10 @@ #if MICROPY_ENABLE_COMPILER -void mp_emit_common_get_id_for_load(scope_t *scope, qstr qst) { - // name adding/lookup - bool added; - id_info_t *id = scope_find_or_add_id(scope, qst, &added); - if (added) { - id->kind = ID_INFO_KIND_GLOBAL_IMPLICIT; - } -} - void mp_emit_common_get_id_for_modification(scope_t *scope, qstr qst) { // name adding/lookup - bool added; - id_info_t *id = scope_find_or_add_id(scope, qst, &added); - if (added) { - if (SCOPE_IS_FUNC_LIKE(scope->kind)) { - id->kind = ID_INFO_KIND_LOCAL; - } else { - id->kind = ID_INFO_KIND_GLOBAL_IMPLICIT; - } - } else if (SCOPE_IS_FUNC_LIKE(scope->kind) && id->kind == ID_INFO_KIND_GLOBAL_IMPLICIT) { + id_info_t *id = scope_find_or_add_id(scope, qst, ID_INFO_KIND_GLOBAL_IMPLICIT); + if (SCOPE_IS_FUNC_LIKE(scope->kind) && id->kind == ID_INFO_KIND_GLOBAL_IMPLICIT) { // rebind as a local variable id->kind = ID_INFO_KIND_LOCAL; } |