mirror of
https://github.com/micropython/micropython.git
synced 2025-12-16 09:50:15 +01:00
tools/mpy-tool.py: Skip generating frozen mp_raw_code_t when possible.
This reduces frozen code size by using the bytecode directly as the `mp_proto_fun_t`. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -183,6 +183,18 @@ mp_obj_t mp_make_function_from_proto_fun(mp_proto_fun_t proto_fun, const mp_modu
|
||||
// def_kw_args must be MP_OBJ_NULL or a dict
|
||||
assert(def_args == NULL || def_args[1] == MP_OBJ_NULL || mp_obj_is_type(def_args[1], &mp_type_dict));
|
||||
|
||||
#if MICROPY_MODULE_FROZEN_MPY
|
||||
if (mp_proto_fun_is_bytecode(proto_fun)) {
|
||||
const uint8_t *bc = proto_fun;
|
||||
mp_obj_t fun = mp_obj_new_fun_bc(def_args, bc, context, NULL);
|
||||
MP_BC_PRELUDE_SIG_DECODE(bc);
|
||||
if (scope_flags & MP_SCOPE_FLAG_GENERATOR) {
|
||||
((mp_obj_base_t *)MP_OBJ_TO_PTR(fun))->type = &mp_type_gen_wrap;
|
||||
}
|
||||
return fun;
|
||||
}
|
||||
#endif
|
||||
|
||||
// the proto-function is a mp_raw_code_t
|
||||
const mp_raw_code_t *rc = proto_fun;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user