Mailing List Archive

python/dist/src/Modules gcmodule.c,2.38,2.39
Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv12602/Modules

Modified Files:
gcmodule.c
Log Message:
Allow PyObject_Del to be used as a function designator. Provide binary
compatibility function.

Make PyObject_GC_Track and PyObject_GC_UnTrack functions instead of
trivial macros wrapping functions. Provide binary compatibility
functions.


Index: gcmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/gcmodule.c,v
retrieving revision 2.38
retrieving revision 2.39
diff -C2 -d -r2.38 -r2.39
*** gcmodule.c 29 Mar 2002 03:04:25 -0000 2.38
--- gcmodule.c 12 Apr 2002 02:41:03 -0000 2.39
***************
*** 811,822 ****
functions must always be available */

void
! _PyObject_GC_Track(PyObject *op)
{
_PyObject_GC_TRACK(op);
}

void
! _PyObject_GC_UnTrack(PyObject *op)
{
#ifdef WITH_CYCLE_GC
--- 811,834 ----
functions must always be available */

+ #undef PyObject_GC_Track
+ #undef PyObject_GC_UnTrack
+ #undef PyObject_GC_Del
+ #undef _PyObject_GC_Malloc
+
void
! PyObject_GC_Track(void *op)
{
_PyObject_GC_TRACK(op);
}

+ /* for binary compatibility with 2.2 */
void
! _PyObject_GC_Track(PyObject *op)
! {
! PyObject_GC_Track(op);
! }
!
! void
! PyObject_GC_UnTrack(void *op)
{
#ifdef WITH_CYCLE_GC
***************
*** 827,838 ****
}

PyObject *
! _PyObject_GC_Malloc(PyTypeObject *tp, int nitems)
{
PyObject *op;
- const size_t basicsize = _PyObject_VAR_SIZE(tp, nitems);
#ifdef WITH_CYCLE_GC
! const size_t nbytes = sizeof(PyGC_Head) + basicsize;
! PyGC_Head *g = _PyMalloc_MALLOC(nbytes);
if (g == NULL)
return (PyObject *)PyErr_NoMemory();
--- 839,855 ----
}

+ /* for binary compatibility with 2.2 */
+ void
+ _PyObject_GC_UnTrack(PyObject *op)
+ {
+ PyObject_GC_UnTrack(op);
+ }
+
PyObject *
! _PyObject_GC_Malloc(size_t basicsize)
{
PyObject *op;
#ifdef WITH_CYCLE_GC
! PyGC_Head *g = PyObject_MALLOC(sizeof(PyGC_Head) + basicsize);
if (g == NULL)
return (PyObject *)PyErr_NoMemory();
***************
*** 850,854 ****
op = FROM_GC(g);
#else
! op = _PyMalloc_MALLOC(basicsize);
if (op == NULL)
return (PyObject *)PyErr_NoMemory();
--- 867,871 ----
op = FROM_GC(g);
#else
! op = PyObject_MALLOC(basicsize);
if (op == NULL)
return (PyObject *)PyErr_NoMemory();
***************
*** 861,865 ****
_PyObject_GC_New(PyTypeObject *tp)
{
! PyObject *op = _PyObject_GC_Malloc(tp, 0);
return PyObject_INIT(op, tp);
}
--- 878,882 ----
_PyObject_GC_New(PyTypeObject *tp)
{
! PyObject *op = _PyObject_GC_Malloc(_PyObject_SIZE(tp));
return PyObject_INIT(op, tp);
}
***************
*** 868,872 ****
_PyObject_GC_NewVar(PyTypeObject *tp, int nitems)
{
! PyVarObject *op = (PyVarObject *) _PyObject_GC_Malloc(tp, nitems);
return PyObject_INIT_VAR(op, tp, nitems);
}
--- 885,890 ----
_PyObject_GC_NewVar(PyTypeObject *tp, int nitems)
{
! const size_t size = _PyObject_VAR_SIZE(tp, nitems);
! PyVarObject *op = (PyVarObject *) _PyObject_GC_Malloc(size);
return PyObject_INIT_VAR(op, tp, nitems);
}
***************
*** 878,887 ****
#ifdef WITH_CYCLE_GC
PyGC_Head *g = AS_GC(op);
! g = _PyMalloc_REALLOC(g, sizeof(PyGC_Head) + basicsize);
if (g == NULL)
return (PyVarObject *)PyErr_NoMemory();
op = (PyVarObject *) FROM_GC(g);
#else
! op = _PyMalloc_REALLOC(op, basicsize);
if (op == NULL)
return (PyVarObject *)PyErr_NoMemory();
--- 896,905 ----
#ifdef WITH_CYCLE_GC
PyGC_Head *g = AS_GC(op);
! g = PyObject_REALLOC(g, sizeof(PyGC_Head) + basicsize);
if (g == NULL)
return (PyVarObject *)PyErr_NoMemory();
op = (PyVarObject *) FROM_GC(g);
#else
! op = PyObject_REALLOC(op, basicsize);
if (op == NULL)
return (PyVarObject *)PyErr_NoMemory();
***************
*** 892,896 ****

void
! _PyObject_GC_Del(PyObject *op)
{
#ifdef WITH_CYCLE_GC
--- 910,914 ----

void
! PyObject_GC_Del(void *op)
{
#ifdef WITH_CYCLE_GC
***************
*** 901,908 ****
allocated--;
}
! _PyMalloc_FREE(g);
#else
! _PyMalloc_FREE(op);
#endif
}

--- 919,933 ----
allocated--;
}
! PyObject_FREE(g);
#else
! PyObject_FREE(op);
#endif
}

+ /* for binary compatibility with 2.2 */
+ #undef _PyObject_GC_Del
+ void
+ _PyObject_GC_Del(PyObject *op)
+ {
+ PyObject_GC_Del(op);
+ }