[Python-checkins] r50909 - in python/branches/bcannon-sandboxing: Include/objimpl.h Modules/gcmodule.c Objects/typeobject.c

brett.cannon python-checkins at python.org
Fri Jul 28 19:22:32 CEST 2006


Author: brett.cannon
Date: Fri Jul 28 19:22:31 2006
New Revision: 50909

Modified:
   python/branches/bcannon-sandboxing/Include/objimpl.h
   python/branches/bcannon-sandboxing/Modules/gcmodule.c
   python/branches/bcannon-sandboxing/Objects/typeobject.c
Log:
Change _PyObject_GC_Malloc() to _PyObject_GC_TrackedMalloc() and take in a
const char * to denote what the memory is for.  Also switch over
PyObject_GC_New() & friends to be tracked.


Modified: python/branches/bcannon-sandboxing/Include/objimpl.h
==============================================================================
--- python/branches/bcannon-sandboxing/Include/objimpl.h	(original)
+++ python/branches/bcannon-sandboxing/Include/objimpl.h	Fri Jul 28 19:22:31 2006
@@ -320,7 +320,7 @@
 	g->gc.gc_next = NULL; \
     } while (0);
 
-PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t);
+PyAPI_FUNC(PyObject *) _PyObject_GC_TrackedMalloc(const char *, size_t);
 PyAPI_FUNC(PyObject *) _PyObject_GC_New(PyTypeObject *);
 PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t);
 PyAPI_FUNC(void) PyObject_GC_Track(void *);

Modified: python/branches/bcannon-sandboxing/Modules/gcmodule.c
==============================================================================
--- python/branches/bcannon-sandboxing/Modules/gcmodule.c	(original)
+++ python/branches/bcannon-sandboxing/Modules/gcmodule.c	Fri Jul 28 19:22:31 2006
@@ -1281,7 +1281,7 @@
 #undef PyObject_GC_Track
 #undef PyObject_GC_UnTrack
 #undef PyObject_GC_Del
-#undef _PyObject_GC_Malloc
+#undef _PyObject_GC_TrackedMalloc
 
 void
 PyObject_GC_Track(void *op)
@@ -1314,12 +1314,12 @@
 }
 
 PyObject *
-_PyObject_GC_Malloc(size_t basicsize)
+_PyObject_GC_TrackedMalloc(const char* what, size_t basicsize)
 {
 	PyObject *op;
 	PyGC_Head *g = NULL;
 
-	g  = (PyGC_Head *)PyObject_MALLOC(sizeof(PyGC_Head) + basicsize);
+	g  = (PyGC_Head *)PyObject_T_MALLOC(what, sizeof(PyGC_Head) + basicsize);
 	if (g == NULL)
 		return PyErr_NoMemory();
 	g->gc.gc_refs = GC_UNTRACKED;
@@ -1343,7 +1343,7 @@
 	PyObject *op = NULL;
 	size_t obj_size  = _PyObject_SIZE(tp);
 
-	op = _PyObject_GC_Malloc(obj_size);
+	op = _PyObject_GC_TrackedMalloc(tp->tp_name, obj_size);
 	if (op != NULL)
 		op = PyObject_INIT(op, tp);
 	return op;
@@ -1355,7 +1355,7 @@
 	const size_t size = _PyObject_VAR_SIZE(tp, nitems);
 	PyVarObject *op = NULL;
 
-	op = (PyVarObject *) _PyObject_GC_Malloc(size);
+	op = (PyVarObject *) _PyObject_GC_TrackedMalloc(tp->tp_name, size);
 	if (op != NULL)
 		op = PyObject_INIT_VAR(op, tp, nitems);
 	return op;
@@ -1366,7 +1366,8 @@
 {
 	const size_t basicsize = _PyObject_VAR_SIZE(op->ob_type, nitems);
 	PyGC_Head *g = AS_GC(op);
-	g = (PyGC_Head *)PyObject_REALLOC(g,  sizeof(PyGC_Head) + basicsize);
+	g = (PyGC_Head *)PyObject_T_REALLOC(((PyObject *)op)->ob_type->tp_name,
+					    g,  sizeof(PyGC_Head) + basicsize);
 	if (g == NULL)
 		return (PyVarObject *)PyErr_NoMemory();
 	op = (PyVarObject *) FROM_GC(g);
@@ -1383,7 +1384,7 @@
 	if (generations[0].count > 0) {
 		generations[0].count--;
 	}
-	PyObject_FREE(g);
+	PyObject_T_FREE(((PyObject *)op)->ob_type->tp_name, g);
 }
 
 /* for binary compatibility with 2.2 */

Modified: python/branches/bcannon-sandboxing/Objects/typeobject.c
==============================================================================
--- python/branches/bcannon-sandboxing/Objects/typeobject.c	(original)
+++ python/branches/bcannon-sandboxing/Objects/typeobject.c	Fri Jul 28 19:22:31 2006
@@ -451,7 +451,7 @@
 	/* note that we need to add one, for the sentinel */
 
 	if (PyType_IS_GC(type))
-		obj = _PyObject_GC_Malloc(size);
+		obj = _PyObject_GC_TrackedMalloc(type->tp_name, size);
 	else
 		obj = (PyObject *)PyObject_Malloc(size);
 


More information about the Python-checkins mailing list