Skip to content

Commit d85c505

Browse files
committed
Address review comments
1 parent 98706ff commit d85c505

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

Include/internal/pycore_stackref.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ static const _PyStackRef PyStackRef_NULL = { .index = 0 };
7575
#define PyStackRef_False ((_PyStackRef){ .index = 2 })
7676
#define PyStackRef_True ((_PyStackRef){ .index = 3 })
7777

78+
#define LAST_PREDEFINED_STACKREF_INDEX 3
79+
7880
static inline int
7981
PyStackRef_IsNull(_PyStackRef ref)
8082
{
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
Adds stackref debugging when ``Py_STACKREF_DEBUG`` is set. Finds all
22
double-closes and leaks, logging the origin and last borrow.
3+
4+
Inspired by HPy's debug mode. https://docs.hpyproject.org/en/latest/debug-mode.html

Python/stackrefs.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,15 @@ _Py_stackref_get_object(_PyStackRef ref)
5454
return entry->obj;
5555
}
5656

57-
PyObject *_Py_stackref_close(_PyStackRef ref)
57+
PyObject *
58+
_Py_stackref_close(_PyStackRef ref)
5859
{
5960
PyInterpreterState *interp = PyInterpreterState_Get();
6061
if (ref.index >= interp->next_stackref) {
6162
_Py_FatalErrorFormat(__func__, "Garbled stack ref with ID %" PRIu64 "\n", ref.index);
6263
}
6364
PyObject *obj;
64-
if (ref.index <= 3) {
65+
if (ref.index <= LAST_PREDEFINED_STACKREF_INDEX) {
6566
// Pre-allocated reference to None, False or True -- Do not clear
6667
TableEntry *entry = _Py_hashtable_get(interp->stackref_debug_table, (void *)ref.index);
6768
obj = entry->obj;
@@ -98,7 +99,7 @@ _Py_stackref_create(PyObject *obj, const char *filename, int linenumber)
9899
void
99100
_Py_stackref_record_borrow(_PyStackRef ref, const char *filename, int linenumber)
100101
{
101-
if (ref.index <= 3) {
102+
if (ref.index <= LAST_PREDEFINED_STACKREF_INDEX) {
102103
return;
103104
}
104105
PyInterpreterState *interp = PyInterpreterState_Get();

0 commit comments

Comments
 (0)