gh-115999: Specialize LOAD_SUPER_ATTR in free-threaded builds (gh-127128)

Use existing helpers to atomically modify the bytecode.  Add unit tests
to ensure specializing is happening as expected.  Add test_specialize.py
that can be used with ThreadSanitizer to detect data races.  
Fix thread safety issue with cell_set_contents().
This commit is contained in:
Neil Schemenauer 2024-12-03 09:32:26 -08:00 committed by GitHub
parent 8ba9f5bca9
commit 0cb5222079
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 51 additions and 21 deletions

View file

@ -145,8 +145,9 @@ cell_get_contents(PyObject *self, void *closure)
static int
cell_set_contents(PyObject *self, PyObject *obj, void *Py_UNUSED(ignored))
{
PyCellObject *op = _PyCell_CAST(self);
Py_XSETREF(op->ob_ref, Py_XNewRef(obj));
PyCellObject *cell = _PyCell_CAST(self);
Py_XINCREF(obj);
PyCell_SetTakeRef((PyCellObject *)cell, obj);
return 0;
}