Issue #15456: Fix code __sizeof__ after #12399 change.
Patch by Serhiy Storchaka.
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index 550e284..9713f61 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -375,6 +375,17 @@
 }
 
 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)
 {
     int lineno;
@@ -480,6 +491,11 @@
 
 /* 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 @@
     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 */