diff --git a/py/dynruntime.h b/py/dynruntime.h index d07b1dce2c..ca237656e5 100644 --- a/py/dynruntime.h +++ b/py/dynruntime.h @@ -210,6 +210,9 @@ static inline void *mp_obj_malloc_helper_dyn(size_t num_bytes, const mp_obj_type #define mp_arg_check_num(n_args, n_kw, n_args_min, n_args_max, takes_kw) \ (mp_fun_table.arg_check_num_sig((n_args), (n_kw), MP_OBJ_FUN_MAKE_SIG((n_args_min), (n_args_max), (takes_kw)))) +#define mp_arg_parse_all_kw_array(n_pos, n_kw, args, n_allowed, allowed, out_vals) \ + (mp_fun_table.arg_parse_all_kw_array((n_pos), (n_kw), (args), (n_allowed), (allowed), (out_vals))) + #define MP_DYNRUNTIME_INIT_ENTRY \ mp_obj_t old_globals = mp_fun_table.swap_globals(self->context->module.globals); \ mp_raw_code_truncated_t rc; \ diff --git a/py/nativeglue.c b/py/nativeglue.c index ba3d93f760..349c72614e 100644 --- a/py/nativeglue.c +++ b/py/nativeglue.c @@ -331,6 +331,7 @@ const mp_fun_table_t mp_fun_table = { mp_obj_get_float_to_d, mp_get_buffer, mp_get_stream_raise, + mp_arg_parse_all_kw_array, mp_binary_get_size, mp_binary_get_val_array, mp_binary_set_val_array, diff --git a/py/nativeglue.h b/py/nativeglue.h index 1fa8593345..b5a23bc943 100644 --- a/py/nativeglue.h +++ b/py/nativeglue.h @@ -156,11 +156,12 @@ typedef struct _mp_fun_table_t { double (*obj_get_float_to_d)(mp_obj_t o); bool (*get_buffer)(mp_obj_t obj, mp_buffer_info_t *bufinfo, mp_uint_t flags); const mp_stream_p_t *(*get_stream_raise)(mp_obj_t self_in, int flags); + void (*arg_parse_all_kw_array)(size_t n_pos, size_t n_kw, const mp_obj_t *args, size_t n_allowed, const mp_arg_t *allowed, mp_arg_val_t *out_vals); size_t (*binary_get_size)(char struct_type, char val_type, size_t *palign); mp_obj_t (*binary_get_val_array)(char typecode, void *p, size_t index); void (*binary_set_val_array)(char typecode, void *p, size_t index, mp_obj_t val_in); const mp_print_t *plat_print; - // The following entries start at index 70 and are referenced by tools-mpy_ld.py, + // The following entries start at index 71 and are referenced by tools-mpy_ld.py, // see constant MP_FUN_TABLE_MP_TYPE_TYPE_OFFSET. const mp_obj_type_t *type_type; const mp_obj_type_t *type_str; diff --git a/tools/mpy_ld.py b/tools/mpy_ld.py index 2e3da53eb5..572a08d16a 100755 --- a/tools/mpy_ld.py +++ b/tools/mpy_ld.py @@ -52,7 +52,7 @@ MP_SCOPE_FLAG_VIPERRELOC = 0x10 MP_SCOPE_FLAG_VIPERRODATA = 0x20 MP_SCOPE_FLAG_VIPERBSS = 0x40 MP_SMALL_INT_BITS = 31 -MP_FUN_TABLE_MP_TYPE_TYPE_OFFSET = 70 +MP_FUN_TABLE_MP_TYPE_TYPE_OFFSET = 71 # ELF constants R_386_32 = 1