-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Open
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement
Description
Feature or enhancement
Proposal:
#130708 introduces stackrefs whose lifetime must be shorter than the lifetime of another stackref. We should verify this property in the debug build of stackrefs: warn anytime a stackref with outstanding borrowed references is closed.
Here is a sketch of a possible implementation:
- Add a counter,
borrows
, to each stackref that records the number of borrows. - Add a
borrowed_from
field to each stackref that records the index of the stackref it was borrowed from, if any. This field is preserved byPyStackRef_DUP
. PyStackRef_Borrow(from)
sets the theborrowed_from
field on the returned stackref and increments theborrows
field onfrom
. We should follow chains of borrows until we reach the unborrowed reference at the head.PyStackRef_CLOSE
on a borrowed stackref decrements theborrows
field on the borrowed-from stackref.PyStackRef_CLOSE
warns ifborrows
is non-zero.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Metadata
Metadata
Assignees
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement