summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Hooper <rhooper@toybox.ca>2019-11-26 18:39:08 -0500
committerRoy Hooper <rhooper@toybox.ca>2019-11-26 18:39:08 -0500
commit56720eae0a9eb6fe8845cf20eb1298c3fb68a373 (patch)
treeef0776247da69096bebc9fba54ce79e94b202844
parent0b0aa5c5cf69189a619c6888fdd62c3eee063480 (diff)
remove unnecessary intermediate mp_obj_subscr wrapper
-rw-r--r--extmod/modurandom.c2
-rw-r--r--extmod/vfs.c2
-rw-r--r--ports/unix/modjni.c2
-rw-r--r--py/obj.c6
-rw-r--r--py/obj.h3
-rw-r--r--py/objreversed.c2
-rw-r--r--py/objtype.c2
-rw-r--r--py/vm.c4
-rw-r--r--shared-bindings/random/__init__.c2
-rw-r--r--shared-module/os/__init__.c2
10 files changed, 11 insertions, 16 deletions
diff --git a/extmod/modurandom.c b/extmod/modurandom.c
index 1512a3fd4..101c80cf8 100644
--- a/extmod/modurandom.c
+++ b/extmod/modurandom.c
@@ -150,7 +150,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_urandom_randint_obj, mod_urandom_randint);
STATIC mp_obj_t mod_urandom_choice(mp_obj_t seq) {
mp_int_t len = mp_obj_get_int(mp_obj_len(seq));
if (len > 0) {
- return mp_obj_subscr(seq, mp_obj_new_int(yasmarang_randbelow(len)), MP_OBJ_SENTINEL);
+ return mp_obj_subscr(seq, mp_obj_new_int(yasmarang_randbelow(len)), MP_OBJ_SENTINEL, seq);
} else {
nlr_raise(mp_obj_new_exception(&mp_type_IndexError));
}
diff --git a/extmod/vfs.c b/extmod/vfs.c
index 7d6e6999b..7599739e0 100644
--- a/extmod/vfs.c
+++ b/extmod/vfs.c
@@ -373,7 +373,7 @@ mp_obj_t mp_vfs_listdir(size_t n_args, const mp_obj_t *args) {
mp_obj_t dir_list = mp_obj_new_list(0, NULL);
mp_obj_t next;
while ((next = mp_iternext(iter)) != MP_OBJ_STOP_ITERATION) {
- mp_obj_list_append(dir_list, mp_obj_subscr(next, MP_OBJ_NEW_SMALL_INT(0), MP_OBJ_SENTINEL));
+ mp_obj_list_append(dir_list, mp_obj_subscr(next, MP_OBJ_NEW_SMALL_INT(0), MP_OBJ_SENTINEL, next));
}
return dir_list;
}
diff --git a/ports/unix/modjni.c b/ports/unix/modjni.c
index 50dd10dd2..8f0eac5a9 100644
--- a/ports/unix/modjni.c
+++ b/ports/unix/modjni.c
@@ -311,7 +311,7 @@ STATIC mp_obj_t jobject_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
// TODO: subscr_load_adaptor & subscr_getiter convenience functions
// should be moved to common location for reuse.
STATIC mp_obj_t subscr_load_adaptor(mp_obj_t self_in, mp_obj_t index_in) {
- return mp_obj_subscr(self_in, index_in, MP_OBJ_SENTINEL);
+ return mp_obj_subscr(self_in, index_in, MP_OBJ_SENTINEL, self_in);
}
MP_DEFINE_CONST_FUN_OBJ_2(subscr_load_adaptor_obj, subscr_load_adaptor);
diff --git a/py/obj.c b/py/obj.c
index 54822c977..47aa1aebf 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -487,11 +487,7 @@ mp_obj_t mp_obj_len_maybe(mp_obj_t o_in) {
}
}
-mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t value) {
- return mp_obj_subscr_impl(base, index, value, base);
-}
-
-mp_obj_t mp_obj_subscr_impl(mp_obj_t base, mp_obj_t index, mp_obj_t value, mp_obj_t instance) {
+mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t value, mp_obj_t instance) {
mp_obj_type_t *type = mp_obj_get_type(base);
if (type->subscr != NULL) {
diff --git a/py/obj.h b/py/obj.h
index edeeb2a4b..ff97b34d8 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -707,8 +707,7 @@ size_t mp_get_index(const mp_obj_type_t *type, size_t len, mp_obj_t index, bool
mp_obj_t mp_obj_id(mp_obj_t o_in);
mp_obj_t mp_obj_len(mp_obj_t o_in);
mp_obj_t mp_obj_len_maybe(mp_obj_t o_in); // may return MP_OBJ_NULL
-mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t val);
-mp_obj_t mp_obj_subscr_impl(mp_obj_t base, mp_obj_t index, mp_obj_t val, mp_obj_t instance);
+mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t val, mp_obj_t instance);
mp_obj_t mp_generic_unary_op(mp_unary_op_t op, mp_obj_t o_in);
// cell
diff --git a/py/objreversed.c b/py/objreversed.c
index 4937d0818..0b21e6938 100644
--- a/py/objreversed.c
+++ b/py/objreversed.c
@@ -66,7 +66,7 @@ STATIC mp_obj_t reversed_iternext(mp_obj_t self_in) {
// pre-decrement and index sequence
self->cur_index -= 1;
- return mp_obj_subscr(self->seq, MP_OBJ_NEW_SMALL_INT(self->cur_index), MP_OBJ_SENTINEL);
+ return mp_obj_subscr(self->seq, MP_OBJ_NEW_SMALL_INT(self->cur_index), MP_OBJ_SENTINEL, self->seq);
}
const mp_obj_type_t mp_type_reversed = {
diff --git a/py/objtype.c b/py/objtype.c
index 7d0760a10..9608a9242 100644
--- a/py/objtype.c
+++ b/py/objtype.c
@@ -852,7 +852,7 @@ STATIC mp_obj_t instance_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value
meth_args = 3;
}
if (member[0] == MP_OBJ_SENTINEL) {
- return mp_obj_subscr_impl(self->subobj[0], index, value, instance);
+ return mp_obj_subscr(self->subobj[0], index, value, instance);
} else if (member[0] != MP_OBJ_NULL) {
mp_obj_t args[3] = {self_in, index, value};
// TODO probably need to call mp_convert_member_lookup, and use mp_call_method_n_kw
diff --git a/py/vm.c b/py/vm.c
index 353fc8810..2fe8d3237 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -386,7 +386,7 @@ dispatch_loop:
ENTRY(MP_BC_LOAD_SUBSCR): {
MARK_EXC_IP_SELECTIVE();
mp_obj_t index = POP();
- SET_TOP(mp_obj_subscr(TOP(), index, MP_OBJ_SENTINEL));
+ SET_TOP(mp_obj_subscr(TOP(), index, MP_OBJ_SENTINEL, TOP()));
DISPATCH();
}
@@ -464,7 +464,7 @@ dispatch_loop:
ENTRY(MP_BC_STORE_SUBSCR):
MARK_EXC_IP_SELECTIVE();
- mp_obj_subscr(sp[-1], sp[0], sp[-2]);
+ mp_obj_subscr(sp[-1], sp[0], sp[-2], sp[-1]);
sp -= 3;
DISPATCH();
diff --git a/shared-bindings/random/__init__.c b/shared-bindings/random/__init__.c
index 83698eac5..fdef91443 100644
--- a/shared-bindings/random/__init__.c
+++ b/shared-bindings/random/__init__.c
@@ -145,7 +145,7 @@ STATIC mp_obj_t random_choice(mp_obj_t seq) {
if (len == 0) {
mp_raise_IndexError(translate("empty sequence"));
}
- return mp_obj_subscr(seq, mp_obj_new_int(shared_modules_random_randrange(0, len, 1)), MP_OBJ_SENTINEL);
+ return mp_obj_subscr(seq, mp_obj_new_int(shared_modules_random_randrange(0, len, 1)), MP_OBJ_SENTINEL, seq);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_choice_obj, random_choice);
diff --git a/shared-module/os/__init__.c b/shared-module/os/__init__.c
index 8060eec4f..ad76251c8 100644
--- a/shared-module/os/__init__.c
+++ b/shared-module/os/__init__.c
@@ -127,7 +127,7 @@ mp_obj_t common_hal_os_listdir(const char* path) {
mp_obj_t next;
while ((next = mp_iternext(iter_obj)) != MP_OBJ_STOP_ITERATION) {
// next[0] is the filename.
- mp_obj_list_append(dir_list, mp_obj_subscr(next, MP_OBJ_NEW_SMALL_INT(0), MP_OBJ_SENTINEL));
+ mp_obj_list_append(dir_list, mp_obj_subscr(next, MP_OBJ_NEW_SMALL_INT(0), MP_OBJ_SENTINEL, dir_list));
RUN_BACKGROUND_TASKS;
}
return dir_list;