summaryrefslogtreecommitdiff
path: root/py/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/vm.c')
-rw-r--r--py/vm.c101
1 files changed, 0 insertions, 101 deletions
diff --git a/py/vm.c b/py/vm.c
index e5a62e441..f55d293dc 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -180,23 +180,6 @@
#define TRACE_TICK(current_ip, current_sp, is_exception)
#endif // MICROPY_PY_SYS_SETTRACE
-#if MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE
-static inline mp_map_elem_t *mp_map_cached_lookup(mp_map_t *map, qstr qst, uint8_t *idx_cache) {
- size_t idx = *idx_cache;
- mp_obj_t key = MP_OBJ_NEW_QSTR(qst);
- mp_map_elem_t *elem = NULL;
- if (idx < map->alloc && map->table[idx].key == key) {
- elem = &map->table[idx];
- } else {
- elem = mp_map_lookup(map, key, MP_MAP_LOOKUP);
- if (elem != NULL) {
- *idx_cache = (elem - &map->table[0]) & 0xff;
- }
- }
- return elem;
-}
-#endif
-
// fastn has items in reverse order (fastn[0] is local[0], fastn[-1] is local[1], etc)
// sp points to bottom of stack which grows up
// returns:
@@ -361,55 +344,20 @@ dispatch_loop:
goto load_check;
}
- #if !MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE
ENTRY(MP_BC_LOAD_NAME): {
MARK_EXC_IP_SELECTIVE();
DECODE_QSTR;
PUSH(mp_load_name(qst));
DISPATCH();
}
- #else
- ENTRY(MP_BC_LOAD_NAME): {
- MARK_EXC_IP_SELECTIVE();
- DECODE_QSTR;
- mp_map_elem_t *elem = mp_map_cached_lookup(&mp_locals_get()->map, qst, (uint8_t*)ip);
- mp_obj_t obj;
- if (elem != NULL) {
- obj = elem->value;
- } else {
- obj = mp_load_name(qst);
- }
- PUSH(obj);
- ip++;
- DISPATCH();
- }
- #endif
- #if !MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE
ENTRY(MP_BC_LOAD_GLOBAL): {
MARK_EXC_IP_SELECTIVE();
DECODE_QSTR;
PUSH(mp_load_global(qst));
DISPATCH();
}
- #else
- ENTRY(MP_BC_LOAD_GLOBAL): {
- MARK_EXC_IP_SELECTIVE();
- DECODE_QSTR;
- mp_map_elem_t *elem = mp_map_cached_lookup(&mp_globals_get()->map, qst, (uint8_t*)ip);
- mp_obj_t obj;
- if (elem != NULL) {
- obj = elem->value;
- } else {
- obj = mp_load_global(qst);
- }
- PUSH(obj);
- ip++;
- DISPATCH();
- }
- #endif
- #if !MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE
ENTRY(MP_BC_LOAD_ATTR): {
FRAME_UPDATE();
MARK_EXC_IP_SELECTIVE();
@@ -436,28 +384,6 @@ dispatch_loop:
SET_TOP(obj);
DISPATCH();
}
- #else
- ENTRY(MP_BC_LOAD_ATTR): {
- FRAME_UPDATE();
- MARK_EXC_IP_SELECTIVE();
- DECODE_QSTR;
- mp_obj_t top = TOP();
- mp_map_elem_t *elem = NULL;
- if (mp_obj_is_instance_type(mp_obj_get_type(top))) {
- mp_obj_instance_t *self = MP_OBJ_TO_PTR(top);
- elem = mp_map_cached_lookup(&self->members, qst, (uint8_t*)ip);
- }
- mp_obj_t obj;
- if (elem != NULL) {
- obj = elem->value;
- } else {
- obj = mp_load_attr(top, qst);
- }
- SET_TOP(obj);
- ip++;
- DISPATCH();
- }
- #endif
ENTRY(MP_BC_LOAD_METHOD): {
MARK_EXC_IP_SELECTIVE();
@@ -513,7 +439,6 @@ dispatch_loop:
DISPATCH();
}
- #if !MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE
ENTRY(MP_BC_STORE_ATTR): {
FRAME_UPDATE();
MARK_EXC_IP_SELECTIVE();
@@ -522,32 +447,6 @@ dispatch_loop:
sp -= 2;
DISPATCH();
}
- #else
- // This caching code works with MICROPY_PY_BUILTINS_PROPERTY and/or
- // MICROPY_PY_DESCRIPTORS enabled because if the attr exists in
- // self->members then it can't be a property or have descriptors. A
- // consequence of this is that we can't use MP_MAP_LOOKUP_ADD_IF_NOT_FOUND
- // in the fast-path below, because that store could override a property.
- ENTRY(MP_BC_STORE_ATTR): {
- FRAME_UPDATE();
- MARK_EXC_IP_SELECTIVE();
- DECODE_QSTR;
- mp_map_elem_t *elem = NULL;
- mp_obj_t top = TOP();
- if (mp_obj_is_instance_type(mp_obj_get_type(top)) && sp[-1] != MP_OBJ_NULL) {
- mp_obj_instance_t *self = MP_OBJ_TO_PTR(top);
- elem = mp_map_cached_lookup(&self->members, qst, (uint8_t*)ip);
- }
- if (elem != NULL) {
- elem->value = sp[-1];
- } else {
- mp_store_attr(sp[0], qst, sp[-1]);
- }
- sp -= 2;
- ip++;
- DISPATCH();
- }
- #endif
ENTRY(MP_BC_STORE_SUBSCR):
MARK_EXC_IP_SELECTIVE();