From b7f7c655ed4b54d9ff8ec04908199d04d38b7528 Mon Sep 17 00:00:00 2001 From: Dave Hylands Date: Tue, 26 Aug 2014 12:44:46 -0700 Subject: Make int(b'123') work properly. --- py/obj.h | 1 + 1 file changed, 1 insertion(+) (limited to 'py/obj.h') diff --git a/py/obj.h b/py/obj.h index 26a387a2f..4f32a808f 100644 --- a/py/obj.h +++ b/py/obj.h @@ -74,6 +74,7 @@ typedef struct _mp_obj_base_t mp_obj_base_t; #define MP_OBJ_IS_TYPE(o, t) (MP_OBJ_IS_OBJ(o) && (((mp_obj_base_t*)(o))->type == (t))) // this does not work for checking int, str or fun; use below macros for that #define MP_OBJ_IS_INT(o) (MP_OBJ_IS_SMALL_INT(o) || MP_OBJ_IS_TYPE(o, &mp_type_int)) #define MP_OBJ_IS_STR(o) (MP_OBJ_IS_QSTR(o) || MP_OBJ_IS_TYPE(o, &mp_type_str)) +#define MP_OBJ_IS_STR_OR_BYTES(o) (MP_OBJ_IS_STR(o) || MP_OBJ_IS_TYPE(o, &mp_type_bytes)) #define MP_OBJ_IS_FUN(o) (MP_OBJ_IS_OBJ(o) && (((mp_obj_base_t*)(o))->type->binary_op == mp_obj_fun_binary_op)) #define MP_OBJ_SMALL_INT_VALUE(o) (((mp_int_t)(o)) >> 1) -- cgit v1.2.3 From a75b02ea9be41c27b87fd80ad37e7c26b4583fad Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 27 Aug 2014 09:20:30 +0100 Subject: py: Improve efficiency of MP_OBJ_IS_STR_OR_BYTES. Saves ROM (16 on stmhal, 240 on 64-bit unix) and should be quicker since there is 1 less branch. --- py/obj.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'py/obj.h') diff --git a/py/obj.h b/py/obj.h index 4f32a808f..7bf00d4de 100644 --- a/py/obj.h +++ b/py/obj.h @@ -74,7 +74,7 @@ typedef struct _mp_obj_base_t mp_obj_base_t; #define MP_OBJ_IS_TYPE(o, t) (MP_OBJ_IS_OBJ(o) && (((mp_obj_base_t*)(o))->type == (t))) // this does not work for checking int, str or fun; use below macros for that #define MP_OBJ_IS_INT(o) (MP_OBJ_IS_SMALL_INT(o) || MP_OBJ_IS_TYPE(o, &mp_type_int)) #define MP_OBJ_IS_STR(o) (MP_OBJ_IS_QSTR(o) || MP_OBJ_IS_TYPE(o, &mp_type_str)) -#define MP_OBJ_IS_STR_OR_BYTES(o) (MP_OBJ_IS_STR(o) || MP_OBJ_IS_TYPE(o, &mp_type_bytes)) +#define MP_OBJ_IS_STR_OR_BYTES(o) (MP_OBJ_IS_QSTR(o) || (MP_OBJ_IS_OBJ(o) && ((mp_obj_base_t*)(o))->type->binary_op == mp_obj_str_binary_op)) #define MP_OBJ_IS_FUN(o) (MP_OBJ_IS_OBJ(o) && (((mp_obj_base_t*)(o))->type->binary_op == mp_obj_fun_binary_op)) #define MP_OBJ_SMALL_INT_VALUE(o) (((mp_int_t)(o)) >> 1) -- cgit v1.2.3