D7360: perf: make `perfrevlogindex` use the new `index.rev` api if available

marmoute (Pierre-Yves David) phabricator at mercurial-scm.org
Sat Nov 9 00:20:58 EST 2019


marmoute updated this revision to Diff 17861.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7360?vs=17783&id=17861

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7360/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7360

AFFECTED FILES
  contrib/perf.py

CHANGE DETAILS

diff --git a/contrib/perf.py b/contrib/perf.py
--- a/contrib/perf.py
+++ b/contrib/perf.py
@@ -2599,25 +2599,38 @@
                 index[rev]
 
     def resolvenode(node):
-        nodemap = getattr(revlogio.parseindex(data, inline)[0], 'nodemap', None)
-        # This only works for the C code.
-        if nodemap is None:
-            return
+        index = revlogio.parseindex(data, inline)[0]
+        rev = getattr(index, 'rev', None)
+        if rev is None:
+            nodemap = getattr(
+                revlogio.parseindex(data, inline)[0], 'nodemap', None
+            )
+            # This only works for the C code.
+            if nodemap is None:
+                return
+            rev = nodemap.__getitem__
 
         try:
-            nodemap[node]
+            rev(node)
         except error.RevlogError:
             pass
 
     def resolvenodes(nodes, count=1):
-        nodemap = getattr(revlogio.parseindex(data, inline)[0], 'nodemap', None)
-        if nodemap is None:
-            return
+        index = revlogio.parseindex(data, inline)[0]
+        rev = getattr(index, 'rev', None)
+        if rev is None:
+            nodemap = getattr(
+                revlogio.parseindex(data, inline)[0], 'nodemap', None
+            )
+            # This only works for the C code.
+            if nodemap is None:
+                return
+            rev = nodemap.__getitem__
 
         for i in range(count):
             for node in nodes:
                 try:
-                    nodemap[node]
+                    rev(node)
                 except error.RevlogError:
                     pass
 



To: marmoute, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list