mercurial/revset.py
changeset 22670 44dce874de97
parent 22669 00c8abe64cf3
child 22686 2717dcff7be1
equal deleted inserted replaced
22669:00c8abe64cf3 22670:44dce874de97
  2653         self._cache[x] = False
  2653         self._cache[x] = False
  2654         return False
  2654         return False
  2655 
  2655 
  2656     def __iter__(self):
  2656     def __iter__(self):
  2657         if self._finished:
  2657         if self._finished:
  2658             for x in self._genlist:
  2658             return iter(self._genlist)
  2659                 yield x
       
  2660             return
       
  2661 
  2659 
  2662         # We have to use this complex iteration strategy to allow multiple
  2660         # We have to use this complex iteration strategy to allow multiple
  2663         # iterations at the same time. We need to be able to catch revision
  2661         # iterations at the same time. We need to be able to catch revision
  2664         # removed from `consumegen` and added to genlist in another instance.
  2662         # removed from `consumegen` and added to genlist in another instance.
  2665         #
  2663         #
  2666         # Getting rid of it would provide an about 15% speed up on this
  2664         # Getting rid of it would provide an about 15% speed up on this
  2667         # iteration.
  2665         # iteration.
  2668         i = 0
       
  2669         genlist = self._genlist
  2666         genlist = self._genlist
  2670         nextrev = self._consumegen().next
  2667         nextrev = self._consumegen().next
  2671         _len = len # cache global lookup
  2668         _len = len # cache global lookup
  2672         while True:
  2669         def gen():
  2673             if i < _len(genlist):
  2670             i = 0
  2674                 yield genlist[i]
  2671             while True:
  2675             else:
  2672                 if i < _len(genlist):
  2676                 yield nextrev()
  2673                     yield genlist[i]
  2677             i += 1
  2674                 else:
       
  2675                     yield nextrev()
       
  2676                 i += 1
       
  2677         return gen()
  2678 
  2678 
  2679     def _consumegen(self):
  2679     def _consumegen(self):
  2680         cache = self._cache
  2680         cache = self._cache
  2681         genlist = self._genlist.append
  2681         genlist = self._genlist.append
  2682         for item in self._gen:
  2682         for item in self._gen: