Author: Brian Kearns <[email protected]>
Branch:
Changeset: r69700:5115c7557c07
Date: 2014-03-04 22:34 -0500
http://bitbucket.org/pypy/pypy/changeset/5115c7557c07/
Log: update test_pypy_c for SimpleRangeList
diff --git a/pypy/module/pypyjit/test_pypy_c/test_generators.py
b/pypy/module/pypyjit/test_pypy_c/test_generators.py
--- a/pypy/module/pypyjit/test_pypy_c/test_generators.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_generators.py
@@ -2,7 +2,7 @@
class TestGenerators(BaseTestPyPyC):
- def test_simple_generator(self):
+ def test_simple_generator1(self):
def main(n):
def f():
for i in range(10000):
@@ -28,7 +28,36 @@
jump(..., descr=...)
""")
assert loop.match_by_id("subtract", """
- setfield_gc(p7, 35, descr=<.*last_instr .*>) # XXX bad, kill me
+ i2 = int_sub(i1, 42)
+ """)
+
+ def test_simple_generator2(self):
+ def main(n):
+ def f():
+ for i in range(1, 10000):
+ i -= 1
+ i -= 42 # ID: subtract
+ yield i
+
+ def g():
+ for i in f(): # ID: generator
+ pass
+
+ g()
+
+ log = self.run(main, [500])
+ loop, = log.loops_by_filename(self.filepath)
+ assert loop.match_by_id("generator", """
+ cond_call(..., descr=...)
+ i16 = force_token()
+ p45 = new_with_vtable(ConstClass(W_IntObject))
+ setfield_gc(p45, i29, descr=<FieldS .*>)
+ setarrayitem_gc(p8, 0, p45, descr=<ArrayP .>)
+ i47 = arraylen_gc(p8, descr=<ArrayP .>) # Should be removed by
backend
+ jump(..., descr=...)
+ """)
+ assert loop.match_by_id("subtract", """
+ setfield_gc(p7, 38, descr=<.*last_instr .*>) # XXX bad, kill me
i2 = int_sub_ovf(i1, 42)
guard_no_overflow(descr=...)
""")
diff --git a/pypy/module/pypyjit/test_pypy_c/test_misc.py
b/pypy/module/pypyjit/test_pypy_c/test_misc.py
--- a/pypy/module/pypyjit/test_pypy_c/test_misc.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_misc.py
@@ -160,7 +160,7 @@
jump(..., descr=...)
""")
- def test_range_iter(self):
+ def test_range_iter_simple(self):
def main(n):
def g(n):
return range(n)
@@ -178,6 +178,36 @@
guard_not_invalidated?
i16 = int_ge(i11, i12)
guard_false(i16, descr=...)
+ i20 = int_add(i11, 1)
+ i21 = force_token()
+ setfield_gc(p4, i20, descr=<.*
.*W_AbstractSeqIterObject.inst_index .*>)
+ guard_not_invalidated?
+ i25 = int_ge(i11, i9)
+ guard_false(i25, descr=...)
+ i27 = int_add_ovf(i7, i11)
+ guard_no_overflow(descr=...)
+ --TICK--
+ jump(..., descr=...)
+ """)
+
+ def test_range_iter_normal(self):
+ def main(n):
+ def g(n):
+ return range(n)
+ s = 0
+ for i in range(1, n): # ID: for
+ tmp = g(n)
+ s += tmp[i] # ID: getitem
+ a = 0
+ return s
+ #
+ log = self.run(main, [1000])
+ assert log.result == 1000 * 999 / 2
+ loop, = log.loops_by_filename(self.filepath)
+ assert loop.match("""
+ guard_not_invalidated?
+ i16 = int_ge(i11, i12)
+ guard_false(i16, descr=...)
i17 = int_mul(i11, i14)
i18 = int_add(i15, i17)
i20 = int_add(i11, 1)
diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py
--- a/pypy/objspace/std/listobject.py
+++ b/pypy/objspace/std/listobject.py
@@ -45,7 +45,6 @@
storage = strategy.erase(None)
elif start == 0 and step == 1:
strategy = space.fromcache(SimpleRangeListStrategy)
- assert length > 0
storage = strategy.erase((length,))
else:
strategy = space.fromcache(RangeListStrategy)
@@ -1126,7 +1125,6 @@
def _getitem_unwrapped(self, w_list, i):
length = self.unerase(w_list.lstorage)[0]
- assert length > 0
if i < 0:
i += length
if i < 0:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit