summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-07-01 00:30:46 (GMT)
committerGitHub <noreply@github.com>2021-07-01 00:30:46 (GMT)
commit818628c2da99ba0376313971816d472c65c9a9fc (patch)
tree60d50461785e6ddc16f35a047ece9dc83890eef8 /Include
parent1b28187a0e3e914ee48de8032cbba0a965dd5563 (diff)
downloadcpython-818628c2da99ba0376313971816d472c65c9a9fc.zip
cpython-818628c2da99ba0376313971816d472c65c9a9fc.tar.gz
cpython-818628c2da99ba0376313971816d472c65c9a9fc.tar.bz2
bpo-44531: Add _PyType_AllocNoTrack() function (GH-26947)
Add an internal _PyType_AllocNoTrack() function to allocate an object without tracking it in the GC. Modify dict_new() to use _PyType_AllocNoTrack(): dict subclasses are now only tracked once all PyDictObject members are initialized. Calling _PyObject_GC_UNTRACK() is no longer needed for the dict type. Similar change in tuple_subtype_new() for tuple subclasses. Replace tuple_gc_track() with _PyObject_GC_TRACK().
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_object.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h
index 9dfc8c6..4091f51 100644
--- a/Include/internal/pycore_object.h
+++ b/Include/internal/pycore_object.h
@@ -178,6 +178,8 @@ extern int _Py_CheckSlotResult(
// See also the Py_TPFLAGS_READY flag.
#define _PyType_IsReady(type) ((type)->tp_dict != NULL)
+extern PyObject* _PyType_AllocNoTrack(PyTypeObject *type, Py_ssize_t nitems);
+
#ifdef __cplusplus
}
#endif