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

Reply via email to