[pypy-svn] pypy default: port test_stararg_virtual
antocuni
commits-noreply at bitbucket.org
Tue Mar 15 18:23:27 CET 2011
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch:
Changeset: r42664:9db616a6be51
Date: 2011-03-15 15:15 +0100
http://bitbucket.org/pypy/pypy/changeset/9db616a6be51/
Log: port test_stararg_virtual
diff --git a/pypy/module/pypyjit/test_pypy_c/model.py b/pypy/module/pypyjit/test_pypy_c/model.py
--- a/pypy/module/pypyjit/test_pypy_c/model.py
+++ b/pypy/module/pypyjit/test_pypy_c/model.py
@@ -347,6 +347,7 @@
print '@' * 40
print "Loops don't match"
print "================="
+ print e.args
print e.msg
print
print "Got:"
diff --git a/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py b/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py
--- a/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_pypy_c_new.py
@@ -317,6 +317,60 @@
guards = [ops for ops in ops if ops.startswith('guard')]
assert len(guards) <= 5
+ def test_stararg_virtual(self):
+ def main(x):
+ def g(*args):
+ return len(args)
+ def h(a, b, c):
+ return c
+ #
+ s = 0
+ for i in range(x):
+ l = [i, x, 2]
+ s += g(*l) # ID: g1
+ s += h(*l) # ID: h1
+ s += g(i, x, 2) # ID: g2
+ a = 0
+ for i in range(x):
+ l = [x, 2]
+ s += g(i, *l) # ID: g3
+ s += h(i, *l) # ID: h2
+ a = 0
+ return s
+ #
+ log = self.run(main, [1000], threshold=400)
+ assert log.result == 13000
+ loop0, = log.loops_by_id('g1')
+ assert loop0.match_by_id('g1', """
+ i20 = force_token()
+ setfield_gc(p4, i19, descr=<.*W_AbstractSeqIterObject.inst_index .*>)
+ i22 = int_add_ovf(i8, 3)
+ guard_no_overflow(descr=<Guard4>)
+ """)
+ assert loop0.match_by_id('h1', """
+ i20 = force_token()
+ i22 = int_add_ovf(i8, 2)
+ guard_no_overflow(descr=<Guard5>)
+ """)
+ assert loop0.match_by_id('g2', """
+ i27 = force_token()
+ i29 = int_add_ovf(i26, 3)
+ guard_no_overflow(descr=<Guard6>)
+ """)
+ #
+ loop1, = log.loops_by_id('g3')
+ assert loop1.match_by_id('g3', """
+ i21 = force_token()
+ setfield_gc(p4, i20, descr=<.* .*W_AbstractSeqIterObject.inst_index .*>)
+ i23 = int_add_ovf(i9, 3)
+ guard_no_overflow(descr=<Guard37>)
+ """)
+ assert loop1.match_by_id('h2', """
+ i25 = force_token()
+ i27 = int_add_ovf(i23, 2)
+ guard_no_overflow(descr=<Guard38>)
+ """)
+
def test_reraise(self):
def f(n):
i = 0
More information about the Pypy-commit
mailing list