py/runtime: Convert mp_uint_t to size_t where appropriate.
This commit is contained in:
parent
a937750ceb
commit
4e3bac2e42
@ -86,7 +86,7 @@ mp_obj_t mp_convert_native_to_obj(mp_uint_t val, mp_uint_t type) {
|
||||
|
||||
// wrapper that accepts n_args and n_kw in one argument
|
||||
// (native emitter can only pass at most 3 arguments to a function)
|
||||
mp_obj_t mp_native_call_function_n_kw(mp_obj_t fun_in, mp_uint_t n_args_kw, const mp_obj_t *args) {
|
||||
mp_obj_t mp_native_call_function_n_kw(mp_obj_t fun_in, size_t n_args_kw, const mp_obj_t *args) {
|
||||
return mp_call_function_n_kw(fun_in, n_args_kw & 0xff, (n_args_kw >> 8) & 0xff, args);
|
||||
}
|
||||
|
||||
|
30
py/runtime.c
30
py/runtime.c
@ -301,7 +301,7 @@ mp_obj_t mp_binary_op(mp_uint_t op, mp_obj_t lhs, mp_obj_t rhs) {
|
||||
}
|
||||
} else if (MP_OBJ_IS_TYPE(rhs, &mp_type_tuple)) {
|
||||
mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(rhs);
|
||||
for (mp_uint_t i = 0; i < tuple->len; i++) {
|
||||
for (size_t i = 0; i < tuple->len; i++) {
|
||||
rhs = tuple->items[i];
|
||||
if (!mp_obj_is_exception_type(rhs)) {
|
||||
goto unsupported_op;
|
||||
@ -580,7 +580,7 @@ mp_obj_t mp_call_function_2(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2) {
|
||||
}
|
||||
|
||||
// args contains, eg: arg0 arg1 key0 value0 key1 value1
|
||||
mp_obj_t mp_call_function_n_kw(mp_obj_t fun_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
|
||||
mp_obj_t mp_call_function_n_kw(mp_obj_t fun_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
// TODO improve this: fun object can specify its type and we parse here the arguments,
|
||||
// passing to the function arrays of fixed and keyword arguments
|
||||
|
||||
@ -604,7 +604,7 @@ mp_obj_t mp_call_function_n_kw(mp_obj_t fun_in, mp_uint_t n_args, mp_uint_t n_kw
|
||||
|
||||
// args contains: fun self/NULL arg(0) ... arg(n_args-2) arg(n_args-1) kw_key(0) kw_val(0) ... kw_key(n_kw-1) kw_val(n_kw-1)
|
||||
// if n_args==0 and n_kw==0 then there are only fun and self/NULL
|
||||
mp_obj_t mp_call_method_n_kw(mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
|
||||
mp_obj_t mp_call_method_n_kw(size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
DEBUG_OP_printf("call method (fun=%p, self=%p, n_args=" UINT_FMT ", n_kw=" UINT_FMT ", args=%p)\n", args[0], args[1], n_args, n_kw, args);
|
||||
int adjust = (args[1] == MP_OBJ_NULL) ? 0 : 1;
|
||||
return mp_call_function_n_kw(args[0], n_args + adjust, n_kw, args + 2 - adjust);
|
||||
@ -614,7 +614,7 @@ mp_obj_t mp_call_method_n_kw(mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *a
|
||||
#if !MICROPY_STACKLESS
|
||||
STATIC
|
||||
#endif
|
||||
void mp_call_prepare_args_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const mp_obj_t *args, mp_call_args_t *out_args) {
|
||||
void mp_call_prepare_args_n_kw_var(bool have_self, size_t n_args_n_kw, const mp_obj_t *args, mp_call_args_t *out_args) {
|
||||
mp_obj_t fun = *args++;
|
||||
mp_obj_t self = MP_OBJ_NULL;
|
||||
if (have_self) {
|
||||
@ -724,7 +724,7 @@ void mp_call_prepare_args_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const
|
||||
// dictionary
|
||||
mp_map_t *map = mp_obj_dict_get_map(kw_dict);
|
||||
assert(args2_len + 2 * map->used <= args2_alloc); // should have enough, since kw_dict_len is in this case hinted correctly above
|
||||
for (mp_uint_t i = 0; i < map->alloc; i++) {
|
||||
for (size_t i = 0; i < map->alloc; i++) {
|
||||
if (MP_MAP_SLOT_IS_FILLED(map, i)) {
|
||||
// the key must be a qstr, so intern it if it's a string
|
||||
mp_obj_t key = map->table[i].key;
|
||||
@ -780,7 +780,7 @@ void mp_call_prepare_args_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const
|
||||
out_args->n_alloc = args2_alloc;
|
||||
}
|
||||
|
||||
mp_obj_t mp_call_method_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const mp_obj_t *args) {
|
||||
mp_obj_t mp_call_method_n_kw_var(bool have_self, size_t n_args_n_kw, const mp_obj_t *args) {
|
||||
mp_call_args_t out_args;
|
||||
mp_call_prepare_args_n_kw_var(have_self, n_args_n_kw, args, &out_args);
|
||||
|
||||
@ -791,7 +791,7 @@ mp_obj_t mp_call_method_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const mp
|
||||
}
|
||||
|
||||
// unpacked items are stored in reverse order into the array pointed to by items
|
||||
void mp_unpack_sequence(mp_obj_t seq_in, mp_uint_t num, mp_obj_t *items) {
|
||||
void mp_unpack_sequence(mp_obj_t seq_in, size_t num, mp_obj_t *items) {
|
||||
mp_uint_t seq_len;
|
||||
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple) || MP_OBJ_IS_TYPE(seq_in, &mp_type_list)) {
|
||||
mp_obj_t *seq_items;
|
||||
@ -805,7 +805,7 @@ void mp_unpack_sequence(mp_obj_t seq_in, mp_uint_t num, mp_obj_t *items) {
|
||||
} else if (seq_len > num) {
|
||||
goto too_long;
|
||||
}
|
||||
for (mp_uint_t i = 0; i < num; i++) {
|
||||
for (size_t i = 0; i < num; i++) {
|
||||
items[i] = seq_items[num - 1 - i];
|
||||
}
|
||||
} else {
|
||||
@ -841,9 +841,9 @@ too_long:
|
||||
}
|
||||
|
||||
// unpacked items are stored in reverse order into the array pointed to by items
|
||||
void mp_unpack_ex(mp_obj_t seq_in, mp_uint_t num_in, mp_obj_t *items) {
|
||||
mp_uint_t num_left = num_in & 0xff;
|
||||
mp_uint_t num_right = (num_in >> 8) & 0xff;
|
||||
void mp_unpack_ex(mp_obj_t seq_in, size_t num_in, mp_obj_t *items) {
|
||||
size_t num_left = num_in & 0xff;
|
||||
size_t num_right = (num_in >> 8) & 0xff;
|
||||
DEBUG_OP_printf("unpack ex " UINT_FMT " " UINT_FMT "\n", num_left, num_right);
|
||||
mp_uint_t seq_len;
|
||||
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple) || MP_OBJ_IS_TYPE(seq_in, &mp_type_list)) {
|
||||
@ -861,11 +861,11 @@ void mp_unpack_ex(mp_obj_t seq_in, mp_uint_t num_in, mp_obj_t *items) {
|
||||
if (seq_len < num_left + num_right) {
|
||||
goto too_short;
|
||||
}
|
||||
for (mp_uint_t i = 0; i < num_right; i++) {
|
||||
for (size_t i = 0; i < num_right; i++) {
|
||||
items[i] = seq_items[seq_len - 1 - i];
|
||||
}
|
||||
items[num_right] = mp_obj_new_list(seq_len - num_left - num_right, seq_items + num_left);
|
||||
for (mp_uint_t i = 0; i < num_left; i++) {
|
||||
for (size_t i = 0; i < num_left; i++) {
|
||||
items[num_right + 1 + i] = seq_items[num_left - 1 - i];
|
||||
}
|
||||
} else {
|
||||
@ -890,7 +890,7 @@ void mp_unpack_ex(mp_obj_t seq_in, mp_uint_t num_in, mp_obj_t *items) {
|
||||
goto too_short;
|
||||
}
|
||||
items[num_right] = MP_OBJ_FROM_PTR(rest);
|
||||
for (mp_uint_t i = 0; i < num_right; i++) {
|
||||
for (size_t i = 0; i < num_right; i++) {
|
||||
items[num_right - 1 - i] = rest->items[rest->len - num_right + i];
|
||||
}
|
||||
mp_obj_list_set_len(MP_OBJ_FROM_PTR(rest), rest->len - num_right);
|
||||
@ -1350,7 +1350,7 @@ void mp_import_all(mp_obj_t module) {
|
||||
|
||||
// TODO: Support __all__
|
||||
mp_map_t *map = mp_obj_dict_get_map(MP_OBJ_FROM_PTR(mp_obj_module_get_globals(module)));
|
||||
for (mp_uint_t i = 0; i < map->alloc; i++) {
|
||||
for (size_t i = 0; i < map->alloc; i++) {
|
||||
if (MP_MAP_SLOT_IS_FILLED(map, i)) {
|
||||
qstr name = MP_OBJ_QSTR_VALUE(map->table[i].key);
|
||||
if (*qstr_str(name) != '_') {
|
||||
|
16
py/runtime.h
16
py/runtime.h
@ -92,9 +92,9 @@ mp_obj_t mp_binary_op(mp_uint_t op, mp_obj_t lhs, mp_obj_t rhs);
|
||||
mp_obj_t mp_call_function_0(mp_obj_t fun);
|
||||
mp_obj_t mp_call_function_1(mp_obj_t fun, mp_obj_t arg);
|
||||
mp_obj_t mp_call_function_2(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2);
|
||||
mp_obj_t mp_call_function_n_kw(mp_obj_t fun, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_call_method_n_kw(mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_call_method_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_call_function_n_kw(mp_obj_t fun, size_t n_args, size_t n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_call_method_n_kw(size_t n_args, size_t n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_call_method_n_kw_var(bool have_self, size_t n_args_n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_call_method_self_n_kw(mp_obj_t meth, mp_obj_t self, size_t n_args, size_t n_kw, const mp_obj_t *args);
|
||||
// Call function and catch/dump exception - for Python callbacks from C code
|
||||
void mp_call_function_1_protected(mp_obj_t fun, mp_obj_t arg);
|
||||
@ -102,7 +102,7 @@ void mp_call_function_2_protected(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2);
|
||||
|
||||
typedef struct _mp_call_args_t {
|
||||
mp_obj_t fun;
|
||||
mp_uint_t n_args, n_kw, n_alloc;
|
||||
size_t n_args, n_kw, n_alloc;
|
||||
mp_obj_t *args;
|
||||
} mp_call_args_t;
|
||||
|
||||
@ -111,11 +111,11 @@ typedef struct _mp_call_args_t {
|
||||
// prepares argument array suitable for passing to ->call() method of a
|
||||
// function object (and mp_call_function_n_kw()).
|
||||
// (Only needed in stackless mode.)
|
||||
void mp_call_prepare_args_n_kw_var(bool have_self, mp_uint_t n_args_n_kw, const mp_obj_t *args, mp_call_args_t *out_args);
|
||||
void mp_call_prepare_args_n_kw_var(bool have_self, size_t n_args_n_kw, const mp_obj_t *args, mp_call_args_t *out_args);
|
||||
#endif
|
||||
|
||||
void mp_unpack_sequence(mp_obj_t seq, mp_uint_t num, mp_obj_t *items);
|
||||
void mp_unpack_ex(mp_obj_t seq, mp_uint_t num, mp_obj_t *items);
|
||||
void mp_unpack_sequence(mp_obj_t seq, size_t num, mp_obj_t *items);
|
||||
void mp_unpack_ex(mp_obj_t seq, size_t num, mp_obj_t *items);
|
||||
mp_obj_t mp_store_map(mp_obj_t map, mp_obj_t key, mp_obj_t value);
|
||||
mp_obj_t mp_load_attr(mp_obj_t base, qstr attr);
|
||||
void mp_convert_member_lookup(mp_obj_t obj, const mp_obj_type_t *type, mp_obj_t member, mp_obj_t *dest);
|
||||
@ -155,7 +155,7 @@ NORETURN void mp_exc_recursion_depth(void);
|
||||
// helper functions for native/viper code
|
||||
mp_uint_t mp_convert_obj_to_native(mp_obj_t obj, mp_uint_t type);
|
||||
mp_obj_t mp_convert_native_to_obj(mp_uint_t val, mp_uint_t type);
|
||||
mp_obj_t mp_native_call_function_n_kw(mp_obj_t fun_in, mp_uint_t n_args_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_native_call_function_n_kw(mp_obj_t fun_in, size_t n_args_kw, const mp_obj_t *args);
|
||||
void mp_native_raise(mp_obj_t o);
|
||||
|
||||
#define mp_sys_path (MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_sys_path_obj)))
|
||||
|
Loading…
Reference in New Issue
Block a user