mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
bpo-45947: Place dict and values pointer at fixed (negative) offset just before GC header. (GH-29879)
* Place __dict__ immediately before GC header for plain Python objects. * Fix up lazy dict creation logic to use managed dict pointers. * Manage values pointer, placing them directly before managed dict pointers. * Convert hint-based load/store attr specialization target managed dict classes. * Specialize LOAD_METHOD for managed dict objects. * Remove unsafe _PyObject_GC_Calloc function. * Remove unsafe _PyObject_GC_Malloc() function. * Add comment explaning use of Py_TPFLAGS_MANAGED_DICT.
This commit is contained in:
parent
c7e7a4b969
commit
8319114fee
19 changed files with 260 additions and 285 deletions
|
@ -334,6 +334,12 @@ given type object has a specified feature.
|
|||
|
||||
#ifndef Py_LIMITED_API
|
||||
|
||||
/* Placement of dict (and values) pointers are managed by the VM, not by the type.
|
||||
* The VM will automatically set tp_dictoffset. Should not be used for variable sized
|
||||
* classes, such as classes that extend tuple.
|
||||
*/
|
||||
#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
|
||||
|
||||
/* Set if instances of the type object are treated as sequences for pattern matching */
|
||||
#define Py_TPFLAGS_SEQUENCE (1 << 5)
|
||||
/* Set if instances of the type object are treated as mappings for pattern matching */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue