Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c8ba47b

Browse files
authored
Delete TaskWakeupMethWrapper_Type and use PyCFunction instead (#22875)
1 parent 3c69f0c commit c8ba47b

1 file changed

Lines changed: 8 additions & 94 deletions

File tree

Modules/_asynciomodule.c

Lines changed: 8 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,6 @@ typedef struct {
9393
PyObject *sw_arg;
9494
} TaskStepMethWrapper;
9595

96-
typedef struct {
97-
PyObject_HEAD
98-
TaskObj *ww_task;
99-
} TaskWakeupMethWrapper;
100-
10196
typedef struct {
10297
PyObject_HEAD
10398
PyObject *rl_loop;
@@ -1870,93 +1865,15 @@ TaskStepMethWrapper_new(TaskObj *task, PyObject *arg)
18701865
return (PyObject*) o;
18711866
}
18721867

1873-
/* ----- Task._wakeup wrapper */
1874-
1875-
static PyObject *
1876-
TaskWakeupMethWrapper_call(TaskWakeupMethWrapper *o,
1877-
PyObject *args, PyObject *kwds)
1878-
{
1879-
PyObject *fut;
1880-
1881-
if (kwds != NULL && PyDict_GET_SIZE(kwds) != 0) {
1882-
PyErr_SetString(PyExc_TypeError, "function takes no keyword arguments");
1883-
return NULL;
1884-
}
1885-
if (!PyArg_ParseTuple(args, "O", &fut)) {
1886-
return NULL;
1887-
}
1888-
1889-
return task_wakeup(o->ww_task, fut);
1890-
}
1891-
1892-
static int
1893-
TaskWakeupMethWrapper_clear(TaskWakeupMethWrapper *o)
1894-
{
1895-
Py_CLEAR(o->ww_task);
1896-
return 0;
1897-
}
1898-
1899-
static int
1900-
TaskWakeupMethWrapper_traverse(TaskWakeupMethWrapper *o,
1901-
visitproc visit, void *arg)
1902-
{
1903-
Py_VISIT(o->ww_task);
1904-
return 0;
1905-
}
1906-
1907-
static void
1908-
TaskWakeupMethWrapper_dealloc(TaskWakeupMethWrapper *o)
1909-
{
1910-
PyObject_GC_UnTrack(o);
1911-
(void)TaskWakeupMethWrapper_clear(o);
1912-
Py_TYPE(o)->tp_free(o);
1913-
}
1914-
1915-
static PyObject *
1916-
TaskWakeupMethWrapper_get___self__(TaskWakeupMethWrapper *o, void *Py_UNUSED(ignored))
1917-
{
1918-
if (o->ww_task) {
1919-
Py_INCREF(o->ww_task);
1920-
return (PyObject*)o->ww_task;
1921-
}
1922-
Py_RETURN_NONE;
1923-
}
1868+
/* ----- Task._wakeup implementation */
19241869

1925-
static PyGetSetDef TaskWakeupMethWrapper_getsetlist[] = {
1926-
{"__self__", (getter)TaskWakeupMethWrapper_get___self__, NULL, NULL},
1927-
{NULL} /* Sentinel */
1928-
};
1929-
1930-
static PyTypeObject TaskWakeupMethWrapper_Type = {
1931-
PyVarObject_HEAD_INIT(NULL, 0)
1932-
"TaskWakeupMethWrapper",
1933-
.tp_basicsize = sizeof(TaskWakeupMethWrapper),
1934-
.tp_itemsize = 0,
1935-
.tp_dealloc = (destructor)TaskWakeupMethWrapper_dealloc,
1936-
.tp_call = (ternaryfunc)TaskWakeupMethWrapper_call,
1937-
.tp_getattro = PyObject_GenericGetAttr,
1938-
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
1939-
.tp_traverse = (traverseproc)TaskWakeupMethWrapper_traverse,
1940-
.tp_clear = (inquiry)TaskWakeupMethWrapper_clear,
1941-
.tp_getset = TaskWakeupMethWrapper_getsetlist,
1870+
static PyMethodDef TaskWakeupDef = {
1871+
"task_wakeup",
1872+
(PyCFunction)task_wakeup,
1873+
METH_O,
1874+
NULL
19421875
};
19431876

1944-
static PyObject *
1945-
TaskWakeupMethWrapper_new(TaskObj *task)
1946-
{
1947-
TaskWakeupMethWrapper *o;
1948-
o = PyObject_GC_New(TaskWakeupMethWrapper, &TaskWakeupMethWrapper_Type);
1949-
if (o == NULL) {
1950-
return NULL;
1951-
}
1952-
1953-
Py_INCREF(task);
1954-
o->ww_task = task;
1955-
1956-
PyObject_GC_Track(o);
1957-
return (PyObject*) o;
1958-
}
1959-
19601877
/* ----- Task introspection helpers */
19611878

19621879
static int
@@ -2803,7 +2720,7 @@ task_step_impl(TaskObj *task, PyObject *exc)
28032720
fut->fut_blocking = 0;
28042721

28052722
/* result.add_done_callback(task._wakeup) */
2806-
wrapper = TaskWakeupMethWrapper_new(task);
2723+
wrapper = PyCFunction_New(&TaskWakeupDef, (PyObject *)task);
28072724
if (wrapper == NULL) {
28082725
goto fail;
28092726
}
@@ -2884,7 +2801,7 @@ task_step_impl(TaskObj *task, PyObject *exc)
28842801
goto fail;
28852802
}
28862803

2887-
wrapper = TaskWakeupMethWrapper_new(task);
2804+
wrapper = PyCFunction_New(&TaskWakeupDef, (PyObject *)task);
28882805
if (wrapper == NULL) {
28892806
goto fail;
28902807
}
@@ -3458,9 +3375,6 @@ PyInit__asyncio(void)
34583375
if (PyType_Ready(&TaskStepMethWrapper_Type) < 0) {
34593376
return NULL;
34603377
}
3461-
if (PyType_Ready(&TaskWakeupMethWrapper_Type) < 0) {
3462-
return NULL;
3463-
}
34643378
if (PyType_Ready(&PyRunningLoopHolder_Type) < 0) {
34653379
return NULL;
34663380
}

0 commit comments

Comments
 (0)