# HG changeset patch # User Martin von Zweigbergk # Date 2018-07-09 06:39:32 # Node ID 44bbc89ec5e0f4735d9ccf2f3299ad2eca0d3732 # Parent 49628742d26488511624423dc7bd5b866ea784b3 revlog: remove micro-optimization for looking up only nullid index_find_node() would call nt_find() before initializing the node tree. nt_find() would then return -2 unless the requested revision was the null revision. I can't imagine what scenario that is optimizing for, and doing the initialization earlier makes the code simpler and easier to follow, so that's what this patch does. Differential Revision: https://phab.mercurial-scm.org/D4027 diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c +++ b/mercurial/cext/revlog.c @@ -994,9 +994,6 @@ static int nt_find(indexObject *self, co if (nodelen == 20 && node[0] == '\0' && memcmp(node, nullid, 20) == 0) return -1; - if (self->nt == NULL) - return -2; - if (hex) maxlevel = nodelen > 40 ? 40 : (int)nodelen; else @@ -1133,14 +1130,14 @@ static int index_find_node(indexObject * { int rev; + if (nt_init(self) == -1) + return -3; + self->ntlookups++; rev = nt_find(self, node, nodelen, 0); if (rev >= -1) return rev; - if (nt_init(self) == -1) - return -3; - /* * For the first handful of lookups, we scan the entire index, * and cache only the matching nodes. This optimizes for cases