Author: Hakan Ardo <[email protected]>
Branch:
Changeset: r50040:e4a0b9e4d23b
Date: 2011-12-01 16:56 +0100
http://bitbucket.org/pypy/pypy/changeset/e4a0b9e4d23b/
Log: make optimizeopt kill same_as
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py
b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -491,6 +491,9 @@
self.pure(rop.CAST_PTR_TO_INT, [op.result], op.getarg(0))
self.emit_operation(op)
+ def optimize_SAME_AS(self, op):
+ self.make_equal_to(op.result, self.getvalue(op.getarg(0)))
+
dispatch_opt = make_dispatcher_method(OptRewrite, 'optimize_',
default=OptRewrite.emit_operation)
optimize_guards = _findall(OptRewrite, 'optimize_', 'GUARD')
diff --git a/pypy/jit/metainterp/test/test_virtual.py
b/pypy/jit/metainterp/test/test_virtual.py
--- a/pypy/jit/metainterp/test/test_virtual.py
+++ b/pypy/jit/metainterp/test/test_virtual.py
@@ -612,7 +612,7 @@
return node.value
res = self.meta_interp(f, [48, 3], policy=StopAtXPolicy(externfn))
assert res == f(48, 3)
- self.check_loop_count(3)
+ self.check_loop_count(5)
res = self.meta_interp(f, [40, 3], policy=StopAtXPolicy(externfn))
assert res == f(40, 3)
self.check_loop_count(3)
@@ -761,6 +761,27 @@
res = self.meta_interp(f, [0x1F, 0x11])
assert res == f(0x1F, 0x11)
+ def test_duplicated_virtual(self):
+ myjitdriver = JitDriver(greens = [], reds = ['n', 'node1', 'node2'])
+ def f(n):
+ node1 = self._new()
+ node1.value = 0
+ node2 = self._new()
+ node2.value = 1
+ while n > 0:
+ myjitdriver.jit_merge_point(n=n, node1=node1, node2=node2)
+ next = self._new()
+ next.value = node1.value + node2.value + n
+ node1 = next
+ node2 = next
+ n -= 1
+ return node1.value
+ res = self.meta_interp(f, [10])
+ assert res == f(10)
+ self.check_resops(new_with_vtable=0, new=0)
+
+
+
class VirtualMiscTests:
def test_multiple_equal_virtuals(self):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit