◐ Shell
clean mode source ↗

Message 68372 - Python tracker

Three questions on the sizeof.patch:

1) In the first line of function  dict_sizeof()

+	res = sizeof(PyDictObject) + sizeof(mp->ma_table);

is the  sizeof(mp->ma_table) counted twice?


2) Since functions  list_sizeof and  dict_sizeof return the allocated 
size, including the over-allocation, should function  string_sizeof not 
include the sentinel null character?


3) Are tuples left out on purpose?  If not, here is an implementation 
for Objects/tupleobject.c:

....
static PyObject *
tuple_sizeof(PyTupleObject *v)
{
	Py_ssize_t res;

	res = _PyObject_SIZE(&PyTuple_Type) + Py_SIZE(v) * 
sizeof(void*);
	return PyInt_FromSsize_t(res);
}

PyDoc_STRVAR(sizeof_doc,
"T.__sizeof__() -- size of T in bytes");

....
static PyMethodDef tuple_methods[] = {
	{"__getnewargs__",	(PyCFunction)tuple_getnewargs,	
METH_NOARGS},
	{"__sizeof__",  (PyCFunction)tuple_sizeof, METH_NOARGS, 
sizeof_doc},
....

/Jean Brouwers