summaryrefslogtreecommitdiff
path: root/py/objfun.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/objfun.c')
-rw-r--r--py/objfun.c66
1 files changed, 0 insertions, 66 deletions
diff --git a/py/objfun.c b/py/objfun.c
index e7f2b79ad..b03d4194f 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -416,72 +416,6 @@ mp_obj_t mp_obj_new_fun_native(mp_obj_t def_args_in, mp_obj_t def_kw_args, const
#endif // MICROPY_EMIT_NATIVE
/******************************************************************************/
-/* viper functions */
-
-#if MICROPY_EMIT_NATIVE
-
-typedef struct _mp_obj_fun_viper_t {
- mp_obj_base_t base;
- size_t n_args;
- void *fun_data; // GC must be able to trace this pointer
- mp_uint_t type_sig;
-} mp_obj_fun_viper_t;
-
-typedef mp_uint_t (*viper_fun_0_t)(void);
-typedef mp_uint_t (*viper_fun_1_t)(mp_uint_t);
-typedef mp_uint_t (*viper_fun_2_t)(mp_uint_t, mp_uint_t);
-typedef mp_uint_t (*viper_fun_3_t)(mp_uint_t, mp_uint_t, mp_uint_t);
-typedef mp_uint_t (*viper_fun_4_t)(mp_uint_t, mp_uint_t, mp_uint_t, mp_uint_t);
-
-STATIC mp_obj_t fun_viper_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
- mp_obj_fun_viper_t *self = self_in;
-
- mp_arg_check_num(n_args, n_kw, self->n_args, self->n_args, false);
-
- void *fun = MICROPY_MAKE_POINTER_CALLABLE(self->fun_data);
-
- mp_uint_t ret;
- if (n_args == 0) {
- ret = ((viper_fun_0_t)fun)();
- } else if (n_args == 1) {
- ret = ((viper_fun_1_t)fun)(mp_convert_obj_to_native(args[0], self->type_sig >> 4));
- } else if (n_args == 2) {
- ret = ((viper_fun_2_t)fun)(mp_convert_obj_to_native(args[0], self->type_sig >> 4), mp_convert_obj_to_native(args[1], self->type_sig >> 8));
- } else if (n_args == 3) {
- ret = ((viper_fun_3_t)fun)(mp_convert_obj_to_native(args[0], self->type_sig >> 4), mp_convert_obj_to_native(args[1], self->type_sig >> 8), mp_convert_obj_to_native(args[2], self->type_sig >> 12));
- } else {
- // compiler allows at most 4 arguments
- assert(n_args == 4);
- ret = ((viper_fun_4_t)fun)(
- mp_convert_obj_to_native(args[0], self->type_sig >> 4),
- mp_convert_obj_to_native(args[1], self->type_sig >> 8),
- mp_convert_obj_to_native(args[2], self->type_sig >> 12),
- mp_convert_obj_to_native(args[3], self->type_sig >> 16)
- );
- }
-
- return mp_convert_native_to_obj(ret, self->type_sig);
-}
-
-STATIC const mp_obj_type_t mp_type_fun_viper = {
- { &mp_type_type },
- .name = MP_QSTR_function,
- .call = fun_viper_call,
- .unary_op = mp_generic_unary_op,
-};
-
-mp_obj_t mp_obj_new_fun_viper(size_t n_args, void *fun_data, mp_uint_t type_sig) {
- mp_obj_fun_viper_t *o = m_new_obj(mp_obj_fun_viper_t);
- o->base.type = &mp_type_fun_viper;
- o->n_args = n_args;
- o->fun_data = fun_data;
- o->type_sig = type_sig;
- return o;
-}
-
-#endif // MICROPY_EMIT_NATIVE
-
-/******************************************************************************/
/* inline assembler functions */
#if MICROPY_EMIT_INLINE_ASM