[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