stablesort: use a regular dict for jumps
authorPierre-Yves David <pierre-yves.david@octobus.net>
Sun, 10 Dec 2017 03:39:56 +0100
changeset 3325 83d2a2f3dc8f
parent 3324 6ba8eaffe8f6
child 3326 8ebd31af1452
stablesort: use a regular dict for jumps This will help knowing what revision we have already queried or not.
hgext3rd/evolve/stablesort.py
--- a/hgext3rd/evolve/stablesort.py	Wed Dec 20 15:51:05 2017 +0100
+++ b/hgext3rd/evolve/stablesort.py	Sun Dec 10 03:39:56 2017 +0100
@@ -318,7 +318,7 @@
 class stablesortcache(object):
 
     def __init__(self):
-        self._jumps = collections.defaultdict(lambda: None)
+        self._jumps = {}
 
     def get(self, repo, rev, limit=None):
         result = []
@@ -330,9 +330,11 @@
         return result
 
     def getjumps(self, repo, rev):
-        if self._jumps[rev] is None:
+        if rev not in self._jumps:
             # still won't load anything if rev is not a merge
             self.get(repo, rev) # we can be smarter here
+            if rev not in self._jumps:
+                self._jumps[rev] = None
         return self._jumps[rev]
 
     def walkfrom(self, repo, head):
@@ -366,7 +368,7 @@
             previous_current_1 = current
             assert previous_current_1 is not previous_current_2
 
-            jumps = self._jumps[current]
+            jumps = self._jumps.get(current)
             if jumps is not None:
                 # we have enough cached information to directly iterate over
                 # the exclusive size.