revsets: backout d04aac468bf4 due to performance regressions
authorMatt Mackall <mpm@selenic.com>
Thu, 13 Mar 2014 14:34:32 -0500
changeset 20709 71df845d86cf
parent 20708 17c89e5a5627
child 20710 9c1665f36588
revsets: backout d04aac468bf4 due to performance regressions
mercurial/revset.py
--- a/mercurial/revset.py	Wed Mar 12 17:20:26 2014 -0700
+++ b/mercurial/revset.py	Thu Mar 13 14:34:32 2014 -0500
@@ -540,19 +540,18 @@
     return subset.filter(matches)
 
 def _children(repo, narrow, parentset):
+    cs = set()
     if not parentset:
-        return baseset([])
+        return baseset(cs)
     pr = repo.changelog.parentrevs
     minrev = min(parentset)
-
-    def matches(x):
-        if x <= minrev:
-            return False
-        for p in pr(x):
+    for r in narrow:
+        if r <= minrev:
+            continue
+        for p in pr(r):
             if p in parentset:
-                return True
-
-    return narrow.filter(matches)
+                cs.add(r)
+    return baseset(cs)
 
 def children(repo, subset, x):
     """``children(set)``