diff -r eb2187ebdf8a -r 9cf65f43b49b mercurial/graphmod.py --- a/mercurial/graphmod.py Mon Sep 07 11:35:40 2015 -0700 +++ b/mercurial/graphmod.py Tue Sep 08 23:00:44 2015 +0900 @@ -260,6 +260,10 @@ for mpar in mpars: gp = gpcache.get(mpar) if gp is None: + # precompute slow query as we know reachableroots() goes + # through all revs (issue4782) + if not isinstance(revs, revset.baseset): + revs = revset.baseset(revs) gp = gpcache[mpar] = revset.reachableroots(repo, revs, [mpar]) if not gp: parents.append(mpar)