py: Combine load_attr and store_attr type methods into one (attr).
This simplifies the API for objects and reduces code size (by around 400
bytes on Thumb2, and around 2k on x86). Performance impact was measured
with Pystone score, but change was barely noticeable.
diff --git a/py/vm.c b/py/vm.c
index d81f558..55203b0 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -315,7 +315,7 @@
MARK_EXC_IP_SELECTIVE();
DECODE_QSTR;
mp_obj_t top = TOP();
- if (mp_obj_get_type(top)->load_attr == mp_obj_instance_load_attr) {
+ if (mp_obj_get_type(top)->attr == mp_obj_instance_attr) {
mp_obj_instance_t *self = top;
mp_uint_t x = *ip;
mp_obj_t key = MP_OBJ_NEW_QSTR(qst);
@@ -405,7 +405,7 @@
MARK_EXC_IP_SELECTIVE();
DECODE_QSTR;
mp_obj_t top = TOP();
- if (mp_obj_get_type(top)->store_attr == mp_obj_instance_store_attr && sp[-1] != MP_OBJ_NULL) {
+ if (mp_obj_get_type(top)->attr == mp_obj_instance_attr && sp[-1] != MP_OBJ_NULL) {
mp_obj_instance_t *self = top;
mp_uint_t x = *ip;
mp_obj_t key = MP_OBJ_NEW_QSTR(qst);