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
--- 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]