Kaydet (Commit) 1221c0a4 authored tarafından Tim Peters's avatar Tim Peters

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.
üst c24ea086
......@@ -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
......
......@@ -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);
}
#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);
}
......@@ -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"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment