summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2023-10-26 10:31:51 (GMT)
committerGitHub <noreply@github.com>2023-10-26 10:31:51 (GMT)
commit5c9d4497abd2923b4655cee2510208be8540b117 (patch)
treeeae5c8952156c9bb88eea6f845e537606469cb43
parent78e6d72e38ef4b490f0098b644454031f20ae361 (diff)
downloadcpython-5c9d4497abd2923b4655cee2510208be8540b117.zip
cpython-5c9d4497abd2923b4655cee2510208be8540b117.tar.gz
cpython-5c9d4497abd2923b4655cee2510208be8540b117.tar.bz2
GH-111339: Change `valid` property of executors to `is_valid()` method (GH-111350)
-rw-r--r--Lib/test/test_capi/test_misc.py12
-rw-r--r--Python/optimizer.c26
2 files changed, 19 insertions, 19 deletions
diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py
index 66d7ae0..ff34d85 100644
--- a/Lib/test/test_capi/test_misc.py
+++ b/Lib/test/test_capi/test_misc.py
@@ -2479,19 +2479,19 @@ class TestExecutorInvalidation(unittest.TestCase):
# Set things up so each executor depends on the objects
# with an equal or lower index.
for i, exe in enumerate(executors):
- self.assertTrue(exe.valid)
+ self.assertTrue(exe.is_valid())
for obj in objects[:i+1]:
_testinternalcapi.add_executor_dependency(exe, obj)
- self.assertTrue(exe.valid)
+ self.assertTrue(exe.is_valid())
# Assert that the correct executors are invalidated
# and check that nothing crashes when we invalidate
# an executor mutliple times.
for i in (4,3,2,1,0):
_testinternalcapi.invalidate_executors(objects[i])
for exe in executors[i:]:
- self.assertFalse(exe.valid)
+ self.assertFalse(exe.is_valid())
for exe in executors[:i]:
- self.assertTrue(exe.valid)
+ self.assertTrue(exe.is_valid())
def test_uop_optimizer_invalidation(self):
# Generate a new function at each call
@@ -2506,9 +2506,9 @@ class TestExecutorInvalidation(unittest.TestCase):
with temporary_optimizer(opt):
f()
exe = get_first_executor(f)
- self.assertTrue(exe.valid)
+ self.assertTrue(exe.is_valid())
_testinternalcapi.invalidate_executors(f.__code__)
- self.assertFalse(exe.valid)
+ self.assertFalse(exe.is_valid())
class TestUops(unittest.TestCase):
diff --git a/Python/optimizer.c b/Python/optimizer.c
index 3dfd4f3..b9aab46 100644
--- a/Python/optimizer.c
+++ b/Python/optimizer.c
@@ -225,9 +225,15 @@ counter_dealloc(_PyCounterExecutorObject *self) {
PyObject_Free(self);
}
-static PyMemberDef counter_members[] = {
- { "valid", Py_T_UBYTE, offsetof(_PyCounterExecutorObject, executor.vm_data.valid), Py_READONLY, "is valid?" },
- { NULL }
+static PyObject *
+is_valid(PyObject *self, PyObject *Py_UNUSED(ignored))
+{
+ return PyBool_FromLong(((_PyExecutorObject *)self)->vm_data.valid);
+}
+
+static PyMethodDef executor_methods[] = {
+ { "is_valid", is_valid, METH_NOARGS, NULL },
+ { NULL, NULL },
};
static PyTypeObject CounterExecutor_Type = {
@@ -237,7 +243,7 @@ static PyTypeObject CounterExecutor_Type = {
.tp_itemsize = 0,
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,
.tp_dealloc = (destructor)counter_dealloc,
- .tp_members = counter_members,
+ .tp_methods = executor_methods,
};
static _PyInterpreterFrame *
@@ -280,7 +286,7 @@ counter_get_counter(PyObject *self, PyObject *args)
return PyLong_FromLongLong(((_PyCounterOptimizerObject *)self)->count);
}
-static PyMethodDef counter_methods[] = {
+static PyMethodDef counter_optimizer_methods[] = {
{ "get_count", counter_get_counter, METH_NOARGS, NULL },
{ NULL, NULL },
};
@@ -291,7 +297,7 @@ static PyTypeObject CounterOptimizer_Type = {
.tp_basicsize = sizeof(_PyCounterOptimizerObject),
.tp_itemsize = 0,
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,
- .tp_methods = counter_methods,
+ .tp_methods = counter_optimizer_methods,
.tp_dealloc = (destructor)PyObject_Del,
};
@@ -369,12 +375,6 @@ PySequenceMethods uop_as_sequence = {
.sq_item = (ssizeargfunc)uop_item,
};
-
-static PyMemberDef uop_members[] = {
- { "valid", Py_T_UBYTE, offsetof(_PyUOpExecutorObject, base.vm_data.valid), Py_READONLY, "is valid?" },
- { NULL }
-};
-
static PyTypeObject UOpExecutor_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0)
.tp_name = "uop_executor",
@@ -383,7 +383,7 @@ static PyTypeObject UOpExecutor_Type = {
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,
.tp_dealloc = (destructor)uop_dealloc,
.tp_as_sequence = &uop_as_sequence,
- .tp_members = uop_members,
+ .tp_methods = executor_methods,
};
static int