aboutsummaryrefslogtreecommitdiff
path: root/py/emitcommon.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-10-27 22:41:21 +1100
committerDamien George <damien.p.george@gmail.com>2018-10-28 00:38:18 +1100
commite328a5d4693f9e4a03b296e7a9a7af6660d99515 (patch)
tree178e4fbab5adbd14fb3c03e9754f044699626fc8 /py/emitcommon.c
parentba92c798414d5dcf76ac7bfd153884873cceca08 (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.c20
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;
}