summaryrefslogtreecommitdiff
path: root/tools/mpy-tool.py
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2022-04-08 14:05:23 +1000
committerDamien George <damien@micropython.org>2022-04-14 23:52:14 +1000
commit40d431d1bbb7928ab399bf892e90cf232a83e2b9 (patch)
tree4566bc835f209ee5a3847e61610b9aeac47081b5 /tools/mpy-tool.py
parente647966fc919cc4519b84a36960e983f70b4cdca (diff)
tools/mpy-tool.py: Optimise freezing of str when str data is a qstr.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tools/mpy-tool.py')
-rwxr-xr-xtools/mpy-tool.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py
index e3a812ebe..f4a8ef642 100755
--- a/tools/mpy-tool.py
+++ b/tools/mpy-tool.py
@@ -478,6 +478,12 @@ class GlobalQStrList:
def get_by_index(self, i):
return self.qstrs[i]
+ def find_by_str(self, s):
+ for q in self.qstrs:
+ if q is not None and q.str == s:
+ return q
+ return None
+
class MPFunTable:
def __repr__(self):
@@ -633,6 +639,9 @@ class CompiledModule:
else:
return "MP_ROM_PTR(&mp_const_empty_bytes_obj)"
if is_str_type(obj):
+ q = global_qstrs.find_by_str(obj)
+ if q:
+ return "MP_ROM_QSTR(%s)" % q.qstr_id
obj = bytes_cons(obj, "utf8")
obj_type = "mp_type_str"
else: