diff options
author | Guido van Rossum <guido@python.org> | 2000-05-03 23:44:39 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-05-03 23:44:39 (GMT) |
commit | b18618dab7b6b85bb05b084693706e59211fa180 (patch) | |
tree | 785d51f6677da8366be2ad4b4296a62f53161276 /Objects/floatobject.c | |
parent | 2808b744e8d94459f189e1d89c97072d6a1f53b6 (diff) | |
download | cpython-b18618dab7b6b85bb05b084693706e59211fa180.zip cpython-b18618dab7b6b85bb05b084693706e59211fa180.tar.gz cpython-b18618dab7b6b85bb05b084693706e59211fa180.tar.bz2 |
Vladimir Marangozov's long-awaited malloc restructuring.
For more comments, read the patches@python.org archives.
For documentation read the comments in mymalloc.h and objimpl.h.
(This is not exactly what Vladimir posted to the patches list; I've
made a few changes, and Vladimir sent me a fix in private email for a
problem that only occurs in debug mode. I'm also holding back on his
change to main.c, which seems unnecessary to me.)
Diffstat (limited to 'Objects/floatobject.c')
-rw-r--r-- | Objects/floatobject.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 77ef8d0..69b66b7 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -98,9 +98,6 @@ double (*_Py_math_funcs_hack[])() = { #define BHEAD_SIZE 8 /* Enough for a 64-bit pointer */ #define N_FLOATOBJECTS ((BLOCK_SIZE - BHEAD_SIZE) / sizeof(PyFloatObject)) -#define PyMem_MALLOC malloc -#define PyMem_FREE free - struct _floatblock { struct _floatblock *next; PyFloatObject objects[N_FLOATOBJECTS]; @@ -115,9 +112,10 @@ static PyFloatObject * fill_free_list() { PyFloatObject *p, *q; - p = (PyFloatObject *)PyMem_MALLOC(sizeof(PyFloatBlock)); + /* XXX Float blocks escape the object heap. Use PyObject_MALLOC ??? */ + p = (PyFloatObject *) PyMem_MALLOC(sizeof(PyFloatBlock)); if (p == NULL) - return (PyFloatObject *)PyErr_NoMemory(); + return (PyFloatObject *) PyErr_NoMemory(); ((PyFloatBlock *)p)->next = block_list; block_list = (PyFloatBlock *)p; p = &((PyFloatBlock *)p)->objects[0]; @@ -141,11 +139,11 @@ PyFloat_FromDouble(fval) if ((free_list = fill_free_list()) == NULL) return NULL; } + /* PyObject_New is inlined */ op = free_list; free_list = (PyFloatObject *)op->ob_type; - op->ob_type = &PyFloat_Type; + PyObject_INIT(op, &PyFloat_Type); op->ob_fval = fval; - _Py_NewReference((PyObject *)op); return (PyObject *) op; } @@ -779,7 +777,7 @@ PyFloat_Fini() } } else { - PyMem_FREE(list); + PyMem_FREE(list); /* XXX PyObject_FREE ??? */ bf++; } fsum += frem; |