[varStore] Make optimize() stable

Before, calling optimize() on its own output could generate different
result. I think it's stable now.
This commit is contained in:
Behdad Esfahbod 2023-05-24 17:44:27 -06:00
parent 6b20edf1fb
commit 47813b217c

View File

@ -385,6 +385,9 @@ class _Encoding(object):
gain = property(get_gain)
def gain_sort_key(self):
return self.gain, self.chars
def sort_key(self):
return self.width, self.chars
@ -572,7 +575,7 @@ def VarStore_optimize(self, use_NO_VARIATION_INDEX=True):
# For each encoding that is possibly to be merged, find the best match
# in the decided encodings, and record that.
todo.sort(key=_Encoding.get_gain, reverse=True)
todo.sort(key=_Encoding.gain_sort_key, reverse=True)
for encoding in todo:
encoding._find_yourself_best_new_encoding(done_by_width)