# HG changeset patch # User Joerg Sonnenberger # Date 1601943674 -7200 # Node ID 7baf5f798ba96d97c1a593b3591704c3d1c8051e # Parent 439ce34d81e67cbafe9f5f52f00a2ce8d40be7ad revlog: pre-compute null revlog item for pure version The dynamically created tuple shows up in memory profiles and the use of nullid prevents the normal constant building to work. Differential Revision: https://phab.mercurial-scm.org/D9154 diff -r 439ce34d81e6 -r 7baf5f798ba9 mercurial/pure/parsers.py --- a/mercurial/pure/parsers.py Sun Oct 04 22:17:52 2020 -0700 +++ b/mercurial/pure/parsers.py Tue Oct 06 02:21:14 2020 +0200 @@ -37,6 +37,7 @@ indexfirst = struct.calcsize(b'Q') sizeint = struct.calcsize(b'i') indexsize = struct.calcsize(indexformatng) +nullitem = (0, 0, 0, -1, -1, -1, -1, nullid) def gettype(q): @@ -103,7 +104,7 @@ def __getitem__(self, i): if i == -1: - return (0, 0, 0, -1, -1, -1, -1, nullid) + return nullitem self._check_index(i) if i >= self._lgt: return self._extra[i - self._lgt]