Author: Brian Kearns <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit