From 5875aa097b1d84bada014369bc709a4ea3755779 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 10 Apr 2020 02:11:08 +0200 Subject: [PATCH] bpo-40241: Move SIZEOF_PYGC_HEAD to _testinternalcapi Move _testcapi.SIZEOF_PYGC_HEAD to _testinternalcapi.SIZEOF_PYGC_HEAD. --- Lib/test/support/__init__.py | 4 ++-- Lib/test/test_sys.py | 4 ++-- Modules/_testcapimodule.c | 1 - Modules/_testinternalcapi.c | 13 ++++++++++++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 1f792d8514da0f..9f43b4071c044d 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1764,12 +1764,12 @@ def calcvobjsize(fmt): _TPFLAGS_HEAPTYPE = 1<<9 def check_sizeof(test, o, size): - import _testcapi + import _testinternalcapi result = sys.getsizeof(o) # add GC header size if ((type(o) == type) and (o.__flags__ & _TPFLAGS_HEAPTYPE) or\ ((type(o) != type) and (type(o).__flags__ & _TPFLAGS_HAVE_GC))): - size += _testcapi.SIZEOF_PYGC_HEAD + size += _testinternalcapi.SIZEOF_PYGC_HEAD msg = 'wrong size for %s: got %d, expected %d' \ % (type(o), result, size) test.assertEqual(result, size, msg) diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 395725857b7c05..329f7ddeb2c57b 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1056,8 +1056,8 @@ class SizeofTest(unittest.TestCase): def setUp(self): self.P = struct.calcsize('P') self.longdigit = sys.int_info.sizeof_digit - import _testcapi - self.gc_headsize = _testcapi.SIZEOF_PYGC_HEAD + import _testinternalcapi + self.gc_headsize = _testinternalcapi.SIZEOF_PYGC_HEAD check_sizeof = test.support.check_sizeof diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 3cc558689b6c18..7429953927b0b0 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -6716,7 +6716,6 @@ PyInit__testcapi(void) PyModule_AddObject(m, "ULLONG_MAX", PyLong_FromUnsignedLongLong(ULLONG_MAX)); PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyLong_FromSsize_t(PY_SSIZE_T_MAX)); PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN)); - PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head))); PyModule_AddObject(m, "SIZEOF_TIME_T", PyLong_FromSsize_t(sizeof(time_t))); Py_INCREF(&PyInstanceMethod_Type); PyModule_AddObject(m, "instancemethod", (PyObject *)&PyInstanceMethod_Type); diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c index 394b870e907800..a34f286bdd33ef 100644 --- a/Modules/_testinternalcapi.c +++ b/Modules/_testinternalcapi.c @@ -10,6 +10,7 @@ #include "Python.h" #include "pycore_initconfig.h" // _Py_GetConfigsAsDict() +#include "pycore_object.h" // PyGC_Head static PyObject * @@ -52,5 +53,15 @@ static struct PyModuleDef _testcapimodule = { PyMODINIT_FUNC PyInit__testinternalcapi(void) { - return PyModule_Create(&_testcapimodule); + PyObject *module = PyModule_Create(&_testcapimodule); + + if (PyModule_AddObject(module, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head))) < 0) { + goto error; + } + + return module; + +error: + Py_DECREF(module); + return NULL; }