diff options
author | Victor Stinner <vstinner@python.org> | 2021-07-01 00:30:46 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-01 00:30:46 (GMT) |
commit | 818628c2da99ba0376313971816d472c65c9a9fc (patch) | |
tree | 60d50461785e6ddc16f35a047ece9dc83890eef8 /Include | |
parent | 1b28187a0e3e914ee48de8032cbba0a965dd5563 (diff) | |
download | cpython-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.h | 2 |
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 |