Message414305
CPython extensions providing optimized execution of Python bytecode (e.g. the Cinder JIT), or even CPython itself (e.g. the faster-cpython project) may wish to cache access to lookups in the class hierarchy (e.g. when resolving the target of a method call). Extensions that perform these optimizations need to know when to invalidate the cached values. CPython already has a mechanism to invalidate its internal state (e.g. the global method cache) when a type is modified: _PyType_Modified. We propose adding an API to allow extensions to set a callback that will be invoked by _PyType_Modified whenever a type, or any ancestor of the type in the class hierarchy, changes.
Proposed API:
```
// A callback to be invoked with the modified type and optionally the name of
// the attribute that was modified.
typedef void(*PyType_ModifiedCallback)(PyTypeObject* type, PyObject* attr);
// Set or get the callback. The callback may be cleared by supplying a NULL callback.
void PyType_SetModifiedCallback(PyType_ModifiedCallback callback);
PyType_ModifiedCallback PyType_GetModifiedCallback();
``` |
|
Date |
User |
Action |
Args |
2022-03-01 22:16:51 | mpage | set | recipients:
+ mpage, carljm, dino.viehland, itamaro |
2022-03-01 22:16:51 | mpage | set | messageid: <1646173011.06.0.919834153407.issue46895@roundup.psfhosted.org> |
2022-03-01 22:16:51 | mpage | link | issue46895 messages |
2022-03-01 22:16:50 | mpage | create | |
|