[pypy-svn] r66225 - in pypy/branch/pyjitpl5/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Wed Jul 15 11:24:41 CEST 2009
Author: arigo
Date: Wed Jul 15 11:24:41 2009
New Revision: 66225
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimize4.py
Log:
Test and fix, of the kind "how could it ever work".
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py Wed Jul 15 11:24:41 2009
@@ -366,6 +366,7 @@
# cpu.execute_operations()).
rebuild_ops.append(op_fail)
op1 = op.clone()
+ op1.args = self.new_arguments(op1)
op1.suboperations = rebuild_ops
op.optimized = op1
return op1
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimize4.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimize4.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimize4.py Wed Jul 15 11:24:41 2009
@@ -909,6 +909,33 @@
# ____________________________________________________________
+class Q:
+ locals().update(A.__dict__) # :-)
+ inputargs = [sum]
+ ops = [
+ ResOperation('new_with_vtable', [ConstAddr(node_vtable, cpu)], n1,
+ size_of_node),
+ ResOperation('setfield_gc', [n1, sum], None, ofs_value),
+ ResOperation('getfield_gc', [n1], sum2, ofs_value),
+ ResOperation('guard_true', [sum2], None),
+ ResOperation('int_sub', [sum, ConstInt(1)], v),
+ ResOperation('jump', [v], None),
+ ]
+ set_guard(ops[-3], [sum])
+
+def test_Q_optimize_loop():
+ spec = CheckPerfectSpecializer(Loop(Q.inputargs, Q.ops), cpu=cpu)
+ spec.find_nodes()
+ spec.intersect_input_and_output()
+ spec.optimize_loop()
+ equaloplists(spec.loop.operations, [
+ ResOperation('guard_true', [Q.sum], None),
+ ResOperation('int_sub', [Q.sum, ConstInt(1)], Q.v),
+ ResOperation('jump', [Q.v], None),
+ ])
+
+# ____________________________________________________________
+
class R:
locals().update(A.__dict__) # :-)
inputargs = [sum]
More information about the Pypy-commit
mailing list