[pypy-commit] pypy dtypes-compatability: merge default into branch
mattip
noreply at buildbot.pypy.org
Wed Jul 15 21:19:12 CEST 2015
Author: mattip <matti.picus at gmail.com>
Branch: dtypes-compatability
Changeset: r78556:b07b520cb8f4
Date: 2015-07-13 00:39 +0300
http://bitbucket.org/pypy/pypy/changeset/b07b520cb8f4/
Log: merge default into branch
diff --git a/pypy/module/micronumpy/concrete.py b/pypy/module/micronumpy/concrete.py
--- a/pypy/module/micronumpy/concrete.py
+++ b/pypy/module/micronumpy/concrete.py
@@ -617,15 +617,17 @@
self.impl = impl
self.readonly = readonly
- def getitem(self, item):
- return raw_storage_getitem(lltype.Char, self.impl.storage, item)
+ def getitem(self, index):
+ return raw_storage_getitem(lltype.Char, self.impl.storage,
+ index + self.impl.start)
- def setitem(self, item, v):
- raw_storage_setitem(self.impl.storage, item,
+ def setitem(self, index, v):
+ raw_storage_setitem(self.impl.storage, index + self.impl.start,
rffi.cast(lltype.Char, v))
def getlength(self):
- return self.impl.size
+ return self.impl.size - self.impl.start
def get_raw_address(self):
- return self.impl.storage
+ from rpython.rtyper.lltypesystem import rffi
+ return rffi.ptradd(self.impl.storage, self.impl.start)
diff --git a/pypy/module/micronumpy/strides.py b/pypy/module/micronumpy/strides.py
--- a/pypy/module/micronumpy/strides.py
+++ b/pypy/module/micronumpy/strides.py
@@ -77,7 +77,7 @@
stop = 1
step = 1
lgt = 1
- axis_step = 0
+ axis_step = 0 # both skip this axis in calculate_slice_strides and set stride => 0
def __init__(self):
pass
@@ -127,7 +127,7 @@
except IndexError:
continue
if chunk.step != 0:
- rstrides[j] = s_i * chunk.step
+ rstrides[j] = s_i * chunk.step * chunk.axis_step
rbackstrides[j] = s_i * max(0, chunk.lgt - 1) * chunk.step
rshape[j] = chunk.lgt
j += 1
diff --git a/pypy/module/micronumpy/test/test_ndarray.py b/pypy/module/micronumpy/test/test_ndarray.py
--- a/pypy/module/micronumpy/test/test_ndarray.py
+++ b/pypy/module/micronumpy/test/test_ndarray.py
@@ -764,6 +764,8 @@
assert (a[1:] == b).all()
assert (a[1:,newaxis] == d).all()
assert (a[newaxis,1:] == c).all()
+ assert a.strides == (8,)
+ assert a[:, newaxis].strides == (8, 0)
def test_newaxis_assign(self):
from numpy import array, newaxis
@@ -2345,6 +2347,7 @@
assert a[1] == 0xff
assert len(a.data) == 16
assert type(a.data) is buffer
+ assert a[1:].data._pypy_raw_address() - a.data._pypy_raw_address() == a.strides[0]
def test_explicit_dtype_conversion(self):
from numpy import array
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -8637,5 +8637,27 @@
"""
self.optimize_loop(ops, expected, preamble)
+ def test_getfield_proven_constant(self):
+ py.test.skip("not working")
+ ops = """
+ [p0]
+ i1 = getfield_gc(p0, descr=valuedescr)
+ guard_value(i1, 13) []
+ escape(i1)
+ jump(p0)
+ """
+ expected = """
+ [p0]
+ escape(13)
+ jump(p0)
+ """
+ expected_short = """
+ [p0]
+ i1 = getfield_gc(p0, descr=valuedescr)
+ guard_value(i1, 13) []
+ jump(p0)
+ """
+ self.optimize_loop(ops, expected, expected_short=expected_short)
+
class TestLLtype(OptimizeOptTest, LLtypeMixin):
pass
More information about the pypy-commit
mailing list