diff -r 5f8400efca0b -r d642f176df52 mercurial/revset.py --- a/mercurial/revset.py Tue Mar 11 16:59:42 2014 -0700 +++ b/mercurial/revset.py Thu Mar 13 14:51:04 2014 -0700 @@ -2353,8 +2353,9 @@ return self._iter def __iter__(self): - for r in self._iterator(): - yield r + if self._genlist: + return iter(self._genlist) + return iter(self._iterator()) def __contains__(self, x): return x in self._r1 or x in self._r2