aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2022-06-07 15:00:00 +1000
committerDamien George <damien@micropython.org>2022-06-07 16:55:18 +1000
commit2fb413b265436087a64c63d4bc1a003c010a037e (patch)
tree6e6b33d4a4d62ab0d794a6de1f18e6985df08256
parent1d143cec63f8dabfac5fed50fe4cfdabd414385e (diff)
tools/mpy-tool.py: Improve generated frozen identifiers.
Frozen identifiers now include their full name hierarchy, eg their class name. This makes it easier to understand the generated code. Signed-off-by: Damien George <damien@micropython.org>
-rwxr-xr-xtools/mpy-tool.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py
index cc30eafec..31212fd5b 100755
--- a/tools/mpy-tool.py
+++ b/tools/mpy-tool.py
@@ -849,7 +849,7 @@ class RawCode(object):
MP_CODE_NATIVE_ASM: "MP_CODE_NATIVE_ASM",
}
- def __init__(self, cm_escaped_name, qstr_table, fun_data, prelude_offset, code_kind):
+ def __init__(self, parent_name, qstr_table, fun_data, prelude_offset, code_kind):
self.qstr_table = qstr_table
self.fun_data = fun_data
self.prelude_offset = prelude_offset
@@ -872,7 +872,7 @@ class RawCode(object):
else:
self.simple_name = self.qstr_table[0]
- escaped_name = cm_escaped_name + "_" + self.simple_name.qstr_esc
+ escaped_name = parent_name + "_" + self.simple_name.qstr_esc
# make sure the escaped name is unique
i = 2
@@ -956,10 +956,10 @@ class RawCode(object):
class RawCodeBytecode(RawCode):
- def __init__(self, cm_escaped_name, qstr_table, obj_table, fun_data):
+ def __init__(self, parent_name, qstr_table, obj_table, fun_data):
self.obj_table = obj_table
super(RawCodeBytecode, self).__init__(
- cm_escaped_name, qstr_table, fun_data, 0, MP_CODE_BYTECODE
+ parent_name, qstr_table, fun_data, 0, MP_CODE_BYTECODE
)
def disassemble(self):
@@ -1035,7 +1035,7 @@ class RawCodeBytecode(RawCode):
class RawCodeNative(RawCode):
def __init__(
self,
- cm_escaped_name,
+ parent_name,
qstr_table,
kind,
fun_data,
@@ -1045,7 +1045,7 @@ class RawCodeNative(RawCode):
type_sig,
):
super(RawCodeNative, self).__init__(
- cm_escaped_name, qstr_table, fun_data, prelude_offset, kind
+ parent_name, qstr_table, fun_data, prelude_offset, kind
)
if kind in (MP_CODE_NATIVE_VIPER, MP_CODE_NATIVE_ASM):
@@ -1241,7 +1241,7 @@ def read_obj(reader, segments):
return obj
-def read_raw_code(reader, cm_escaped_name, qstr_table, obj_table, segments):
+def read_raw_code(reader, parent_name, qstr_table, obj_table, segments):
# Read raw code header.
kind_len = reader.read_uint()
kind = (kind_len & 3) + MP_CODE_BYTECODE
@@ -1255,7 +1255,7 @@ def read_raw_code(reader, cm_escaped_name, qstr_table, obj_table, segments):
if kind == MP_CODE_BYTECODE:
# Create bytecode raw code.
- rc = RawCodeBytecode(cm_escaped_name, qstr_table, obj_table, fun_data)
+ rc = RawCodeBytecode(parent_name, qstr_table, obj_table, fun_data)
else:
# Create native raw code.
native_scope_flags = 0
@@ -1290,7 +1290,7 @@ def read_raw_code(reader, cm_escaped_name, qstr_table, obj_table, segments):
native_type_sig = reader.read_uint()
rc = RawCodeNative(
- cm_escaped_name,
+ parent_name,
qstr_table,
kind,
fun_data,
@@ -1309,11 +1309,14 @@ def read_raw_code(reader, cm_escaped_name, qstr_table, obj_table, segments):
# Read children, if there are any.
rc.children = []
if has_children:
+ # Make a pretty parent name (otherwise all identifiers will include _lt_module_gt_).
+ if not rc.escaped_name.endswith("_lt_module_gt_"):
+ parent_name = rc.escaped_name
+
+ # Read all the child raw codes.
n_children = reader.read_uint()
for _ in range(n_children):
- rc.children.append(
- read_raw_code(reader, cm_escaped_name, qstr_table, obj_table, segments)
- )
+ rc.children.append(read_raw_code(reader, parent_name, qstr_table, obj_table, segments))
return rc