py: Add support for 64-bit NaN-boxing object model, on 32-bit machine.
To use, put the following in mpconfigport.h:
#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_D)
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE)
typedef int64_t mp_int_t;
typedef uint64_t mp_uint_t;
#define UINT_FMT "%llu"
#define INT_FMT "%lld"
Currently does not work with native emitter enabled.
diff --git a/py/objfloat.c b/py/objfloat.c
index c9e3ddd..051c0f6 100644
--- a/py/objfloat.c
+++ b/py/objfloat.c
@@ -39,7 +39,7 @@
#include <math.h>
#include "py/formatfloat.h"
-#if MICROPY_OBJ_REPR != MICROPY_OBJ_REPR_C
+#if MICROPY_OBJ_REPR != MICROPY_OBJ_REPR_C && MICROPY_OBJ_REPR != MICROPY_OBJ_REPR_D
typedef struct _mp_obj_float_t {
mp_obj_base_t base;
@@ -125,7 +125,7 @@
.binary_op = float_binary_op,
};
-#if MICROPY_OBJ_REPR != MICROPY_OBJ_REPR_C
+#if MICROPY_OBJ_REPR != MICROPY_OBJ_REPR_C && MICROPY_OBJ_REPR != MICROPY_OBJ_REPR_D
mp_obj_t mp_obj_new_float(mp_float_t value) {
mp_obj_float_t *o = m_new(mp_obj_float_t, 1);