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).
This commit is contained in:
@@ -19,7 +19,7 @@ STATIC void module_print(void (*print)(void *env, const char *fmt, ...), void *e
|
||||
|
||||
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 void module_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
|
||||
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_t mp_obj_new_module(qstr module_name) {
|
||||
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 @@ mp_obj_t mp_obj_new_module(qstr module_name) {
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user