# HG changeset patch
# User Joerg Sonnenberger <joerg@bec.de>
# Date 1601943674 -7200
#      Tue Oct 06 02:21:14 2020 +0200
# 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 --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -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]