diff options
author | Sam Gross <colesbury@gmail.com> | 2024-02-01 20:29:19 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-01 20:29:19 (GMT) |
commit | 587d4802034749e2aace9c00b00bd73eccdae1e7 (patch) | |
tree | ba760dcffd508c28bb8ed42930bd7fba009dd38a /Misc | |
parent | 500ede01178a8063bb2a3c664172dffa1b40d7c9 (diff) | |
download | cpython-587d4802034749e2aace9c00b00bd73eccdae1e7.zip cpython-587d4802034749e2aace9c00b00bd73eccdae1e7.tar.gz cpython-587d4802034749e2aace9c00b00bd73eccdae1e7.tar.bz2 |
gh-112529: Remove PyGC_Head from object pre-header in free-threaded build (#114564)
* gh-112529: Remove PyGC_Head from object pre-header in free-threaded build
This avoids allocating space for PyGC_Head in the free-threaded build.
The GC implementation for free-threaded CPython does not use the
PyGC_Head structure.
* The trashcan mechanism uses the `ob_tid` field instead of `_gc_prev`
in the free-threaded build.
* The GDB libpython.py file now determines the offset of the managed
dict field based on whether the running process is a free-threaded
build. Those are identified by the `ob_ref_local` field in PyObject.
* Fixes `_PySys_GetSizeOf()` which incorrectly incorrectly included the
size of `PyGC_Head` in the size of static `PyTypeObject`.
Diffstat (limited to 'Misc')
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2024-01-25-18-50-49.gh-issue-112529.IbbApA.rst | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-01-25-18-50-49.gh-issue-112529.IbbApA.rst b/Misc/NEWS.d/next/Core and Builtins/2024-01-25-18-50-49.gh-issue-112529.IbbApA.rst new file mode 100644 index 0000000..2a6d74f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2024-01-25-18-50-49.gh-issue-112529.IbbApA.rst @@ -0,0 +1,4 @@ +The free-threaded build no longer allocates space for the ``PyGC_Head`` +structure in objects that support cyclic garbage collection. A number of +other fields and data structures are used as replacements, including +``ob_gc_bits``, ``ob_tid``, and mimalloc internal data structures. |