summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2020-05-01 16:59:22 +0200
committerStefan Behnel <stefan_ml@behnel.de>2020-05-01 16:59:22 +0200
commite09db16847bb77176f13cb4cf40f0050e739e181 (patch)
tree5e93b563b7cbacb1370d150c102a471a3d5616c9
parent5f6369ae1d49baafce48442940ba7c42d3363222 (diff)
downloadcython-e09db16847bb77176f13cb4cf40f0050e739e181.tar.gz
Avoid some unnecessary object operations in memory slice object creation code.
-rw-r--r--Cython/Utility/MemoryView.pyx12
1 files changed, 7 insertions, 5 deletions
diff --git a/Cython/Utility/MemoryView.pyx b/Cython/Utility/MemoryView.pyx
index 8d7848726..c7bda7278 100644
--- a/Cython/Utility/MemoryView.pyx
+++ b/Cython/Utility/MemoryView.pyx
@@ -328,7 +328,7 @@ cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks
@cname('__pyx_memoryview')
-cdef class memoryview(object):
+cdef class memoryview:
cdef object obj
cdef object _size
@@ -558,6 +558,9 @@ cdef class memoryview(object):
@property
def base(self):
+ return self._get_base()
+
+ cdef _get_base(self):
return self.obj
@property
@@ -984,8 +987,7 @@ cdef class _memoryviewslice(memoryview):
else:
memoryview.assign_item_from_object(self, itemp, value)
- @property
- def base(self):
+ cdef _get_base(self):
return self.from_object
__pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")
@@ -1006,12 +1008,12 @@ cdef memoryview_fromslice({{memviewslice_name}} memviewslice,
# assert 0 < ndim <= memviewslice.memview.view.ndim, (
# ndim, memviewslice.memview.view.ndim)
- result = _memoryviewslice(None, 0, dtype_is_object)
+ result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object)
result.from_slice = memviewslice
__PYX_INC_MEMVIEW(&memviewslice, 1)
- result.from_object = (<memoryview> memviewslice.memview).base
+ result.from_object = (<memoryview> memviewslice.memview)._get_base()
result.typeinfo = memviewslice.memview.typeinfo
result.view = memviewslice.memview.view