Author: Brian Kearns <bdkea...@gmail.com>
Branch: 
Changeset: r74817:cdcc29b5a5eb
Date: 2014-12-04 15:00 -0500
http://bitbucket.org/pypy/pypy/changeset/cdcc29b5a5eb/

Log:    use mutating iterator state in flatiter

diff --git a/pypy/module/micronumpy/flatiter.py 
b/pypy/module/micronumpy/flatiter.py
--- a/pypy/module/micronumpy/flatiter.py
+++ b/pypy/module/micronumpy/flatiter.py
@@ -57,7 +57,7 @@
         if self.iter.done(self.state):
             raise OperationError(space.w_StopIteration, space.w_None)
         w_res = self.iter.getitem(self.state)
-        self.state = self.iter.next(self.state)
+        self.iter.next(self.state, mutate=True)
         return w_res
 
     def descr_getitem(self, space, w_idx):
@@ -74,7 +74,7 @@
                                          base.get_order(), w_instance=base)
             return loop.flatiter_getitem(res, self.iter, state, step)
         finally:
-            self.state = self.iter.reset(self.state)
+            self.iter.reset(self.state, mutate=True)
 
     def descr_setitem(self, space, w_idx, w_value):
         if not (space.isinstance_w(w_idx, space.w_int) or
@@ -94,7 +94,7 @@
             arr = convert_to_array(space, w_value)
             loop.flatiter_setitem(space, dtype, arr, self.iter, state, step, 
length)
         finally:
-            self.state = self.iter.reset(self.state)
+            self.iter.reset(self.state, mutate=True)
 
 
 W_FlatIterator.typedef = TypeDef("numpy.flatiter",
diff --git a/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py 
b/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py
--- a/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py
@@ -95,27 +95,18 @@
             i86 = int_lt(i79, i45)
             guard_true(i86, descr=...)
             guard_not_invalidated(descr=...)
-            i87 = getfield_gc_pure(p85, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_index .+>)
             i88 = int_ge(i87, i59)
             guard_false(i88, descr=...)
-            i89 = getfield_gc_pure(p85, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
             f90 = raw_load(i67, i89, descr=<ArrayF 8>)
             i91 = int_add(i87, 1)
-            p92 = getfield_gc_pure(p85, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst__indices .+>)
             i93 = int_add(i89, i76)
             i94 = int_add(i79, 1)
             i95 = getfield_raw(#, descr=<FieldS pypysig_long_struct.c_value 0>)
+            setfield_gc(p97, i91, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_index .+>)
+            setfield_gc(p97, i93, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
             i96 = int_lt(i95, 0)
             guard_false(i96, descr=...)
-            p97 = new_with_vtable(#)
-            {{{
-            setfield_gc(p97, p56, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst_iterator .+>)
-            setfield_gc(p97, p92, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst__indices .+>)
-            setfield_gc(p97, i91, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_index .+>)
-            setfield_gc(p97, i93, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
-            setfield_gc(p16, p97, descr=<FieldP 
pypy.module.micronumpy.flatiter.W_FlatIterator.inst_state .+>)
-            }}}
-            jump(p0, p1, p3, p6, p12, p14, p16, i94, f90, p26, i45, p97, i59, 
p56, i67, i76, descr=...)
+            jump(p0, p1, p3, p6, p12, p14, p16, i94, f90, p26, i45, i91, i59, 
p97, p96, i67, i93, i76, descr=...)
         """)
 
     def test_array_flatiter_getitem_single(self):
@@ -139,23 +130,15 @@
             i128 = int_mul(i117, i59)
             i129 = int_add(i55, i128)
             f149 = raw_load(i100, i129, descr=<ArrayF 8>)
-            p150 = getfield_gc_pure(p123, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst__indices .+>)
             i151 = int_add(i117, 1)
             setarrayitem_gc(p150, 1, 0, descr=<ArrayS .+>)
             setarrayitem_gc(p150, 0, 0, descr=<ArrayS .+>)
+            setfield_gc(p156, i55, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
             guard_not_invalidated(descr=...)
             i154 = getfield_raw(#, descr=<FieldS pypysig_long_struct.c_value 
0>)
             i155 = int_lt(i154, 0)
             guard_false(i155, descr=...)
-            p156 = new_with_vtable(...)
-            {{{
-            setfield_gc(p156, p49, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst_iterator .+>)
-            setfield_gc(p156, i55, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
-            setfield_gc(p156, 0, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_index .+>)
-            setfield_gc(p156, p150, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst__indices .+>)
-            setfield_gc(p16, p156, descr=<FieldP 
pypy.module.micronumpy.flatiter.W_FlatIterator.inst_state .+>)
-            }}}
-            jump(p0, p1, p3, p6, p7, p12, p14, p16, i151, f149, p26, i44, i50, 
i59, i55, i100, p156, p49, descr=...)
+            jump(p0, p1, p3, p6, p7, p12, p14, p16, i151, f149, p26, i44, i50, 
i59, i55, i100, p150, p156, descr=...)
         """)
 
     def test_array_flatiter_setitem_single(self):
@@ -180,20 +163,12 @@
             i132 = int_add(i53, i131)
             guard_not_invalidated(descr=...)
             raw_store(i103, i132, 42.000000, descr=<ArrayF 8>)
-            p152 = getfield_gc_pure(p126, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst__indices .+>)
             i153 = int_add(i120, 1)
             i154 = getfield_raw(#, descr=<FieldS pypysig_long_struct.c_value 
0>)
             setarrayitem_gc(p152, 1, 0, descr=<ArrayS .+>)
             setarrayitem_gc(p152, 0, 0, descr=<ArrayS .+>)
+            setfield_gc(p158, i53, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
             i157 = int_lt(i154, 0)
             guard_false(i157, descr=...)
-            p158 = new_with_vtable(...)
-            {{{
-            setfield_gc(p158, p47, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst_iterator .+>)
-            setfield_gc(p158, i53, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_offset .+>)
-            setfield_gc(p158, 0, descr=<FieldS 
pypy.module.micronumpy.iterators.IterState.inst_index .+>)
-            setfield_gc(p158, p152, descr=<FieldP 
pypy.module.micronumpy.iterators.IterState.inst__indices .+>)
-            setfield_gc(p16, p158, descr=<FieldP 
pypy.module.micronumpy.flatiter.W_FlatIterator.inst_state .+>)
-            }}}
-            jump(p0, p1, p3, p6, p7, p12, p14, p16, i153, i42, i48, i57, i53, 
p47, i103, p158, descr=...)
+            jump(p0, p1, p3, p6, p7, p12, p14, p16, i153, i42, i48, i57, i53, 
p47, i103, p152, p158, descr=...)
         """)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to