diff --git a/py/objtype.c b/py/objtype.c index 55a321d98c..2970e92767 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -362,7 +362,7 @@ STATIC mp_obj_t instance_unary_op(mp_uint_t op, mp_obj_t self_in) { } } -STATIC const qstr binary_op_method_name[] = { +const qstr mp_binary_op_method_name[] = { /* MP_BINARY_OP_OR, MP_BINARY_OP_XOR, @@ -435,7 +435,7 @@ STATIC mp_obj_t instance_binary_op(mp_uint_t op, mp_obj_t lhs_in, mp_obj_t rhs_i // Note: For ducktyping, CPython does not look in the instance members or use // __getattr__ or __getattribute__. It only looks in the class dictionary. mp_obj_instance_t *lhs = lhs_in; - qstr op_name = binary_op_method_name[op]; + qstr op_name = mp_binary_op_method_name[op]; /* Still try to lookup native slot if (op_name == 0) { return MP_OBJ_NULL; diff --git a/py/showbc.c b/py/showbc.c index e25b050c68..4a765499cf 100644 --- a/py/showbc.c +++ b/py/showbc.c @@ -34,6 +34,7 @@ #include "runtime.h" #include "bc0.h" #include "bc.h" +extern const qstr mp_binary_op_method_name[]; #if MICROPY_DEBUG_PRINTERS @@ -509,7 +510,8 @@ const byte *mp_bytecode_print_str(const byte *ip) { } else if (ip[-1] < MP_BC_UNARY_OP_MULTI + 5) { printf("UNARY_OP " UINT_FMT, (mp_uint_t)ip[-1] - MP_BC_UNARY_OP_MULTI); } else if (ip[-1] < MP_BC_BINARY_OP_MULTI + 35) { - printf("BINARY_OP " UINT_FMT, (mp_uint_t)ip[-1] - MP_BC_BINARY_OP_MULTI); + mp_uint_t op = ip[-1] - MP_BC_BINARY_OP_MULTI; + printf("BINARY_OP " UINT_FMT " %s", op, qstr_str(mp_binary_op_method_name[op])); } else { printf("code %p, byte code 0x%02x not implemented\n", ip, ip[-1]); assert(0);