Build obmalloc.c directly instead of #include'ing from object.c.

Also move all _PyMalloc_XXX entry points into obmalloc.c.

The Windows build works fine.
The Unix build is changed here (Makefile.pre.in), but not tested.
No other platform's build process has been fiddled.
This commit is contained in:
Tim Peters 2002-03-23 00:20:15 +00:00
parent c24ea08644
commit 1221c0a435
4 changed files with 66 additions and 45 deletions

View File

@ -263,6 +263,7 @@ OBJECT_OBJS= \
Objects/methodobject.o \
Objects/moduleobject.o \
Objects/object.o \
Objects/obmalloc.o \
Objects/rangeobject.o \
Objects/sliceobject.o \
Objects/stringobject.o \
@ -424,8 +425,6 @@ Python/getplatform.o: $(srcdir)/Python/getplatform.c
Python/importdl.o: $(srcdir)/Python/importdl.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
Objects/object.o: $(srcdir)/Objects/object.c $(srcdir)/Objects/obmalloc.c
Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \
$(srcdir)/Objects/unicodetype_db.h

View File

@ -2090,46 +2090,3 @@ _PyTrash_destroy_chain(void)
--_PyTrash_delete_nesting;
}
}
#ifdef WITH_PYMALLOC
#include "obmalloc.c"
#else
void *_PyMalloc_Malloc(size_t n)
{
return PyMem_MALLOC(n);
}
void *_PyMalloc_Realloc(void *p, size_t n)
{
return PyMem_REALLOC(p, n);
}
void _PyMalloc_Free(void *p)
{
PyMem_FREE(p);
}
#endif /* !WITH_PYMALLOC */
PyObject *_PyMalloc_New(PyTypeObject *tp)
{
PyObject *op;
op = (PyObject *) _PyMalloc_MALLOC(_PyObject_SIZE(tp));
if (op == NULL)
return PyErr_NoMemory();
return PyObject_INIT(op, tp);
}
PyVarObject *_PyMalloc_NewVar(PyTypeObject *tp, int nitems)
{
PyVarObject *op;
const size_t size = _PyObject_VAR_SIZE(tp, nitems);
op = (PyVarObject *) _PyMalloc_MALLOC(size);
if (op == NULL)
return (PyVarObject *)PyErr_NoMemory();
return PyObject_INIT_VAR(op, tp, nitems);
}
void _PyMalloc_Del(PyObject *op)
{
_PyMalloc_FREE(op);
}

View File

@ -1,3 +1,7 @@
#include "Python.h"
#ifdef WITH_PYMALLOC
/* An object allocator for Python.
Here is an introduction to the layers of the Python memory architecture,
@ -636,3 +640,49 @@ _PyMalloc_Calloc(size_t nbel, size_t elsz)
}
*/
#else /* ! WITH_PYMALLOC */
void
*_PyMalloc_Malloc(size_t n)
{
return PyMem_MALLOC(n);
}
void
*_PyMalloc_Realloc(void *p, size_t n)
{
return PyMem_REALLOC(p, n);
}
void
_PyMalloc_Free(void *p)
{
PyMem_FREE(p);
}
#endif /* WITH_PYMALLOC */
PyObject
*_PyMalloc_New(PyTypeObject *tp)
{
PyObject *op;
op = (PyObject *) _PyMalloc_MALLOC(_PyObject_SIZE(tp));
if (op == NULL)
return PyErr_NoMemory();
return PyObject_INIT(op, tp);
}
PyVarObject *
_PyMalloc_NewVar(PyTypeObject *tp, int nitems)
{
PyVarObject *op;
const size_t size = _PyObject_VAR_SIZE(tp, nitems);
op = (PyVarObject *) _PyMalloc_MALLOC(size);
if (op == NULL)
return (PyVarObject *)PyErr_NoMemory();
return PyObject_INIT_VAR(op, tp, nitems);
}
void
_PyMalloc_Del(PyObject *op)
{
_PyMalloc_FREE(op);
}

View File

@ -1268,6 +1268,21 @@ SOURCE=..\Objects\object.c
# End Source File
# Begin Source File
SOURCE=..\Objects\obmalloc.c
!IF "$(CFG)" == "pythoncore - Win32 Release"
!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug"
!ELSEIF "$(CFG)" == "pythoncore - Win32 Alpha Debug"
!ELSEIF "$(CFG)" == "pythoncore - Win32 Alpha Release"
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\Modules\operator.c
!IF "$(CFG)" == "pythoncore - Win32 Release"