# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 2011-04-30 13:05:36 # Node ID 14fac6c0536adcff0c665691863f19f9f9afca05 # Parent 8f7132fa5e599ae75ebe62394a07825202a991c7 pure bdiff: don't use a generator Generators are slow, and currently defeat the PyPy JIT. diff --git a/mercurial/pure/bdiff.py b/mercurial/pure/bdiff.py --- a/mercurial/pure/bdiff.py +++ b/mercurial/pure/bdiff.py @@ -19,6 +19,7 @@ def splitnewlines(text): def _normalizeblocks(a, b, blocks): prev = None + r = [] for curr in blocks: if prev is None: prev = curr @@ -40,9 +41,10 @@ def _normalizeblocks(a, b, blocks): while (b1end + shift < b2end and a[a1end + shift] == b[b1end + shift]): shift += 1 - yield a1, b1, l1 + shift + r.append((a1, b1, l1 + shift)) prev = a2 + shift, b2 + shift, l2 - shift - yield prev + r.append(prev) + return r def bdiff(a, b): a = str(a).splitlines(True)