mirror of https://github.com/python/cpython.git
Patch by Serhiy Storchaka.
This commit is contained in:
parent
d0118e16a1
commit
3bbd2fad4d
|
@ -702,6 +702,12 @@ def inner():
|
|||
check(get_cell().__closure__[0], size(h + 'P'))
|
||||
# code
|
||||
check(get_cell().__code__, size(h + '5i9Pi3P'))
|
||||
check(get_cell.__code__, size(h + '5i9Pi3P'))
|
||||
def get_cell2(x):
|
||||
def inner():
|
||||
return x
|
||||
return inner
|
||||
check(get_cell2.__code__, size(h + '5i9Pi3P') + 1)
|
||||
# complex
|
||||
check(complex(0,1), size(h + '2d'))
|
||||
# method_descriptor (descriptor object)
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.3.0 Beta 2?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #15456: Fix code __sizeof__ after #12399 change.
|
||||
Patch by Serhiy Storchaka.
|
||||
|
||||
- Issue #15404: Refleak in PyMethodObject repr.
|
||||
|
||||
- Issue #15394: An issue in PyModule_Create that caused references to
|
||||
|
|
|
@ -374,6 +374,17 @@ code_dealloc(PyCodeObject *co)
|
|||
PyObject_DEL(co);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
code_sizeof(PyCodeObject *co, void *unused)
|
||||
{
|
||||
Py_ssize_t res;
|
||||
|
||||
res = sizeof(PyCodeObject);
|
||||
if (co->co_cell2arg != NULL && co->co_cellvars != NULL)
|
||||
res += PyTuple_GET_SIZE(co->co_cellvars) * sizeof(unsigned char);
|
||||
return PyLong_FromSsize_t(res);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
code_repr(PyCodeObject *co)
|
||||
{
|
||||
|
@ -480,6 +491,11 @@ code_hash(PyCodeObject *co)
|
|||
|
||||
/* XXX code objects need to participate in GC? */
|
||||
|
||||
static struct PyMethodDef code_methods[] = {
|
||||
{"__sizeof__", (PyCFunction)code_sizeof, METH_NOARGS},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
PyTypeObject PyCode_Type = {
|
||||
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
||||
"code",
|
||||
|
@ -508,7 +524,7 @@ PyTypeObject PyCode_Type = {
|
|||
offsetof(PyCodeObject, co_weakreflist), /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
0, /* tp_methods */
|
||||
code_methods, /* tp_methods */
|
||||
code_memberlist, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
|
|
Loading…
Reference in New Issue