py: Change module globals from mp_map_t* to mp_obj_dict_t*.
Towards addressing issue #424.
Had a small increase to ROM usage (order 60 bytes).
diff --git a/py/objmodule.c b/py/objmodule.c
index cc5944b..783aa8a 100644
--- a/py/objmodule.c
+++ b/py/objmodule.c
@@ -19,7 +19,7 @@
STATIC void module_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
mp_obj_module_t *self = self_in;
- mp_map_elem_t *elem = mp_map_lookup(self->globals, MP_OBJ_NEW_QSTR(attr), MP_MAP_LOOKUP);
+ mp_map_elem_t *elem = mp_map_lookup(&self->globals->map, MP_OBJ_NEW_QSTR(attr), MP_MAP_LOOKUP);
if (elem != NULL) {
dest[0] = elem->value;
}
@@ -28,7 +28,7 @@
STATIC bool module_store_attr(mp_obj_t self_in, qstr attr, mp_obj_t value) {
mp_obj_module_t *self = self_in;
// TODO CPython allows STORE_ATTR to a module, but is this the correct implementation?
- mp_map_lookup(self->globals, MP_OBJ_NEW_QSTR(attr), MP_MAP_LOOKUP_ADD_IF_NOT_FOUND)->value = value;
+ mp_obj_dict_store(self->globals, MP_OBJ_NEW_QSTR(attr), value);
return true;
}
@@ -52,10 +52,10 @@
mp_obj_module_t *o = m_new_obj(mp_obj_module_t);
o->base.type = &mp_type_module;
o->name = module_name;
- o->globals = mp_map_new(1);
+ o->globals = mp_obj_new_dict(1);
// store __name__ entry in the module
- mp_map_lookup(o->globals, MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_MAP_LOOKUP_ADD_IF_NOT_FOUND)->value = MP_OBJ_NEW_QSTR(module_name);
+ mp_obj_dict_store(o->globals, MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(module_name));
// store the new module into the slot in the global dict holding all modules
el->value = o;
@@ -64,7 +64,7 @@
return o;
}
-mp_map_t *mp_obj_module_get_globals(mp_obj_t self_in) {
+mp_obj_dict_t *mp_obj_module_get_globals(mp_obj_t self_in) {
assert(MP_OBJ_IS_TYPE(self_in, &mp_type_module));
mp_obj_module_t *self = self_in;
return self->globals;