Author: Hakan Ardo <[email protected]>
Branch: jit-targets
Changeset: r49933:c5de3f7beba8
Date: 2011-11-28 21:00 +0100
http://bitbucket.org/pypy/pypy/changeset/c5de3f7beba8/
Log: aliasing vrituals are pointless except that it generates a crash
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
@@ -7027,6 +7027,20 @@
"""
self.optimize_loop(ops, expected)
+ def test_duplicated_aliased_virtual(self):
+ ops = """
+ [p1, p2]
+ p3 = new_with_vtable(ConstClass(node_vtable))
+ setfield_gc(p3, p3, descr=nextdescr)
+ p4 = getfield_gc(p3, descr=nextdescr)
+ jump(p3, p4)
+ """
+ expected = """
+ []
+ jump()
+ """
+ self.optimize_loop(ops, expected)
+
def test_chained_virtuals(self):
ops = """
[p0, p1]
diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py
b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -149,7 +149,7 @@
short_boxes = ShortBoxes(self.optimizer, inputargs +
constant_inputargs.keys())
for i in range(len(original_jump_args)):
- if original_jump_args[i] is not jump_args[i]:
+ if original_jump_args[i] is not jump_args[i] and not
values[i].is_virtual():
short_boxes.alias(original_jump_args[i], jump_args[i])
self.optimizer.clear_newoperations()
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit