[Python-checkins] r86174 - in python/branches/py3k: Include/memoryobject.h Include/object.h Lib/test/test_sys.py Misc/NEWS Objects/memoryobject.c

antoine.pitrou python-checkins at python.org
Thu Nov 4 21:30:34 CET 2010


Author: antoine.pitrou
Date: Thu Nov  4 21:30:33 2010
New Revision: 86174

Log:
Issue #10293: Remove obsolete field in the PyMemoryView structure,
unused undocumented value PyBUF_SHADOW, and strangely-looking code in
PyMemoryView_GetContiguous.



Modified:
   python/branches/py3k/Include/memoryobject.h
   python/branches/py3k/Include/object.h
   python/branches/py3k/Lib/test/test_sys.py
   python/branches/py3k/Misc/NEWS
   python/branches/py3k/Objects/memoryobject.c

Modified: python/branches/py3k/Include/memoryobject.h
==============================================================================
--- python/branches/py3k/Include/memoryobject.h	(original)
+++ python/branches/py3k/Include/memoryobject.h	Thu Nov  4 21:30:33 2010
@@ -63,7 +63,6 @@
    and functions instead! */
 typedef struct {
     PyObject_HEAD
-    PyObject *base;
     Py_buffer view;
 } PyMemoryViewObject;
 

Modified: python/branches/py3k/Include/object.h
==============================================================================
--- python/branches/py3k/Include/object.h	(original)
+++ python/branches/py3k/Include/object.h	Thu Nov  4 21:30:33 2010
@@ -189,7 +189,6 @@
 
 #define PyBUF_READ  0x100
 #define PyBUF_WRITE 0x200
-#define PyBUF_SHADOW 0x400
 
 /* End buffer interface */
 

Modified: python/branches/py3k/Lib/test/test_sys.py
==============================================================================
--- python/branches/py3k/Lib/test/test_sys.py	(original)
+++ python/branches/py3k/Lib/test/test_sys.py	Thu Nov  4 21:30:33 2010
@@ -759,7 +759,7 @@
         check(int(PyLong_BASE**2-1), size(vh) + 2*self.longdigit)
         check(int(PyLong_BASE**2), size(vh) + 3*self.longdigit)
         # memory
-        check(memoryview(b''), size(h + 'P PP2P2i7P'))
+        check(memoryview(b''), size(h + 'PP2P2i7P'))
         # module
         check(unittest, size(h + '3P'))
         # None

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Thu Nov  4 21:30:33 2010
@@ -10,6 +10,10 @@
 Core and Builtins
 -----------------
 
+- Issue #10293: Remove obsolete field in the PyMemoryView structure,
+  unused undocumented value PyBUF_SHADOW, and strangely-looking code in
+  PyMemoryView_GetContiguous.
+
 - Issue #6081: Add str.format_map, similar to str.format(**mapping).
 
 - If FileIO.__init__ fails, close the file descriptor.

Modified: python/branches/py3k/Objects/memoryobject.c
==============================================================================
--- python/branches/py3k/Objects/memoryobject.c	(original)
+++ python/branches/py3k/Objects/memoryobject.c	Thu Nov  4 21:30:33 2010
@@ -82,7 +82,6 @@
         PyObject_GC_New(PyMemoryViewObject, &PyMemoryView_Type);
     if (mview == NULL)
         return NULL;
-    mview->base = NULL;
     dup_buffer(&mview->view, info);
     /* NOTE: mview->view.obj should already have been incref'ed as
        part of PyBuffer_FillInfo(). */
@@ -112,8 +111,6 @@
         return NULL;
     }
 
-    mview->base = base;
-    Py_INCREF(base);
     return (PyObject *)mview;
 }
 
@@ -291,8 +288,6 @@
 
     if (PyBuffer_IsContiguous(view, fort)) {
         /* no copy needed */
-        Py_INCREF(obj);
-        mem->base = obj;
         _PyObject_GC_TRACK(mem);
         return (PyObject *)mem;
     }
@@ -324,21 +319,7 @@
             Py_DECREF(mem);
             return NULL;
         }
-    }
-    if (buffertype == PyBUF_SHADOW) {
-        /* return a shadowed memory-view object */
-        view->buf = dest;
-        mem->base = PyTuple_Pack(2, obj, bytes);
-        Py_DECREF(bytes);
-        if (mem->base == NULL) {
-            Py_DECREF(mem);
-            return NULL;
-        }
-    }
-    else {
         PyBuffer_Release(view);  /* XXX ? */
-        /* steal the reference */
-        mem->base = bytes;
     }
     _PyObject_GC_TRACK(mem);
     return (PyObject *)mem;
@@ -481,28 +462,7 @@
 do_release(PyMemoryViewObject *self)
 {
     if (self->view.obj != NULL) {
-        if (self->base && PyTuple_Check(self->base)) {
-            /* Special case when first element is generic object
-               with buffer interface and the second element is a
-               contiguous "shadow" that must be copied back into
-               the data areay of the first tuple element before
-               releasing the buffer on the first element.
-            */
-
-            PyObject_CopyData(PyTuple_GET_ITEM(self->base,0),
-                              PyTuple_GET_ITEM(self->base,1));
-
-            /* The view member should have readonly == -1 in
-               this instance indicating that the memory can
-               be "locked" and was locked and will be unlocked
-               again after this call.
-            */
-            PyBuffer_Release(&(self->view));
-        }
-        else {
-            PyBuffer_Release(&(self->view));
-        }
-        Py_CLEAR(self->base);
+        PyBuffer_Release(&(self->view));
     }
     self->view.obj = NULL;
     self->view.buf = NULL;
@@ -819,8 +779,6 @@
 static int
 memory_traverse(PyMemoryViewObject *self, visitproc visit, void *arg)
 {
-    if (self->base != NULL)
-        Py_VISIT(self->base);
     if (self->view.obj != NULL)
         Py_VISIT(self->view.obj);
     return 0;
@@ -829,7 +787,6 @@
 static int
 memory_clear(PyMemoryViewObject *self)
 {
-    Py_CLEAR(self->base);
     PyBuffer_Release(&self->view);
     return 0;
 }


More information about the Python-checkins mailing list