[PATCH] manifest: check 'if x is None' instead of 'if not x'

Durham Goode durham at fb.com
Sun Feb 26 18:17:31 UTC 2017


# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1488133007 28800
#      Sun Feb 26 10:16:47 2017 -0800
# Node ID a21671dd2578fea1cb58011c392f6dec16f29dc7
# Parent  88203f26ea57627cabd7cf9c4f7843661d6c43ae
manifest: check 'if x is None' instead of 'if not x'

The old code here would end up executing __len__ on a tree manifest to determine
if 'not _data' was true or not. This was very expensive on large repos. Since
this function just cares about memoization, we can just check 'if _data is None'
instead and save a bunch of time.

diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1386,7 +1386,7 @@ class manifestctx(object):
         return self._revlog().parents(self._node)
 
     def read(self):
-        if not self._data:
+        if self._data is None:
             if self._node == revlog.nullid:
                 self._data = manifestdict()
             else:
@@ -1484,7 +1484,7 @@ class treemanifestctx(object):
         return self._repo.manifestlog._revlog.dirlog(self._dir)
 
     def read(self):
-        if not self._data:
+        if self._data is None:
             rl = self._revlog()
             if self._node == revlog.nullid:
                 self._data = treemanifest()


More information about the Mercurial-devel mailing list