[pypy-commit] pypy jit-duplicated_short_boxes: actualy do prevent short_boxes from blowing up too much
hakanardo
noreply at buildbot.pypy.org
Wed Aug 31 12:50:21 CEST 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-duplicated_short_boxes
Changeset: r46943:f299e69201a0
Date: 2011-08-31 12:49 +0200
http://bitbucket.org/pypy/pypy/changeset/f299e69201a0/
Log: actualy do prevent short_boxes from blowing up too much
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -7127,6 +7127,24 @@
"""
self.optimize_loop(ops, expected)
+ def test_exploding_duplicatipon(self):
+ ops = """
+ [i1, i2]
+ i3 = int_add(i1, i1)
+ i4 = int_add(i3, i3)
+ i5 = int_add(i4, i4)
+ i6 = int_add(i5, i5)
+ call(i6, descr=nonwritedescr)
+ jump(i1, i3)
+ """
+ expected = """
+ [i1, i3, i20, i18]
+ i26 = int_add(i20, i20)
+ call(i26, descr=nonwritedescr)
+ jump(i1, i18, i20, i18)
+ """
+ self.optimize_loop(ops, expected)
+
class TestLLtype(OptimizeOptTest, LLtypeMixin):
pass
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -531,9 +531,10 @@
allops = None
for i in range(len(op.getarglist())):
arg = op.getarg(i)
- if len(self.duplicates) > 5:
- debug_print("Refusing to duplicate short box %d times." % len(self.duplicates))
if arg in self.duplicates:
+ if len(self.duplicates[arg]) > 5:
+ debug_print("Refusing to duplicate short box %d times." % len(self.duplicates))
+ continue
if not allops:
allops = [op]
previous_ops = len(allops)
More information about the pypy-commit
mailing list