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