gh-146462: Add dict introspection debug offsets (#148633)

This commit is contained in:
Pablo Galindo Salgado
2026-05-05 00:00:23 +01:00
committed by GitHub
parent ffe050ad9b
commit 8c796782fc
3 changed files with 18 additions and 1 deletions
+14
View File
@@ -158,8 +158,16 @@ typedef struct _Py_DebugOffsets {
uint64_t tp_name;
uint64_t tp_repr;
uint64_t tp_flags;
uint64_t tp_basicsize;
uint64_t tp_dictoffset;
} type_object;
// PyHeapTypeObject offset;
struct _heap_type_object {
uint64_t size;
uint64_t ht_cached_keys;
} heap_type_object;
// PyTuple object offset;
struct _tuple_object {
uint64_t size;
@@ -330,6 +338,12 @@ typedef struct _Py_DebugOffsets {
.tp_name = offsetof(PyTypeObject, tp_name), \
.tp_repr = offsetof(PyTypeObject, tp_repr), \
.tp_flags = offsetof(PyTypeObject, tp_flags), \
.tp_basicsize = offsetof(PyTypeObject, tp_basicsize), \
.tp_dictoffset = offsetof(PyTypeObject, tp_dictoffset), \
}, \
.heap_type_object = { \
.size = sizeof(PyHeapTypeObject), \
.ht_cached_keys = offsetof(PyHeapTypeObject, ht_cached_keys), \
}, \
.tuple_object = { \
.size = sizeof(PyTupleObject), \
@@ -0,0 +1,3 @@
Added ``PyTypeObject.tp_basicsize``, ``PyTypeObject.tp_dictoffset``, and
``PyHeapTypeObject.ht_cached_keys`` offsets to :c:type:`!_Py_DebugOffsets` to
support version-independent read-only dict introspection tools.
@@ -31,7 +31,7 @@
#define FIELD_SIZE(type, member) sizeof(((type *)0)->member)
enum {
PY_REMOTE_DEBUG_OFFSETS_TOTAL_SIZE = 848,
PY_REMOTE_DEBUG_OFFSETS_TOTAL_SIZE = 880,
PY_REMOTE_ASYNC_DEBUG_OFFSETS_TOTAL_SIZE = 104,
};