aboutsummaryrefslogtreecommitdiff
path: root/py/persistentcode.c
diff options
context:
space:
mode:
authorDavid Lechner <david@pybricks.com>2022-03-23 14:29:52 -0500
committerDamien George <damien@micropython.org>2022-03-25 12:23:43 +1100
commit768879f999f4739e8507ae6013b5e9271618656e (patch)
tree025fb58f3ee7465bdb234c1fc77f9ff3ed677a40 /py/persistentcode.c
parente7f6b9f4f76142ecd554106984a8520a0ada9d03 (diff)
py/smallint: Introduce MP_SMALL_INT_BITS macro.
This adds a new MP_SMALL_INT_BITS macro that is a compile-time constant that contains the number of bits available in an MP_SMALL_INT. We can use this in place of the runtime function mp_small_int_bits(). Signed-off-by: David Lechner <david@pybricks.com>
Diffstat (limited to 'py/persistentcode.c')
-rw-r--r--py/persistentcode.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/py/persistentcode.c b/py/persistentcode.c
index 6110ae97f..f64e383a6 100644
--- a/py/persistentcode.c
+++ b/py/persistentcode.c
@@ -48,21 +48,6 @@
#define MPY_FEATURE_ARCH_DYNAMIC MPY_FEATURE_ARCH
#endif
-#if MICROPY_PERSISTENT_CODE_LOAD || (MICROPY_PERSISTENT_CODE_SAVE && !MICROPY_DYNAMIC_COMPILER)
-// The bytecode will depend on the number of bits in a small-int, and
-// this function computes that (could make it a fixed constant, but it
-// would need to be defined in mpconfigport.h).
-STATIC int mp_small_int_bits(void) {
- mp_int_t i = MP_SMALL_INT_MAX;
- int n = 1;
- while (i != 0) {
- i >>= 1;
- ++n;
- }
- return n;
-}
-#endif
-
typedef struct _bytecode_prelude_t {
uint n_state;
uint n_exc_stack;
@@ -420,7 +405,7 @@ mp_compiled_module_t mp_raw_code_load(mp_reader_t *reader, mp_module_context_t *
if (header[0] != 'M'
|| header[1] != MPY_VERSION
|| MPY_FEATURE_DECODE_FLAGS(header[2]) != MPY_FEATURE_FLAGS
- || header[3] > mp_small_int_bits()) {
+ || header[3] > MP_SMALL_INT_BITS) {
mp_raise_ValueError(MP_ERROR_TEXT("incompatible .mpy file"));
}
if (MPY_FEATURE_DECODE_ARCH(header[2]) != MP_NATIVE_ARCH_NONE) {
@@ -609,7 +594,7 @@ void mp_raw_code_save(mp_compiled_module_t *cm, mp_print_t *print) {
#if MICROPY_DYNAMIC_COMPILER
mp_dynamic_compiler.small_int_bits,
#else
- mp_small_int_bits(),
+ MP_SMALL_INT_BITS,
#endif
};
if (cm->has_native) {