diff options
-rw-r--r-- | Include/longobject.h | 2 | ||||
-rw-r--r-- | Modules/xxmodule.c | 2 | ||||
-rw-r--r-- | Objects/floatobject.c | 17 | ||||
-rw-r--r-- | Objects/frameobject.c | 2 |
4 files changed, 19 insertions, 4 deletions
diff --git a/Include/longobject.h b/Include/longobject.h index 02bf7ef..a8dace6 100644 --- a/Include/longobject.h +++ b/Include/longobject.h @@ -58,7 +58,7 @@ PyAPI_FUNC(PyObject *) PyLong_GetInfo(void); #error "sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)" #endif /* SIZEOF_PID_T */ -/* For use by intobject.c only */ +/* Used by Python/mystrtoul.c. */ PyAPI_DATA(unsigned char) _PyLong_DigitValue[256]; /* _PyLong_Frexp returns a double x and an exponent e such that the diff --git a/Modules/xxmodule.c b/Modules/xxmodule.c index 92c7673..a8a9360 100644 --- a/Modules/xxmodule.c +++ b/Modules/xxmodule.c @@ -10,7 +10,7 @@ your own types of attributes instead. Maybe you want to name your local variables other than 'self'. If your object type is needed in other files, you'll have to create a file "foobarobject.h"; see - intobject.h for an example. */ + floatobject.h for an example. */ /* Xxo objects */ diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 9f94003..a2c281e 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -21,7 +21,22 @@ extern int finite(double); #endif -/* Special free list -- see comments for same code in intobject.c. */ +/* Special free list + + Since some Python programs can spend much of their time allocating + and deallocating floats, these operations should be very fast. + Therefore we use a dedicated allocation scheme with a much lower + overhead (in space and time) than straight malloc(): a simple + dedicated free list, filled when necessary with memory from malloc(). + + block_list is a singly-linked list of all PyFloatBlocks ever allocated, + linked via their next members. PyFloatBlocks are never returned to the + system before shutdown (PyFloat_Fini). + + free_list is a singly-linked list of available PyFloatObjects, linked + via abuse of their ob_type members. +*/ + #define BLOCK_SIZE 1000 /* 1K less typical malloc overhead */ #define BHEAD_SIZE 8 /* Enough for a 64-bit pointer */ #define N_FLOATOBJECTS ((BLOCK_SIZE - BHEAD_SIZE) / sizeof(PyFloatObject)) diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 191c6b6..10fb8b3 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -391,7 +391,7 @@ static PyGetSetDef frame_getsetlist[] = { the local variables in f_localsplus are NULL. 2. We also maintain a separate free list of stack frames (just like - integers are allocated in a special way -- see intobject.c). When + floats are allocated in a special way -- see floatobject.c). When a stack frame is on the free list, only the following members have a meaning: ob_type == &Frametype |