summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-03-02 11:01:24 +1100
committerDamien George <damien.p.george@gmail.com>2018-03-02 11:01:24 +1100
commit9884a2c712988de8c69a03a5d5be8add043f141e (patch)
treee55b2f7d6847113cb5f36fc7c4037d4822a46e9d /py
parentc607b58efe9333ab92e1b721dcd974e35a9d393e (diff)
py/objint: Remove unreachable code checking for int type in format func.
All callers of mp_obj_int_formatted() are expected to pass in a valid int object, and they do: - mp_obj_int_print() should always pass through an int object because it is the print special method for int instances. - mp_print_mp_int() checks that the argument is an int, and if not converts it to a small int. This patch saves around 20-50 bytes of code space.
Diffstat (limited to 'py')
-rw-r--r--py/objint.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/py/objint.c b/py/objint.c
index 59c58f2a6..270e16969 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -222,27 +222,26 @@ size_t mp_int_format_size(size_t num_bits, int base, const char *prefix, char co
char *mp_obj_int_formatted(char **buf, size_t *buf_size, size_t *fmt_size, mp_const_obj_t self_in,
int base, const char *prefix, char base_char, char comma) {
fmt_int_t num;
+ #if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_NONE
+ // Only have small ints; get the integer value to format.
+ num = MP_OBJ_SMALL_INT_VALUE(self_in);
+ #else
if (MP_OBJ_IS_SMALL_INT(self_in)) {
// A small int; get the integer value to format.
num = MP_OBJ_SMALL_INT_VALUE(self_in);
-#if MICROPY_LONGINT_IMPL != MICROPY_LONGINT_IMPL_NONE
- } else if (MP_OBJ_IS_TYPE(self_in, &mp_type_int)) {
+ } else {
+ assert(MP_OBJ_IS_TYPE(self_in, &mp_type_int));
// Not a small int.
-#if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_LONGLONG
+ #if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_LONGLONG
const mp_obj_int_t *self = self_in;
// Get the value to format; mp_obj_get_int truncates to mp_int_t.
num = self->val;
-#else
+ #else
// Delegate to the implementation for the long int.
return mp_obj_int_formatted_impl(buf, buf_size, fmt_size, self_in, base, prefix, base_char, comma);
-#endif
-#endif
- } else {
- // Not an int.
- **buf = '\0';
- *fmt_size = 0;
- return *buf;
+ #endif
}
+ #endif
char sign = '\0';
if (num < 0) {