[pypy-commit] pypy py3k-memoryview: Inline and kill _buffer_setitem.
Manuel Jacob
noreply at buildbot.pypy.org
Thu May 22 04:18:31 CEST 2014
Author: Manuel Jacob
Branch: py3k-memoryview
Changeset: r71662:0114d1df7470
Date: 2014-05-22 03:33 +0200
http://bitbucket.org/pypy/pypy/changeset/0114d1df7470/
Log: Inline and kill _buffer_setitem.
diff --git a/pypy/objspace/std/memoryobject.py b/pypy/objspace/std/memoryobject.py
--- a/pypy/objspace/std/memoryobject.py
+++ b/pypy/objspace/std/memoryobject.py
@@ -10,23 +10,6 @@
from pypy.interpreter.typedef import TypeDef, GetSetProperty
-def _buffer_setitem(space, buf, w_index, w_obj):
- if buf.readonly:
- raise OperationError(space.w_TypeError, space.wrap(
- "cannot modify read-only memory"))
- start, stop, step, size = space.decode_index4(w_index, buf.getlength())
- if step not in (0, 1):
- raise OperationError(space.w_NotImplementedError, space.wrap(""))
- value = space.buffer_w(w_obj, space.BUF_CONTIG_RO)
- if value.getlength() != size:
- raise OperationError(space.w_ValueError, space.wrap(
- "cannot modify size of memoryview object"))
- if step == 0: # index only
- buf.setitem(start, value.getitem(0))
- elif step == 1:
- buf.setslice(start, value.as_str())
-
-
class W_MemoryView(W_Root):
"""Implement the built-in 'memoryview' type as a wrapper around
an interp-level buffer.
@@ -119,7 +102,20 @@
def descr_setitem(self, space, w_index, w_obj):
self._check_released(space)
- _buffer_setitem(space, self.buf, w_index, w_obj)
+ if self.buf.readonly:
+ raise OperationError(space.w_TypeError, space.wrap(
+ "cannot modify read-only memory"))
+ start, stop, step, size = space.decode_index4(w_index, self.getlength())
+ if step not in (0, 1):
+ raise OperationError(space.w_NotImplementedError, space.wrap(""))
+ value = space.buffer_w(w_obj, space.BUF_CONTIG_RO)
+ if value.getlength() != size:
+ raise OperationError(space.w_ValueError, space.wrap(
+ "cannot modify size of memoryview object"))
+ if step == 0: # index only
+ self.buf.setitem(start, value.getitem(0))
+ elif step == 1:
+ self.buf.setslice(start, value.as_str())
def descr_len(self, space):
self._check_released(space)
More information about the pypy-commit
mailing list