mirror of
https://github.com/python/cpython.git
synced 2026-01-06 23:42:34 +00:00
gh-136669: build _asyncio as static module (#136670)
`_asyncio` is now built as a static module so that thread states can be accessed directly via registers and avoids the overhead of function call.
This commit is contained in:
parent
69d8fe50dd
commit
b7d722547b
3 changed files with 10 additions and 4 deletions
|
|
@ -0,0 +1 @@
|
|||
:mod:`!_asyncio` is now statically linked for improved performance.
|
||||
|
|
@ -32,7 +32,6 @@
|
|||
############################################################################
|
||||
# Modules that should always be present (POSIX and Windows):
|
||||
@MODULE_ARRAY_TRUE@array arraymodule.c
|
||||
@MODULE__ASYNCIO_TRUE@_asyncio _asynciomodule.c
|
||||
@MODULE__BISECT_TRUE@_bisect _bisectmodule.c
|
||||
@MODULE__CSV_TRUE@_csv _csv.c
|
||||
@MODULE__HEAPQ_TRUE@_heapq _heapqmodule.c
|
||||
|
|
@ -193,3 +192,9 @@
|
|||
# Limited API template modules; must be built as shared modules.
|
||||
@MODULE_XXLIMITED_TRUE@xxlimited xxlimited.c
|
||||
@MODULE_XXLIMITED_35_TRUE@xxlimited_35 xxlimited_35.c
|
||||
|
||||
|
||||
# for performance
|
||||
*static*
|
||||
|
||||
@MODULE__ASYNCIO_TRUE@_asyncio _asynciomodule.c
|
||||
|
|
|
|||
|
|
@ -811,7 +811,7 @@ _Py_RemoteDebug_GetAsyncioDebugAddress(proc_handle_t* handle)
|
|||
}
|
||||
#elif defined(__linux__)
|
||||
// On Linux, search for asyncio debug in executable or DLL
|
||||
address = search_linux_map_for_section(handle, "AsyncioDebug", "_asyncio.cpython");
|
||||
address = search_linux_map_for_section(handle, "AsyncioDebug", "python");
|
||||
if (address == 0) {
|
||||
// Error out: 'python' substring covers both executable and DLL
|
||||
PyObject *exc = PyErr_GetRaisedException();
|
||||
|
|
@ -820,10 +820,10 @@ _Py_RemoteDebug_GetAsyncioDebugAddress(proc_handle_t* handle)
|
|||
}
|
||||
#elif defined(__APPLE__) && TARGET_OS_OSX
|
||||
// On macOS, try libpython first, then fall back to python
|
||||
address = search_map_for_section(handle, "AsyncioDebug", "_asyncio.cpython");
|
||||
address = search_map_for_section(handle, "AsyncioDebug", "libpython");
|
||||
if (address == 0) {
|
||||
PyErr_Clear();
|
||||
address = search_map_for_section(handle, "AsyncioDebug", "_asyncio.cpython");
|
||||
address = search_map_for_section(handle, "AsyncioDebug", "python");
|
||||
}
|
||||
if (address == 0) {
|
||||
// Error out: 'python' substring covers both executable and DLL
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue