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:
@@ -911,6 +911,13 @@ class RawCode(object):
|
||||
raw_code_type = "mp_raw_code_t"
|
||||
else:
|
||||
raw_code_type = "mp_raw_code_truncated_t"
|
||||
|
||||
empty_children = len(self.children) == 0 and prelude_ptr is None
|
||||
generate_minimal = self.code_kind == MP_CODE_BYTECODE and empty_children
|
||||
|
||||
if generate_minimal:
|
||||
print("#if MICROPY_PERSISTENT_CODE_SAVE")
|
||||
|
||||
print("static const %s proto_fun_%s = {" % (raw_code_type, self.escaped_name))
|
||||
print(" .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0,")
|
||||
print(" .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1,")
|
||||
@@ -961,6 +968,11 @@ class RawCode(object):
|
||||
print(" .asm_type_sig = %u," % type_sig)
|
||||
print("};")
|
||||
|
||||
if generate_minimal:
|
||||
print("#else")
|
||||
print("#define proto_fun_%s fun_data_%s[0]" % (self.escaped_name, self.escaped_name))
|
||||
print("#endif")
|
||||
|
||||
global raw_code_count, raw_code_content
|
||||
raw_code_count += 1
|
||||
raw_code_content += 4 * 4
|
||||
|
||||
Reference in New Issue
Block a user