py/obj: Optimise small-int comparison to 0 in mp_obj_is_true.

Instead of converting to a small-int at runtime this can be done at compile
time, then we only have a simple comparison during runtime.  This reduces
code size on some ports (e.g -4 on qemu-arm, -52 on unix nanbox), and for
others at least doesn't increase code size.
This commit is contained in:
Yonatan Goldschmidt 2019-06-04 20:14:41 +03:00 committed by Damien George
parent faf3d3e9e9
commit 7cf26ca4bd

View File

@ -113,7 +113,7 @@ bool mp_obj_is_true(mp_obj_t arg) {
} else if (arg == mp_const_none) {
return 0;
} else if (mp_obj_is_small_int(arg)) {
if (MP_OBJ_SMALL_INT_VALUE(arg) == 0) {
if (arg == MP_OBJ_NEW_SMALL_INT(0)) {
return 0;
} else {
return 1;