py/runtime: When tracing unary/binary ops, output op (method) name.
E.g.:
>>> 1+1
binary 26 __add__ 3 3
Output is similar to bytecode dump (numeric code, then op name).
@@ -214,7 +214,7 @@ void mp_delete_global(qstr qst) {
}
mp_obj_t mp_unary_op(mp_unary_op_t op, mp_obj_t arg) {
- DEBUG_OP_printf("unary " UINT_FMT " %p\n", op, arg);
+ DEBUG_OP_printf("unary " UINT_FMT " %q %p\n", op, mp_unary_op_method_name[op], arg);
if (op == MP_UNARY_OP_NOT) {
// "not x" is the negative of whether "x" is true per Python semantics
@@ -275,7 +275,7 @@ mp_obj_t mp_unary_op(mp_unary_op_t op, mp_obj_t arg) {
}
mp_obj_t mp_binary_op(mp_binary_op_t op, mp_obj_t lhs, mp_obj_t rhs) {
- DEBUG_OP_printf("binary " UINT_FMT " %p %p\n", op, lhs, rhs);
+ DEBUG_OP_printf("binary " UINT_FMT " %q %p %p\n", op, mp_binary_op_method_name[op], lhs, rhs);
// TODO correctly distinguish inplace operators for mutable objects
// lookup logic that CPython uses for +=:
