tools/mpy-tool.py: Intern more strings when freezing.

Signed-off-by: Damien George <damien@micropython.org>
diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py
index f4a8ef6..3ebbdd1 100755
--- a/tools/mpy-tool.py
+++ b/tools/mpy-tool.py
@@ -62,6 +62,11 @@
 sys.path.append(sys.path[0] + "/../py")
 import makeqstrdata as qstrutil
 
+# Threshold of str length below which it will be turned into a qstr when freezing.
+# This helps to reduce frozen code size because qstrs are more efficient to encode
+# as objects than full mp_obj_str_t instances.
+PERSISTENT_STR_INTERN_THRESHOLD = 25
+
 
 class MPYReadError(Exception):
     def __init__(self, filename, msg):
@@ -1187,6 +1192,9 @@
             reader.read_byte()  # read and discard null terminator
         if obj_type == MP_PERSISTENT_OBJ_STR:
             obj = str_cons(buf, "utf8")
+            if len(obj) < PERSISTENT_STR_INTERN_THRESHOLD:
+                if not global_qstrs.find_by_str(obj):
+                    global_qstrs.add(obj)
         elif obj_type == MP_PERSISTENT_OBJ_BYTES:
             obj = buf
         elif obj_type == MP_PERSISTENT_OBJ_INT: